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