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