brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · d2e3c4f Raw
151 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve  2>&1 < %s| FileCheck %s2 3lsl z18.b, z28.b, #-14// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7]5// CHECK-NEXT: lsl z18.b, z28.b, #-16// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:7 8lsl z1.b, z9.b, #89// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7]10// CHECK-NEXT: lsl z1.b, z9.b, #811// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:12 13lsl z18.b, p0/m, z28.b, #-114// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7]15// CHECK-NEXT: lsl z18.b, p0/m, z28.b, #-116// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:17 18lsl z1.b, p0/m, z9.b, #819// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7]20// CHECK-NEXT: lsl z1.b, p0/m, z9.b, #821// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:22 23lsl z21.h, z2.h, #-124// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 15]25// CHECK-NEXT: lsl z21.h, z2.h, #-126// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:27 28lsl z14.h, z30.h, #1629// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 15]30// CHECK-NEXT: lsl z14.h, z30.h, #1631// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:32 33lsl z21.h, p0/m, z2.h, #-134// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 15]35// CHECK-NEXT: lsl z21.h, p0/m, z2.h, #-136// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:37 38lsl z14.h, p0/m, z30.h, #1639// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 15]40// CHECK-NEXT: lsl z14.h, p0/m, z30.h, #1641// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:42 43lsl z6.s, z12.s, #-144// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 31]45// CHECK-NEXT: lsl z6.s, z12.s, #-146// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:47 48lsl z23.s, z19.s, #3249// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 31]50// CHECK-NEXT: lsl z23.s, z19.s, #3251// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:52 53lsl z6.s, p0/m, z12.s, #-154// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 31]55// CHECK-NEXT: lsl z6.s, p0/m, z12.s, #-156// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:57 58lsl z23.s, p0/m, z19.s, #3259// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 31]60// CHECK-NEXT: lsl z23.s, p0/m, z19.s, #3261// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:62 63lsl z3.d, z24.d, #-164// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 63]65// CHECK-NEXT: lsl z3.d, z24.d, #-166// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:67 68lsl z25.d, z16.d, #6469// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 63]70// CHECK-NEXT: lsl z25.d, z16.d, #6471// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:72 73lsl z3.d, p0/m, z24.d, #-174// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 63]75// CHECK-NEXT: lsl z3.d, p0/m, z24.d, #-176// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:77 78lsl z25.d, p0/m, z16.d, #6479// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 63]80// CHECK-NEXT: lsl z25.d, p0/m, z16.d, #6481// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:82 83 84// --------------------------------------------------------------------------//85// Source and Destination Registers must match86 87lsl z0.b, p0/m, z1.b, z2.b88// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register89// CHECK-NEXT: lsl z0.b, p0/m, z1.b, z2.b90// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:91 92lsl z0.b, p0/m, z1.b, #193// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register94// CHECK-NEXT: lsl z0.b, p0/m, z1.b, #195// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:96 97 98// --------------------------------------------------------------------------//99// Element sizes must match100 101lsl z0.b, z0.d, z1.d102// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width103// CHECK-NEXT: lsl z0.b, z0.d, z1.d104// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:105 106lsl z0.b, p0/m, z0.d, z1.d107// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width108// CHECK-NEXT: lsl z0.b, p0/m, z0.d, z1.d109// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:110 111lsl z0.b, p0/m, z0.b, z1.h112// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width113// CHECK-NEXT: lsl z0.b, p0/m, z0.b, z1.h114// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:115 116// --------------------------------------------------------------------------//117// Predicate not in restricted predicate range118 119lsl z0.b, p8/m, z0.b, z1.b120// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)121// CHECK-NEXT: lsl z0.b, p8/m, z0.b, z1.b122// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:123 124 125// --------------------------------------------------------------------------//126// Negative tests for instructions that are incompatible with movprfx127 128movprfx z31.d, p0/z, z6.d129lsl     z31.d, z31.d, #63130// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov131// CHECK-NEXT: lsl     z31.d, z31.d, #63132// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:133 134movprfx z31, z6135lsl     z31.d, z31.d, #63136// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov137// CHECK-NEXT: lsl     z31.d, z31.d, #63138// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:139 140movprfx z0.s, p0/z, z7.s141lsl     z0.s, z1.s, z2.d142// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov143// CHECK-NEXT: lsl     z0.s, z1.s, z2.d144// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:145 146movprfx z0, z7147lsl     z0.s, z1.s, z2.d148// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov149// CHECK-NEXT: lsl     z0.s, z1.s, z2.d150// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:151