1//RUN: not llvm-mc -triple thumb-none-linux-gnu -mattr=+v8.1a -mattr=neon -show-encoding < %s 2>%t | FileCheck %s --check-prefix=CHECK-V81aTHUMB 2//RUN: FileCheck --check-prefix=CHECK-ERROR <%t %s 3//RUN: not llvm-mc -triple arm-none-linux-gnu -mattr=+v8.1a -mattr=neon -show-encoding < %s 2>%t | FileCheck %s --check-prefix=CHECK-V81aARM 4//RUN: FileCheck --check-prefix=CHECK-ERROR <%t %s 5 6//RUN: not llvm-mc -triple thumb-none-linux-gnu -mattr=+v8 -mattr=neon -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=CHECK-V8 7//RUN: not llvm-mc -triple arm-none-linux-gnu -mattr=+v8 -mattr=neon -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=CHECK-V8 8 9 10 .text 11//CHECK-V8THUMB: .text 12 13 vqrdmlah.i8 q0, q1, q2 14 vqrdmlah.u16 d0, d1, d2 15 vqrdmlsh.f32 q3, q4, q5 16 vqrdmlsh.f64 d3, d5, d5 17 18//CHECK-ERROR: error: invalid operand for instruction 19//CHECK-ERROR: vqrdmlah.i8 q0, q1, q2 20//CHECK-ERROR: ^ 21//CHECK-ERROR: error: invalid operand for instruction 22//CHECK-ERROR: vqrdmlah.u16 d0, d1, d2 23//CHECK-ERROR: ^ 24//CHECK-ERROR: error: invalid operand for instruction 25//CHECK-ERROR: vqrdmlsh.f32 q3, q4, q5 26//CHECK-ERROR: ^ 27//CHECK-ERROR: error: invalid operand for instruction 28//CHECK-ERROR: vqrdmlsh.f64 d3, d5, d5 29//CHECK-ERROR: ^ 30//CHECK-V8: error: invalid operand for instruction 31//CHECK-V8: vqrdmlah.i8 q0, q1, q2 32//CHECK-V8: ^ 33//CHECK-V8: error: invalid operand for instruction 34//CHECK-V8: vqrdmlah.u16 d0, d1, d2 35//CHECK-V8: ^ 36//CHECK-V8: error: invalid operand for instruction 37//CHECK-V8: vqrdmlsh.f32 q3, q4, q5 38//CHECK-V8: ^ 39//CHECK-V8: error: invalid operand for instruction 40//CHECK-V8: vqrdmlsh.f64 d3, d5, d5 41//CHECK-V8: ^ 42 43 vqrdmlah.s16 d0, d1, d2 44//CHECK-V81aARM: vqrdmlah.s16 d0, d1, d2 @ encoding: [0x12,0x0b,0x11,0xf3] 45//CHECK-V81aTHUMB: vqrdmlah.s16 d0, d1, d2 @ encoding: [0x11,0xff,0x12,0x0b] 46//CHECK-V8: error: instruction requires: armv8.1a 47//CHECK-V8: vqrdmlah.s16 d0, d1, d2 48//CHECK-V8: ^ 49 50 vqrdmlah.s32 d0, d1, d2 51//CHECK-V81aARM: vqrdmlah.s32 d0, d1, d2 @ encoding: [0x12,0x0b,0x21,0xf3] 52//CHECK-V81aTHUMB: vqrdmlah.s32 d0, d1, d2 @ encoding: [0x21,0xff,0x12,0x0b] 53//CHECK-V8: error: instruction requires: armv8.1a 54//CHECK-V8: vqrdmlah.s32 d0, d1, d2 55//CHECK-V8: ^ 56 57 vqrdmlah.s16 q0, q1, q2 58//CHECK-V81aARM: vqrdmlah.s16 q0, q1, q2 @ encoding: [0x54,0x0b,0x12,0xf3] 59//CHECK-V81aTHUMB: vqrdmlah.s16 q0, q1, q2 @ encoding: [0x12,0xff,0x54,0x0b] 60//CHECK-V8: error: instruction requires: armv8.1a 61//CHECK-V8: vqrdmlah.s16 q0, q1, q2 62//CHECK-V8: ^ 63 64 vqrdmlah.s32 q2, q3, q0 65//CHECK-V81aARM: vqrdmlah.s32 q2, q3, q0 @ encoding: [0x50,0x4b,0x26,0xf3] 66//CHECK-V81aTHUMB: vqrdmlah.s32 q2, q3, q0 @ encoding: [0x26,0xff,0x50,0x4b] 67//CHECK-V8: error: instruction requires: armv8.1a 68//CHECK-V8: vqrdmlah.s32 q2, q3, q0 69//CHECK-V8: ^ 70 71 72 vqrdmlsh.s16 d7, d6, d5 73//CHECK-V81aARM: vqrdmlsh.s16 d7, d6, d5 @ encoding: [0x15,0x7c,0x16,0xf3] 74//CHECK-V81aTHUMB: vqrdmlsh.s16 d7, d6, d5 @ encoding: [0x16,0xff,0x15,0x7c] 75//CHECK-V8: error: instruction requires: armv8.1a 76//CHECK-V8: vqrdmlsh.s16 d7, d6, d5 77//CHECK-V8: ^ 78 79 vqrdmlsh.s32 d0, d1, d2 80//CHECK-V81aARM: vqrdmlsh.s32 d0, d1, d2 @ encoding: [0x12,0x0c,0x21,0xf3] 81//CHECK-V81aTHUMB: vqrdmlsh.s32 d0, d1, d2 @ encoding: [0x21,0xff,0x12,0x0c] 82//CHECK-V8: error: instruction requires: armv8.1a 83//CHECK-V8: vqrdmlsh.s32 d0, d1, d2 84//CHECK-V8: ^ 85 86 vqrdmlsh.s16 q0, q1, q2 87//CHECK-V81aARM: vqrdmlsh.s16 q0, q1, q2 @ encoding: [0x54,0x0c,0x12,0xf3] 88//CHECK-V81aTHUMB: vqrdmlsh.s16 q0, q1, q2 @ encoding: [0x12,0xff,0x54,0x0c] 89//CHECK-V8: error: instruction requires: armv8.1a 90//CHECK-V8: vqrdmlsh.s16 q0, q1, q2 91//CHECK-V8: ^ 92 93 vqrdmlsh.s32 q3, q4, q5 94//CHECK-V81aARM: vqrdmlsh.s32 q3, q4, q5 @ encoding: [0x5a,0x6c,0x28,0xf3] 95//CHECK-V81aTHUMB: vqrdmlsh.s32 q3, q4, q5 @ encoding: [0x28,0xff,0x5a,0x6c] 96//CHECK-V8: error: instruction requires: armv8.1a 97//CHECK-V8: vqrdmlsh.s32 q3, q4, q5 98//CHECK-V8: ^ 99 100 101 vqrdmlah.i8 q0, q1, d9[7] 102 vqrdmlah.u16 d0, d1, d2[3] 103 vqrdmlsh.f32 q3, q4, d5[1] 104 vqrdmlsh.f64 d3, d5, d5[0] 105 106//CHECK-ERROR: error: invalid operand for instruction 107//CHECK-ERROR: vqrdmlah.i8 q0, q1, d9[7] 108//CHECK-ERROR: ^ 109//CHECK-ERROR: error: invalid operand for instruction 110//CHECK-ERROR: vqrdmlah.u16 d0, d1, d2[3] 111//CHECK-ERROR: ^ 112//CHECK-ERROR: error: invalid operand for instruction 113//CHECK-ERROR: vqrdmlsh.f32 q3, q4, d5[1] 114//CHECK-ERROR: ^ 115//CHECK-ERROR: error: invalid operand for instruction 116//CHECK-ERROR: vqrdmlsh.f64 d3, d5, d5[0] 117//CHECK-ERROR: ^ 118 119 vqrdmlah.s16 d0, d1, d2[0] 120//CHECK-V81aARM: vqrdmlah.s16 d0, d1, d2[0] @ encoding: [0x42,0x0e,0x91,0xf2] 121//CHECK-V81aTHUMB: vqrdmlah.s16 d0, d1, d2[0] @ encoding: [0x91,0xef,0x42,0x0e] 122//CHECK-V8: error: instruction requires: armv8.1a 123//CHECK-V8: vqrdmlah.s16 d0, d1, d2[0] 124//CHECK-V8: ^ 125 126 vqrdmlah.s32 d0, d1, d2[0] 127//CHECK-V81aARM: vqrdmlah.s32 d0, d1, d2[0] @ encoding: [0x42,0x0e,0xa1,0xf2] 128//CHECK-V81aTHUMB: vqrdmlah.s32 d0, d1, d2[0] @ encoding: [0xa1,0xef,0x42,0x0e] 129//CHECK-V8: error: instruction requires: armv8.1a 130//CHECK-V8: vqrdmlah.s32 d0, d1, d2[0] 131//CHECK-V8: ^ 132 133 vqrdmlah.s16 q0, q1, d2[0] 134//CHECK-V81aARM: vqrdmlah.s16 q0, q1, d2[0] @ encoding: [0x42,0x0e,0x92,0xf3] 135//CHECK-V81aTHUMB: vqrdmlah.s16 q0, q1, d2[0] @ encoding: [0x92,0xff,0x42,0x0e] 136//CHECK-V8: error: instruction requires: armv8.1a 137//CHECK-V8: vqrdmlah.s16 q0, q1, d2[0] 138//CHECK-V8: ^ 139 140 vqrdmlah.s32 q0, q1, d2[0] 141//CHECK-V81aARM: vqrdmlah.s32 q0, q1, d2[0] @ encoding: [0x42,0x0e,0xa2,0xf3] 142//CHECK-V81aTHUMB: vqrdmlah.s32 q0, q1, d2[0] @ encoding: [0xa2,0xff,0x42,0x0e] 143//CHECK-V8: error: instruction requires: armv8.1a 144//CHECK-V8: vqrdmlah.s32 q0, q1, d2[0] 145//CHECK-V8: ^ 146 147 148 vqrdmlsh.s16 d0, d1, d2[0] 149//CHECK-V81aARM: vqrdmlsh.s16 d0, d1, d2[0] @ encoding: [0x42,0x0f,0x91,0xf2] 150//CHECK-V81aTHUMB: vqrdmlsh.s16 d0, d1, d2[0] @ encoding: [0x91,0xef,0x42,0x0f] 151//CHECK-V8: error: instruction requires: armv8.1a 152//CHECK-V8: vqrdmlsh.s16 d0, d1, d2[0] 153//CHECK-V8: ^ 154 155 vqrdmlsh.s32 d0, d1, d2[0] 156//CHECK-V81aARM: vqrdmlsh.s32 d0, d1, d2[0] @ encoding: [0x42,0x0f,0xa1,0xf2] 157//CHECK-V81aTHUMB: vqrdmlsh.s32 d0, d1, d2[0] @ encoding: [0xa1,0xef,0x42,0x0f] 158//CHECK-V8: error: instruction requires: armv8.1a 159//CHECK-V8: vqrdmlsh.s32 d0, d1, d2[0] 160//CHECK-V8: ^ 161 162 vqrdmlsh.s16 q0, q1, d2[0] 163//CHECK-V81aARM: vqrdmlsh.s16 q0, q1, d2[0] @ encoding: [0x42,0x0f,0x92,0xf3] 164//CHECK-V81aTHUMB: vqrdmlsh.s16 q0, q1, d2[0] @ encoding: [0x92,0xff,0x42,0x0f] 165//CHECK-V8: error: instruction requires: armv8.1a 166//CHECK-V8: vqrdmlsh.s16 q0, q1, d2[0] 167//CHECK-V8: ^ 168 169 vqrdmlsh.s32 q0, q1, d2[0] 170//CHECK-V81aARM: vqrdmlsh.s32 q0, q1, d2[0] @ encoding: [0x42,0x0f,0xa2,0xf3] 171//CHECK-V81aTHUMB: vqrdmlsh.s32 q0, q1, d2[0] @ encoding: [0xa2,0xff,0x42,0x0f] 172//CHECK-V8: error: instruction requires: armv8.1a 173//CHECK-V8: vqrdmlsh.s32 q0, q1, d2[0] 174//CHECK-V8: ^ 175 176 setpan #0 177//CHECK-V81aTHUMB: setpan #0 @ encoding: [0x10,0xb6] 178//CHECK-V81aARM: setpan #0 @ encoding: [0x00,0x00,0x10,0xf1] 179//CHECK-V8: error: instruction requires: armv8.1a 180//CHECK-V8: setpan #0 181//CHECK-V8: ^ 182 183 setpan #1 184//CHECK-V81aTHUMB: setpan #1 @ encoding: [0x18,0xb6] 185//CHECK-V81aARM: setpan #1 @ encoding: [0x00,0x02,0x10,0xf1] 186//CHECK-V8: error: instruction requires: armv8.1a 187//CHECK-V8: setpan #1 188//CHECK-V8: ^ 189 setpan 190 setpan #-1 191 setpan #2 192//CHECK-ERROR: error: too few operands for instruction 193//CHECK-ERROR: setpan 194//CHECK-ERROR: ^ 195//CHECK-ERROR: error: invalid operand for instruction 196//CHECK-ERROR: setpan #-1 197//CHECK-ERROR: ^ 198//CHECK-ERROR: error: invalid operand for instruction 199//CHECK-ERROR: setpan #2 200//CHECK-ERROR: ^ 201 202 it eq 203 setpaneq #0 204//CHECK-THUMB-ERROR: error: instruction 'setpan' is not predicable, but condition code specified 205//CHECK-THUMB-ERROR: setpaneq #0 206//CHECK-THUMB-ERROR: ^ 207