124 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s2 3 4// ------------------------------------------------------------------------- //5// Invalid predicate6 7clastb w0, p8, w0, z31.b8// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)9// CHECK-NEXT: clastb w0, p8, w0, z31.b10// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:11 12clastb 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: clastb w0, p7.b, w0, z31.b15// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:16 17clastb 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: clastb w0, p7.q, w0, z31.b20// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:21 22 23// ------------------------------------------------------------------------- //24// Invalid element width25 26clastb w0, p7, x0, z31.b27// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand28// CHECK-NEXT: clastb w0, p7, x0, z31.b29// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:30 31clastb x0, p7, x0, z31.b32// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width33// CHECK-NEXT: clastb x0, p7, x0, z31.b34// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:35 36clastb x0, p7, x0, z31.h37// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width38// CHECK-NEXT: clastb x0, p7, x0, z31.h39// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:40 41clastb x0, p7, x0, z31.s42// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width43// CHECK-NEXT: clastb x0, p7, x0, z31.s44// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:45 46clastb w0, p7, w0, z31.d47// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width48// CHECK-NEXT: clastb w0, p7, w0, z31.d49// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:50 51clastb b0, p7, b0, z31.h52// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width53// CHECK-NEXT: clastb b0, p7, b0, z31.h54// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:55 56clastb h0, p7, h0, z31.s57// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width58// CHECK-NEXT: clastb h0, p7, h0, z31.s59// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:60 61clastb s0, p7, s0, z31.d62// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width63// CHECK-NEXT: clastb s0, p7, s0, z31.d64// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:65 66clastb d0, p7, d0, z31.b67// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width68// CHECK-NEXT: clastb d0, p7, d0, z31.b69// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:70 71clastb z0.b, p7, z0.b, z31.h72// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width73// CHECK-NEXT: clastb z0.b, p7, z0.b, z31.h74// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:75 76clastb z0.h, p7, z0.h, z31.s77// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width78// CHECK-NEXT: clastb z0.h, p7, z0.h, z31.s79// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:80 81clastb z0.s, p7, z0.s, z31.d82// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width83// CHECK-NEXT: clastb z0.s, p7, z0.s, z31.d84// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:85 86clastb z0.d, p7, z0.d, z31.b87// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width88// CHECK-NEXT: clastb z0.d, p7, z0.d, z31.b89// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:90 91 92// --------------------------------------------------------------------------//93// Negative tests for instructions that are incompatible with movprfx94 95movprfx z31.d, p7/z, z6.d96clastb x0, p7, x0, z31.d97// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov98// CHECK-NEXT: clastb x0, p7, x0, z31.d99// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:100 101movprfx z31, z6102clastb x0, p7, x0, z31.d103// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov104// CHECK-NEXT: clastb x0, p7, x0, z31.d105// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:106 107movprfx z31.d, p7/z, z6.d108clastb d0, p7, d0, z31.d109// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov110// CHECK-NEXT: clastb d0, p7, d0, z31.d111// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:112 113movprfx z31, z6114clastb d0, p7, d0, z31.d115// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov116// CHECK-NEXT: clastb d0, p7, d0, z31.d117// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:118 119movprfx z0.d, p7/z, z7.d120clastb z0.d, p7, z0.d, z31.d121// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a predicated movprfx, suggest using unpredicated movprfx122// CHECK-NEXT: clastb z0.d, p7, z0.d, z31.d123// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:124