1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sme,+sme-f64 2>&1 < %s| FileCheck %s 2 3// ------------------------------------------------------------------------- // 4// Invalid tile 5// 6// expected: .s => za0-za3, .d => za0-za7 7 8// non-widening 9 10fmops za4.s, p0/m, p0/m, z0.s, z0.s 11// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 12// CHECK-NEXT: fmops za4.s, p0/m, p0/m, z0.s, z0.s 13// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 14 15fmops za8.d, p0/m, p0/m, z0.d, z0.d 16// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 17// CHECK-NEXT: fmops za8.d, p0/m, p0/m, z0.d, z0.d 18// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 19 20// widening 21 22fmops za4.s, p0/m, p0/m, z0.h, z0.h 23// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 24// CHECK-NEXT: fmops za4.s, p0/m, p0/m, z0.h, z0.h 25// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 26 27// ------------------------------------------------------------------------- // 28// Invalid predicate (expected: p0-p7) 29 30// non-widening 31 32fmops za0.s, p8/m, p0/m, z0.s, z0.s 33// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix) 34// CHECK-NEXT: fmops za0.s, p8/m, p0/m, z0.s, z0.s 35// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 36 37fmops za0.s, p0/m, p8/m, z0.s, z0.s 38// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix) 39// CHECK-NEXT: fmops za0.s, p0/m, p8/m, z0.s, z0.s 40// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 41 42fmops za0.d, p8/m, p0/m, z0.d, z0.d 43// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix) 44// CHECK-NEXT: fmops za0.d, p8/m, p0/m, z0.d, z0.d 45// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 46 47fmops za0.d, p0/m, p8/m, z0.d, z0.d 48// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix) 49// CHECK-NEXT: fmops za0.d, p0/m, p8/m, z0.d, z0.d 50// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 51 52// widening 53 54fmops za0.s, p8/m, p0/m, z0.h, z0.h 55// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix) 56// CHECK-NEXT: fmops za0.s, p8/m, p0/m, z0.h, z0.h 57// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 58 59fmops za0.s, p0/m, p8/m, z0.h, z0.h 60// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix) 61// CHECK-NEXT: fmops za0.s, p0/m, p8/m, z0.h, z0.h 62// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 63 64// ------------------------------------------------------------------------- // 65// Invalid predicate qualifier (expected: /m) 66 67// non-widening 68 69fmops za0.s, p0/z, p0/m, z0.s, z0.s 70// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 71// CHECK-NEXT: fmops za0.s, p0/z, p0/m, z0.s, z0.s 72// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 73 74fmops za0.s, p0/m, p0/z, z0.s, z0.s 75// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 76// CHECK-NEXT: fmops za0.s, p0/m, p0/z, z0.s, z0.s 77// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 78 79fmops za0.d, p0/z, p0/m, z0.d, z0.d 80// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 81// CHECK-NEXT: fmops za0.d, p0/z, p0/m, z0.d, z0.d 82// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 83 84fmops za0.d, p0/m, p0/z, z0.d, z0.d 85// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 86// CHECK-NEXT: fmops za0.d, p0/m, p0/z, z0.d, z0.d 87// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 88 89// widening 90 91fmops za0.s, p0/z, p0/m, z0.h, z0.h 92// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 93// CHECK-NEXT: fmops za0.s, p0/z, p0/m, z0.h, z0.h 94// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 95 96fmops za0.s, p0/m, p0/z, z0.h, z0.h 97// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 98// CHECK-NEXT: fmops za0.s, p0/m, p0/z, z0.h, z0.h 99// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 100 101// ------------------------------------------------------------------------- // 102// Invalid ZPR type suffix 103// 104// expected: .s => .s (non-widening), .h (widening), .d => .d 105 106// non-widening 107 108fmops za0.s, p0/m, p0/m, z0.b, z0.s 109// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width 110// CHECK-NEXT: fmops za0.s, p0/m, p0/m, z0.b, z0.s 111// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 112 113fmops za0.s, p0/m, p0/m, z0.s, z0.h 114// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width 115// CHECK-NEXT: fmops za0.s, p0/m, p0/m, z0.s, z0.h 116// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 117 118fmops za0.d, p0/m, p0/m, z0.b, z0.d 119// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width 120// CHECK-NEXT: fmops za0.d, p0/m, p0/m, z0.b, z0.d 121// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 122 123fmops za0.d, p0/m, p0/m, z0.d, z0.h 124// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width 125// CHECK-NEXT: fmops za0.d, p0/m, p0/m, z0.d, z0.h 126// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 127 128// widening 129 130fmops za0.s, p0/m, p0/m, z0.b, z0.h 131// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width 132// CHECK-NEXT: fmops za0.s, p0/m, p0/m, z0.b, z0.h 133// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 134 135fmops za0.s, p0/m, p0/m, z0.h, z0.d 136// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width 137// CHECK-NEXT: fmops za0.s, p0/m, p0/m, z0.h, z0.d 138// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 139