121 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2p2 2>&1 < %s| FileCheck %s2 3// ------------------------------------------------------------------------- //4// Invalid element widths.5 6expand z23.b, p3, z13.d7// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width8// CHECK-NEXT: expand z23.b, p3, z13.d9// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:10 11expand z23.h, p3, z13.b12// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width13// CHECK-NEXT: expand z23.h, p3, z13.b14// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:15 16expand z23.s, p3, z13.h17// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width18// CHECK-NEXT: expand z23.s, p3, z13.h19// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:20 21expand z23.d, p3, z13.s22// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width23// CHECK-NEXT: expand z23.d, p3, z13.s24// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:25 26expand z23.q, p3, z13.q27// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width28// CHECK-NEXT: expand z23.q, p3, z13.q29// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:30 31// --------------------------------------------------------------------------//32// Invalid predicate operation33 34expand z23.b, p3/z, z13.b35// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction36// CHECK-NEXT: expand z23.b, p3/z, z13.b37// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:38 39expand z23.b, p3.b, z13.b40// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)41// CHECK-NEXT: expand z23.b, p3.b, z13.b42// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:43 44expand z23.h, p3/m, z13.h45// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction46// CHECK-NEXT: expand z23.h, p3/m, z13.h47// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:48 49expand z23.h, p3.h, z13.h50// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)51// CHECK-NEXT: expand z23.h, p3.h, z13.h52// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:53 54expand z23.s, p3/z, z13.s55// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction56// CHECK-NEXT: expand z23.s, p3/z, z13.s57// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:58 59expand z23.s, p3.s, z13.s60// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)61// CHECK-NEXT: expand z23.s, p3.s, z13.s62// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:63 64expand z23.d, p3/m, z13.d65// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction66// CHECK-NEXT: expand z23.d, p3/m, z13.d67// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:68 69expand z23.d, p3.d, z13.d70// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)71// CHECK-NEXT: expand z23.d, p3.d, z13.d72// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:73 74// --------------------------------------------------------------------------//75// Predicate not in restricted predicate range76 77expand z23.b, p8, z13.b78// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)79// CHECK-NEXT: expand z23.b, p8, z13.b80// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:81 82expand z23.b, p3.b, z13.b83// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)84// CHECK-NEXT: expand z23.b, p3.b, z13.b85// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:86 87expand z23.h, p8, z13.h88// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)89// CHECK-NEXT: expand z23.h, p8, z13.h90// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:91 92expand z23.h, p3.h, z13.h93// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)94// CHECK-NEXT: expand z23.h, p3.h, z13.h95// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}96 97expand z23.s, p8, z13.s98// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)99// CHECK-NEXT: expand z23.s, p8, z13.s100// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:101 102expand z23.d, p8, z13.d103// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)104// CHECK-NEXT: expand z23.d, p8, z13.d105// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:106 107// --------------------------------------------------------------------------//108// Negative tests for instructions that are incompatible with movprfx109 110movprfx z31, z6111expand z31.b, p7, z31.b112// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov113// CHECK-NEXT: expand z31.b, p7, z31.b114// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:115 116movprfx z31.b, p0/z, z6.b117expand z31.b, p0, z31.b118// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov119// CHECK-NEXT: expand z31.b, p0, z31.b120// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:121