111 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s2 3// Register z32 does not exist.4uqadd z22.h, z10.h, z32.h5// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand6// CHECK-NEXT: uqadd z22.h, z10.h, z32.h7// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:8 9// Invalid element kind.10uqadd z20.h, z2.h, z31.x11// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid vector kind qualifier12// CHECK-NEXT: uqadd z20.h, z2.h, z31.x13// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:14 15// Element size specifiers should match.16uqadd z27.h, z11.h, z27.b17// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width18// CHECK-NEXT: uqadd z27.h, z11.h, z27.b19// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:20 21 22// --------------------------------------------------------------------------//23// Invalid immediates24 25uqadd z0.b, z0.b, #0, lsl #8 // #0, lsl #8 is not valid for .b26// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] with a shift amount of 027// CHECK-NEXT: uqadd z0.b, z0.b, #0, lsl #828// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:29 30uqadd z0.b, z0.b, #-131// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] with a shift amount of 032// CHECK-NEXT: uqadd z0.b, z0.b, #-133// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:34 35uqadd z0.b, z0.b, #1, lsl #836// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] with a shift amount of 037// CHECK-NEXT: uqadd z0.b, z0.b, #1, lsl #838// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:39 40uqadd z0.b, z0.b, #25641// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] with a shift amount of 042// CHECK-NEXT: uqadd z0.b, z0.b, #25643// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:44 45uqadd z0.h, z0.h, #-146// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]47// CHECK-NEXT: uqadd z0.h, z0.h, #-148// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:49 50uqadd z0.h, z0.h, #256, lsl #851// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]52// CHECK-NEXT: uqadd z0.h, z0.h, #256, lsl #853// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:54 55uqadd z0.h, z0.h, #6553656// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]57// CHECK-NEXT: uqadd z0.h, z0.h, #6553658// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:59 60uqadd z0.s, z0.s, #-161// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]62// CHECK-NEXT: uqadd z0.s, z0.s, #-163// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:64 65uqadd z0.s, z0.s, #256, lsl #866// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]67// CHECK-NEXT: uqadd z0.s, z0.s, #256, lsl #868// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:69 70uqadd z0.s, z0.s, #6553671// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]72// CHECK-NEXT: uqadd z0.s, z0.s, #6553673// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:74 75uqadd z0.d, z0.d, #-176// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]77// CHECK-NEXT: uqadd z0.d, z0.d, #-178// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:79 80uqadd z0.d, z0.d, #256, lsl #881// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]82// CHECK-NEXT: uqadd z0.d, z0.d, #256, lsl #883// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:84 85uqadd z0.d, z0.d, #6553686// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 255] or a multiple of 256 in range [256, 65280]87// CHECK-NEXT: uqadd z0.d, z0.d, #6553688// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:89 90 91// --------------------------------------------------------------------------//92// Negative tests for instructions that are incompatible with movprfx93 94movprfx z31.d, p0/z, z6.d95uqadd z31.d, z31.d, #6528096// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a predicated movprfx, suggest using unpredicated movprfx97// CHECK-NEXT: uqadd z31.d, z31.d, #6528098// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:99 100movprfx z0.d, p0/z, z7.d101uqadd z0.d, z0.d, z0.d102// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov103// CHECK-NEXT: uqadd z0.d, z0.d, z0.d104// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:105 106movprfx z0, z7107uqadd z0.d, z0.d, z0.d108// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov109// CHECK-NEXT: uqadd z0.d, z0.d, z0.d110// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:111