71 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2p3 2>&1 < %s| FileCheck %s2 3// --------------------------------------------------------------------------//4// Invalid element width5 6luti6 z10.h, { z0.b, z1.b }, z07// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction8// CHECK-NEXT: luti6 z10.h, { z0.b, z1.b }, z09// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:10 11luti6 z10.s, { z0.b, z1.b }, z012// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width13// CHECK-NEXT: luti6 z10.s, { z0.b, z1.b }, z014// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:15 16// --------------------------------------------------------------------------//17// Negative tests for instructions that are incompatible with movprfx18 19movprfx z0.h, p0/m, z7.h20luti6 z0.b, { z2.b, z3.b }, z421// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov22// CHECK-NEXT: luti6 z0.b, { z2.b, z3.b }, z423// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:24 25movprfx z0, z726luti6 z0.b, { z2.b, z3.b }, z427// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov28// CHECK-NEXT: luti6 z0.b, { z2.b, z3.b }, z429// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:30 31// --------------------------------------------------------------------------//32// Invalid element width33 34luti6 z10.s, { z0.h, z1.h }, z0[0]35// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width36// CHECK-NEXT: luti6 z10.s, { z0.h, z1.h }, z0[0]37// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:38 39luti6 z10.b, { z0.h, z1.h }, z0[0]40// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction41// CHECK-NEXT: luti6 z10.b, { z0.h, z1.h }, z0[0]42// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:43 44// --------------------------------------------------------------------------//45// Invalid immediate range46 47luti6 z10.h, { z0.h, z1.h }, z0[-1]48// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 1].49// CHECK-NEXT: luti6 z10.h, { z0.h, z1.h }, z0[-1]50// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:51 52luti6 z10.h, { z0.h, z1.h }, z0[2]53// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 1].54// CHECK-NEXT: luti6 z10.h, { z0.h, z1.h }, z0[2]55// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:56 57// --------------------------------------------------------------------------//58// Negative tests for instructions that are incompatible with movprfx59 60movprfx z0.h, p0/m, z7.h61luti6 z0.h, { z2.h, z3.h }, z4[0]62// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov63// CHECK-NEXT: luti6 z0.h, { z2.h, z3.h }, z4[0]64// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:65 66movprfx z0, z767luti6 z0.h, { z2.h, z3.h }, z4[0]68// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov69// CHECK-NEXT: luti6 z0.h, { z2.h, z3.h }, z4[0]70// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:71