219 lines · plain
1// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \2// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST3// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme < %s \4// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST5// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \6// RUN: | FileCheck %s --check-prefix=CHECK-ERROR7// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \8// RUN: | llvm-objdump --no-print-imm-hex -d --mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST9// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \10// RUN: | llvm-objdump --no-print-imm-hex -d --mattr=-sve - | FileCheck %s --check-prefix=CHECK-UNKNOWN11 12lsr z0.b, z0.b, #113// CHECK-INST: lsr z0.b, z0.b, #114// CHECK-ENCODING: [0x00,0x94,0x2f,0x04]15// CHECK-ERROR: instruction requires: sve or sme16// CHECK-UNKNOWN: 042f9400 <unknown>17 18lsr z31.b, z31.b, #819// CHECK-INST: lsr z31.b, z31.b, #820// CHECK-ENCODING: [0xff,0x97,0x28,0x04]21// CHECK-ERROR: instruction requires: sve or sme22// CHECK-UNKNOWN: 042897ff <unknown>23 24lsr z0.h, z0.h, #125// CHECK-INST: lsr z0.h, z0.h, #126// CHECK-ENCODING: [0x00,0x94,0x3f,0x04]27// CHECK-ERROR: instruction requires: sve or sme28// CHECK-UNKNOWN: 043f9400 <unknown>29 30lsr z31.h, z31.h, #1631// CHECK-INST: lsr z31.h, z31.h, #1632// CHECK-ENCODING: [0xff,0x97,0x30,0x04]33// CHECK-ERROR: instruction requires: sve or sme34// CHECK-UNKNOWN: 043097ff <unknown>35 36lsr z0.s, z0.s, #137// CHECK-INST: lsr z0.s, z0.s, #138// CHECK-ENCODING: [0x00,0x94,0x7f,0x04]39// CHECK-ERROR: instruction requires: sve or sme40// CHECK-UNKNOWN: 047f9400 <unknown>41 42lsr z31.s, z31.s, #3243// CHECK-INST: lsr z31.s, z31.s, #3244// CHECK-ENCODING: [0xff,0x97,0x60,0x04]45// CHECK-ERROR: instruction requires: sve or sme46// CHECK-UNKNOWN: 046097ff <unknown>47 48lsr z0.d, z0.d, #149// CHECK-INST: lsr z0.d, z0.d, #150// CHECK-ENCODING: [0x00,0x94,0xff,0x04]51// CHECK-ERROR: instruction requires: sve or sme52// CHECK-UNKNOWN: 04ff9400 <unknown>53 54lsr z31.d, z31.d, #6455// CHECK-INST: lsr z31.d, z31.d, #6456// CHECK-ENCODING: [0xff,0x97,0xa0,0x04]57// CHECK-ERROR: instruction requires: sve or sme58// CHECK-UNKNOWN: 04a097ff <unknown>59 60lsr z0.b, p0/m, z0.b, #161// CHECK-INST: lsr z0.b, p0/m, z0.b, #162// CHECK-ENCODING: [0xe0,0x81,0x01,0x04]63// CHECK-ERROR: instruction requires: sve or sme64// CHECK-UNKNOWN: 040181e0 <unknown>65 66lsr z31.b, p0/m, z31.b, #867// CHECK-INST: lsr z31.b, p0/m, z31.b, #868// CHECK-ENCODING: [0x1f,0x81,0x01,0x04]69// CHECK-ERROR: instruction requires: sve or sme70// CHECK-UNKNOWN: 0401811f <unknown>71 72lsr z0.h, p0/m, z0.h, #173// CHECK-INST: lsr z0.h, p0/m, z0.h, #174// CHECK-ENCODING: [0xe0,0x83,0x01,0x04]75// CHECK-ERROR: instruction requires: sve or sme76// CHECK-UNKNOWN: 040183e0 <unknown>77 78lsr z31.h, p0/m, z31.h, #1679// CHECK-INST: lsr z31.h, p0/m, z31.h, #1680// CHECK-ENCODING: [0x1f,0x82,0x01,0x04]81// CHECK-ERROR: instruction requires: sve or sme82// CHECK-UNKNOWN: 0401821f <unknown>83 84lsr z0.s, p0/m, z0.s, #185// CHECK-INST: lsr z0.s, p0/m, z0.s, #186// CHECK-ENCODING: [0xe0,0x83,0x41,0x04]87// CHECK-ERROR: instruction requires: sve or sme88// CHECK-UNKNOWN: 044183e0 <unknown>89 90lsr z31.s, p0/m, z31.s, #3291// CHECK-INST: lsr z31.s, p0/m, z31.s, #3292// CHECK-ENCODING: [0x1f,0x80,0x41,0x04]93// CHECK-ERROR: instruction requires: sve or sme94// CHECK-UNKNOWN: 0441801f <unknown>95 96lsr z0.d, p0/m, z0.d, #197// CHECK-INST: lsr z0.d, p0/m, z0.d, #198// CHECK-ENCODING: [0xe0,0x83,0xc1,0x04]99// CHECK-ERROR: instruction requires: sve or sme100// CHECK-UNKNOWN: 04c183e0 <unknown>101 102lsr z31.d, p0/m, z31.d, #64103// CHECK-INST: lsr z31.d, p0/m, z31.d, #64104// CHECK-ENCODING: [0x1f,0x80,0x81,0x04]105// CHECK-ERROR: instruction requires: sve or sme106// CHECK-UNKNOWN: 0481801f <unknown>107 108lsr z0.b, p0/m, z0.b, z0.b109// CHECK-INST: lsr z0.b, p0/m, z0.b, z0.b110// CHECK-ENCODING: [0x00,0x80,0x11,0x04]111// CHECK-ERROR: instruction requires: sve or sme112// CHECK-UNKNOWN: 04118000 <unknown>113 114lsr z0.h, p0/m, z0.h, z0.h115// CHECK-INST: lsr z0.h, p0/m, z0.h, z0.h116// CHECK-ENCODING: [0x00,0x80,0x51,0x04]117// CHECK-ERROR: instruction requires: sve or sme118// CHECK-UNKNOWN: 04518000 <unknown>119 120lsr z0.s, p0/m, z0.s, z0.s121// CHECK-INST: lsr z0.s, p0/m, z0.s, z0.s122// CHECK-ENCODING: [0x00,0x80,0x91,0x04]123// CHECK-ERROR: instruction requires: sve or sme124// CHECK-UNKNOWN: 04918000 <unknown>125 126lsr z0.d, p0/m, z0.d, z0.d127// CHECK-INST: lsr z0.d, p0/m, z0.d, z0.d128// CHECK-ENCODING: [0x00,0x80,0xd1,0x04]129// CHECK-ERROR: instruction requires: sve or sme130// CHECK-UNKNOWN: 04d18000 <unknown>131 132lsr z0.b, p0/m, z0.b, z1.d133// CHECK-INST: lsr z0.b, p0/m, z0.b, z1.d134// CHECK-ENCODING: [0x20,0x80,0x19,0x04]135// CHECK-ERROR: instruction requires: sve or sme136// CHECK-UNKNOWN: 04198020 <unknown>137 138lsr z0.h, p0/m, z0.h, z1.d139// CHECK-INST: lsr z0.h, p0/m, z0.h, z1.d140// CHECK-ENCODING: [0x20,0x80,0x59,0x04]141// CHECK-ERROR: instruction requires: sve or sme142// CHECK-UNKNOWN: 04598020 <unknown>143 144lsr z0.s, p0/m, z0.s, z1.d145// CHECK-INST: lsr z0.s, p0/m, z0.s, z1.d146// CHECK-ENCODING: [0x20,0x80,0x99,0x04]147// CHECK-ERROR: instruction requires: sve or sme148// CHECK-UNKNOWN: 04998020 <unknown>149 150lsr z0.b, z1.b, z2.d151// CHECK-INST: lsr z0.b, z1.b, z2.d152// CHECK-ENCODING: [0x20,0x84,0x22,0x04]153// CHECK-ERROR: instruction requires: sve or sme154// CHECK-UNKNOWN: 04228420 <unknown>155 156lsr z0.h, z1.h, z2.d157// CHECK-INST: lsr z0.h, z1.h, z2.d158// CHECK-ENCODING: [0x20,0x84,0x62,0x04]159// CHECK-ERROR: instruction requires: sve or sme160// CHECK-UNKNOWN: 04628420 <unknown>161 162lsr z0.s, z1.s, z2.d163// CHECK-INST: lsr z0.s, z1.s, z2.d164// CHECK-ENCODING: [0x20,0x84,0xa2,0x04]165// CHECK-ERROR: instruction requires: sve or sme166// CHECK-UNKNOWN: 04a28420 <unknown>167 168 169// --------------------------------------------------------------------------//170// Test compatibility with MOVPRFX instruction.171 172movprfx z31.d, p0/z, z6.d173// CHECK-INST: movprfx z31.d, p0/z, z6.d174// CHECK-ENCODING: [0xdf,0x20,0xd0,0x04]175// CHECK-ERROR: instruction requires: sve or sme176// CHECK-UNKNOWN: 04d020df <unknown>177 178lsr z31.d, p0/m, z31.d, #64179// CHECK-INST: lsr z31.d, p0/m, z31.d, #64180// CHECK-ENCODING: [0x1f,0x80,0x81,0x04]181// CHECK-ERROR: instruction requires: sve or sme182// CHECK-UNKNOWN: 0481801f <unknown>183 184movprfx z31, z6185// CHECK-INST: movprfx z31, z6186// CHECK-ENCODING: [0xdf,0xbc,0x20,0x04]187// CHECK-ERROR: instruction requires: sve or sme188// CHECK-UNKNOWN: 0420bcdf <unknown>189 190lsr z31.d, p0/m, z31.d, #64191// CHECK-INST: lsr z31.d, p0/m, z31.d, #64192// CHECK-ENCODING: [0x1f,0x80,0x81,0x04]193// CHECK-ERROR: instruction requires: sve or sme194// CHECK-UNKNOWN: 0481801f <unknown>195 196movprfx z0.s, p0/z, z7.s197// CHECK-INST: movprfx z0.s, p0/z, z7.s198// CHECK-ENCODING: [0xe0,0x20,0x90,0x04]199// CHECK-ERROR: instruction requires: sve or sme200// CHECK-UNKNOWN: 049020e0 <unknown>201 202lsr z0.s, p0/m, z0.s, z1.d203// CHECK-INST: lsr z0.s, p0/m, z0.s, z1.d204// CHECK-ENCODING: [0x20,0x80,0x99,0x04]205// CHECK-ERROR: instruction requires: sve or sme206// CHECK-UNKNOWN: 04998020 <unknown>207 208movprfx z0, z7209// CHECK-INST: movprfx z0, z7210// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04]211// CHECK-ERROR: instruction requires: sve or sme212// CHECK-UNKNOWN: 0420bce0 <unknown>213 214lsr z0.s, p0/m, z0.s, z1.d215// CHECK-INST: lsr z0.s, p0/m, z0.s, z1.d216// CHECK-ENCODING: [0x20,0x80,0x99,0x04]217// CHECK-ERROR: instruction requires: sve or sme218// CHECK-UNKNOWN: 04998020 <unknown>219