1*c9b2cd46SSimon Tatham# RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+mve -show-encoding < %s \ 2*c9b2cd46SSimon Tatham# RUN: | FileCheck --check-prefix=CHECK-NOFP %s 3*c9b2cd46SSimon Tatham# RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+mve.fp,+fp64 -show-encoding < %s 2>%t \ 4*c9b2cd46SSimon Tatham# RUN: | FileCheck --check-prefix=CHECK %s 5*c9b2cd46SSimon Tatham# RUN: FileCheck --check-prefix=ERROR < %t %s 6*c9b2cd46SSimon Tatham 7*c9b2cd46SSimon Tatham# CHECK: vrintn.f16 q1, q0 @ encoding: [0xb6,0xff,0x40,0x24] 8*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintn.f16 q1, q0 @ encoding: [0xb6,0xff,0x40,0x24] 9*c9b2cd46SSimon Tathamvrintn.f16 q1, q0 10*c9b2cd46SSimon Tatham 11*c9b2cd46SSimon Tatham# CHECK: vrintn.f32 q0, q4 @ encoding: [0xba,0xff,0x48,0x04] 12*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintn.f32 q0, q4 @ encoding: [0xba,0xff,0x48,0x04] 13*c9b2cd46SSimon Tathamvrintn.f32 q0, q4 14*c9b2cd46SSimon Tatham 15*c9b2cd46SSimon Tatham# CHECK: vrinta.f16 q0, q1 @ encoding: [0xb6,0xff,0x42,0x05] 16*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrinta.f16 q0, q1 @ encoding: [0xb6,0xff,0x42,0x05] 17*c9b2cd46SSimon Tathamvrinta.f16 q0, q1 18*c9b2cd46SSimon Tatham 19*c9b2cd46SSimon Tatham# CHECK: vrinta.f32 q1, q3 @ encoding: [0xba,0xff,0x46,0x25] 20*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrinta.f32 q1, q3 @ encoding: [0xba,0xff,0x46,0x25] 21*c9b2cd46SSimon Tathamvrinta.f32 q1, q3 22*c9b2cd46SSimon Tatham 23*c9b2cd46SSimon Tatham# CHECK: vrintm.f16 q0, q5 @ encoding: [0xb6,0xff,0xca,0x06] 24*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintm.f16 q0, q5 @ encoding: [0xb6,0xff,0xca,0x06] 25*c9b2cd46SSimon Tathamvrintm.f16 q0, q5 26*c9b2cd46SSimon Tatham 27*c9b2cd46SSimon Tatham# CHECK: vrintm.f32 q0, q4 @ encoding: [0xba,0xff,0xc8,0x06] 28*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintm.f32 q0, q4 @ encoding: [0xba,0xff,0xc8,0x06] 29*c9b2cd46SSimon Tathamvrintm.f32 q0, q4 30*c9b2cd46SSimon Tatham 31*c9b2cd46SSimon Tatham# CHECK: vrintp.f16 q1, q0 @ encoding: [0xb6,0xff,0xc0,0x27] 32*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintp.f16 q1, q0 @ encoding: [0xb6,0xff,0xc0,0x27] 33*c9b2cd46SSimon Tathamvrintp.f16 q1, q0 34*c9b2cd46SSimon Tatham 35*c9b2cd46SSimon Tatham# CHECK: vrintp.f32 q0, q1 @ encoding: [0xba,0xff,0xc2,0x07] 36*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintp.f32 q0, q1 @ encoding: [0xba,0xff,0xc2,0x07] 37*c9b2cd46SSimon Tathamvrintp.f32 q0, q1 38*c9b2cd46SSimon Tatham 39*c9b2cd46SSimon Tatham# CHECK: vrintx.f16 q1, q2 @ encoding: [0xb6,0xff,0xc4,0x24] 40*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintx.f16 q1, q2 @ encoding: [0xb6,0xff,0xc4,0x24] 41*c9b2cd46SSimon Tathamvrintx.f16 q1, q2 42*c9b2cd46SSimon Tatham 43*c9b2cd46SSimon Tatham# CHECK: vrintx.f32 q1, q1 @ encoding: [0xba,0xff,0xc2,0x24] 44*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintx.f32 q1, q1 @ encoding: [0xba,0xff,0xc2,0x24] 45*c9b2cd46SSimon Tathamvrintx.f32 q1, q1 46*c9b2cd46SSimon Tatham 47*c9b2cd46SSimon Tatham# CHECK: vrintz.f16 q1, q6 @ encoding: [0xb6,0xff,0xcc,0x25] 48*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintz.f16 q1, q6 @ encoding: [0xb6,0xff,0xcc,0x25] 49*c9b2cd46SSimon Tathamvrintz.f16 q1, q6 50*c9b2cd46SSimon Tatham 51*c9b2cd46SSimon Tatham# CHECK: vrintz.f32 q1, q0 @ encoding: [0xba,0xff,0xc0,0x25] 52*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintz.f32 q1, q0 @ encoding: [0xba,0xff,0xc0,0x25] 53*c9b2cd46SSimon Tathamvrintz.f32 q1, q0 54*c9b2cd46SSimon Tatham 55*c9b2cd46SSimon Tatham# CHECK: vrintr.f32 s0, s1 @ encoding: [0xb6,0xee,0x60,0x0a] 56*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintr.f32 s0, s1 @ encoding: [0xb6,0xee,0x60,0x0a] 57*c9b2cd46SSimon Tathamvrintr.f32.f32 s0, s1 58*c9b2cd46SSimon Tatham 59*c9b2cd46SSimon Tatham# CHECK: vrintr.f64 d0, d1 @ encoding: [0xb6,0xee,0x41,0x0b] 60*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintr.f64 d0, d1 @ encoding: [0xb6,0xee,0x41,0x0b] 61*c9b2cd46SSimon Tathamvrintr.f64.f64 d0, d1 62*c9b2cd46SSimon Tatham 63*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: invalid instruction 64*c9b2cd46SSimon Tathamvrintr.f32.f32 q0, q1 65*c9b2cd46SSimon Tatham 66*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: invalid instruction 67*c9b2cd46SSimon Tathamvrintr.f64 q0, q1 68*c9b2cd46SSimon Tatham 69*c9b2cd46SSimon Tatham# CHECK: vmul.f16 q2, q1, q3 @ encoding: [0x12,0xff,0x56,0x4d] 70*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmul.f16 q2, q1, q3 @ encoding: [0x12,0xff,0x56,0x4d] 71*c9b2cd46SSimon Tathamvmul.f16 q2, q1, q3 72*c9b2cd46SSimon Tatham 73*c9b2cd46SSimon Tatham# CHECK: vmul.f32 q0, q0, q5 @ encoding: [0x00,0xff,0x5a,0x0d] 74*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmul.f32 q0, q0, q5 @ encoding: [0x00,0xff,0x5a,0x0d] 75*c9b2cd46SSimon Tathamvmul.f32 q0, q0, q5 76*c9b2cd46SSimon Tatham 77*c9b2cd46SSimon Tatham# CHECK: vcmla.f16 q3, q2, q1, #0 @ encoding: [0x24,0xfc,0x42,0x68] 78*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f16 q3, q2, q1, #0 @ encoding: [0x24,0xfc,0x42,0x68] 79*c9b2cd46SSimon Tathamvcmla.f16 q3, q2, q1, #0 80*c9b2cd46SSimon Tatham 81*c9b2cd46SSimon Tatham# CHECK: vcmla.f16 q0, q0, q5, #90 @ encoding: [0xa0,0xfc,0x4a,0x08] 82*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f16 q0, q0, q5, #90 @ encoding: [0xa0,0xfc,0x4a,0x08] 83*c9b2cd46SSimon Tathamvcmla.f16 q0, q0, q5, #90 84*c9b2cd46SSimon Tatham 85*c9b2cd46SSimon Tatham# CHECK: vcmla.f16 q3, q7, q2, #180 @ encoding: [0x2e,0xfd,0x44,0x68] 86*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f16 q3, q7, q2, #180 @ encoding: [0x2e,0xfd,0x44,0x68] 87*c9b2cd46SSimon Tathamvcmla.f16 q3, q7, q2, #180 88*c9b2cd46SSimon Tatham 89*c9b2cd46SSimon Tatham# CHECK: vcmla.f16 q2, q7, q6, #270 @ encoding: [0xae,0xfd,0x4c,0x48] 90*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f16 q2, q7, q6, #270 @ encoding: [0xae,0xfd,0x4c,0x48] 91*c9b2cd46SSimon Tathamvcmla.f16 q2, q7, q6, #270 92*c9b2cd46SSimon Tatham 93*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: complex rotation must be 0, 90, 180 or 270 94*c9b2cd46SSimon Tathamvcmla.f16 q3, q2, q1, #200 95*c9b2cd46SSimon Tatham 96*c9b2cd46SSimon Tatham# CHECK: vcmla.f32 q2, q6, q6, #0 @ encoding: [0x3c,0xfc,0x4c,0x48] 97*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f32 q2, q6, q6, #0 @ encoding: [0x3c,0xfc,0x4c,0x48] 98*c9b2cd46SSimon Tathamvcmla.f32 q2, q6, q6, #0 99*c9b2cd46SSimon Tatham 100*c9b2cd46SSimon Tatham# CHECK: vcmla.f32 q7, q1, q3, #90 @ encoding: [0xb2,0xfc,0x46,0xe8] 101*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f32 q7, q1, q3, #90 @ encoding: [0xb2,0xfc,0x46,0xe8] 102*c9b2cd46SSimon Tathamvcmla.f32 q7, q1, q3, #90 103*c9b2cd46SSimon Tatham 104*c9b2cd46SSimon Tatham# CHECK: vcmla.f32 q4, q5, q3, #180 @ encoding: [0x3a,0xfd,0x46,0x88] 105*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f32 q4, q5, q3, #180 @ encoding: [0x3a,0xfd,0x46,0x88] 106*c9b2cd46SSimon Tathamvcmla.f32 q4, q5, q3, #180 107*c9b2cd46SSimon Tatham 108*c9b2cd46SSimon Tatham# CHECK: vcmla.f32 q3, q2, q7, #270 @ encoding: [0xb4,0xfd,0x4e,0x68] 109*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f32 q3, q2, q7, #270 @ encoding: [0xb4,0xfd,0x4e,0x68] 110*c9b2cd46SSimon Tathamvcmla.f32 q3, q2, q7, #270 111*c9b2cd46SSimon Tatham 112*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: complex rotation must be 0, 90, 180 or 270 113*c9b2cd46SSimon Tathamvcmla.f32 q3, q2, q1, #16 114*c9b2cd46SSimon Tatham 115*c9b2cd46SSimon Tatham# CHECK: vfma.f16 q0, q2, q3 @ encoding: [0x14,0xef,0x56,0x0c] 116*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vfma.f16 q0, q2, q3 @ encoding: [0x14,0xef,0x56,0x0c] 117*c9b2cd46SSimon Tathamvfma.f16 q0, q2, q3 118*c9b2cd46SSimon Tatham 119*c9b2cd46SSimon Tatham# CHECK: vfma.f32 q0, q3, q7 @ encoding: [0x06,0xef,0x5e,0x0c] 120*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vfma.f32 q0, q3, q7 @ encoding: [0x06,0xef,0x5e,0x0c] 121*c9b2cd46SSimon Tathamvfma.f32 q0, q3, q7 122*c9b2cd46SSimon Tatham 123*c9b2cd46SSimon Tatham# CHECK: vfms.f16 q0, q2, q5 @ encoding: [0x34,0xef,0x5a,0x0c] 124*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vfms.f16 q0, q2, q5 @ encoding: [0x34,0xef,0x5a,0x0c] 125*c9b2cd46SSimon Tathamvfms.f16 q0, q2, q5 126*c9b2cd46SSimon Tatham 127*c9b2cd46SSimon Tatham# CHECK: vfms.f32 q1, q1, q2 @ encoding: [0x22,0xef,0x54,0x2c] 128*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vfms.f32 q1, q1, q2 @ encoding: [0x22,0xef,0x54,0x2c] 129*c9b2cd46SSimon Tathamvfms.f32 q1, q1, q2 130*c9b2cd46SSimon Tatham 131*c9b2cd46SSimon Tatham# CHECK: vadd.f16 q0, q0, q5 @ encoding: [0x10,0xef,0x4a,0x0d] 132*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vadd.f16 q0, q0, q5 @ encoding: [0x10,0xef,0x4a,0x0d] 133*c9b2cd46SSimon Tathamvadd.f16 q0, q0, q5 134*c9b2cd46SSimon Tatham 135*c9b2cd46SSimon Tatham# CHECK: vadd.f32 q1, q3, q0 @ encoding: [0x06,0xef,0x40,0x2d] 136*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vadd.f32 q1, q3, q0 @ encoding: [0x06,0xef,0x40,0x2d] 137*c9b2cd46SSimon Tathamvadd.f32 q1, q3, q0 138*c9b2cd46SSimon Tatham 139*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: invalid instruction 140*c9b2cd46SSimon Tathamvaddeq.f32 q0, q1, q2 141*c9b2cd46SSimon Tatham 142*c9b2cd46SSimon Tatham# CHECK: vadd.f32 q0, q1, q2 @ encoding: [0x02,0xef,0x44,0x0d] 143*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vadd.f32 q0, q1, q2 @ encoding: [0x02,0xef,0x44,0x0d] 144*c9b2cd46SSimon Tathamvadd.f32 q0, q1, q2 145*c9b2cd46SSimon Tatham 146*c9b2cd46SSimon Tatham# CHECK: vcadd.f16 q2, q1, q7, #90 @ encoding: [0x82,0xfc,0x4e,0x48] 147*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcadd.f16 q2, q1, q7, #90 @ encoding: [0x82,0xfc,0x4e,0x48] 148*c9b2cd46SSimon Tathamvcadd.f16 q2, q1, q7, #90 149*c9b2cd46SSimon Tatham 150*c9b2cd46SSimon Tatham# CHECK: vcadd.f16 q2, q5, q7, #270 @ encoding: [0x8a,0xfd,0x4e,0x48] 151*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcadd.f16 q2, q5, q7, #270 @ encoding: [0x8a,0xfd,0x4e,0x48] 152*c9b2cd46SSimon Tathamvcadd.f16 q2, q5, q7, #270 153*c9b2cd46SSimon Tatham 154*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: complex rotation must be 90 or 270 155*c9b2cd46SSimon Tathamvcadd.f16 q2, q5, q7, #180 156*c9b2cd46SSimon Tatham 157*c9b2cd46SSimon Tatham# CHECK: vcadd.f32 q0, q4, q7, #90 @ encoding: [0x98,0xfc,0x4e,0x08] 158*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcadd.f32 q0, q4, q7, #90 @ encoding: [0x98,0xfc,0x4e,0x08] 159*c9b2cd46SSimon Tathamvcadd.f32 q0, q4, q7, #90 160*c9b2cd46SSimon Tatham 161*c9b2cd46SSimon Tatham# CHECK: vcadd.f32 q2, q2, q3, #270 @ encoding: [0x94,0xfd,0x46,0x48] 162*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcadd.f32 q2, q2, q3, #270 @ encoding: [0x94,0xfd,0x46,0x48] 163*c9b2cd46SSimon Tathamvcadd.f32 q2, q2, q3, #270 164*c9b2cd46SSimon Tatham 165*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: complex rotation must be 90 or 270 166*c9b2cd46SSimon Tathamvcadd.f32 q2, q5, q7, #0 167*c9b2cd46SSimon Tatham 168*c9b2cd46SSimon Tatham# CHECK: vabd.f16 q0, q0, q6 @ encoding: [0x30,0xff,0x4c,0x0d] 169*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vabd.f16 q0, q0, q6 @ encoding: [0x30,0xff,0x4c,0x0d] 170*c9b2cd46SSimon Tathamvabd.f16 q0, q0, q6 171*c9b2cd46SSimon Tatham 172*c9b2cd46SSimon Tatham# CHECK: vabd.f32 q0, q1, q4 @ encoding: [0x22,0xff,0x48,0x0d] 173*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vabd.f32 q0, q1, q4 @ encoding: [0x22,0xff,0x48,0x0d] 174*c9b2cd46SSimon Tathamvabd.f32 q0, q1, q4 175*c9b2cd46SSimon Tatham 176*c9b2cd46SSimon Tatham# CHECK: vcvt.f16.s16 q1, q7, #1 @ encoding: [0xbf,0xef,0x5e,0x2c] 177*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f16.s16 q1, q7, #1 @ encoding: [0xbf,0xef,0x5e,0x2c] 178*c9b2cd46SSimon Tathamvcvt.f16.s16 q1, q7, #1 179*c9b2cd46SSimon Tatham 180*c9b2cd46SSimon Tatham# CHECK: vcvt.f16.s16 q1, q7, #16 @ encoding: [0xb0,0xef,0x5e,0x2c] 181*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f16.s16 q1, q7, #16 @ encoding: [0xb0,0xef,0x5e,0x2c] 182*c9b2cd46SSimon Tathamvcvt.f16.s16 q1, q7, #16 183*c9b2cd46SSimon Tatham 184*c9b2cd46SSimon Tatham# CHECK: vcvt.f16.s16 q1, q7, #11 @ encoding: [0xb5,0xef,0x5e,0x2c] 185*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f16.s16 q1, q7, #11 @ encoding: [0xb5,0xef,0x5e,0x2c] 186*c9b2cd46SSimon Tathamvcvt.f16.s16 q1, q7, #11 187*c9b2cd46SSimon Tatham 188*c9b2cd46SSimon Tatham# CHECK: vcvt.s16.f16 q1, q1, #3 @ encoding: [0xbd,0xef,0x52,0x2d] 189*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.s16.f16 q1, q1, #3 @ encoding: [0xbd,0xef,0x52,0x2d] 190*c9b2cd46SSimon Tathamvcvt.s16.f16 q1, q1, #3 191*c9b2cd46SSimon Tatham 192*c9b2cd46SSimon Tatham# CHECK: vcvt.f16.u16 q2, q1, #10 @ encoding: [0xb6,0xff,0x52,0x4c] 193*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f16.u16 q2, q1, #10 @ encoding: [0xb6,0xff,0x52,0x4c] 194*c9b2cd46SSimon Tathamvcvt.f16.u16 q2, q1, #10 195*c9b2cd46SSimon Tatham 196*c9b2cd46SSimon Tatham# CHECK: vcvt.u16.f16 q0, q0, #3 @ encoding: [0xbd,0xff,0x50,0x0d] 197*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.u16.f16 q0, q0, #3 @ encoding: [0xbd,0xff,0x50,0x0d] 198*c9b2cd46SSimon Tathamvcvt.u16.f16 q0, q0, #3 199*c9b2cd46SSimon Tatham 200*c9b2cd46SSimon Tatham# CHECK: vcvt.f32.s32 q1, q7, #1 @ encoding: [0xbf,0xef,0x5e,0x2e] 201*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f32.s32 q1, q7, #1 @ encoding: [0xbf,0xef,0x5e,0x2e] 202*c9b2cd46SSimon Tathamvcvt.f32.s32 q1, q7, #1 203*c9b2cd46SSimon Tatham 204*c9b2cd46SSimon Tatham# CHECK: vcvt.f32.s32 q1, q7, #32 @ encoding: [0xa0,0xef,0x5e,0x2e] 205*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f32.s32 q1, q7, #32 @ encoding: [0xa0,0xef,0x5e,0x2e] 206*c9b2cd46SSimon Tathamvcvt.f32.s32 q1, q7, #32 207*c9b2cd46SSimon Tatham 208*c9b2cd46SSimon Tatham# CHECK: vcvt.f32.s32 q1, q7, #6 @ encoding: [0xba,0xef,0x5e,0x2e] 209*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f32.s32 q1, q7, #6 @ encoding: [0xba,0xef,0x5e,0x2e] 210*c9b2cd46SSimon Tathamvcvt.f32.s32 q1, q7, #6 211*c9b2cd46SSimon Tatham 212*c9b2cd46SSimon Tatham# CHECK: vcvt.s32.f32 q1, q0, #21 @ encoding: [0xab,0xef,0x50,0x2f] 213*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.s32.f32 q1, q0, #21 @ encoding: [0xab,0xef,0x50,0x2f] 214*c9b2cd46SSimon Tathamvcvt.s32.f32 q1, q0, #21 215*c9b2cd46SSimon Tatham 216*c9b2cd46SSimon Tatham# CHECK: vcvt.f32.u32 q1, q4, #4 @ encoding: [0xbc,0xff,0x58,0x2e] 217*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f32.u32 q1, q4, #4 @ encoding: [0xbc,0xff,0x58,0x2e] 218*c9b2cd46SSimon Tathamvcvt.f32.u32 q1, q4, #4 219*c9b2cd46SSimon Tatham 220*c9b2cd46SSimon Tatham# CHECK: vcvt.u32.f32 q1, q5, #8 @ encoding: [0xb8,0xff,0x5a,0x2f] 221*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.u32.f32 q1, q5, #8 @ encoding: [0xb8,0xff,0x5a,0x2f] 222*c9b2cd46SSimon Tathamvcvt.u32.f32 q1, q5, #8 223*c9b2cd46SSimon Tatham 224*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: MVE fixed-point immediate operand must be between 1 and 16 225*c9b2cd46SSimon Tathamvcvt.f16.s16 q0, q1, #-1 226*c9b2cd46SSimon Tatham 227*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: MVE fixed-point immediate operand must be between 1 and 16 228*c9b2cd46SSimon Tathamvcvt.f16.s16 q0, q1, #0 229*c9b2cd46SSimon Tatham 230*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: MVE fixed-point immediate operand must be between 1 and 16 231*c9b2cd46SSimon Tathamvcvt.f16.s16 q0, q1, #17 232*c9b2cd46SSimon Tatham 233*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: MVE fixed-point immediate operand must be between 1 and 32 234*c9b2cd46SSimon Tathamvcvt.f32.s32 q0, q1, #-1 235*c9b2cd46SSimon Tatham 236*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: MVE fixed-point immediate operand must be between 1 and 32 237*c9b2cd46SSimon Tathamvcvt.f32.s32 q0, q1, #0 238*c9b2cd46SSimon Tatham 239*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: MVE fixed-point immediate operand must be between 1 and 32 240*c9b2cd46SSimon Tathamvcvt.f32.s32 q0, q1, #33 241*c9b2cd46SSimon Tatham 242*c9b2cd46SSimon Tatham# CHECK: vcvt.f16.s16 q0, q1 @ encoding: [0xb7,0xff,0x42,0x06] 243*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f16.s16 q0, q1 @ encoding: [0xb7,0xff,0x42,0x06] 244*c9b2cd46SSimon Tathamvcvt.f16.s16 q0, q1 245*c9b2cd46SSimon Tatham 246*c9b2cd46SSimon Tatham# CHECK: vcvt.f16.u16 q0, q4 @ encoding: [0xb7,0xff,0xc8,0x06] 247*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f16.u16 q0, q4 @ encoding: [0xb7,0xff,0xc8,0x06] 248*c9b2cd46SSimon Tathamvcvt.f16.u16 q0, q4 249*c9b2cd46SSimon Tatham 250*c9b2cd46SSimon Tatham# CHECK: vcvt.s16.f16 q0, q0 @ encoding: [0xb7,0xff,0x40,0x07] 251*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.s16.f16 q0, q0 @ encoding: [0xb7,0xff,0x40,0x07] 252*c9b2cd46SSimon Tathamvcvt.s16.f16 q0, q0 253*c9b2cd46SSimon Tatham 254*c9b2cd46SSimon Tatham# CHECK: vcvt.u16.f16 q0, q0 @ encoding: [0xb7,0xff,0xc0,0x07] 255*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.u16.f16 q0, q0 @ encoding: [0xb7,0xff,0xc0,0x07] 256*c9b2cd46SSimon Tathamvcvt.u16.f16 q0, q0 257*c9b2cd46SSimon Tatham 258*c9b2cd46SSimon Tatham# CHECK: vcvt.f32.s32 q0, q0 @ encoding: [0xbb,0xff,0x40,0x06] 259*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f32.s32 q0, q0 @ encoding: [0xbb,0xff,0x40,0x06] 260*c9b2cd46SSimon Tathamvcvt.f32.s32 q0, q0 261*c9b2cd46SSimon Tatham 262*c9b2cd46SSimon Tatham# CHECK: vcvt.f32.u32 q0, q0 @ encoding: [0xbb,0xff,0xc0,0x06] 263*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f32.u32 q0, q0 @ encoding: [0xbb,0xff,0xc0,0x06] 264*c9b2cd46SSimon Tathamvcvt.f32.u32 q0, q0 265*c9b2cd46SSimon Tatham 266*c9b2cd46SSimon Tatham# CHECK: vcvt.s32.f32 q0, q0 @ encoding: [0xbb,0xff,0x40,0x07] 267*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.s32.f32 q0, q0 @ encoding: [0xbb,0xff,0x40,0x07] 268*c9b2cd46SSimon Tathamvcvt.s32.f32 q0, q0 269*c9b2cd46SSimon Tatham 270*c9b2cd46SSimon Tatham# CHECK: vcvt.u32.f32 q0, q2 @ encoding: [0xbb,0xff,0xc4,0x07] 271*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.u32.f32 q0, q2 @ encoding: [0xbb,0xff,0xc4,0x07] 272*c9b2cd46SSimon Tathamvcvt.u32.f32 q0, q2 273*c9b2cd46SSimon Tatham 274*c9b2cd46SSimon Tatham# CHECK: vcvta.s16.f16 q0, q7 @ encoding: [0xb7,0xff,0x4e,0x00] 275*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvta.s16.f16 q0, q7 @ encoding: [0xb7,0xff,0x4e,0x00] 276*c9b2cd46SSimon Tathamvcvta.s16.f16 q0, q7 277*c9b2cd46SSimon Tatham 278*c9b2cd46SSimon Tatham# CHECK: vcvta.s32.f32 s2, s3 @ encoding: [0xbc,0xfe,0xe1,0x1a] 279*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvta.s32.f32 s2, s3 @ encoding: [0xbc,0xfe,0xe1,0x1a] 280*c9b2cd46SSimon Tathamvcvta.s32.f32 s2, s3 281*c9b2cd46SSimon Tatham 282*c9b2cd46SSimon Tatham# CHECK: vcvta.s16.f16 q0, q7 @ encoding: [0xb7,0xff,0x4e,0x00] 283*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvta.s16.f16 q0, q7 @ encoding: [0xb7,0xff,0x4e,0x00] 284*c9b2cd46SSimon Tathamvcvta.s16.f16 q0, q7 285*c9b2cd46SSimon Tatham 286*c9b2cd46SSimon Tatham# CHECK: vcvtn.u32.f32 q7, q6 @ encoding: [0xbb,0xff,0xcc,0xe1] 287*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvtn.u32.f32 q7, q6 @ encoding: [0xbb,0xff,0xcc,0xe1] 288*c9b2cd46SSimon Tathamvcvtn.u32.f32 q7, q6 289*c9b2cd46SSimon Tatham 290*c9b2cd46SSimon Tatham# CHECK: vcvtp.s32.f32 q0, q7 @ encoding: [0xbb,0xff,0x4e,0x02] 291*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvtp.s32.f32 q0, q7 @ encoding: [0xbb,0xff,0x4e,0x02] 292*c9b2cd46SSimon Tathamvcvtp.s32.f32 q0, q7 293*c9b2cd46SSimon Tatham 294*c9b2cd46SSimon Tatham# CHECK: vcvtm.u32.f32 q1, q4 @ encoding: [0xbb,0xff,0xc8,0x23] 295*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvtm.u32.f32 q1, q4 @ encoding: [0xbb,0xff,0xc8,0x23] 296*c9b2cd46SSimon Tathamvcvtm.u32.f32 q1, q4 297*c9b2cd46SSimon Tatham 298*c9b2cd46SSimon Tatham# CHECK: vneg.f16 q0, q7 @ encoding: [0xb5,0xff,0xce,0x07] 299*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vneg.f16 q0, q7 @ encoding: [0xb5,0xff,0xce,0x07] 300*c9b2cd46SSimon Tathamvneg.f16 q0, q7 301*c9b2cd46SSimon Tatham 302*c9b2cd46SSimon Tatham# CHECK: vneg.f32 q0, q2 @ encoding: [0xb9,0xff,0xc4,0x07] 303*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vneg.f32 q0, q2 @ encoding: [0xb9,0xff,0xc4,0x07] 304*c9b2cd46SSimon Tathamvneg.f32 q0, q2 305*c9b2cd46SSimon Tatham 306*c9b2cd46SSimon Tatham# CHECK: vabs.f16 q0, q2 @ encoding: [0xb5,0xff,0x44,0x07] 307*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vabs.f16 q0, q2 @ encoding: [0xb5,0xff,0x44,0x07] 308*c9b2cd46SSimon Tathamvabs.f16 q0, q2 309*c9b2cd46SSimon Tatham 310*c9b2cd46SSimon Tatham# CHECK: vabs.f32 q0, q0 @ encoding: [0xb9,0xff,0x40,0x07] 311*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vabs.f32 q0, q0 @ encoding: [0xb9,0xff,0x40,0x07] 312*c9b2cd46SSimon Tathamvabs.f32 q0, q0 313*c9b2cd46SSimon Tatham 314*c9b2cd46SSimon Tatham# CHECK: vmaxnma.f16 q1, q1 @ encoding: [0x3f,0xfe,0x83,0x2e] 315*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmaxnma.f16 q1, q1 @ encoding: [0x3f,0xfe,0x83,0x2e] 316*c9b2cd46SSimon Tathamvmaxnma.f16 q1, q1 317*c9b2cd46SSimon Tatham 318*c9b2cd46SSimon Tatham# CHECK: vmaxnma.f32 q2, q6 @ encoding: [0x3f,0xee,0x8d,0x4e] 319*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmaxnma.f32 q2, q6 @ encoding: [0x3f,0xee,0x8d,0x4e] 320*c9b2cd46SSimon Tathamvmaxnma.f32 q2, q6 321*c9b2cd46SSimon Tatham 322*c9b2cd46SSimon Tatham# CHECK: vminnma.f16 q0, q2 @ encoding: [0x3f,0xfe,0x85,0x1e] 323*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vminnma.f16 q0, q2 @ encoding: [0x3f,0xfe,0x85,0x1e] 324*c9b2cd46SSimon Tathamvminnma.f16 q0, q2 325*c9b2cd46SSimon Tatham 326*c9b2cd46SSimon Tatham# CHECK: vminnma.f32 q0, q1 @ encoding: [0x3f,0xee,0x83,0x1e] 327*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vminnma.f32 q0, q1 @ encoding: [0x3f,0xee,0x83,0x1e] 328*c9b2cd46SSimon Tathamvminnma.f32 q0, q1 329*c9b2cd46SSimon Tatham 330*c9b2cd46SSimon Tathamit eq 331*c9b2cd46SSimon Tathamvaddeq.f32 s0, s1 332*c9b2cd46SSimon Tatham# CHECK: it eq @ encoding: [0x08,0xbf] 333*c9b2cd46SSimon Tatham# CHECK: vaddeq.f32 s0, s0, s1 @ encoding: [0x30,0xee,0x20,0x0a] 334*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vaddeq.f32 s0, s0, s1 @ encoding: [0x30,0xee,0x20,0x0a] 335*c9b2cd46SSimon Tatham 336*c9b2cd46SSimon Tathamvpst 337*c9b2cd46SSimon Tathamvaddt.f16 q0, q1, q2 338*c9b2cd46SSimon Tatham# CHECK: vpst @ encoding: [0x71,0xfe,0x4d,0x0f] 339*c9b2cd46SSimon Tatham# CHECK: vaddt.f16 q0, q1, q2 @ encoding: [0x12,0xef,0x44,0x0d] 340*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vaddt.f16 q0, q1, q2 @ encoding: [0x12,0xef,0x44,0x0d] 341*c9b2cd46SSimon Tatham 342*c9b2cd46SSimon Tathamvpste 343*c9b2cd46SSimon Tathamvcvtmt.u32.f32 q0, q1 344*c9b2cd46SSimon Tathamvcvtne.s32.f32 q0, q1 345*c9b2cd46SSimon Tatham# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f] 346*c9b2cd46SSimon Tatham# CHECK: vtmt.u32.f32 q0, q1 @ encoding: [0xbb,0xff,0xc2,0x03] 347*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vtmt.u32.f32 q0, q1 @ encoding: [0xbb,0xff,0xc2,0x03] 348*c9b2cd46SSimon Tatham# CHECK: vcvtne.s32.f32 q0, q1 @ encoding: [0xbb,0xff,0x42,0x01] 349*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvtne.s32.f32 q0, q1 @ encoding: [0xbb,0xff,0x42,0x01] 350*c9b2cd46SSimon Tatham 351*c9b2cd46SSimon Tathamit ne 352*c9b2cd46SSimon Tathamvcvtne.s32.f32 s0, s1 353*c9b2cd46SSimon Tatham# CHECK: it ne @ encoding: [0x18,0xbf] 354*c9b2cd46SSimon Tatham# CHECK: vcvtne.s32.f32 s0, s1 @ encoding: [0xbd,0xee,0xe0,0x0a] 355*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvtne.s32.f32 s0, s1 @ encoding: [0xbd,0xee,0xe0,0x0a] 356*c9b2cd46SSimon Tatham 357*c9b2cd46SSimon Tathamit ge 358*c9b2cd46SSimon Tathamvcvttge.f64.f16 d3, s1 359*c9b2cd46SSimon Tatham# CHECK: it ge @ encoding: [0xa8,0xbf] 360*c9b2cd46SSimon Tatham# CHECK: vcvttge.f64.f16 d3, s1 @ encoding: [0xb2,0xee,0xe0,0x3b] 361*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvttge.f64.f16 d3, s1 @ encoding: [0xb2,0xee,0xe0,0x3b] 362*c9b2cd46SSimon Tatham 363*c9b2cd46SSimon Tatham# ---------------------------------------------------------------------- 364*c9b2cd46SSimon Tatham# The following tests have to go last because of the NOFP-NOT checks inside the 365*c9b2cd46SSimon Tatham# VPT block. 366*c9b2cd46SSimon Tatham 367*c9b2cd46SSimon Tathamvpte.f32 lt, q3, r1 368*c9b2cd46SSimon Tathamvcvtt.u32.f32 q2, q0 369*c9b2cd46SSimon Tathamvcvte.u32.f32 q1, q0 370*c9b2cd46SSimon Tatham# CHECK: vpte.f32 lt, q3, r1 @ encoding: [0x77,0xee,0xc1,0x9f] 371*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vpte.f32 lt, q3, r1 @ encoding: [0x77,0xee,0xe1,0x8f] 372*c9b2cd46SSimon Tatham# CHECK: vcvtt.u32.f32 q2, q0 @ encoding: [0xbb,0xff,0xc0,0x47] 373*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvtt.u32.f32 q2, q0 @ encoding: [0xbb,0xff,0xc0,0x47] 374*c9b2cd46SSimon Tatham# CHECK: vcvte.u32.f32 q1, q0 @ encoding: [0xbb,0xff,0xc0,0x27] 375*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvte.u32.f32 q1, q0 @ encoding: [0xbb,0xff,0xc0,0x27] 376*c9b2cd46SSimon Tatham 377*c9b2cd46SSimon Tathamite eq 378*c9b2cd46SSimon Tathamvcvteq.u32.f32 s0, s1 379*c9b2cd46SSimon Tathamvcvtne.f32.u32 s0, s1 380*c9b2cd46SSimon Tatham# CHECK: ite eq @ encoding: [0x0c,0xbf] 381*c9b2cd46SSimon Tatham# CHECK: vcvteq.u32.f32 s0, s1 @ encoding: [0xbc,0xee,0xe0,0x0a] 382*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvteq.u32.f32 s0, s1 @ encoding: [0xbc,0xee,0xe0,0x0a] 383*c9b2cd46SSimon Tatham# CHECK: vcvtne.f32.u32 s0, s1 @ encoding: [0xb8,0xee,0x60,0x0a] 384*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvtne.f32.u32 s0, s1 @ encoding: [0xb8,0xee,0x60,0x0a] 385*c9b2cd46SSimon Tatham 386*c9b2cd46SSimon Tathamvpste 387*c9b2cd46SSimon Tathamvmult.f16 q0, q1, q2 388*c9b2cd46SSimon Tathamvmule.f16 q0, q1, q2 389*c9b2cd46SSimon Tatham# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f] 390*c9b2cd46SSimon Tatham# CHECK: vmult.f16 q0, q1, q2 @ encoding: [0x12,0xff,0x54,0x0d] 391*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmult.f16 q0, q1, q2 @ encoding: [0x12,0xff,0x54,0x0d] 392*c9b2cd46SSimon Tatham# CHECK: vmule.f16 q0, q1, q2 @ encoding: [0x12,0xff,0x54,0x0d] 393*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmule.f16 q0, q1, q2 @ encoding: [0x12,0xff,0x54,0x0d] 394*c9b2cd46SSimon Tatham 395*c9b2cd46SSimon Tathamite eq 396*c9b2cd46SSimon Tathamvmuleq.f64 d0, d0, d1 397*c9b2cd46SSimon Tathamvmulne.f64 d1, d0, d2 398*c9b2cd46SSimon Tatham# CHECK: ite eq @ encoding: [0x0c,0xbf] 399*c9b2cd46SSimon Tatham# CHECK: vmuleq.f64 d0, d0, d1 @ encoding: [0x20,0xee,0x01,0x0b] 400*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmuleq.f64 d0, d0, d1 @ encoding: [0x20,0xee,0x01,0x0b] 401*c9b2cd46SSimon Tatham# CHECK: vmulne.f64 d1, d0, d2 @ encoding: [0x20,0xee,0x02,0x1b] 402*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmulne.f64 d1, d0, d2 @ encoding: [0x20,0xee,0x02,0x1b] 403*c9b2cd46SSimon Tatham 404*c9b2cd46SSimon Tathamit eq 405*c9b2cd46SSimon Tathamvnegeq.f32 s0, s1 406*c9b2cd46SSimon Tatham# CHECK: it eq @ encoding: [0x08,0xbf] 407*c9b2cd46SSimon Tatham# CHECK: vnegeq.f32 s0, s1 @ encoding: [0xb1,0xee,0x60,0x0a] 408*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vnegeq.f32 s0, s1 @ encoding: [0xb1,0xee,0x60,0x0a] 409*c9b2cd46SSimon Tatham 410*c9b2cd46SSimon Tathamitt eq 411*c9b2cd46SSimon Tathamvnmuleq.f32 s0, s1, s2 412*c9b2cd46SSimon Tathamvmuleq.f32 s0, s1, s2 413*c9b2cd46SSimon Tatham# CHECK: itt eq @ encoding: [0x04,0xbf] 414*c9b2cd46SSimon Tatham# CHECK: vnmuleq.f32 s0, s1, s2 @ encoding: [0x20,0xee,0xc1,0x0a] 415*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vnmuleq.f32 s0, s1, s2 @ encoding: [0x20,0xee,0xc1,0x0a] 416*c9b2cd46SSimon Tatham# CHECK: vmuleq.f32 s0, s1, s2 @ encoding: [0x20,0xee,0x81,0x0a] 417*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmuleq.f32 s0, s1, s2 @ encoding: [0x20,0xee,0x81,0x0a] 418*c9b2cd46SSimon Tatham 419*c9b2cd46SSimon Tathamvpste 420*c9b2cd46SSimon Tathamvrintnt.f16 q0, q1 421*c9b2cd46SSimon Tathamvrintne.f32 q0, q1 422*c9b2cd46SSimon Tatham# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f] 423*c9b2cd46SSimon Tatham# CHECK: vrintnt.f16 q0, q1 @ encoding: [0xb6,0xff,0x42,0x04] 424*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintnt.f16 q0, q1 @ encoding: [0xb6,0xff,0x42,0x04] 425*c9b2cd46SSimon Tatham# CHECK: vrintne.f32 q0, q1 @ encoding: [0xba,0xff,0x42,0x04] 426*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintne.f32 q0, q1 @ encoding: [0xba,0xff,0x42,0x04] 427