brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.8 KiB · 2b6bc03 Raw
114 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sme2p1 2>&1 < %s | FileCheck %s2 3// --------------------------------------------------------------------------//4// Out of range index offset5 6movaz {z0.h-z1.h}, za0h.h[w12, 1:2]7// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector select offset must be an immediate range of the form <immf>:<imml>, where the first immediate is a multiple of 2 in the range [0, 6] or [0, 14] depending on the instruction, and the second immediate is immf + 1.8// CHECK-NEXT: movaz {z0.h-z1.h}, za0h.h[w12, 1:2]9// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:10 11movaz {z0.b-z3.b}, za0v.b[w12, 1:4]12// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector select offset must be an immediate range of the form <immf>:<imml>, where the first immediate is a multiple of 4 in the range [0, 4] or [0, 12] depending on the instruction, and the second immediate is immf + 3.13// CHECK-NEXT: movaz {z0.b-z3.b}, za0v.b[w12, 1:4]14// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:15 16movaz {z0.s-z1.s}, za0h.s[w12, 0:2]17// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction18// CHECK-NEXT: movaz {z0.s-z1.s}, za0h.s[w12, 0:2]19// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:20 21movaz {z0.d-z3.d}, za0h.d[w12, 0:4]22// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction23// CHECK-NEXT: movaz {z0.d-z3.d}, za0h.d[w12, 0:4]24// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:25 26movaz  {z4.d-z7.d}, za.d[w9, 8]27// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].28// CHECK-NEXT: movaz  {z4.d-z7.d}, za.d[w9, 8]29// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:30 31movaz  {z4.d-z7.d}, za.d[w9, -1]32// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].33// CHECK-NEXT: movaz  {z4.d-z7.d}, za.d[w9, -1]34// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:35 36movaz z1.q, za1h.q[w12, 1]37// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be 0.38// CHECK-NEXT: movaz z1.q, za1h.q[w12, 1]39// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:40 41movaz z31.h, za1h.h[w15, 8]42// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].43// CHECK-NEXT: movaz z31.h, za1h.h[w15, 8]44// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:45 46movaz z31.h, za1h.h[w15, -1]47// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].48// CHECK-NEXT: movaz z31.h, za1h.h[w15, -1]49// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:50 51movaz z2.b, za0v.b[w15, -1]52// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 15].53// CHECK-NEXT: movaz z2.b, za0v.b[w15, -1]54// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:55 56movaz z2.b, za0v.b[w15, 16]57// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 15].58// CHECK-NEXT: movaz z2.b, za0v.b[w15, 16]59// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:60 61movaz z31.s, za1h.s[w15, 4]62// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 3].63// CHECK-NEXT: movaz z31.s, za1h.s[w15, 4]64// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:65 66movaz z31.s, za1h.s[w15, -1]67// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 3].68// CHECK-NEXT: movaz z31.s, za1h.s[w15, -1]69// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:70 71movaz z31.d, za1v.d[w15, 2]72// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 1].73// CHECK-NEXT: movaz z31.d, za1v.d[w15, 2]74// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:75 76movaz z31.d, za1h.d[w15, -1]77// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 1].78// CHECK-NEXT: movaz z31.d, za1h.d[w15, -1]79// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:80 81// --------------------------------------------------------------------------//82// Invalid vector select register83 84movaz z0.h, za0v.h[w11, 0]85// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must be a register in range [w12, w15]86// CHECK-NEXT: movaz z0.h, za0v.h[w11, 0]87// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:88 89movaz z0.h, za0v.h[w16, 0]90// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must be a register in range [w12, w15]91// CHECK-NEXT: movaz z0.h, za0v.h[w16, 0]92// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:93 94// --------------------------------------------------------------------------//95// Invalid matrix operand96 97movaz z31.s, za1h.d[w15, -1]98// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected za[0-3]h.s or za[0-3]v.s99// CHECK-NEXT: movaz z31.s, za1h.d[w15, -1]100// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:101 102// --------------------------------------------------------------------------//103// Tile-to-vector should not accept the VG suffix104 105movaz { z0.b, z1.b }, za0h.b[w12, 0:1, vgx2]106// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction107// CHECK-NEXT: movaz { z0.b, z1.b }, za0h.b[w12, 0:1, vgx2]108// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:109 110movaz { z0.b - z3.b }, za0h.b[w12, 0:3, vgx4]111// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction112// CHECK-NEXT: movaz { z0.b - z3.b }, za0h.b[w12, 0:3, vgx4]113// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:114