brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · 51b39af Raw
153 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve  2>&1 < %s| FileCheck %s2 3asr z30.b, z10.b, #04// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 8]5// CHECK-NEXT: asr z30.b, z10.b, #06// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:7 8asr z18.b, z27.b, #99// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 8]10// CHECK-NEXT: asr z18.b, z27.b, #911// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:12 13asr 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: asr z18.b, p0/m, z28.b, #016// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:17 18asr 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: asr z1.b, p0/m, z9.b, #921// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:22 23asr z26.h, z4.h, #024// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 16]25// CHECK-NEXT: asr z26.h, z4.h, #026// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:27 28asr z25.h, z10.h, #1729// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 16]30// CHECK-NEXT: asr z25.h, z10.h, #1731// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:32 33asr 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: asr z21.h, p0/m, z2.h, #036// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:37 38asr 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: asr z14.h, p0/m, z30.h, #1741// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:42 43asr z17.s, z0.s, #044// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 32]45// CHECK-NEXT: asr z17.s, z0.s, #046// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:47 48asr z0.s, z15.s, #3349// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 32]50// CHECK-NEXT: asr z0.s, z15.s, #3351// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:52 53asr 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: asr z6.s, p0/m, z12.s, #056// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:57 58asr 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: asr z23.s, p0/m, z19.s, #3361// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:62 63asr z4.d, z13.d, #064// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 64]65// CHECK-NEXT: asr z4.d, z13.d, #066// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:67 68asr z26.d, z26.d, #6569// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 64]70// CHECK-NEXT: asr z26.d, z26.d, #6571// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:72 73asr 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: asr z3.d, p0/m, z24.d, #076// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:77 78asr 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: asr z25.d, p0/m, z16.d, #6581// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:82 83 84// --------------------------------------------------------------------------//85// Source and Destination Registers must match86 87asr z0.b, p0/m, z1.b, z2.b88// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register89// CHECK-NEXT: asr z0.b, p0/m, z1.b, z2.b90// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:91 92asr z0.b, p0/m, z1.b, #193// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register94// CHECK-NEXT: asr z0.b, p0/m, z1.b, #195// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:96 97 98// --------------------------------------------------------------------------//99// Element sizes must match100 101asr z0.b, z0.d, z1.d102// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width103// CHECK-NEXT: asr z0.b, z0.d, z1.d104// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:105 106asr z0.b, p0/m, z0.d, z1.d107// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width108// CHECK-NEXT: asr z0.b, p0/m, z0.d, z1.d109// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:110 111asr z0.b, p0/m, z0.b, z1.h112// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width113// CHECK-NEXT: asr z0.b, p0/m, z0.b, z1.h114// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:115 116 117// --------------------------------------------------------------------------//118// Predicate not in restricted predicate range119 120asr 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: asr z0.b, p8/m, z0.b, z1.b123// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:124 125 126 127// --------------------------------------------------------------------------//128// Negative tests for instructions that are incompatible with movprfx129 130movprfx z31.d, p0/z, z6.d131asr     z31.d, z31.d, #64132// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov133// CHECK-NEXT: asr     z31.d, z31.d, #64134// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:135 136movprfx z31, z6137asr     z31.d, z31.d, #64138// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov139// CHECK-NEXT: asr     z31.d, z31.d, #64140// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:141 142movprfx z0.s, p0/z, z7.s143asr     z0.s, z1.s, z2.d144// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov145// CHECK-NEXT: asr     z0.s, z1.s, z2.d146// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:147 148movprfx z0, z7149asr     z0.s, z1.s, z2.d150// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov151// CHECK-NEXT: asr     z0.s, z1.s, z2.d152// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:153