brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.4 KiB · 102128a Raw
151 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve  2>&1 < %s| FileCheck %s2 3// Invalid element kind.4subr z0.h, p0/m, z0.h, z0.x5// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid vector kind qualifier6// CHECK-NEXT: subr z0.h, p0/m, z0.h, z0.x7// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:8 9// Element size specifiers should match.10subr z0.h, p0/m, z0.h, z0.b11// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width12// CHECK-NEXT: subr z0.h, p0/m, z0.h, z0.b13// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:14 15// Invalid predicate suffix '/a'16subr z0.d, p7/a, z0.d, z0.d17// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expecting 'm' or 'z' predication18// CHECK-NEXT: subr z0.d, p7/a, z0.d, z0.d19// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:20 21// Missing predicate suffix22subr z0.d, p7, z0.d, z0.d23// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand24// CHECK-NEXT: subr z0.d, p7, z0.d, z0.d25// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:26 27// --------------------------------------------------------------------------//28// error: invalid restricted predicate register, expected p0..p7 (without element suffix)29 30subr z26.b, p8/m, z26.b, z27.b31// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)32// CHECK-NEXT: subr z26.b, p8/m, z26.b, z27.b33// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:34 35subr z14.h, p8/m, z14.h, z18.h36// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)37// CHECK-NEXT: subr z14.h, p8/m, z14.h, z18.h38// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:39 40subr z30.s, p8/m, z30.s, z23.s41// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)42// CHECK-NEXT: subr z30.s, p8/m, z30.s, z23.s43// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:44 45subr z29.d, p8/m, z29.d, z3.d46// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)47// CHECK-NEXT: subr z29.d, p8/m, z29.d, z3.d48// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:49 50// --------------------------------------------------------------------------//51// Source and Destination Registers must match52 53subr z25.b, p4/m, z26.b, z2.b54// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register55// CHECK-NEXT: subr z25.b, p4/m, z26.b, z2.b56// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:57 58subr z29.h, p6/m, z30.h, z20.h59// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register60// CHECK-NEXT: subr z29.h, p6/m, z30.h, z20.h61// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:62 63subr z14.s, p2/m, z15.s, z21.s64// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register65// CHECK-NEXT: subr z14.s, p2/m, z15.s, z21.s66// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:67 68subr z2.d, p5/m, z3.d, z11.d69// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register70// CHECK-NEXT: subr z2.d, p5/m, z3.d, z11.d71// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:72 73 74// --------------------------------------------------------------------------//75// Invalid immediates76 77subr     z0.b, z0.b, #0, lsl #8      // #0, lsl #8 is not valid for .b78// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] with a shift amount of 079// CHECK-NEXT: subr     z0.b, z0.b, #0, lsl #880// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:81 82subr     z0.b, z0.b, #-183// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] with a shift amount of 084// CHECK-NEXT: subr     z0.b, z0.b, #-185// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:86 87subr     z0.b, z0.b, #1, lsl #888// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] with a shift amount of 089// CHECK-NEXT: subr     z0.b, z0.b, #1, lsl #890// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:91 92subr     z0.b, z0.b, #25693// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] with a shift amount of 094// CHECK-NEXT: subr     z0.b, z0.b, #25695// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:96 97subr     z0.h, z0.h, #-198// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]99// CHECK-NEXT: subr     z0.h, z0.h, #-1100// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:101 102subr     z0.h, z0.h, #256, lsl #8103// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]104// CHECK-NEXT: subr     z0.h, z0.h, #256, lsl #8105// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:106 107subr     z0.h, z0.h, #65536108// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]109// CHECK-NEXT: subr     z0.h, z0.h, #65536110// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:111 112subr     z0.s, z0.s, #-1113// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]114// CHECK-NEXT: subr     z0.s, z0.s, #-1115// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:116 117subr     z0.s, z0.s, #256, lsl #8118// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]119// CHECK-NEXT: subr     z0.s, z0.s, #256, lsl #8120// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:121 122subr     z0.s, z0.s, #65536123// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]124// CHECK-NEXT: subr     z0.s, z0.s, #65536125// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:126 127subr     z0.d, z0.d, #-1128// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]129// CHECK-NEXT: subr     z0.d, z0.d, #-1130// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:131 132subr     z0.d, z0.d, #256, lsl #8133// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]134// CHECK-NEXT: subr     z0.d, z0.d, #256, lsl #8135// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:136 137subr     z0.d, z0.d, #65536138// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]139// CHECK-NEXT: subr     z0.d, z0.d, #65536140// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:141 142 143// --------------------------------------------------------------------------//144// Negative tests for instructions that are incompatible with movprfx145 146movprfx z31.d, p0/z, z6.d147subr    z31.d, z31.d, #65280148// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a predicated movprfx, suggest using unpredicated movprfx149// CHECK-NEXT: subr    z31.d, z31.d, #65280150// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:151