1cabdff1aSopenharmony_ci/* 2cabdff1aSopenharmony_ci * This file is part of FFmpeg. 3cabdff1aSopenharmony_ci * 4cabdff1aSopenharmony_ci * FFmpeg is free software; you can redistribute it and/or 5cabdff1aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public 6cabdff1aSopenharmony_ci * License as published by the Free Software Foundation; either 7cabdff1aSopenharmony_ci * version 2.1 of the License, or (at your option) any later version. 8cabdff1aSopenharmony_ci * 9cabdff1aSopenharmony_ci * FFmpeg is distributed in the hope that it will be useful, 10cabdff1aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of 11cabdff1aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12cabdff1aSopenharmony_ci * Lesser General Public License for more details. 13cabdff1aSopenharmony_ci * 14cabdff1aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public 15cabdff1aSopenharmony_ci * License along with FFmpeg; if not, write to the Free Software 16cabdff1aSopenharmony_ci * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17cabdff1aSopenharmony_ci */ 18cabdff1aSopenharmony_ci 19cabdff1aSopenharmony_ci.macro transpose_8x8B r0, r1, r2, r3, r4, r5, r6, r7, r8, r9 20cabdff1aSopenharmony_ci trn1 \r8\().8B, \r0\().8B, \r1\().8B 21cabdff1aSopenharmony_ci trn2 \r9\().8B, \r0\().8B, \r1\().8B 22cabdff1aSopenharmony_ci trn1 \r1\().8B, \r2\().8B, \r3\().8B 23cabdff1aSopenharmony_ci trn2 \r3\().8B, \r2\().8B, \r3\().8B 24cabdff1aSopenharmony_ci trn1 \r0\().8B, \r4\().8B, \r5\().8B 25cabdff1aSopenharmony_ci trn2 \r5\().8B, \r4\().8B, \r5\().8B 26cabdff1aSopenharmony_ci trn1 \r2\().8B, \r6\().8B, \r7\().8B 27cabdff1aSopenharmony_ci trn2 \r7\().8B, \r6\().8B, \r7\().8B 28cabdff1aSopenharmony_ci 29cabdff1aSopenharmony_ci trn1 \r4\().4H, \r0\().4H, \r2\().4H 30cabdff1aSopenharmony_ci trn2 \r2\().4H, \r0\().4H, \r2\().4H 31cabdff1aSopenharmony_ci trn1 \r6\().4H, \r5\().4H, \r7\().4H 32cabdff1aSopenharmony_ci trn2 \r7\().4H, \r5\().4H, \r7\().4H 33cabdff1aSopenharmony_ci trn1 \r5\().4H, \r9\().4H, \r3\().4H 34cabdff1aSopenharmony_ci trn2 \r9\().4H, \r9\().4H, \r3\().4H 35cabdff1aSopenharmony_ci trn1 \r3\().4H, \r8\().4H, \r1\().4H 36cabdff1aSopenharmony_ci trn2 \r8\().4H, \r8\().4H, \r1\().4H 37cabdff1aSopenharmony_ci 38cabdff1aSopenharmony_ci trn1 \r0\().2S, \r3\().2S, \r4\().2S 39cabdff1aSopenharmony_ci trn2 \r4\().2S, \r3\().2S, \r4\().2S 40cabdff1aSopenharmony_ci 41cabdff1aSopenharmony_ci trn1 \r1\().2S, \r5\().2S, \r6\().2S 42cabdff1aSopenharmony_ci trn2 \r5\().2S, \r5\().2S, \r6\().2S 43cabdff1aSopenharmony_ci 44cabdff1aSopenharmony_ci trn2 \r6\().2S, \r8\().2S, \r2\().2S 45cabdff1aSopenharmony_ci trn1 \r2\().2S, \r8\().2S, \r2\().2S 46cabdff1aSopenharmony_ci 47cabdff1aSopenharmony_ci trn1 \r3\().2S, \r9\().2S, \r7\().2S 48cabdff1aSopenharmony_ci trn2 \r7\().2S, \r9\().2S, \r7\().2S 49cabdff1aSopenharmony_ci.endm 50cabdff1aSopenharmony_ci 51cabdff1aSopenharmony_ci.macro transpose_8x16B r0, r1, r2, r3, r4, r5, r6, r7, t0, t1 52cabdff1aSopenharmony_ci trn1 \t0\().16B, \r0\().16B, \r1\().16B 53cabdff1aSopenharmony_ci trn2 \t1\().16B, \r0\().16B, \r1\().16B 54cabdff1aSopenharmony_ci trn1 \r1\().16B, \r2\().16B, \r3\().16B 55cabdff1aSopenharmony_ci trn2 \r3\().16B, \r2\().16B, \r3\().16B 56cabdff1aSopenharmony_ci trn1 \r0\().16B, \r4\().16B, \r5\().16B 57cabdff1aSopenharmony_ci trn2 \r5\().16B, \r4\().16B, \r5\().16B 58cabdff1aSopenharmony_ci trn1 \r2\().16B, \r6\().16B, \r7\().16B 59cabdff1aSopenharmony_ci trn2 \r7\().16B, \r6\().16B, \r7\().16B 60cabdff1aSopenharmony_ci 61cabdff1aSopenharmony_ci trn1 \r4\().8H, \r0\().8H, \r2\().8H 62cabdff1aSopenharmony_ci trn2 \r2\().8H, \r0\().8H, \r2\().8H 63cabdff1aSopenharmony_ci trn1 \r6\().8H, \r5\().8H, \r7\().8H 64cabdff1aSopenharmony_ci trn2 \r7\().8H, \r5\().8H, \r7\().8H 65cabdff1aSopenharmony_ci trn1 \r5\().8H, \t1\().8H, \r3\().8H 66cabdff1aSopenharmony_ci trn2 \t1\().8H, \t1\().8H, \r3\().8H 67cabdff1aSopenharmony_ci trn1 \r3\().8H, \t0\().8H, \r1\().8H 68cabdff1aSopenharmony_ci trn2 \t0\().8H, \t0\().8H, \r1\().8H 69cabdff1aSopenharmony_ci 70cabdff1aSopenharmony_ci trn1 \r0\().4S, \r3\().4S, \r4\().4S 71cabdff1aSopenharmony_ci trn2 \r4\().4S, \r3\().4S, \r4\().4S 72cabdff1aSopenharmony_ci 73cabdff1aSopenharmony_ci trn1 \r1\().4S, \r5\().4S, \r6\().4S 74cabdff1aSopenharmony_ci trn2 \r5\().4S, \r5\().4S, \r6\().4S 75cabdff1aSopenharmony_ci 76cabdff1aSopenharmony_ci trn2 \r6\().4S, \t0\().4S, \r2\().4S 77cabdff1aSopenharmony_ci trn1 \r2\().4S, \t0\().4S, \r2\().4S 78cabdff1aSopenharmony_ci 79cabdff1aSopenharmony_ci trn1 \r3\().4S, \t1\().4S, \r7\().4S 80cabdff1aSopenharmony_ci trn2 \r7\().4S, \t1\().4S, \r7\().4S 81cabdff1aSopenharmony_ci.endm 82cabdff1aSopenharmony_ci 83cabdff1aSopenharmony_ci.macro transpose_4x16B r0, r1, r2, r3, t4, t5, t6, t7 84cabdff1aSopenharmony_ci trn1 \t4\().16B, \r0\().16B, \r1\().16B 85cabdff1aSopenharmony_ci trn2 \t5\().16B, \r0\().16B, \r1\().16B 86cabdff1aSopenharmony_ci trn1 \t6\().16B, \r2\().16B, \r3\().16B 87cabdff1aSopenharmony_ci trn2 \t7\().16B, \r2\().16B, \r3\().16B 88cabdff1aSopenharmony_ci 89cabdff1aSopenharmony_ci trn1 \r0\().8H, \t4\().8H, \t6\().8H 90cabdff1aSopenharmony_ci trn2 \r2\().8H, \t4\().8H, \t6\().8H 91cabdff1aSopenharmony_ci trn1 \r1\().8H, \t5\().8H, \t7\().8H 92cabdff1aSopenharmony_ci trn2 \r3\().8H, \t5\().8H, \t7\().8H 93cabdff1aSopenharmony_ci.endm 94cabdff1aSopenharmony_ci 95cabdff1aSopenharmony_ci.macro transpose_4x8B r0, r1, r2, r3, t4, t5, t6, t7 96cabdff1aSopenharmony_ci trn1 \t4\().8B, \r0\().8B, \r1\().8B 97cabdff1aSopenharmony_ci trn2 \t5\().8B, \r0\().8B, \r1\().8B 98cabdff1aSopenharmony_ci trn1 \t6\().8B, \r2\().8B, \r3\().8B 99cabdff1aSopenharmony_ci trn2 \t7\().8B, \r2\().8B, \r3\().8B 100cabdff1aSopenharmony_ci 101cabdff1aSopenharmony_ci trn1 \r0\().4H, \t4\().4H, \t6\().4H 102cabdff1aSopenharmony_ci trn2 \r2\().4H, \t4\().4H, \t6\().4H 103cabdff1aSopenharmony_ci trn1 \r1\().4H, \t5\().4H, \t7\().4H 104cabdff1aSopenharmony_ci trn2 \r3\().4H, \t5\().4H, \t7\().4H 105cabdff1aSopenharmony_ci.endm 106cabdff1aSopenharmony_ci 107cabdff1aSopenharmony_ci.macro transpose_4x4H r0, r1, r2, r3, r4, r5, r6, r7 108cabdff1aSopenharmony_ci trn1 \r4\().4H, \r0\().4H, \r1\().4H 109cabdff1aSopenharmony_ci trn2 \r5\().4H, \r0\().4H, \r1\().4H 110cabdff1aSopenharmony_ci trn1 \r6\().4H, \r2\().4H, \r3\().4H 111cabdff1aSopenharmony_ci trn2 \r7\().4H, \r2\().4H, \r3\().4H 112cabdff1aSopenharmony_ci 113cabdff1aSopenharmony_ci trn1 \r0\().2S, \r4\().2S, \r6\().2S 114cabdff1aSopenharmony_ci trn2 \r2\().2S, \r4\().2S, \r6\().2S 115cabdff1aSopenharmony_ci trn1 \r1\().2S, \r5\().2S, \r7\().2S 116cabdff1aSopenharmony_ci trn2 \r3\().2S, \r5\().2S, \r7\().2S 117cabdff1aSopenharmony_ci.endm 118cabdff1aSopenharmony_ci 119cabdff1aSopenharmony_ci.macro transpose_4x8H r0, r1, r2, r3, t4, t5, t6, t7 120cabdff1aSopenharmony_ci trn1 \t4\().8H, \r0\().8H, \r1\().8H 121cabdff1aSopenharmony_ci trn2 \t5\().8H, \r0\().8H, \r1\().8H 122cabdff1aSopenharmony_ci trn1 \t6\().8H, \r2\().8H, \r3\().8H 123cabdff1aSopenharmony_ci trn2 \t7\().8H, \r2\().8H, \r3\().8H 124cabdff1aSopenharmony_ci 125cabdff1aSopenharmony_ci trn1 \r0\().4S, \t4\().4S, \t6\().4S 126cabdff1aSopenharmony_ci trn2 \r2\().4S, \t4\().4S, \t6\().4S 127cabdff1aSopenharmony_ci trn1 \r1\().4S, \t5\().4S, \t7\().4S 128cabdff1aSopenharmony_ci trn2 \r3\().4S, \t5\().4S, \t7\().4S 129cabdff1aSopenharmony_ci.endm 130cabdff1aSopenharmony_ci 131cabdff1aSopenharmony_ci.macro transpose_8x8H r0, r1, r2, r3, r4, r5, r6, r7, r8, r9 132cabdff1aSopenharmony_ci trn1 \r8\().8H, \r0\().8H, \r1\().8H 133cabdff1aSopenharmony_ci trn2 \r9\().8H, \r0\().8H, \r1\().8H 134cabdff1aSopenharmony_ci trn1 \r1\().8H, \r2\().8H, \r3\().8H 135cabdff1aSopenharmony_ci trn2 \r3\().8H, \r2\().8H, \r3\().8H 136cabdff1aSopenharmony_ci trn1 \r0\().8H, \r4\().8H, \r5\().8H 137cabdff1aSopenharmony_ci trn2 \r5\().8H, \r4\().8H, \r5\().8H 138cabdff1aSopenharmony_ci trn1 \r2\().8H, \r6\().8H, \r7\().8H 139cabdff1aSopenharmony_ci trn2 \r7\().8H, \r6\().8H, \r7\().8H 140cabdff1aSopenharmony_ci 141cabdff1aSopenharmony_ci trn1 \r4\().4S, \r0\().4S, \r2\().4S 142cabdff1aSopenharmony_ci trn2 \r2\().4S, \r0\().4S, \r2\().4S 143cabdff1aSopenharmony_ci trn1 \r6\().4S, \r5\().4S, \r7\().4S 144cabdff1aSopenharmony_ci trn2 \r7\().4S, \r5\().4S, \r7\().4S 145cabdff1aSopenharmony_ci trn1 \r5\().4S, \r9\().4S, \r3\().4S 146cabdff1aSopenharmony_ci trn2 \r9\().4S, \r9\().4S, \r3\().4S 147cabdff1aSopenharmony_ci trn1 \r3\().4S, \r8\().4S, \r1\().4S 148cabdff1aSopenharmony_ci trn2 \r8\().4S, \r8\().4S, \r1\().4S 149cabdff1aSopenharmony_ci 150cabdff1aSopenharmony_ci trn1 \r0\().2D, \r3\().2D, \r4\().2D 151cabdff1aSopenharmony_ci trn2 \r4\().2D, \r3\().2D, \r4\().2D 152cabdff1aSopenharmony_ci 153cabdff1aSopenharmony_ci trn1 \r1\().2D, \r5\().2D, \r6\().2D 154cabdff1aSopenharmony_ci trn2 \r5\().2D, \r5\().2D, \r6\().2D 155cabdff1aSopenharmony_ci 156cabdff1aSopenharmony_ci trn2 \r6\().2D, \r8\().2D, \r2\().2D 157cabdff1aSopenharmony_ci trn1 \r2\().2D, \r8\().2D, \r2\().2D 158cabdff1aSopenharmony_ci 159cabdff1aSopenharmony_ci trn1 \r3\().2D, \r9\().2D, \r7\().2D 160cabdff1aSopenharmony_ci trn2 \r7\().2D, \r9\().2D, \r7\().2D 161cabdff1aSopenharmony_ci 162cabdff1aSopenharmony_ci.endm 163