1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+streaming-sve,+bf16 2>&1 < %s| FileCheck %s 2 3// ------------------------------------------------------------------------- // 4// Check FABD is illegal in streaming mode 5 6fabd s0, s1, s2 7// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 8// CHECK-NEXT: fabd s0, s1, s2 9// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 10 11// ------------------------------------------------------------------------- // 12// Check non-scalar v8.6a BFloat16 instructions are illegal in streaming mode 13 14bfcvtn v5.4h, v5.4s 15// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 16// CHECK-NEXT: bfcvtn v5.4h, v5.4s 17// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 18 19// ------------------------------------------------------------------------- // 20// Check non-zero index is illegal in streaming mode 21// ------------------------------------------------------------------------- // 22// SMOV 8-bit to 32-bit 23 24smov w0, v0.b[1] 25// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 26// CHECK-NEXT: smov w0, v0.b[1] 27// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 28 29smov w0, v0.b[7] 30// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 31// CHECK-NEXT: smov w0, v0.b[7] 32// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 33 34smov w0, v0.b[15] 35// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 36// CHECK-NEXT: smov w0, v0.b[15] 37// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 38 39// ------------------------------------------------------------------------- // 40// SMOV 8-bit to 64-bit 41 42smov x0, v0.b[2] 43// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 44// CHECK-NEXT: smov x0, v0.b[2] 45// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 46 47smov x0, v0.b[6] 48// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 49// CHECK-NEXT: smov x0, v0.b[6] 50// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 51 52smov x0, v0.b[12] 53// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 54// CHECK-NEXT: smov x0, v0.b[12] 55// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 56 57// ------------------------------------------------------------------------- // 58// SMOV 16-bit to 32-bit 59 60smov w0, v0.h[1] 61// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 62// CHECK-NEXT: smov w0, v0.h[1] 63// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 64 65smov w0, v0.h[3] 66// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 67// CHECK-NEXT: smov w0, v0.h[3] 68// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 69 70smov w0, v0.h[7] 71// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 72// CHECK-NEXT: smov w0, v0.h[7] 73// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 74 75// ------------------------------------------------------------------------- // 76// SMOV 16-bit to 64-bit 77 78smov x0, v0.h[2] 79// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 80// CHECK-NEXT: smov x0, v0.h[2] 81// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 82 83smov x0, v0.h[4] 84// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 85// CHECK-NEXT: smov x0, v0.h[4] 86// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 87 88smov x0, v0.h[6] 89// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 90// CHECK-NEXT: smov x0, v0.h[6] 91// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 92 93// ------------------------------------------------------------------------- // 94// SMOV 32-bit to 64-bit 95 96smov x0, v0.s[1] 97// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 98// CHECK-NEXT: smov x0, v0.s[1] 99// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 100 101smov x0, v0.s[2] 102// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 103// CHECK-NEXT: smov x0, v0.s[2] 104// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 105 106smov x0, v0.s[3] 107// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 108// CHECK-NEXT: smov x0, v0.s[3] 109// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 110 111// ------------------------------------------------------------------------- // 112// UMOV 8-bit to 32-bit 113 114umov w0, v0.b[1] 115// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 116// CHECK-NEXT: umov w0, v0.b[1] 117// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 118 119umov w0, v0.b[7] 120// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 121// CHECK-NEXT: umov w0, v0.b[7] 122// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 123 124umov w0, v0.b[15] 125// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 126// CHECK-NEXT: umov w0, v0.b[15] 127// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 128 129// ------------------------------------------------------------------------- // 130// UMOV 16-bit to 32-bit 131 132umov w0, v0.h[1] 133// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 134// CHECK-NEXT: umov w0, v0.h[1] 135// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 136 137umov w0, v0.h[3] 138// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 139// CHECK-NEXT: umov w0, v0.h[3] 140// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 141 142umov w0, v0.h[7] 143// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 144// CHECK-NEXT: umov w0, v0.h[7] 145// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 146 147 148// ------------------------------------------------------------------------- // 149// UMOV 32-bit to 32-bit 150 151umov w0, v0.s[1] 152// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 153// CHECK-NEXT: umov w0, v0.s[1] 154// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 155 156umov w0, v0.s[2] 157// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 158// CHECK-NEXT: umov w0, v0.s[2] 159// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 160 161umov w0, v0.s[3] 162// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 163// CHECK-NEXT: umov w0, v0.s[3] 164// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 165 166// ------------------------------------------------------------------------- // 167// UMOV 64-bit to 64-bit 168 169umov x0, v0.d[1] 170// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon 171// CHECK-NEXT: umov x0, v0.d[1] 172// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 173