brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · d31e33f Raw
152 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve  2>&1 < %s| FileCheck %s2 3lsr z30.b, z10.b, #04// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 8]5// CHECK-NEXT: lsr z30.b, z10.b, #06// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:7 8lsr z18.b, z27.b, #99// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 8]10// CHECK-NEXT: lsr z18.b, z27.b, #911// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:12 13lsr z18.b, p0/m, z28.b, #014// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 8]15// CHECK-NEXT: lsr z18.b, p0/m, z28.b, #016// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:17 18lsr z1.b, p0/m, z9.b, #919// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 8]20// CHECK-NEXT: lsr z1.b, p0/m, z9.b, #921// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:22 23lsr z26.h, z4.h, #024// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 16]25// CHECK-NEXT: lsr z26.h, z4.h, #026// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:27 28lsr z25.h, z10.h, #1729// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 16]30// CHECK-NEXT: lsr z25.h, z10.h, #1731// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:32 33lsr z21.h, p0/m, z2.h, #034// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 16]35// CHECK-NEXT: lsr z21.h, p0/m, z2.h, #036// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:37 38lsr z14.h, p0/m, z30.h, #1739// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 16]40// CHECK-NEXT: lsr z14.h, p0/m, z30.h, #1741// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:42 43lsr z17.s, z0.s, #044// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 32]45// CHECK-NEXT: lsr z17.s, z0.s, #046// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:47 48lsr z0.s, z15.s, #3349// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 32]50// CHECK-NEXT: lsr z0.s, z15.s, #3351// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:52 53lsr z6.s, p0/m, z12.s, #054// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 32]55// CHECK-NEXT: lsr z6.s, p0/m, z12.s, #056// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:57 58lsr z23.s, p0/m, z19.s, #3359// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 32]60// CHECK-NEXT: lsr z23.s, p0/m, z19.s, #3361// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:62 63lsr z4.d, z13.d, #064// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 64]65// CHECK-NEXT: lsr z4.d, z13.d, #066// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:67 68lsr z26.d, z26.d, #6569// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 64]70// CHECK-NEXT: lsr z26.d, z26.d, #6571// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:72 73lsr z3.d, p0/m, z24.d, #074// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 64]75// CHECK-NEXT: lsr z3.d, p0/m, z24.d, #076// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:77 78lsr z25.d, p0/m, z16.d, #6579// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 64]80// CHECK-NEXT: lsr z25.d, p0/m, z16.d, #6581// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:82 83 84// --------------------------------------------------------------------------//85// Source and Destination Registers must match86 87lsr z0.b, p0/m, z1.b, z2.b88// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register89// CHECK-NEXT: lsr z0.b, p0/m, z1.b, z2.b90// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:91 92lsr z0.b, p0/m, z1.b, #193// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register94// CHECK-NEXT: lsr z0.b, p0/m, z1.b, #195// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:96 97 98// --------------------------------------------------------------------------//99// Element sizes must match100 101lsr z0.b, z0.d, z1.d102// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width103// CHECK-NEXT: lsr z0.b, z0.d, z1.d104// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:105 106lsr z0.b, p0/m, z0.d, z1.d107// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width108// CHECK-NEXT: lsr z0.b, p0/m, z0.d, z1.d109// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:110 111lsr z0.b, p0/m, z0.b, z1.h112// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width113// CHECK-NEXT: lsr z0.b, p0/m, z0.b, z1.h114// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:115 116 117// --------------------------------------------------------------------------//118// Predicate not in restricted predicate range119 120lsr z0.b, p8/m, z0.b, z1.b121// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)122// CHECK-NEXT: lsr z0.b, p8/m, z0.b, z1.b123// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:124 125 126// --------------------------------------------------------------------------//127// Negative tests for instructions that are incompatible with movprfx128 129movprfx z31.d, p0/z, z6.d130lsr     z31.d, z31.d, #64131// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov132// CHECK-NEXT: lsr     z31.d, z31.d, #64133// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:134 135movprfx z31, z6136lsr     z31.d, z31.d, #64137// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov138// CHECK-NEXT: lsr     z31.d, z31.d, #64139// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:140 141movprfx z0.s, p0/z, z7.s142lsr     z0.s, z1.s, z2.d143// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov144// CHECK-NEXT: lsr     z0.s, z1.s, z2.d145// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:146 147movprfx z0, z7148lsr     z0.s, z1.s, z2.d149// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov150// CHECK-NEXT: lsr     z0.s, z1.s, z2.d151// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:152