brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.9 KiB · c25ff66 Raw
192 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sme2p3 2>&1 < %s| FileCheck %s2 3// --------------------------------------------------------------------------//4// Invalid element width5 6luti6 z0.h, zt0, z07// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction8// CHECK-NEXT: luti6 z0.h, zt0, z09// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:10 11luti6 z0.s, zt0, z012// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width13// CHECK-NEXT: luti6 z0.s, zt0, z014// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:15 16luti6 z0.d, zt0, z017// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width18// CHECK-NEXT: luti6 z0.d, zt0, z019// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:20 21// --------------------------------------------------------------------------//22// Negative tests for instructions that are incompatible with movprfx23 24movprfx z0.h, p0/m, z7.h25luti6 z0.b, zt0, z126// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov27// CHECK-NEXT: luti6 z0.b, zt0, z128// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:29 30movprfx z0, z731luti6 z0.b, zt0, z132// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov33// CHECK-NEXT: luti6 z0.b, zt0, z134// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:35 36// --------------------------------------------------------------------------//37// Invalid vectors/mis-matched registers/invalid index38 39luti6 { z0.h - z5.h }, { z0.h, z1.h }, { z0, z1 }[0]40// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid number of vectors41// CHECK-NEXT: luti6 { z0.h - z5.h }, { z0.h, z1.h }, { z0, z1 }[0]42// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:43 44luti6 { z0.b - z3.h }, { z0.h, z1.h }, { z0, z1 }[0]45// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: mismatched register size suffix46// CHECK-NEXT: luti6 { z0.b - z3.h }, { z0.h, z1.h }, { z0, z1 }[0]47// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:48 49luti6 { z0.h - z3.h }, { z0.h, z1.h }, { z0, z1 }[2]50// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 1].51// CHECK-NEXT: luti6 { z0.h - z3.h }, { z0.h, z1.h }, { z0, z1 }[2]52// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:53 54// --------------------------------------------------------------------------//55// Negative tests for instructions that are incompatible with movprfx56 57movprfx z0.h, p0/m, z7.h58luti6 { z0.h - z3.h }, { z0.h, z1.h }, { z0, z1 }[0]59// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov60// CHECK-NEXT: luti6 { z0.h - z3.h }, { z0.h, z1.h }, { z0, z1 }[0]61// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:62 63movprfx z0, z764luti6 { z0.h - z3.h }, { z0.h, z1.h }, { z0, z1 }[0]65// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov66// CHECK-NEXT: luti6 { z0.h - z3.h }, { z0.h, z1.h }, { z0, z1 }[0]67// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:68 69// --------------------------------------------------------------------------//70// Wrong striding/registers/index71 72luti6 { z0.h, z4.h, z8.h, z13.h }, { z0.h, z1.h }, { z0, z1 }[0]73// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: registers must have the same sequential stride74// CHECK-NEXT: luti6 { z0.h, z4.h, z8.h, z13.h }, { z0.h, z1.h }, { z0, z1 }[0]75// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:76 77luti6 { z1.h, z2.h, z3.h, z4.h }, { z0.h, z1.h }, { z0, z1 }[0]78// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid vector list, expected list with 4 consecutive SVE vectors, where the first vector is a multiple of 4 and with matching element types79// CHECK-NEXT: luti6 { z1.h, z2.h, z3.h, z4.h }, { z0.h, z1.h }, { z0, z1 }[0]80// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:81 82luti6 { z0.b, z4.h, z8.h, z12.h }, { z0.h, z1.h }, { z0, z1 }[0]83// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: mismatched register size suffix84// CHECK-NEXT: luti6 { z0.b, z4.h, z8.h, z12.h }, { z0.h, z1.h }, { z0, z1 }[0]85// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:86 87luti6 { z0.h, z4.h, z8.h, z12.h }, { z0.h, z1.h }, { z0, z1 }[2]88// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 1].89// CHECK-NEXT: luti6 { z0.h, z4.h, z8.h, z12.h }, { z0.h, z1.h }, { z0, z1 }[2]90// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:91 92// --------------------------------------------------------------------------//93// Negative tests for instructions that are incompatible with movprfx94 95movprfx z0.h, p0/m, z7.h96luti6 { z0.h, z4.h, z8.h, z12.h }, { z0.h, z1.h }, { z0, z1 }[0]97// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov98// CHECK-NEXT: luti6 { z0.h, z4.h, z8.h, z12.h }, { z0.h, z1.h }, { z0, z1 }[0]99// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:100 101movprfx z0, z7102luti6 { z0.h, z4.h, z8.h, z12.h }, { z0.h, z1.h }, { z0, z1 }[0]103// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov104// CHECK-NEXT: luti6 { z0.h, z4.h, z8.h, z12.h }, { z0.h, z1.h }, { z0, z1 }[0]105// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:106 107// --------------------------------------------------------------------------//108// Invalid registers109 110luti6 { z0.b - z5.b }, zt0, { z2 - z4 }111// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid number of vectors112// CHECK-NEXT: luti6 { z0.b - z5.b }, zt0, { z2 - z4 }113// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:114 115luti6 { z0.b - z3.b }, zt0, { z1 - z1 }116// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid number of vectors117// CHECK-NEXT: luti6 { z0.b - z3.b }, zt0, { z1 - z1 }118// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:119 120luti6 { z0.b - z5.b }, zt0, { z7 - z11 }121// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid number of vectors122// CHECK-NEXT: luti6 { z0.b - z5.b }, zt0, { z7 - z11 }123// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:124 125luti6 { z0.b - z3.b }, zt1, { z1 - z3 }126// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid lookup table, expected zt0127// CHECK-NEXT: luti6 { z0.b - z3.b }, zt1, { z1 - z3 }128// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:129 130luti6 { z4.b, z8.b, z12.b, z16.b}, zt0, { z2 - z5 }131// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction132// CHECK-NEXT: luti6 { z4.b, z8.b, z12.b, z16.b}, zt0, { z2 - z5 }133// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:134 135luti6 { z17.b, z21.b, z25.b, z29.b}, zt0, { z2 - z5 }136// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction137// CHECK-NEXT: luti6 { z17.b, z21.b, z25.b, z29.b}, zt0, { z2 - z5 }138// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:139 140// --------------------------------------------------------------------------//141// Negative tests for instructions that are incompatible with movprfx142 143movprfx z0.h, p0/m, z7.h144luti6 { z0.b - z3.b }, zt0, { z1 - z3 }145// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov146// CHECK-NEXT: luti6 { z0.b - z3.b }, zt0, { z1 - z3 }147// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:148 149movprfx z0, z7150luti6 { z0.b - z3.b }, zt0, { z1 - z3 }151// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov152// CHECK-NEXT: luti6 { z0.b - z3.b }, zt0, { z1 - z3 }153// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:154 155// --------------------------------------------------------------------------//156// Wrong striding/registers157 158luti6 { z1.b, z5.b, z9.b, z14.b }, zt0, { z0 - z2 }159// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: registers must have the same sequential stride160// CHECK-NEXT: luti6 { z1.b, z5.b, z9.b, z14.b }, zt0, { z0 - z2 }161// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:162 163luti6 { z1.b, z2.b, z3.b, z4.b }, zt0, { z0 - z2 }164// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid vector list, expected list with 4 consecutive SVE vectors, where the first vector is a multiple of 4 and with matching element types165// CHECK-NEXT: luti6 { z1.b, z2.b, z3.b, z4.b }, zt0, { z0 - z2 }166// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:167 168luti6 { z20.b, z24.b, z28.b, z32.b }, zt0, { z0 - z2 }169// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector register expected170// CHECK-NEXT: luti6 { z20.b, z24.b, z28.b, z32.b }, zt0, { z0 - z2 }171// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:172 173luti6 { z1.h, z5.h, z9.h, z13.h }, zt0, { z0 - z2 }174// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction175// CHECK-NEXT: luti6 { z1.h, z5.h, z9.h, z13.h }, zt0, { z0 - z2 }176// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:177 178// --------------------------------------------------------------------------//179// Negative tests for instructions that are incompatible with movprfx180 181movprfx z0.h, p0/m, z7.h182luti6 { z0.b, z4.b, z8.b, z12.b }, zt0, { z2 - z4 }183// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov184// CHECK-NEXT: luti6 { z0.b, z4.b, z8.b, z12.b }, zt0, { z2 - z4 }185// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:186 187movprfx z0, z7188luti6 { z0.b, z4.b, z8.b, z12.b }, zt0, { z0 - z2 }189// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov190// CHECK-NEXT: luti6 { z0.b, z4.b, z8.b, z12.b }, zt0, { z0 - z2 }191// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:192