1 @ RUN: llvm-mc -mcpu=cortex-a8 -triple armv7-apple-darwin -show-encoding < %s | FileCheck %s 2 3 4 @ CHECK: vadd.i8 d16, d17, d16 @ encoding: [0xa0,0x08,0x41,0xf2] 5 vadd.i8 d16, d17, d16 6 @ CHECK: vadd.i16 d16, d17, d16 @ encoding: [0xa0,0x08,0x51,0xf2] 7 vadd.i16 d16, d17, d16 8 @ CHECK: vadd.i64 d16, d17, d16 @ encoding: [0xa0,0x08,0x71,0xf2] 9 vadd.i64 d16, d17, d16 10 @ CHECK: vadd.i32 d16, d17, d16 @ encoding: [0xa0,0x08,0x61,0xf2] 11 vadd.i32 d16, d17, d16 12 @ CHECK: vadd.f32 d16, d16, d17 @ encoding: [0xa1,0x0d,0x40,0xf2] 13 vadd.f32 d16, d16, d17 14 @ CHECK: vadd.f32 q8, q8, q9 @ encoding: [0xe2,0x0d,0x40,0xf2] 15 vadd.f32 q8, q8, q9 16 17 @ CHECK: vaddl.s8 q8, d17, d16 @ encoding: [0xa0,0x00,0xc1,0xf2] 18 vaddl.s8 q8, d17, d16 19 @ CHECK: vaddl.s16 q8, d17, d16 @ encoding: [0xa0,0x00,0xd1,0xf2] 20 vaddl.s16 q8, d17, d16 21 @ CHECK: vaddl.s32 q8, d17, d16 @ encoding: [0xa0,0x00,0xe1,0xf2] 22 vaddl.s32 q8, d17, d16 23 @ CHECK: vaddl.u8 q8, d17, d16 @ encoding: [0xa0,0x00,0xc1,0xf3] 24 vaddl.u8 q8, d17, d16 25 @ CHECK: vaddl.u16 q8, d17, d16 @ encoding: [0xa0,0x00,0xd1,0xf3] 26 vaddl.u16 q8, d17, d16 27 @ CHECK: vaddl.u32 q8, d17, d16 @ encoding: [0xa0,0x00,0xe1,0xf3] 28 vaddl.u32 q8, d17, d16 29 30 @ CHECK: vaddw.s8 q8, q8, d18 @ encoding: [0xa2,0x01,0xc0,0xf2] 31 vaddw.s8 q8, q8, d18 32 @ CHECK: vaddw.s16 q8, q8, d18 @ encoding: [0xa2,0x01,0xd0,0xf2] 33 vaddw.s16 q8, q8, d18 34 @ CHECK: vaddw.s32 q8, q8, d18 @ encoding: [0xa2,0x01,0xe0,0xf2] 35 vaddw.s32 q8, q8, d18 36 @ CHECK: vaddw.u8 q8, q8, d18 @ encoding: [0xa2,0x01,0xc0,0xf3] 37 vaddw.u8 q8, q8, d18 38 @ CHECK: vaddw.u16 q8, q8, d18 @ encoding: [0xa2,0x01,0xd0,0xf3] 39 vaddw.u16 q8, q8, d18 40 @ CHECK: vaddw.u32 q8, q8, d18 @ encoding: [0xa2,0x01,0xe0,0xf3] 41 vaddw.u32 q8, q8, d18 42 43 @ CHECK: vhadd.s8 d16, d16, d17 @ encoding: [0xa1,0x00,0x40,0xf2] 44 vhadd.s8 d16, d16, d17 45 @ CHECK: vhadd.s16 d16, d16, d17 @ encoding: [0xa1,0x00,0x50,0xf2] 46 vhadd.s16 d16, d16, d17 47 @ CHECK: vhadd.s32 d16, d16, d17 @ encoding: [0xa1,0x00,0x60,0xf2] 48 vhadd.s32 d16, d16, d17 49 @ CHECK: vhadd.u8 d16, d16, d17 @ encoding: [0xa1,0x00,0x40,0xf3] 50 vhadd.u8 d16, d16, d17 51 @ CHECK: vhadd.u16 d16, d16, d17 @ encoding: [0xa1,0x00,0x50,0xf3] 52 vhadd.u16 d16, d16, d17 53 @ CHECK: vhadd.u32 d16, d16, d17 @ encoding: [0xa1,0x00,0x60,0xf3] 54 vhadd.u32 d16, d16, d17 55 @ CHECK: vhadd.s8 q8, q8, q9 @ encoding: [0xe2,0x00,0x40,0xf2] 56 vhadd.s8 q8, q8, q9 57 @ CHECK: vhadd.s16 q8, q8, q9 @ encoding: [0xe2,0x00,0x50,0xf2] 58 vhadd.s16 q8, q8, q9 59 @ CHECK: vhadd.s32 q8, q8, q9 @ encoding: [0xe2,0x00,0x60,0xf2] 60 vhadd.s32 q8, q8, q9 61 @ CHECK: vhadd.u8 q8, q8, q9 @ encoding: [0xe2,0x00,0x40,0xf3] 62 vhadd.u8 q8, q8, q9 63 @ CHECK: vhadd.u16 q8, q8, q9 @ encoding: [0xe2,0x00,0x50,0xf3] 64 vhadd.u16 q8, q8, q9 65 @ CHECK: vhadd.u32 q8, q8, q9 @ encoding: [0xe2,0x00,0x60,0xf3] 66 vhadd.u32 q8, q8, q9 67 68 69 vhadd.s8 d11, d24 70 vhadd.s16 d12, d23 71 vhadd.s32 d13, d22 72 vhadd.u8 d14, d21 73 vhadd.u16 d15, d20 74 vhadd.u32 d16, d19 75 vhadd.s8 q1, q12 76 vhadd.s16 q2, q11 77 vhadd.s32 q3, q10 78 vhadd.u8 q4, q9 79 vhadd.u16 q5, q8 80 vhadd.u32 q6, q7 81 82 @ CHECK: vhadd.s8 d11, d11, d24 @ encoding: [0x28,0xb0,0x0b,0xf2] 83 @ CHECK: vhadd.s16 d12, d12, d23 @ encoding: [0x27,0xc0,0x1c,0xf2] 84 @ CHECK: vhadd.s32 d13, d13, d22 @ encoding: [0x26,0xd0,0x2d,0xf2] 85 @ CHECK: vhadd.u8 d14, d14, d21 @ encoding: [0x25,0xe0,0x0e,0xf3] 86 @ CHECK: vhadd.u16 d15, d15, d20 @ encoding: [0x24,0xf0,0x1f,0xf3] 87 @ CHECK: vhadd.u32 d16, d16, d19 @ encoding: [0xa3,0x00,0x60,0xf3] 88 @ CHECK: vhadd.s8 q1, q1, q12 @ encoding: [0x68,0x20,0x02,0xf2] 89 @ CHECK: vhadd.s16 q2, q2, q11 @ encoding: [0x66,0x40,0x14,0xf2] 90 @ CHECK: vhadd.s32 q3, q3, q10 @ encoding: [0x64,0x60,0x26,0xf2] 91 @ CHECK: vhadd.u8 q4, q4, q9 @ encoding: [0x62,0x80,0x08,0xf3] 92 @ CHECK: vhadd.u16 q5, q5, q8 @ encoding: [0x60,0xa0,0x1a,0xf3] 93 @ CHECK: vhadd.u32 q6, q6, q7 @ encoding: [0x4e,0xc0,0x2c,0xf3] 94 95 vrhadd.s8 d16, d16, d17 96 vrhadd.s16 d16, d16, d17 97 vrhadd.s32 d16, d16, d17 98 vrhadd.u8 d16, d16, d17 99 vrhadd.u16 d16, d16, d17 100 vrhadd.u32 d16, d16, d17 101 vrhadd.s8 q8, q8, q9 102 vrhadd.s16 q8, q8, q9 103 vrhadd.s32 q8, q8, q9 104 vrhadd.u8 q8, q8, q9 105 vrhadd.u16 q8, q8, q9 106 vrhadd.u32 q8, q8, q9 107 @ Two-operand forms. 108 vrhadd.s8 d16, d17 109 vrhadd.s16 d16, d17 110 vrhadd.s32 d16, d17 111 vrhadd.u8 d16, d17 112 vrhadd.u16 d16, d17 113 vrhadd.u32 d16, d17 114 vrhadd.s8 q8, q9 115 vrhadd.s16 q8, q9 116 vrhadd.s32 q8, q9 117 vrhadd.u8 q8, q9 118 vrhadd.u16 q8, q9 119 vrhadd.u32 q8, q9 120 121 @ CHECK: vrhadd.s8 d16, d16, d17 @ encoding: [0xa1,0x01,0x40,0xf2] 122 @ CHECK: vrhadd.s16 d16, d16, d17 @ encoding: [0xa1,0x01,0x50,0xf2] 123 @ CHECK: vrhadd.s32 d16, d16, d17 @ encoding: [0xa1,0x01,0x60,0xf2] 124 @ CHECK: vrhadd.u8 d16, d16, d17 @ encoding: [0xa1,0x01,0x40,0xf3] 125 @ CHECK: vrhadd.u16 d16, d16, d17 @ encoding: [0xa1,0x01,0x50,0xf3] 126 @ CHECK: vrhadd.u32 d16, d16, d17 @ encoding: [0xa1,0x01,0x60,0xf3] 127 @ CHECK: vrhadd.s8 q8, q8, q9 @ encoding: [0xe2,0x01,0x40,0xf2] 128 @ CHECK: vrhadd.s16 q8, q8, q9 @ encoding: [0xe2,0x01,0x50,0xf2] 129 @ CHECK: vrhadd.s32 q8, q8, q9 @ encoding: [0xe2,0x01,0x60,0xf2] 130 @ CHECK: vrhadd.u8 q8, q8, q9 @ encoding: [0xe2,0x01,0x40,0xf3] 131 @ CHECK: vrhadd.u16 q8, q8, q9 @ encoding: [0xe2,0x01,0x50,0xf3] 132 @ CHECK: vrhadd.u32 q8, q8, q9 @ encoding: [0xe2,0x01,0x60,0xf3] 133 134 @ CHECK: vrhadd.s8 d16, d16, d17 @ encoding: [0xa1,0x01,0x40,0xf2] 135 @ CHECK: vrhadd.s16 d16, d16, d17 @ encoding: [0xa1,0x01,0x50,0xf2] 136 @ CHECK: vrhadd.s32 d16, d16, d17 @ encoding: [0xa1,0x01,0x60,0xf2] 137 @ CHECK: vrhadd.u8 d16, d16, d17 @ encoding: [0xa1,0x01,0x40,0xf3] 138 @ CHECK: vrhadd.u16 d16, d16, d17 @ encoding: [0xa1,0x01,0x50,0xf3] 139 @ CHECK: vrhadd.u32 d16, d16, d17 @ encoding: [0xa1,0x01,0x60,0xf3] 140 @ CHECK: vrhadd.s8 q8, q8, q9 @ encoding: [0xe2,0x01,0x40,0xf2] 141 @ CHECK: vrhadd.s16 q8, q8, q9 @ encoding: [0xe2,0x01,0x50,0xf2] 142 @ CHECK: vrhadd.s32 q8, q8, q9 @ encoding: [0xe2,0x01,0x60,0xf2] 143 @ CHECK: vrhadd.u8 q8, q8, q9 @ encoding: [0xe2,0x01,0x40,0xf3] 144 @ CHECK: vrhadd.u16 q8, q8, q9 @ encoding: [0xe2,0x01,0x50,0xf3] 145 @ CHECK: vrhadd.u32 q8, q8, q9 @ encoding: [0xe2,0x01,0x60,0xf3] 146 147 148 vqadd.s8 d16, d16, d17 149 vqadd.s16 d16, d16, d17 150 vqadd.s32 d16, d16, d17 151 vqadd.s64 d16, d16, d17 152 vqadd.u8 d16, d16, d17 153 vqadd.u16 d16, d16, d17 154 vqadd.u32 d16, d16, d17 155 vqadd.u64 d16, d16, d17 156 157 @ CHECK: vqadd.s8 d16, d16, d17 @ encoding: [0xb1,0x00,0x40,0xf2] 158 @ CHECK: vqadd.s16 d16, d16, d17 @ encoding: [0xb1,0x00,0x50,0xf2] 159 @ CHECK: vqadd.s32 d16, d16, d17 @ encoding: [0xb1,0x00,0x60,0xf2] 160 @ CHECK: vqadd.s64 d16, d16, d17 @ encoding: [0xb1,0x00,0x70,0xf2] 161 @ CHECK: vqadd.u8 d16, d16, d17 @ encoding: [0xb1,0x00,0x40,0xf3] 162 @ CHECK: vqadd.u16 d16, d16, d17 @ encoding: [0xb1,0x00,0x50,0xf3] 163 @ CHECK: vqadd.u32 d16, d16, d17 @ encoding: [0xb1,0x00,0x60,0xf3] 164 @ CHECK: vqadd.u64 d16, d16, d17 @ encoding: [0xb1,0x00,0x70,0xf3] 165 166 vqadd.s8 q8, q8, q9 167 vqadd.s16 q8, q8, q9 168 vqadd.s32 q8, q8, q9 169 vqadd.s64 q8, q8, q9 170 vqadd.u8 q8, q8, q9 171 vqadd.u16 q8, q8, q9 172 vqadd.u32 q8, q8, q9 173 vqadd.u64 q8, q8, q9 174 175 @ CHECK: vqadd.s8 q8, q8, q9 @ encoding: [0xf2,0x00,0x40,0xf2] 176 @ CHECK: vqadd.s16 q8, q8, q9 @ encoding: [0xf2,0x00,0x50,0xf2] 177 @ CHECK: vqadd.s32 q8, q8, q9 @ encoding: [0xf2,0x00,0x60,0xf2] 178 @ CHECK: vqadd.s64 q8, q8, q9 @ encoding: [0xf2,0x00,0x70,0xf2] 179 @ CHECK: vqadd.u8 q8, q8, q9 @ encoding: [0xf2,0x00,0x40,0xf3] 180 @ CHECK: vqadd.u16 q8, q8, q9 @ encoding: [0xf2,0x00,0x50,0xf3] 181 @ CHECK: vqadd.u32 q8, q8, q9 @ encoding: [0xf2,0x00,0x60,0xf3] 182 @ CHECK: vqadd.u64 q8, q8, q9 @ encoding: [0xf2,0x00,0x70,0xf3] 183 184 185 @ two-operand variants. 186 vqadd.s8 d16, d17 187 vqadd.s16 d16, d17 188 vqadd.s32 d16, d17 189 vqadd.s64 d16, d17 190 vqadd.u8 d16, d17 191 vqadd.u16 d16, d17 192 vqadd.u32 d16, d17 193 vqadd.u64 d16, d17 194 195 @ CHECK: vqadd.s8 d16, d16, d17 @ encoding: [0xb1,0x00,0x40,0xf2] 196 @ CHECK: vqadd.s16 d16, d16, d17 @ encoding: [0xb1,0x00,0x50,0xf2] 197 @ CHECK: vqadd.s32 d16, d16, d17 @ encoding: [0xb1,0x00,0x60,0xf2] 198 @ CHECK: vqadd.s64 d16, d16, d17 @ encoding: [0xb1,0x00,0x70,0xf2] 199 @ CHECK: vqadd.u8 d16, d16, d17 @ encoding: [0xb1,0x00,0x40,0xf3] 200 @ CHECK: vqadd.u16 d16, d16, d17 @ encoding: [0xb1,0x00,0x50,0xf3] 201 @ CHECK: vqadd.u32 d16, d16, d17 @ encoding: [0xb1,0x00,0x60,0xf3] 202 @ CHECK: vqadd.u64 d16, d16, d17 @ encoding: [0xb1,0x00,0x70,0xf3] 203 204 vqadd.s8 q8, q9 205 vqadd.s16 q8, q9 206 vqadd.s32 q8, q9 207 vqadd.s64 q8, q9 208 vqadd.u8 q8, q9 209 vqadd.u16 q8, q9 210 vqadd.u32 q8, q9 211 vqadd.u64 q8, q9 212 213 @ CHECK: vqadd.s8 q8, q8, q9 @ encoding: [0xf2,0x00,0x40,0xf2] 214 @ CHECK: vqadd.s16 q8, q8, q9 @ encoding: [0xf2,0x00,0x50,0xf2] 215 @ CHECK: vqadd.s32 q8, q8, q9 @ encoding: [0xf2,0x00,0x60,0xf2] 216 @ CHECK: vqadd.s64 q8, q8, q9 @ encoding: [0xf2,0x00,0x70,0xf2] 217 @ CHECK: vqadd.u8 q8, q8, q9 @ encoding: [0xf2,0x00,0x40,0xf3] 218 @ CHECK: vqadd.u16 q8, q8, q9 @ encoding: [0xf2,0x00,0x50,0xf3] 219 @ CHECK: vqadd.u32 q8, q8, q9 @ encoding: [0xf2,0x00,0x60,0xf3] 220 @ CHECK: vqadd.u64 q8, q8, q9 @ encoding: [0xf2,0x00,0x70,0xf3] 221 222 223 @ CHECK: vaddhn.i16 d16, q8, q9 @ encoding: [0xa2,0x04,0xc0,0xf2] 224 vaddhn.i16 d16, q8, q9 225 @ CHECK: vaddhn.i32 d16, q8, q9 @ encoding: [0xa2,0x04,0xd0,0xf2] 226 vaddhn.i32 d16, q8, q9 227 @ CHECK: vaddhn.i64 d16, q8, q9 @ encoding: [0xa2,0x04,0xe0,0xf2] 228 vaddhn.i64 d16, q8, q9 229 @ CHECK: vraddhn.i16 d16, q8, q9 @ encoding: [0xa2,0x04,0xc0,0xf3] 230 vraddhn.i16 d16, q8, q9 231 @ CHECK: vraddhn.i32 d16, q8, q9 @ encoding: [0xa2,0x04,0xd0,0xf3] 232 vraddhn.i32 d16, q8, q9 233 @ CHECK: vraddhn.i64 d16, q8, q9 @ encoding: [0xa2,0x04,0xe0,0xf3] 234 vraddhn.i64 d16, q8, q9 235 236 237 @ Two-operand variants 238 239 vadd.i8 d6, d5 240 vadd.i16 d7, d1 241 vadd.i32 d8, d2 242 vadd.i64 d9, d3 243 244 vadd.i8 q6, q5 245 vadd.i16 q7, q1 246 vadd.i32 q8, q2 247 vadd.i64 q9, q3 248 249 @ CHECK: vadd.i8 d6, d6, d5 @ encoding: [0x05,0x68,0x06,0xf2] 250 @ CHECK: vadd.i16 d7, d7, d1 @ encoding: [0x01,0x78,0x17,0xf2] 251 @ CHECK: vadd.i32 d8, d8, d2 @ encoding: [0x02,0x88,0x28,0xf2] 252 @ CHECK: vadd.i64 d9, d9, d3 @ encoding: [0x03,0x98,0x39,0xf2] 253 254 @ CHECK: vadd.i8 q6, q6, q5 @ encoding: [0x4a,0xc8,0x0c,0xf2] 255 @ CHECK: vadd.i16 q7, q7, q1 @ encoding: [0x42,0xe8,0x1e,0xf2] 256 @ CHECK: vadd.i32 q8, q8, q2 @ encoding: [0xc4,0x08,0x60,0xf2] 257 @ CHECK: vadd.i64 q9, q9, q3 @ encoding: [0xc6,0x28,0x72,0xf2] 258 259 260 vaddw.s8 q6, d5 261 vaddw.s16 q7, d1 262 vaddw.s32 q8, d2 263 264 vaddw.u8 q6, d5 265 vaddw.u16 q7, d1 266 vaddw.u32 q8, d2 267 268 @ CHECK: vaddw.s8 q6, q6, d5 @ encoding: [0x05,0xc1,0x8c,0xf2] 269 @ CHECK: vaddw.s16 q7, q7, d1 @ encoding: [0x01,0xe1,0x9e,0xf2] 270 @ CHECK: vaddw.s32 q8, q8, d2 @ encoding: [0x82,0x01,0xe0,0xf2] 271 272 @ CHECK: vaddw.u8 q6, q6, d5 @ encoding: [0x05,0xc1,0x8c,0xf3] 273 @ CHECK: vaddw.u16 q7, q7, d1 @ encoding: [0x01,0xe1,0x9e,0xf3] 274 @ CHECK: vaddw.u32 q8, q8, d2 @ encoding: [0x82,0x01,0xe0,0xf3] 275