1# RUN: llvm-mc -disassemble -triple=thumbv8.1m.main-none-eabi -mattr=+mve.fp,+fp64 -show-encoding %s | FileCheck %s 2# RUN: not llvm-mc -disassemble -triple=thumbv8.1m.main-none-eabi -show-encoding %s &> %t 3# RUN: FileCheck --check-prefix=CHECK-NOMVE < %t %s 4 5# CHECK: vrintn.f16 q1, q0 @ encoding: [0xb6,0xff,0x40,0x24] 6# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 7[0xb6,0xff,0x40,0x24] 8 9# CHECK: vrintn.f32 q0, q4 @ encoding: [0xba,0xff,0x48,0x04] 10# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 11[0xba,0xff,0x48,0x04] 12 13# CHECK: vrinta.f16 q0, q1 @ encoding: [0xb6,0xff,0x42,0x05] 14# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 15[0xb6,0xff,0x42,0x05] 16 17# CHECK: vrinta.f32 q1, q3 @ encoding: [0xba,0xff,0x46,0x25] 18# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 19[0xba,0xff,0x46,0x25] 20 21# CHECK: vrintm.f16 q0, q5 @ encoding: [0xb6,0xff,0xca,0x06] 22# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 23[0xb6,0xff,0xca,0x06] 24 25# CHECK: vrintm.f32 q0, q4 @ encoding: [0xba,0xff,0xc8,0x06] 26# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 27[0xba,0xff,0xc8,0x06] 28 29# CHECK: vrintp.f16 q1, q0 @ encoding: [0xb6,0xff,0xc0,0x27] 30# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 31[0xb6,0xff,0xc0,0x27] 32 33# CHECK: vrintp.f32 q0, q1 @ encoding: [0xba,0xff,0xc2,0x07] 34# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 35[0xba,0xff,0xc2,0x07] 36 37# CHECK: vrintx.f16 q1, q2 @ encoding: [0xb6,0xff,0xc4,0x24] 38# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 39[0xb6,0xff,0xc4,0x24] 40 41# CHECK: vrintx.f32 q1, q1 @ encoding: [0xba,0xff,0xc2,0x24] 42# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 43[0xba,0xff,0xc2,0x24] 44 45# CHECK: vrintz.f16 q1, q6 @ encoding: [0xb6,0xff,0xcc,0x25] 46# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 47[0xb6,0xff,0xcc,0x25] 48 49# CHECK: vrintz.f32 q1, q0 @ encoding: [0xba,0xff,0xc0,0x25] 50# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 51[0xba,0xff,0xc0,0x25] 52 53# CHECK: vrintr.f32 s0, s1 @ encoding: [0xb6,0xee,0x60,0x0a] 54# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 55[0xb6,0xee,0x60,0x0a] 56 57# CHECK: vrintr.f64 d0, d1 @ encoding: [0xb6,0xee,0x41,0x0b] 58# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 59[0xb6,0xee,0x41,0x0b] 60 61# CHECK: vmul.f16 q2, q1, q3 @ encoding: [0x12,0xff,0x56,0x4d] 62# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 63[0x12,0xff,0x56,0x4d] 64 65# CHECK: vmul.f32 q0, q0, q5 @ encoding: [0x00,0xff,0x5a,0x0d] 66# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 67[0x00,0xff,0x5a,0x0d] 68 69# CHECK: vfma.f16 q0, q2, q3 @ encoding: [0x14,0xef,0x56,0x0c] 70# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 71[0x14,0xef,0x56,0x0c] 72 73# CHECK: vfma.f32 q0, q3, q7 @ encoding: [0x06,0xef,0x5e,0x0c] 74# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 75[0x06,0xef,0x5e,0x0c] 76 77# CHECK: vfms.f16 q0, q2, q5 @ encoding: [0x34,0xef,0x5a,0x0c] 78# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 79[0x34,0xef,0x5a,0x0c] 80 81# CHECK: vfms.f32 q1, q1, q2 @ encoding: [0x22,0xef,0x54,0x2c] 82# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 83[0x22,0xef,0x54,0x2c] 84 85# CHECK: vadd.f16 q0, q0, q5 @ encoding: [0x10,0xef,0x4a,0x0d] 86# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 87[0x10,0xef,0x4a,0x0d] 88 89# CHECK: vadd.f32 q1, q3, q0 @ encoding: [0x06,0xef,0x40,0x2d] 90# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 91[0x06,0xef,0x40,0x2d] 92 93# CHECK: vcadd.f16 q2, q1, q7, #90 @ encoding: [0x82,0xfc,0x4e,0x48] 94# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 95[0x82,0xfc,0x4e,0x48] 96 97# CHECK: vcadd.f16 q2, q5, q7, #270 @ encoding: [0x8a,0xfd,0x4e,0x48] 98# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 99[0x8a,0xfd,0x4e,0x48] 100 101# CHECK: vcadd.f32 q0, q4, q7, #90 @ encoding: [0x98,0xfc,0x4e,0x08] 102# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 103[0x98,0xfc,0x4e,0x08] 104 105# CHECK: vcadd.f32 q2, q2, q3, #270 @ encoding: [0x94,0xfd,0x46,0x48] 106# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 107[0x94,0xfd,0x46,0x48] 108 109# CHECK: vabd.f16 q0, q0, q6 @ encoding: [0x30,0xff,0x4c,0x0d] 110# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 111[0x30,0xff,0x4c,0x0d] 112 113# CHECK: vabd.f32 q0, q1, q4 @ encoding: [0x22,0xff,0x48,0x0d] 114# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 115[0x22,0xff,0x48,0x0d] 116 117# CHECK: vcvt.f16.s16 q0, q1 @ encoding: [0xb7,0xff,0x42,0x06] 118# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 119[0xb7,0xff,0x42,0x06] 120 121# CHECK: vcvt.f16.u16 q0, q4 @ encoding: [0xb7,0xff,0xc8,0x06] 122# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 123[0xb7,0xff,0xc8,0x06] 124 125# CHECK: vcvt.s16.f16 q0, q0 @ encoding: [0xb7,0xff,0x40,0x07] 126# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 127[0xb7,0xff,0x40,0x07] 128 129# CHECK: vcvt.u16.f16 q0, q0 @ encoding: [0xb7,0xff,0xc0,0x07] 130# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 131[0xb7,0xff,0xc0,0x07] 132 133# CHECK: vcvt.f32.s32 q0, q0 @ encoding: [0xbb,0xff,0x40,0x06] 134# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 135[0xbb,0xff,0x40,0x06] 136 137# CHECK: vcvt.f32.u32 q0, q0 @ encoding: [0xbb,0xff,0xc0,0x06] 138# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 139[0xbb,0xff,0xc0,0x06] 140 141# CHECK: vcvt.s32.f32 q0, q0 @ encoding: [0xbb,0xff,0x40,0x07] 142# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 143[0xbb,0xff,0x40,0x07] 144 145# CHECK: vcvt.u32.f32 q0, q2 @ encoding: [0xbb,0xff,0xc4,0x07] 146# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 147[0xbb,0xff,0xc4,0x07] 148 149# CHECK: vcvta.s16.f16 q0, q7 @ encoding: [0xb7,0xff,0x4e,0x00] 150# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 151[0xb7,0xff,0x4e,0x00] 152 153# CHECK: vcvtn.u32.f32 q7, q6 @ encoding: [0xbb,0xff,0xcc,0xe1] 154# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 155[0xbb,0xff,0xcc,0xe1] 156 157# CHECK: vcvtp.s32.f32 q0, q7 @ encoding: [0xbb,0xff,0x4e,0x02] 158# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 159[0xbb,0xff,0x4e,0x02] 160 161# CHECK: vcvtm.u32.f32 q1, q4 @ encoding: [0xbb,0xff,0xc8,0x23] 162# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 163[0xbb,0xff,0xc8,0x23] 164 165# CHECK: vneg.f16 q0, q7 @ encoding: [0xb5,0xff,0xce,0x07] 166# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 167[0xb5,0xff,0xce,0x07] 168 169# CHECK: vneg.f32 q0, q2 @ encoding: [0xb9,0xff,0xc4,0x07] 170# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 171[0xb9,0xff,0xc4,0x07] 172 173# CHECK: vabs.f16 q0, q2 @ encoding: [0xb5,0xff,0x44,0x07] 174# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 175[0xb5,0xff,0x44,0x07] 176 177# CHECK: vabs.f32 q0, q0 @ encoding: [0xb9,0xff,0x40,0x07] 178# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 179[0xb9,0xff,0x40,0x07] 180 181# CHECK: vmaxnma.f16 q1, q1 @ encoding: [0x3f,0xfe,0x83,0x2e] 182# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 183[0x3f,0xfe,0x83,0x2e] 184 185# CHECK: vmaxnma.f32 q2, q6 @ encoding: [0x3f,0xee,0x8d,0x4e] 186# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 187[0x3f,0xee,0x8d,0x4e] 188 189# CHECK: vminnma.f16 q0, q2 @ encoding: [0x3f,0xfe,0x85,0x1e] 190# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 191[0x3f,0xfe,0x85,0x1e] 192 193# CHECK: vminnma.f32 q0, q1 @ encoding: [0x3f,0xee,0x83,0x1e] 194# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding 195[0x3f,0xee,0x83,0x1e] 196