93 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s2 3 4// ------------------------------------------------------------------------- //5// Invalid predicate6 7lastb w0, p8, z31.b8// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)9// CHECK-NEXT: lastb w0, p8, z31.b10// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:11 12lastb w0, p7.b, w0, z31.b13// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)14// CHECK-NEXT: lastb w0, p7.b, w0, z31.b15// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:16 17lastb w0, p7.q, w0, z31.b18// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)19// CHECK-NEXT: lastb w0, p7.q, w0, z31.b20// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:21 22 23// ------------------------------------------------------------------------- //24// Invalid element width25 26lastb x0, p7, z31.b27// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width28// CHECK-NEXT: lastb x0, p7, z31.b29// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:30 31lastb x0, p7, z31.h32// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width33// CHECK-NEXT: lastb x0, p7, z31.h34// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:35 36lastb x0, p7, z31.s37// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width38// CHECK-NEXT: lastb x0, p7, z31.s39// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:40 41lastb w0, p7, z31.d42// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width43// CHECK-NEXT: lastb w0, p7, z31.d44// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:45 46lastb b0, p7, z31.h47// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width48// CHECK-NEXT: lastb b0, p7, z31.h49// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:50 51lastb h0, p7, z31.s52// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width53// CHECK-NEXT: lastb h0, p7, z31.s54// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:55 56lastb s0, p7, z31.d57// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width58// CHECK-NEXT: lastb s0, p7, z31.d59// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:60 61lastb d0, p7, z31.b62// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width63// CHECK-NEXT: lastb d0, p7, z31.b64// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:65 66 67// --------------------------------------------------------------------------//68// Negative tests for instructions that are incompatible with movprfx69 70movprfx z31.d, p7/z, z6.d71lastb x0, p7, z31.d72// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov73// CHECK-NEXT: lastb x0, p7, z31.d74// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:75 76movprfx z31, z677lastb x0, p7, z31.d78// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov79// CHECK-NEXT: lastb x0, p7, z31.d80// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:81 82movprfx z31.d, p7/z, z6.d83lastb d0, p7, z31.d84// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov85// CHECK-NEXT: lastb d0, p7, z31.d86// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:87 88movprfx z31, z689lastb d0, p7, z31.d90// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov91// CHECK-NEXT: lastb d0, p7, z31.d92// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:93