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 --mattr=-sme - | 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 15zero {} 16// CHECK-INST: zero {} 17// CHECK-ENCODING: [0x00,0x00,0x08,0xc0] 18// CHECK-ERROR: instruction requires: sme 19// CHECK-UNKNOWN: c0080000 <unknown> 20 21zero {za0.d, za2.d, za4.d, za6.d} 22// CHECK-INST: zero {za0.h} 23// CHECK-ENCODING: [0x55,0x00,0x08,0xc0] 24// CHECK-ERROR: instruction requires: sme 25// CHECK-UNKNOWN: c0080055 <unknown> 26 27zero {za0.d, za1.d, za2.d, za4.d, za5.d, za7.d} 28// CHECK-INST: zero {za0.d, za1.d, za2.d, za4.d, za5.d, za7.d} 29// CHECK-ENCODING: [0xb7,0x00,0x08,0xc0] 30// CHECK-ERROR: instruction requires: sme 31// CHECK-UNKNOWN: c00800b7 <unknown> 32 33zero {za0.d, za1.d, za2.d, za3.d, za4.d, za5.d, za6.d, za7.d} 34// CHECK-INST: zero {za} 35// CHECK-ENCODING: [0xff,0x00,0x08,0xc0] 36// CHECK-ERROR: instruction requires: sme 37// CHECK-UNKNOWN: c00800ff <unknown> 38 39// --------------------------------------------------------------------------// 40// Aliases 41 42zero {za} 43// CHECK-INST: zero {za} 44// CHECK-ENCODING: [0xff,0x00,0x08,0xc0] 45// CHECK-ERROR: instruction requires: sme 46// CHECK-UNKNOWN: c00800ff <unknown> 47 48zero {za0.b} 49// CHECK-INST: zero {za} 50// CHECK-ENCODING: [0xff,0x00,0x08,0xc0] 51// CHECK-ERROR: instruction requires: sme 52// CHECK-UNKNOWN: c00800ff <unknown> 53 54zero {za0.h} 55// CHECK-INST: zero {za0.h} 56// CHECK-ENCODING: [0x55,0x00,0x08,0xc0] 57// CHECK-ERROR: instruction requires: sme 58// CHECK-UNKNOWN: c0080055 <unknown> 59 60zero {za1.h} 61// CHECK-INST: zero {za1.h} 62// CHECK-ENCODING: [0xaa,0x00,0x08,0xc0] 63// CHECK-ERROR: instruction requires: sme 64// CHECK-UNKNOWN: c00800aa <unknown> 65 66zero {za0.h,za1.h} 67// CHECK-INST: zero {za} 68// CHECK-ENCODING: [0xff,0x00,0x08,0xc0] 69// CHECK-ERROR: instruction requires: sme 70// CHECK-UNKNOWN: c00800ff <unknown> 71 72zero {za0.s} 73// CHECK-INST: zero {za0.s} 74// CHECK-ENCODING: [0x11,0x00,0x08,0xc0] 75// CHECK-ERROR: instruction requires: sme 76// CHECK-UNKNOWN: c0080011 <unknown> 77 78zero {za1.s} 79// CHECK-INST: zero {za1.s} 80// CHECK-ENCODING: [0x22,0x00,0x08,0xc0] 81// CHECK-ERROR: instruction requires: sme 82// CHECK-UNKNOWN: c0080022 <unknown> 83 84zero {za2.s} 85// CHECK-INST: zero {za2.s} 86// CHECK-ENCODING: [0x44,0x00,0x08,0xc0] 87// CHECK-ERROR: instruction requires: sme 88// CHECK-UNKNOWN: c0080044 <unknown> 89 90zero {za3.s} 91// CHECK-INST: zero {za3.s} 92// CHECK-ENCODING: [0x88,0x00,0x08,0xc0] 93// CHECK-ERROR: instruction requires: sme 94// CHECK-UNKNOWN: c0080088 <unknown> 95 96zero {za0.s,za1.s} 97// CHECK-INST: zero {za0.s,za1.s} 98// CHECK-ENCODING: [0x33,0x00,0x08,0xc0] 99// CHECK-ERROR: instruction requires: sme 100// CHECK-UNKNOWN: c0080033 <unknown> 101 102zero {za0.s,za2.s} 103// CHECK-INST: zero {za0.h} 104// CHECK-ENCODING: [0x55,0x00,0x08,0xc0] 105// CHECK-ERROR: instruction requires: sme 106// CHECK-UNKNOWN: c0080055 <unknown> 107 108zero {za0.s,za3.s} 109// CHECK-INST: zero {za0.s,za3.s} 110// CHECK-ENCODING: [0x99,0x00,0x08,0xc0] 111// CHECK-ERROR: instruction requires: sme 112// CHECK-UNKNOWN: c0080099 <unknown> 113 114zero {za1.s,za2.s} 115// CHECK-INST: zero {za1.s,za2.s} 116// CHECK-ENCODING: [0x66,0x00,0x08,0xc0] 117// CHECK-ERROR: instruction requires: sme 118// CHECK-UNKNOWN: c0080066 <unknown> 119 120zero {za1.s,za3.s} 121// CHECK-INST: zero {za1.h} 122// CHECK-ENCODING: [0xaa,0x00,0x08,0xc0] 123// CHECK-ERROR: instruction requires: sme 124// CHECK-UNKNOWN: c00800aa <unknown> 125 126zero {za2.s,za3.s} 127// CHECK-INST: zero {za2.s,za3.s} 128// CHECK-ENCODING: [0xcc,0x00,0x08,0xc0] 129// CHECK-ERROR: instruction requires: sme 130// CHECK-UNKNOWN: c00800cc <unknown> 131 132zero {za0.s,za1.s,za2.s} 133// CHECK-INST: zero {za0.s,za1.s,za2.s} 134// CHECK-ENCODING: [0x77,0x00,0x08,0xc0] 135// CHECK-ERROR: instruction requires: sme 136// CHECK-UNKNOWN: c0080077 <unknown> 137 138zero {za0.s,za1.s,za3.s} 139// CHECK-INST: zero {za0.s,za1.s,za3.s} 140// CHECK-ENCODING: [0xbb,0x00,0x08,0xc0] 141// CHECK-ERROR: instruction requires: sme 142// CHECK-UNKNOWN: c00800bb <unknown> 143 144zero {za0.s,za2.s,za3.s} 145// CHECK-INST: zero {za0.s,za2.s,za3.s} 146// CHECK-ENCODING: [0xdd,0x00,0x08,0xc0] 147// CHECK-ERROR: instruction requires: sme 148// CHECK-UNKNOWN: c00800dd <unknown> 149 150zero {za1.s,za2.s,za3.s} 151// CHECK-INST: zero {za1.s,za2.s,za3.s} 152// CHECK-ENCODING: [0xee,0x00,0x08,0xc0] 153// CHECK-ERROR: instruction requires: sme 154// CHECK-UNKNOWN: c00800ee <unknown> 155 156zero {za0.s,za1.s,za2.s,za3.s} 157// CHECK-INST: zero {za} 158// CHECK-ENCODING: [0xff,0x00,0x08,0xc0] 159// CHECK-ERROR: instruction requires: sme 160// CHECK-UNKNOWN: c00800ff <unknown> 161 162zero {za0.d,za1.d,za2.d,za3.d,za4.d,za5.d,za6.d,za7.d} 163// CHECK-INST: zero {za} 164// CHECK-ENCODING: [0xff,0x00,0x08,0xc0] 165// CHECK-ERROR: instruction requires: sme 166// CHECK-UNKNOWN: c00800ff <unknown> 167 168zero {za0.d,za2.d,za4.d,za6.d} 169// CHECK-INST: zero {za0.h} 170// CHECK-ENCODING: [0x55,0x00,0x08,0xc0] 171// CHECK-ERROR: instruction requires: sme 172// CHECK-UNKNOWN: c0080055 <unknown> 173 174zero {za1.d,za3.d,za5.d,za7.d} 175// CHECK-INST: zero {za1.h} 176// CHECK-ENCODING: [0xaa,0x00,0x08,0xc0] 177// CHECK-ERROR: instruction requires: sme 178// CHECK-UNKNOWN: c00800aa <unknown> 179 180zero {za0.d,za4.d} 181// CHECK-INST: zero {za0.s} 182// CHECK-ENCODING: [0x11,0x00,0x08,0xc0] 183// CHECK-ERROR: instruction requires: sme 184// CHECK-UNKNOWN: c0080011 <unknown> 185 186zero {za1.d,za5.d} 187// CHECK-INST: zero {za1.s} 188// CHECK-ENCODING: [0x22,0x00,0x08,0xc0] 189// CHECK-ERROR: instruction requires: sme 190// CHECK-UNKNOWN: c0080022 <unknown> 191 192zero {za2.d,za6.d} 193// CHECK-INST: zero {za2.s} 194// CHECK-ENCODING: [0x44,0x00,0x08,0xc0] 195// CHECK-ERROR: instruction requires: sme 196// CHECK-UNKNOWN: c0080044 <unknown> 197 198zero {za3.d,za7.d} 199// CHECK-INST: zero {za3.s} 200// CHECK-ENCODING: [0x88,0x00,0x08,0xc0] 201// CHECK-ERROR: instruction requires: sme 202// CHECK-UNKNOWN: c0080088 <unknown> 203 204zero {za0.d,za1.d,za4.d,za5.d} 205// CHECK-INST: zero {za0.s,za1.s} 206// CHECK-ENCODING: [0x33,0x00,0x08,0xc0] 207// CHECK-ERROR: instruction requires: sme 208// CHECK-UNKNOWN: c0080033 <unknown> 209 210zero {za0.d,za3.d,za4.d,za7.d} 211// CHECK-INST: zero {za0.s,za3.s} 212// CHECK-ENCODING: [0x99,0x00,0x08,0xc0] 213// CHECK-ERROR: instruction requires: sme 214// CHECK-UNKNOWN: c0080099 <unknown> 215 216zero {za1.d,za2.d,za5.d,za6.d} 217// CHECK-INST: zero {za1.s,za2.s} 218// CHECK-ENCODING: [0x66,0x00,0x08,0xc0] 219// CHECK-ERROR: instruction requires: sme 220// CHECK-UNKNOWN: c0080066 <unknown> 221 222zero {za2.d,za3.d,za6.d,za7.d} 223// CHECK-INST: zero {za2.s,za3.s} 224// CHECK-ENCODING: [0xcc,0x00,0x08,0xc0] 225// CHECK-ERROR: instruction requires: sme 226// CHECK-UNKNOWN: c00800cc <unknown> 227 228zero {za0.d,za1.d,za2.d,za4.d,za5.d,za6.d} 229// CHECK-INST: zero {za0.s,za1.s,za2.s} 230// CHECK-ENCODING: [0x77,0x00,0x08,0xc0] 231// CHECK-ERROR: instruction requires: sme 232// CHECK-UNKNOWN: c0080077 <unknown> 233 234zero {za0.d,za1.d,za3.d,za4.d,za5.d,za7.d} 235// CHECK-INST: zero {za0.s,za1.s,za3.s} 236// CHECK-ENCODING: [0xbb,0x00,0x08,0xc0] 237// CHECK-ERROR: instruction requires: sme 238// CHECK-UNKNOWN: c00800bb <unknown> 239 240zero {za0.d,za2.d,za3.d,za4.d,za6.d,za7.d} 241// CHECK-INST: zero {za0.s,za2.s,za3.s} 242// CHECK-ENCODING: [0xdd,0x00,0x08,0xc0] 243// CHECK-ERROR: instruction requires: sme 244// CHECK-UNKNOWN: c00800dd <unknown> 245 246zero {za1.d,za2.d,za3.d,za5.d,za6.d,za7.d} 247// CHECK-INST: zero {za1.s,za2.s,za3.s} 248// CHECK-ENCODING: [0xee,0x00,0x08,0xc0] 249// CHECK-ERROR: instruction requires: sme 250// CHECK-UNKNOWN: c00800ee <unknown> 251