99 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2 2>&1 < %s| FileCheck %s2 3sqshl z0.b, p0/m, z0.b, #-14// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7]5// CHECK-NEXT: sqshl z0.b, p0/m, z0.b, #-16// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:7 8sqshl z0.b, p0/m, z0.b, #89// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7]10// CHECK-NEXT: sqshl z0.b, p0/m, z0.b, #811// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:12 13sqshl z0.h, p0/m, z0.h, #-114// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 15]15// CHECK-NEXT: sqshl z0.h, p0/m, z0.h, #-116// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:17 18sqshl z0.h, p0/m, z0.h, #1619// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 15]20// CHECK-NEXT: sqshl z0.h, p0/m, z0.h, #1621// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:22 23sqshl z0.s, p0/m, z0.s, #-124// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 31]25// CHECK-NEXT: sqshl z0.s, p0/m, z0.s, #-126// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:27 28sqshl z0.s, p0/m, z0.s, #3229// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 31]30// CHECK-NEXT: sqshl z0.s, p0/m, z0.s, #3231// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:32 33sqshl z0.d, p0/m, z0.d, #-134// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 63]35// CHECK-NEXT: sqshl z0.d, p0/m, z0.d, #-136// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:37 38sqshl z0.d, p0/m, z0.d, #6439// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 63]40// CHECK-NEXT: sqshl z0.d, p0/m, z0.d, #6441// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:42 43 44// --------------------------------------------------------------------------//45// Source and Destination Registers must match46 47sqshl z0.b, p0/m, z1.b, z2.b48// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register49// CHECK-NEXT: sqshl z0.b, p0/m, z1.b, z2.b50// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:51 52sqshl z0.b, p0/m, z1.b, #053// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register54// CHECK-NEXT: sqshl z0.b, p0/m, z1.b, #055// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:56 57 58// --------------------------------------------------------------------------//59// Element sizes must match60 61sqshl z0.b, p0/m, z0.d, z1.d62// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width63// CHECK-NEXT: sqshl z0.b, p0/m, z0.d, z1.d64// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:65 66sqshl z0.b, p0/m, z0.b, z1.h67// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width68// CHECK-NEXT: sqshl z0.b, p0/m, z0.b, z1.h69// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:70 71sqshl z0.b, p0/m, z0.d, #072// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width73// CHECK-NEXT: sqshl z0.b, p0/m, z0.d, #074// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:75 76sqshl z0.d, p0/m, z0.b, #077// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width78// CHECK-NEXT: sqshl z0.d, p0/m, z0.b, #079// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:80 81 82// --------------------------------------------------------------------------//83// Invalid predicate84 85sqshl z0.b, p0/z, z0.b, z1.b86// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction87// CHECK-NEXT: sqshl z0.b, p0/z, z0.b, z1.b88// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:89 90sqshl z0.b, p8/m, z0.b, z1.b91// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)92// CHECK-NEXT: sqshl z0.b, p8/m, z0.b, z1.b93// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:94 95sqshl z0.b, p8/m, z0.b, #096// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)97// CHECK-NEXT: sqshl z0.b, p8/m, z0.b, #098// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:99