1// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme < %s \ 2// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST 3// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \ 4// RUN: | FileCheck %s --check-prefix=CHECK-ERROR 5// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sme < %s \ 6// RUN: | llvm-objdump -d --mattr=+sme - | FileCheck %s --check-prefix=CHECK-INST 7// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sme < %s \ 8// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN 9// Disassemble encoding and check the re-encoding (-show-encoding) matches. 10// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme < %s \ 11// RUN: | sed '/.text/d' | sed 's/.*encoding: //g' \ 12// RUN: | llvm-mc -triple=aarch64 -mattr=+sme -disassemble -show-encoding \ 13// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST 14 15// --------------------------------------------------------------------------// 16// Widening 17 18fmops za0.s, p0/m, p0/m, z0.h, z0.h 19// CHECK-INST: fmops za0.s, p0/m, p0/m, z0.h, z0.h 20// CHECK-ENCODING: [0x10,0x00,0xa0,0x81] 21// CHECK-ERROR: instruction requires: sme 22// CHECK-UNKNOWN: 10 00 a0 81 <unknown> 23 24fmops za1.s, p5/m, p2/m, z10.h, z21.h 25// CHECK-INST: fmops za1.s, p5/m, p2/m, z10.h, z21.h 26// CHECK-ENCODING: [0x51,0x55,0xb5,0x81] 27// CHECK-ERROR: instruction requires: sme 28// CHECK-UNKNOWN: 51 55 b5 81 <unknown> 29 30fmops za3.s, p3/m, p7/m, z13.h, z8.h 31// CHECK-INST: fmops za3.s, p3/m, p7/m, z13.h, z8.h 32// CHECK-ENCODING: [0xb3,0xed,0xa8,0x81] 33// CHECK-ERROR: instruction requires: sme 34// CHECK-UNKNOWN: b3 ed a8 81 <unknown> 35 36fmops za3.s, p7/m, p7/m, z31.h, z31.h 37// CHECK-INST: fmops za3.s, p7/m, p7/m, z31.h, z31.h 38// CHECK-ENCODING: [0xf3,0xff,0xbf,0x81] 39// CHECK-ERROR: instruction requires: sme 40// CHECK-UNKNOWN: f3 ff bf 81 <unknown> 41 42fmops za1.s, p3/m, p0/m, z17.h, z16.h 43// CHECK-INST: fmops za1.s, p3/m, p0/m, z17.h, z16.h 44// CHECK-ENCODING: [0x31,0x0e,0xb0,0x81] 45// CHECK-ERROR: instruction requires: sme 46// CHECK-UNKNOWN: 31 0e b0 81 <unknown> 47 48fmops za1.s, p1/m, p4/m, z1.h, z30.h 49// CHECK-INST: fmops za1.s, p1/m, p4/m, z1.h, z30.h 50// CHECK-ENCODING: [0x31,0x84,0xbe,0x81] 51// CHECK-ERROR: instruction requires: sme 52// CHECK-UNKNOWN: 31 84 be 81 <unknown> 53 54fmops za0.s, p5/m, p2/m, z19.h, z20.h 55// CHECK-INST: fmops za0.s, p5/m, p2/m, z19.h, z20.h 56// CHECK-ENCODING: [0x70,0x56,0xb4,0x81] 57// CHECK-ERROR: instruction requires: sme 58// CHECK-UNKNOWN: 70 56 b4 81 <unknown> 59 60fmops za0.s, p6/m, p0/m, z12.h, z2.h 61// CHECK-INST: fmops za0.s, p6/m, p0/m, z12.h, z2.h 62// CHECK-ENCODING: [0x90,0x19,0xa2,0x81] 63// CHECK-ERROR: instruction requires: sme 64// CHECK-UNKNOWN: 90 19 a2 81 <unknown> 65 66fmops za1.s, p2/m, p6/m, z1.h, z26.h 67// CHECK-INST: fmops za1.s, p2/m, p6/m, z1.h, z26.h 68// CHECK-ENCODING: [0x31,0xc8,0xba,0x81] 69// CHECK-ERROR: instruction requires: sme 70// CHECK-UNKNOWN: 31 c8 ba 81 <unknown> 71 72fmops za1.s, p2/m, p0/m, z22.h, z30.h 73// CHECK-INST: fmops za1.s, p2/m, p0/m, z22.h, z30.h 74// CHECK-ENCODING: [0xd1,0x0a,0xbe,0x81] 75// CHECK-ERROR: instruction requires: sme 76// CHECK-UNKNOWN: d1 0a be 81 <unknown> 77 78fmops za2.s, p5/m, p7/m, z9.h, z1.h 79// CHECK-INST: fmops za2.s, p5/m, p7/m, z9.h, z1.h 80// CHECK-ENCODING: [0x32,0xf5,0xa1,0x81] 81// CHECK-ERROR: instruction requires: sme 82// CHECK-UNKNOWN: 32 f5 a1 81 <unknown> 83 84fmops za3.s, p2/m, p5/m, z12.h, z11.h 85// CHECK-INST: fmops za3.s, p2/m, p5/m, z12.h, z11.h 86// CHECK-ENCODING: [0x93,0xa9,0xab,0x81] 87// CHECK-ERROR: instruction requires: sme 88// CHECK-UNKNOWN: 93 a9 ab 81 <unknown> 89 90// --------------------------------------------------------------------------// 91// Non-widening (single-precision) 92 93fmops za0.s, p0/m, p0/m, z0.s, z0.s 94// CHECK-INST: fmops za0.s, p0/m, p0/m, z0.s, z0.s 95// CHECK-ENCODING: [0x10,0x00,0x80,0x80] 96// CHECK-ERROR: instruction requires: sme 97// CHECK-UNKNOWN: 10 00 80 80 <unknown> 98 99fmops za1.s, p5/m, p2/m, z10.s, z21.s 100// CHECK-INST: fmops za1.s, p5/m, p2/m, z10.s, z21.s 101// CHECK-ENCODING: [0x51,0x55,0x95,0x80] 102// CHECK-ERROR: instruction requires: sme 103// CHECK-UNKNOWN: 51 55 95 80 <unknown> 104 105fmops za3.s, p3/m, p7/m, z13.s, z8.s 106// CHECK-INST: fmops za3.s, p3/m, p7/m, z13.s, z8.s 107// CHECK-ENCODING: [0xb3,0xed,0x88,0x80] 108// CHECK-ERROR: instruction requires: sme 109// CHECK-UNKNOWN: b3 ed 88 80 <unknown> 110 111fmops za3.s, p7/m, p7/m, z31.s, z31.s 112// CHECK-INST: fmops za3.s, p7/m, p7/m, z31.s, z31.s 113// CHECK-ENCODING: [0xf3,0xff,0x9f,0x80] 114// CHECK-ERROR: instruction requires: sme 115// CHECK-UNKNOWN: f3 ff 9f 80 <unknown> 116 117fmops za1.s, p3/m, p0/m, z17.s, z16.s 118// CHECK-INST: fmops za1.s, p3/m, p0/m, z17.s, z16.s 119// CHECK-ENCODING: [0x31,0x0e,0x90,0x80] 120// CHECK-ERROR: instruction requires: sme 121// CHECK-UNKNOWN: 31 0e 90 80 <unknown> 122 123fmops za1.s, p1/m, p4/m, z1.s, z30.s 124// CHECK-INST: fmops za1.s, p1/m, p4/m, z1.s, z30.s 125// CHECK-ENCODING: [0x31,0x84,0x9e,0x80] 126// CHECK-ERROR: instruction requires: sme 127// CHECK-UNKNOWN: 31 84 9e 80 <unknown> 128 129fmops za0.s, p5/m, p2/m, z19.s, z20.s 130// CHECK-INST: fmops za0.s, p5/m, p2/m, z19.s, z20.s 131// CHECK-ENCODING: [0x70,0x56,0x94,0x80] 132// CHECK-ERROR: instruction requires: sme 133// CHECK-UNKNOWN: 70 56 94 80 <unknown> 134 135fmops za0.s, p6/m, p0/m, z12.s, z2.s 136// CHECK-INST: fmops za0.s, p6/m, p0/m, z12.s, z2.s 137// CHECK-ENCODING: [0x90,0x19,0x82,0x80] 138// CHECK-ERROR: instruction requires: sme 139// CHECK-UNKNOWN: 90 19 82 80 <unknown> 140 141fmops za1.s, p2/m, p6/m, z1.s, z26.s 142// CHECK-INST: fmops za1.s, p2/m, p6/m, z1.s, z26.s 143// CHECK-ENCODING: [0x31,0xc8,0x9a,0x80] 144// CHECK-ERROR: instruction requires: sme 145// CHECK-UNKNOWN: 31 c8 9a 80 <unknown> 146 147fmops za1.s, p2/m, p0/m, z22.s, z30.s 148// CHECK-INST: fmops za1.s, p2/m, p0/m, z22.s, z30.s 149// CHECK-ENCODING: [0xd1,0x0a,0x9e,0x80] 150// CHECK-ERROR: instruction requires: sme 151// CHECK-UNKNOWN: d1 0a 9e 80 <unknown> 152 153fmops za2.s, p5/m, p7/m, z9.s, z1.s 154// CHECK-INST: fmops za2.s, p5/m, p7/m, z9.s, z1.s 155// CHECK-ENCODING: [0x32,0xf5,0x81,0x80] 156// CHECK-ERROR: instruction requires: sme 157// CHECK-UNKNOWN: 32 f5 81 80 <unknown> 158 159fmops za3.s, p2/m, p5/m, z12.s, z11.s 160// CHECK-INST: fmops za3.s, p2/m, p5/m, z12.s, z11.s 161// CHECK-ENCODING: [0x93,0xa9,0x8b,0x80] 162// CHECK-ERROR: instruction requires: sme 163// CHECK-UNKNOWN: 93 a9 8b 80 <unknown> 164