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 trn1 \r0\().2S, \r4\().2S, \r6\().2S 113 trn2 \r2\().2S, \r4\().2S, \r6\().2S 114 trn1 \r1\().2S, \r5\().2S, \r7\().2S 115 trn2 \r3\().2S, \r5\().2S, \r7\().2S 116.endm 117 118.macro transpose_8x8H r0, r1, r2, r3, r4, r5, r6, r7, r8, r9 119 trn1 \r8\().8H, \r0\().8H, \r1\().8H 120 trn2 \r9\().8H, \r0\().8H, \r1\().8H 121 trn1 \r1\().8H, \r2\().8H, \r3\().8H 122 trn2 \r3\().8H, \r2\().8H, \r3\().8H 123 trn1 \r0\().8H, \r4\().8H, \r5\().8H 124 trn2 \r5\().8H, \r4\().8H, \r5\().8H 125 trn1 \r2\().8H, \r6\().8H, \r7\().8H 126 trn2 \r7\().8H, \r6\().8H, \r7\().8H 127 128 trn1 \r4\().4S, \r0\().4S, \r2\().4S 129 trn2 \r2\().4S, \r0\().4S, \r2\().4S 130 trn1 \r6\().4S, \r5\().4S, \r7\().4S 131 trn2 \r7\().4S, \r5\().4S, \r7\().4S 132 trn1 \r5\().4S, \r9\().4S, \r3\().4S 133 trn2 \r9\().4S, \r9\().4S, \r3\().4S 134 trn1 \r3\().4S, \r8\().4S, \r1\().4S 135 trn2 \r8\().4S, \r8\().4S, \r1\().4S 136 137 trn1 \r0\().2D, \r3\().2D, \r4\().2D 138 trn2 \r4\().2D, \r3\().2D, \r4\().2D 139 140 trn1 \r1\().2D, \r5\().2D, \r6\().2D 141 trn2 \r5\().2D, \r5\().2D, \r6\().2D 142 143 trn2 \r6\().2D, \r8\().2D, \r2\().2D 144 trn1 \r2\().2D, \r8\().2D, \r2\().2D 145 146 trn1 \r3\().2D, \r9\().2D, \r7\().2D 147 trn2 \r7\().2D, \r9\().2D, \r7\().2D 148 149.endm 150