brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.0 KiB · dfb7f98 Raw
265 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sme 2>&1 < %s| FileCheck %s2 3// ------------------------------------------------------------------------- //4// Invalid predicate (expected: p0-p7)5 6mova z0.b, p8/m, za0h.b[w12, 0]7// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)8// CHECK-NEXT: mova z0.b, p8/m, za0h.b[w12, 0]9// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:10 11// ------------------------------------------------------------------------- //12// Invalid tile13 14// tile-to-vector15 16mova z0.b, p0/m, za1h.b[w12, 0]17// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list18// CHECK-NEXT: mova z0.b, p0/m, za1h.b[w12, 0]19// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:20 21mova z0.h, p0/m, za2h.h[w12, 0]22// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list23// CHECK-NEXT: mova z0.h, p0/m, za2h.h[w12, 0]24// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:25 26mova z0.s, p0/m, za4h.s[w12, 0]27// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list28// CHECK-NEXT: mova z0.s, p0/m, za4h.s[w12, 0]29// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:30 31mova z0.d, p0/m, za8h.d[w12, 0]32// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list33// CHECK-NEXT: mova z0.d, p0/m, za8h.d[w12, 0]34// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:35 36mova z0.q, p0/m, za16h.q[w12, 0]37// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list38// CHECK-NEXT: mova z0.q, p0/m, za16h.q[w12, 0]39// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:40 41// vector-to-tile42 43mova za1h.b[w12, 0], p0/m, z0.b44// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list45// CHECK-NEXT: mova za1h.b[w12, 0], p0/m, z0.b46// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:47 48mova za2h.h[w12, 0], p0/m, z0.h49// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list50// CHECK-NEXT: mova za2h.h[w12, 0], p0/m, z0.h51// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:52 53mova za4h.s[w12, 0], p0/m, z0.s54// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list55// CHECK-NEXT: mova za4h.s[w12, 0], p0/m, z0.s56// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:57 58mova za8h.d[w12, 0], p0/m, z0.d59// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list60// CHECK-NEXT: mova za8h.d[w12, 0], p0/m, z0.d61// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:62 63mova za16h.q[w12, 0], p0/m, z0.q64// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list65// CHECK-NEXT: mova za16h.q[w12, 0], p0/m, z0.q66// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:67 68// ------------------------------------------------------------------------- //69// Invalid matrix operand70 71// tile-to-vector72 73mova z0.b, p0/m, za0h.h[w12, 0]74// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected za0h.b or za0v.b75// CHECK-NEXT: mova z0.b, p0/m, za0h.h[w12, 0]76// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:77 78mova z0.h, p0/m, za[w12, 0]79// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected za[0-1]h.h or za[0-1]v.h80// CHECK-NEXT: mova z0.h, p0/m, za[w12, 0]81// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:82 83mova z0.s, p0/m, za2.s[w12, 0]84// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected za[0-3]h.s or za[0-3]v.s85// CHECK-NEXT: mova z0.s, p0/m, za2.s[w12, 0]86// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:87 88mova z0.d, p0/m, za2v.s[w12, 0]89// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected za[0-7]h.d or za[0-7]v.d90// CHECK-NEXT: mova z0.d, p0/m, za2v.s[w12, 0]91// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:92 93mova z0.q, p0/m, za0h.b[w12, 0]94// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected za[0-15]h.q or za[0-15]v.q95// CHECK-NEXT: mova z0.q, p0/m, za0h.b[w12, 0]96// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:97 98// vector-to-tile, only one test here since the intended instruction variant is99// ambiguous when failing to match on the first operand.100 101mova za[w12, 0], p0/m, z0.b102// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected za[0-15]h.q or za[0-15]v.q103// CHECK-NEXT: mova za[w12, 0], p0/m, z0.b104// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:105 106// ------------------------------------------------------------------------- //107// Invalid vector select register (expected: w12-w15)108 109mova z0.h, p0/m, za0h.h[w11, 0]110// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must be a register in range [w12, w15]111// CHECK-NEXT: mova z0.h, p0/m, za0h.h[w11, 0]112// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:113 114mova z0.s, p0/m, za0h.s[w16, 0]115// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must be a register in range [w12, w15]116// CHECK-NEXT: mova z0.s, p0/m, za0h.s[w16, 0]117// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:118 119mova za0h.d[w11, 0], p0/m, z0.d120// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must be a register in range [w12, w15]121// CHECK-NEXT: mova za0h.d[w11, 0], p0/m, z0.d122// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:123 124mova za0h.q[w16, 0], p0/m, z0.q125// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must be a register in range [w12, w15]126// CHECK-NEXT: mova za0h.q[w16, 0], p0/m, z0.q127// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:128 129// ------------------------------------------------------------------------- //130// Invalid vector select offset131//132//   expected: .b => 0-15, .h => 0-7, .s => 0-3, .d => 0-1, .q => NONE133 134// tile-to-vector135 136mova z0.b, p0/m, za0h.b[w12, 16]137// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 15].138// CHECK-NEXT: mova z0.b, p0/m, za0h.b[w12, 16]139// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:140 141mova z0.h, p0/m, za0h.h[w12, 8]142// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].143// CHECK-NEXT: mova z0.h, p0/m, za0h.h[w12, 8]144// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:145 146mova z0.s, p0/m, za0h.s[w12, 4]147// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 3].148// CHECK-NEXT: mova z0.s, p0/m, za0h.s[w12, 4]149// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:150 151mova z0.d, p0/m, za0h.d[w12, 2]152// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 1].153// CHECK-NEXT: mova z0.d, p0/m, za0h.d[w12, 2]154// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:155 156mova z0.q, p0/m, za0h.q[w12, 1]157// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be 0.158// CHECK-NEXT: mova z0.q, p0/m, za0h.q[w12, 1]159// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:160 161mov z0.b, p0/m, za0h.b[w12, 16]162// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 15].163// CHECK-NEXT: mov z0.b, p0/m, za0h.b[w12, 16]164// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:165 166mov z0.h, p0/m, za0h.h[w12, 8]167// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].168// CHECK-NEXT: mov z0.h, p0/m, za0h.h[w12, 8]169// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:170 171mov z0.s, p0/m, za0h.s[w12, 4]172// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 3].173// CHECK-NEXT: mov z0.s, p0/m, za0h.s[w12, 4]174// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:175 176mov z0.d, p0/m, za0h.d[w12, 2]177// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 1].178// CHECK-NEXT: mov z0.d, p0/m, za0h.d[w12, 2]179// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:180 181mov z0.q, p0/m, za0h.q[w12, 1]182// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be 0.183// CHECK-NEXT: mov z0.q, p0/m, za0h.q[w12, 1]184// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:185 186// vector-to-tile187 188mova za0h.b[w12, 16], p0/m, z0.b189// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 15].190// CHECK-NEXT: mova za0h.b[w12, 16], p0/m, z0.b191// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:192 193mova za0h.h[w12, 8], p0/m, z0.h194// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].195// CHECK-NEXT: mova za0h.h[w12, 8], p0/m, z0.h196// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:197 198mova za0h.s[w12, 4], p0/m, z0.s199// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 3].200// CHECK-NEXT: mova za0h.s[w12, 4], p0/m, z0.s201// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:202 203mova za0h.d[w12, 2], p0/m, z0.d204// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 1].205// CHECK-NEXT: mova za0h.d[w12, 2], p0/m, z0.d206// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:207 208mova za0h.q[w12, 1], p0/m, z0.q209// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be 0.210// CHECK-NEXT: mova za0h.q[w12, 1], p0/m, z0.q211// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:212 213mov za0h.b[w12, 16], p0/m, z0.b214// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 15].215// CHECK-NEXT: mov za0h.b[w12, 16], p0/m, z0.b216// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:217 218mov za0h.h[w12, 8], p0/m, z0.h219// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].220// CHECK-NEXT: mov za0h.h[w12, 8], p0/m, z0.h221// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:222 223mov za0h.s[w12, 4], p0/m, z0.s224// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 3].225// CHECK-NEXT: mov za0h.s[w12, 4], p0/m, z0.s226// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:227 228mov za0h.d[w12, 2], p0/m, z0.d229// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 1].230// CHECK-NEXT: mov za0h.d[w12, 2], p0/m, z0.d231// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:232 233mov za0h.q[w12, 1], p0/m, z0.q234// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be 0.235// CHECK-NEXT: mov za0h.q[w12, 1], p0/m, z0.q236// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:237 238// ------------------------------------------------------------------------- //239// Invalid ZPR element width240 241mova za0h.b[w12, 0], p0/m, z0.h242// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width243// CHECK-NEXT: mova za0h.b[w12, 0], p0/m, z0.h244// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:245 246mova za0h.h[w12, 0], p0/m, z0.s247// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width248// CHECK-NEXT: mova za0h.h[w12, 0], p0/m, z0.s249// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:250 251mova za0h.s[w12, 0], p0/m, z0.d252// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width253// CHECK-NEXT: mova za0h.s[w12, 0], p0/m, z0.d254// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:255 256mova za0h.d[w12, 0], p0/m, z0.q257// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width258// CHECK-NEXT: mova za0h.d[w12, 0], p0/m, z0.q259// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:260 261mova za0h.q[w12, 0], p0/m, z0.b262// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width263// CHECK-NEXT: mova za0h.q[w12, 0], p0/m, z0.b264// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:265