1*7d76f8acSSimon Tatham# RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+mve -show-encoding < %s 2>%t \ 2*7d76f8acSSimon Tatham# RUN: | FileCheck --check-prefix=CHECK-NOFP %s 3*7d76f8acSSimon Tatham# RUN: FileCheck --check-prefix=ERROR-NOFP < %t %s 4*7d76f8acSSimon Tatham# RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+mve.fp,+fp64 -show-encoding < %s 2>%t \ 5*7d76f8acSSimon Tatham# RUN: | FileCheck --check-prefix=CHECK %s 6*7d76f8acSSimon Tatham# RUN: FileCheck --check-prefix=ERROR < %t %s 7*7d76f8acSSimon Tatham 8*7d76f8acSSimon Tatham# CHECK: vcmp.f16 eq, q0, q4 @ encoding: [0x31,0xfe,0x08,0x0f] 9*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp 10*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 eq, q0, q4 @ encoding: [0x31,0xfe,0x08,0x0f] 11*7d76f8acSSimon Tathamvcmp.f16 eq, q0, q4 12*7d76f8acSSimon Tatham 13*7d76f8acSSimon Tatham# CHECK: vcmp.f16 ne, q2, q7 @ encoding: [0x35,0xfe,0x8e,0x0f] 14*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp 15*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 ne, q2, q7 @ encoding: [0x35,0xfe,0x8e,0x0f] 16*7d76f8acSSimon Tathamvcmp.f16 ne, q2, q7 17*7d76f8acSSimon Tatham 18*7d76f8acSSimon Tatham# CHECK: vcmp.f16 ge, q0, q0 @ encoding: [0x31,0xfe,0x00,0x1f] 19*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp 20*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 ge, q0, q0 @ encoding: [0x31,0xfe,0x00,0x1f] 21*7d76f8acSSimon Tathamvcmp.f16 ge, q0, q0 22*7d76f8acSSimon Tatham 23*7d76f8acSSimon Tatham# CHECK: vcmp.f16 lt, q0, q1 @ encoding: [0x31,0xfe,0x82,0x1f] 24*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp 25*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 lt, q0, q1 @ encoding: [0x31,0xfe,0x82,0x1f] 26*7d76f8acSSimon Tathamvcmp.f16 lt, q0, q1 27*7d76f8acSSimon Tatham 28*7d76f8acSSimon Tatham# CHECK: vcmp.f16 gt, q1, q4 @ encoding: [0x33,0xfe,0x09,0x1f] 29*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp 30*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 gt, q1, q4 @ encoding: [0x33,0xfe,0x09,0x1f] 31*7d76f8acSSimon Tathamvcmp.f16 gt, q1, q4 32*7d76f8acSSimon Tatham 33*7d76f8acSSimon Tatham# CHECK: vcmp.f16 le, q2, q6 @ encoding: [0x35,0xfe,0x8d,0x1f] 34*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp 35*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 le, q2, q6 @ encoding: [0x35,0xfe,0x8d,0x1f] 36*7d76f8acSSimon Tathamvcmp.f16 le, q2, q6 37*7d76f8acSSimon Tatham 38*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for floating-point comparison must be EQ, NE, LT, GT, LE or GE 39*7d76f8acSSimon Tathamvcmp.f16 hi, q2, q6 40*7d76f8acSSimon Tatham 41*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for floating-point comparison must be EQ, NE, LT, GT, LE or GE 42*7d76f8acSSimon Tathamvcmp.f16 hs, q2, q6 43*7d76f8acSSimon Tatham 44*7d76f8acSSimon Tatham# CHECK: vcmp.f32 eq, q2, q5 @ encoding: [0x35,0xee,0x0a,0x0f] 45*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp 46*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f32 eq, q2, q5 @ encoding: [0x35,0xee,0x0a,0x0f] 47*7d76f8acSSimon Tathamvcmp.f32 eq, q2, q5 48*7d76f8acSSimon Tatham 49*7d76f8acSSimon Tatham# CHECK: vcmp.f32 ne, q3, q4 @ encoding: [0x37,0xee,0x88,0x0f] 50*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp 51*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f32 ne, q3, q4 @ encoding: [0x37,0xee,0x88,0x0f] 52*7d76f8acSSimon Tathamvcmp.f32 ne, q3, q4 53*7d76f8acSSimon Tatham 54*7d76f8acSSimon Tatham# CHECK: vcmp.f32 ge, q0, q7 @ encoding: [0x31,0xee,0x0e,0x1f] 55*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp 56*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f32 ge, q0, q7 @ encoding: [0x31,0xee,0x0e,0x1f] 57*7d76f8acSSimon Tathamvcmp.f32 ge, q0, q7 58*7d76f8acSSimon Tatham 59*7d76f8acSSimon Tatham# CHECK: vcmp.f32 lt, q5, q2 @ encoding: [0x3b,0xee,0x84,0x1f] 60*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp 61*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f32 lt, q5, q2 @ encoding: [0x3b,0xee,0x84,0x1f] 62*7d76f8acSSimon Tathamvcmp.f32 lt, q5, q2 63*7d76f8acSSimon Tatham 64*7d76f8acSSimon Tatham# CHECK: vcmp.f32 gt, q2, q7 @ encoding: [0x35,0xee,0x0f,0x1f] 65*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp 66*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f32 gt, q2, q7 @ encoding: [0x35,0xee,0x0f,0x1f] 67*7d76f8acSSimon Tathamvcmp.f32 gt, q2, q7 68*7d76f8acSSimon Tatham 69*7d76f8acSSimon Tatham# CHECK: vcmp.f32 le, q2, q4 @ encoding: [0x35,0xee,0x89,0x1f] 70*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp 71*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f32 le, q2, q4 @ encoding: [0x35,0xee,0x89,0x1f] 72*7d76f8acSSimon Tathamvcmp.f32 le, q2, q4 73*7d76f8acSSimon Tatham 74*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for floating-point comparison must be EQ, NE, LT, GT, LE or GE 75*7d76f8acSSimon Tathamvcmp.f32 hi, q2, q6 76*7d76f8acSSimon Tatham 77*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for floating-point comparison must be EQ, NE, LT, GT, LE or GE 78*7d76f8acSSimon Tathamvcmp.f32 hs, q2, q6 79*7d76f8acSSimon Tatham 80*7d76f8acSSimon Tatham# CHECK: vcmp.i8 eq, q4, q6 @ encoding: [0x09,0xfe,0x0c,0x0f] 81*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i8 eq, q4, q6 @ encoding: [0x09,0xfe,0x0c,0x0f] 82*7d76f8acSSimon Tathamvcmp.i8 eq, q4, q6 83*7d76f8acSSimon Tatham 84*7d76f8acSSimon Tatham# CHECK: vcmp.i8 ne, q2, q2 @ encoding: [0x05,0xfe,0x84,0x0f] 85*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i8 ne, q2, q2 @ encoding: [0x05,0xfe,0x84,0x0f] 86*7d76f8acSSimon Tathamvcmp.i8 ne, q2, q2 87*7d76f8acSSimon Tatham 88*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:9: {{error|note}}: condition code for sign-independent integer comparison must be EQ or NE 89*7d76f8acSSimon Tathamvcmp.i8 hs, q2, q6 90*7d76f8acSSimon Tatham 91*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:9: {{error|note}}: condition code for sign-independent integer comparison must be EQ or NE 92*7d76f8acSSimon Tathamvcmp.i8 le, q2, q6 93*7d76f8acSSimon Tatham 94*7d76f8acSSimon Tatham# CHECK: vcmp.i8 eq, q4, q6 @ encoding: [0x09,0xfe,0x0c,0x0f] 95*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i8 eq, q4, q6 @ encoding: [0x09,0xfe,0x0c,0x0f] 96*7d76f8acSSimon Tathamvcmp.s8 eq, q4, q6 97*7d76f8acSSimon Tatham 98*7d76f8acSSimon Tatham# CHECK: vcmp.i8 ne, q2, q2 @ encoding: [0x05,0xfe,0x84,0x0f] 99*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i8 ne, q2, q2 @ encoding: [0x05,0xfe,0x84,0x0f] 100*7d76f8acSSimon Tathamvcmp.s8 ne, q2, q2 101*7d76f8acSSimon Tatham 102*7d76f8acSSimon Tatham# CHECK: vcmp.i8 eq, q4, q6 @ encoding: [0x09,0xfe,0x0c,0x0f] 103*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i8 eq, q4, q6 @ encoding: [0x09,0xfe,0x0c,0x0f] 104*7d76f8acSSimon Tathamvcmp.u8 eq, q4, q6 105*7d76f8acSSimon Tatham 106*7d76f8acSSimon Tatham# CHECK: vcmp.i8 ne, q2, q2 @ encoding: [0x05,0xfe,0x84,0x0f] 107*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i8 ne, q2, q2 @ encoding: [0x05,0xfe,0x84,0x0f] 108*7d76f8acSSimon Tathamvcmp.u8 ne, q2, q2 109*7d76f8acSSimon Tatham 110*7d76f8acSSimon Tatham# CHECK: vcmp.s8 ge, q0, q0 @ encoding: [0x01,0xfe,0x00,0x1f] 111*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s8 ge, q0, q0 @ encoding: [0x01,0xfe,0x00,0x1f] 112*7d76f8acSSimon Tathamvcmp.s8 ge, q0, q0 113*7d76f8acSSimon Tatham 114*7d76f8acSSimon Tatham# CHECK: vcmp.s8 lt, q2, q7 @ encoding: [0x05,0xfe,0x8e,0x1f] 115*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s8 lt, q2, q7 @ encoding: [0x05,0xfe,0x8e,0x1f] 116*7d76f8acSSimon Tathamvcmp.s8 lt, q2, q7 117*7d76f8acSSimon Tatham 118*7d76f8acSSimon Tatham# CHECK: vcmp.s8 gt, q4, q3 @ encoding: [0x09,0xfe,0x07,0x1f] 119*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s8 gt, q4, q3 @ encoding: [0x09,0xfe,0x07,0x1f] 120*7d76f8acSSimon Tathamvcmp.s8 gt, q4, q3 121*7d76f8acSSimon Tatham 122*7d76f8acSSimon Tatham# CHECK: vcmp.s8 le, q7, q3 @ encoding: [0x0f,0xfe,0x87,0x1f] 123*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s8 le, q7, q3 @ encoding: [0x0f,0xfe,0x87,0x1f] 124*7d76f8acSSimon Tathamvcmp.s8 le, q7, q3 125*7d76f8acSSimon Tatham 126*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:9: {{error|note}}: condition code for signed integer comparison must be EQ, NE, LT, GT, LE or GE 127*7d76f8acSSimon Tathamvcmp.s8 hs, q2, q6 128*7d76f8acSSimon Tatham 129*7d76f8acSSimon Tatham# CHECK: vcmp.u8 hi, q1, q4 @ encoding: [0x03,0xfe,0x89,0x0f] 130*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.u8 hi, q1, q4 @ encoding: [0x03,0xfe,0x89,0x0f] 131*7d76f8acSSimon Tathamvcmp.u8 hi, q1, q4 132*7d76f8acSSimon Tatham 133*7d76f8acSSimon Tatham# CHECK: vcmp.u8 cs, q1, q4 @ encoding: [0x03,0xfe,0x09,0x0f] 134*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.u8 cs, q1, q4 @ encoding: [0x03,0xfe,0x09,0x0f] 135*7d76f8acSSimon Tathamvcmp.u8 cs, q1, q4 136*7d76f8acSSimon Tatham 137*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:9: {{error|note}}: condition code for unsigned integer comparison must be EQ, NE, HS or HI 138*7d76f8acSSimon Tathamvcmp.u8 gt, q2, q6 139*7d76f8acSSimon Tatham 140*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:9: {{error|note}}: condition code for unsigned integer comparison must be EQ, NE, HS or HI 141*7d76f8acSSimon Tathamvcmp.u8 lo, q2, q6 142*7d76f8acSSimon Tatham 143*7d76f8acSSimon Tatham# CHECK: vcmp.i16 eq, q4, q7 @ encoding: [0x19,0xfe,0x0e,0x0f] 144*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i16 eq, q4, q7 @ encoding: [0x19,0xfe,0x0e,0x0f] 145*7d76f8acSSimon Tathamvcmp.i16 eq, q4, q7 146*7d76f8acSSimon Tatham 147*7d76f8acSSimon Tatham# CHECK: vcmp.i16 ne, q2, q1 @ encoding: [0x15,0xfe,0x82,0x0f] 148*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i16 ne, q2, q1 @ encoding: [0x15,0xfe,0x82,0x0f] 149*7d76f8acSSimon Tathamvcmp.i16 ne, q2, q1 150*7d76f8acSSimon Tatham 151*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for sign-independent integer comparison must be EQ or NE 152*7d76f8acSSimon Tathamvcmp.i16 hi, q2, q6 153*7d76f8acSSimon Tatham 154*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for sign-independent integer comparison must be EQ or NE 155*7d76f8acSSimon Tathamvcmp.i16 lt, q2, q6 156*7d76f8acSSimon Tatham 157*7d76f8acSSimon Tatham# CHECK: vcmp.s16 ge, q1, q7 @ encoding: [0x13,0xfe,0x0e,0x1f] 158*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s16 ge, q1, q7 @ encoding: [0x13,0xfe,0x0e,0x1f] 159*7d76f8acSSimon Tathamvcmp.s16 ge, q1, q7 160*7d76f8acSSimon Tatham 161*7d76f8acSSimon Tatham# CHECK: vcmp.s16 lt, q0, q1 @ encoding: [0x11,0xfe,0x82,0x1f] 162*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s16 lt, q0, q1 @ encoding: [0x11,0xfe,0x82,0x1f] 163*7d76f8acSSimon Tathamvcmp.s16 lt, q0, q1 164*7d76f8acSSimon Tatham 165*7d76f8acSSimon Tatham# CHECK: vcmp.s16 gt, q1, q7 @ encoding: [0x13,0xfe,0x0f,0x1f] 166*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s16 gt, q1, q7 @ encoding: [0x13,0xfe,0x0f,0x1f] 167*7d76f8acSSimon Tathamvcmp.s16 gt, q1, q7 168*7d76f8acSSimon Tatham 169*7d76f8acSSimon Tatham# CHECK: vcmp.s16 le, q2, q1 @ encoding: [0x15,0xfe,0x83,0x1f] 170*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s16 le, q2, q1 @ encoding: [0x15,0xfe,0x83,0x1f] 171*7d76f8acSSimon Tathamvcmp.s16 le, q2, q1 172*7d76f8acSSimon Tatham 173*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for signed integer comparison must be EQ, NE, LT, GT, LE or GE 174*7d76f8acSSimon Tathamvcmp.s16 hi, q2, q6 175*7d76f8acSSimon Tatham 176*7d76f8acSSimon Tatham# CHECK: vcmp.u16 hi, q1, q4 @ encoding: [0x13,0xfe,0x89,0x0f] 177*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.u16 hi, q1, q4 @ encoding: [0x13,0xfe,0x89,0x0f] 178*7d76f8acSSimon Tathamvcmp.u16 hi, q1, q4 179*7d76f8acSSimon Tatham 180*7d76f8acSSimon Tatham# CHECK: vcmp.u16 cs, q1, q4 @ encoding: [0x13,0xfe,0x09,0x0f] 181*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.u16 cs, q1, q4 @ encoding: [0x13,0xfe,0x09,0x0f] 182*7d76f8acSSimon Tathamvcmp.u16 cs, q1, q4 183*7d76f8acSSimon Tatham 184*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for unsigned integer comparison must be EQ, NE, HS or HI 185*7d76f8acSSimon Tathamvcmp.u16 ge, q2, q6 186*7d76f8acSSimon Tatham 187*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for unsigned integer comparison must be EQ, NE, HS or HI 188*7d76f8acSSimon Tathamvcmp.u16 ls, q2, q6 189*7d76f8acSSimon Tatham 190*7d76f8acSSimon Tatham# CHECK: vcmp.i32 eq, q2, q7 @ encoding: [0x25,0xfe,0x0e,0x0f] 191*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i32 eq, q2, q7 @ encoding: [0x25,0xfe,0x0e,0x0f] 192*7d76f8acSSimon Tathamvcmp.i32 eq, q2, q7 193*7d76f8acSSimon Tatham 194*7d76f8acSSimon Tatham# CHECK: vcmp.i32 ne, q2, q4 @ encoding: [0x25,0xfe,0x88,0x0f] 195*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i32 ne, q2, q4 @ encoding: [0x25,0xfe,0x88,0x0f] 196*7d76f8acSSimon Tathamvcmp.i32 ne, q2, q4 197*7d76f8acSSimon Tatham 198*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for sign-independent integer comparison must be EQ or NE 199*7d76f8acSSimon Tathamvcmp.i32 lo, q2, q6 200*7d76f8acSSimon Tatham 201*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for sign-independent integer comparison must be EQ or NE 202*7d76f8acSSimon Tathamvcmp.i32 ge, q2, q6 203*7d76f8acSSimon Tatham 204*7d76f8acSSimon Tatham# CHECK: vcmp.s32 ge, q5, q5 @ encoding: [0x2b,0xfe,0x0a,0x1f] 205*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s32 ge, q5, q5 @ encoding: [0x2b,0xfe,0x0a,0x1f] 206*7d76f8acSSimon Tathamvcmp.s32 ge, q5, q5 207*7d76f8acSSimon Tatham 208*7d76f8acSSimon Tatham# CHECK: vcmp.s32 lt, q2, q2 @ encoding: [0x25,0xfe,0x84,0x1f] 209*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s32 lt, q2, q2 @ encoding: [0x25,0xfe,0x84,0x1f] 210*7d76f8acSSimon Tathamvcmp.s32 lt, q2, q2 211*7d76f8acSSimon Tatham 212*7d76f8acSSimon Tatham# CHECK: vcmp.s32 gt, q0, q1 @ encoding: [0x21,0xfe,0x03,0x1f] 213*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s32 gt, q0, q1 @ encoding: [0x21,0xfe,0x03,0x1f] 214*7d76f8acSSimon Tathamvcmp.s32 gt, q0, q1 215*7d76f8acSSimon Tatham 216*7d76f8acSSimon Tatham# CHECK: vcmp.s32 le, q5, q4 @ encoding: [0x2b,0xfe,0x89,0x1f] 217*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s32 le, q5, q4 @ encoding: [0x2b,0xfe,0x89,0x1f] 218*7d76f8acSSimon Tathamvcmp.s32 le, q5, q4 219*7d76f8acSSimon Tatham 220*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for signed integer comparison must be EQ, NE, LT, GT, LE or GE 221*7d76f8acSSimon Tathamvcmp.s32 ls, q2, q6 222*7d76f8acSSimon Tatham 223*7d76f8acSSimon Tatham# CHECK: vcmp.u32 hi, q1, q4 @ encoding: [0x23,0xfe,0x89,0x0f] 224*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.u32 hi, q1, q4 @ encoding: [0x23,0xfe,0x89,0x0f] 225*7d76f8acSSimon Tathamvcmp.u32 hi, q1, q4 226*7d76f8acSSimon Tatham 227*7d76f8acSSimon Tatham# CHECK: vcmp.u32 cs, q1, q4 @ encoding: [0x23,0xfe,0x09,0x0f] 228*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.u32 cs, q1, q4 @ encoding: [0x23,0xfe,0x09,0x0f] 229*7d76f8acSSimon Tathamvcmp.u32 cs, q1, q4 230*7d76f8acSSimon Tatham 231*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for unsigned integer comparison must be EQ, NE, HS or HI 232*7d76f8acSSimon Tathamvcmp.u32 vs, q2, q6 233*7d76f8acSSimon Tatham 234*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for unsigned integer comparison must be EQ, NE, HS or HI 235*7d76f8acSSimon Tathamvcmp.u32 mi, q2, q6 236*7d76f8acSSimon Tatham 237*7d76f8acSSimon Tatham# CHECK: vcmp.f16 gt, q4, zr @ encoding: [0x39,0xfe,0x6f,0x1f] 238*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp 239*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 gt, q4, zr @ encoding: [0x39,0xfe,0x6f,0x1f] 240*7d76f8acSSimon Tathamvcmp.f16 gt, q4, zr 241*7d76f8acSSimon Tatham 242*7d76f8acSSimon Tatham# CHECK: vcmp.f16 eq, q4, r12 @ encoding: [0x39,0xfe,0x4c,0x0f] 243*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp 244*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 eq, q4, r12 @ encoding: [0x39,0xfe,0x4c,0x0f] 245*7d76f8acSSimon Tathamvcmp.f16 eq, q4, r12 246*7d76f8acSSimon Tatham 247*7d76f8acSSimon Tatham# CHECK: vcmp.f32 ne, q3, r0 @ encoding: [0x37,0xee,0xc0,0x0f] 248*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp 249*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f32 ne, q3, r0 @ encoding: [0x37,0xee,0xc0,0x0f] 250*7d76f8acSSimon Tathamvcmp.f32 ne, q3, r0 251*7d76f8acSSimon Tatham 252*7d76f8acSSimon Tatham# CHECK: vcmp.i8 eq, q1, r0 @ encoding: [0x03,0xfe,0x40,0x0f] 253*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i8 eq, q1, r0 @ encoding: [0x03,0xfe,0x40,0x0f] 254*7d76f8acSSimon Tathamvcmp.i8 eq, q1, r0 255*7d76f8acSSimon Tatham 256*7d76f8acSSimon Tatham# CHECK: vcmp.s8 le, q1, r0 @ encoding: [0x03,0xfe,0xe0,0x1f] 257*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s8 le, q1, r0 @ encoding: [0x03,0xfe,0xe0,0x1f] 258*7d76f8acSSimon Tathamvcmp.s8 le, q1, r0 259*7d76f8acSSimon Tatham 260*7d76f8acSSimon Tatham# CHECK: vcmp.u8 cs, q1, r0 @ encoding: [0x03,0xfe,0x60,0x0f] 261*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.u8 cs, q1, r0 @ encoding: [0x03,0xfe,0x60,0x0f] 262*7d76f8acSSimon Tathamvcmp.u8 cs, q1, r0 263*7d76f8acSSimon Tatham 264*7d76f8acSSimon Tatham# CHECK: vcmp.i16 eq, q5, r10 @ encoding: [0x1b,0xfe,0x4a,0x0f] 265*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i16 eq, q5, r10 @ encoding: [0x1b,0xfe,0x4a,0x0f] 266*7d76f8acSSimon Tathamvcmp.i16 eq, q5, r10 267*7d76f8acSSimon Tatham 268*7d76f8acSSimon Tatham# CHECK: vcmp.i32 eq, q1, r4 @ encoding: [0x23,0xfe,0x44,0x0f] 269*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i32 eq, q1, r4 @ encoding: [0x23,0xfe,0x44,0x0f] 270*7d76f8acSSimon Tathamvcmp.i32 eq, q1, r4 271*7d76f8acSSimon Tatham 272*7d76f8acSSimon Tathamvpste 273*7d76f8acSSimon Tathamvcmpt.i8 eq, q0, r0 274*7d76f8acSSimon Tathamvcmpe.i16 ne, q0, r0 275*7d76f8acSSimon Tatham# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f] 276*7d76f8acSSimon Tatham# CHECK-NOFP: vpste @ encoding: [0x71,0xfe,0x4d,0x8f] 277*7d76f8acSSimon Tatham# CHECK: vcmpt.i8 eq, q0, r0 @ encoding: [0x01,0xfe,0x40,0x0f] 278*7d76f8acSSimon Tatham# CHECK-NOFP: vcmpt.i8 eq, q0, r0 @ encoding: [0x01,0xfe,0x40,0x0f] 279*7d76f8acSSimon Tatham# CHECK: vcmpe.i16 ne, q0, r0 @ encoding: [0x11,0xfe,0xc0,0x0f] 280*7d76f8acSSimon Tatham# CHECK-NOFP: vcmpe.i16 ne, q0, r0 @ encoding: [0x11,0xfe,0xc0,0x0f] 281*7d76f8acSSimon Tatham 282*7d76f8acSSimon Tatham# Ensure the scalar FP instructions VCMP and VCMPE are still correctly 283*7d76f8acSSimon Tatham# distinguished, in spite of VCMPE sometimes being a VPT-suffixed 284*7d76f8acSSimon Tatham# version of VCMP with identical encoding. 285*7d76f8acSSimon Tathamvcmp.f16 s0,s1 286*7d76f8acSSimon Tathamvcmpe.f16 s0,s1 287*7d76f8acSSimon Tatham# CHECK: vcmp.f16 s0, s1 @ encoding: [0xb4,0xee,0x60,0x09] 288*7d76f8acSSimon Tatham# CHECK: vcmpe.f16 s0, s1 @ encoding: [0xb4,0xee,0xe0,0x09] 289*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 s0, s1 @ encoding: [0xb4,0xee,0x60,0x09] 290*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmpe.f16 s0, s1 @ encoding: [0xb4,0xee,0xe0,0x09] 291*7d76f8acSSimon Tatham 292*7d76f8acSSimon Tathamitt eq 293*7d76f8acSSimon Tathamvcmpeq.f32 s0, s1 294*7d76f8acSSimon Tathamvcmpeeq.f32 s0, s1 295*7d76f8acSSimon Tatham# CHECK: itt eq @ encoding: [0x04,0xbf] 296*7d76f8acSSimon Tatham# CHECK: vcmpeq.f32 s0, s1 @ encoding: [0xb4,0xee,0x60,0x0a] 297*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmpeq.f32 s0, s1 @ encoding: [0xb4,0xee,0x60,0x0a] 298*7d76f8acSSimon Tatham# CHECK: vcmpeeq.f32 s0, s1 @ encoding: [0xb4,0xee,0xe0,0x0a] 299*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmpeeq.f32 s0, s1 @ encoding: [0xb4,0xee,0xe0,0x0a] 300