178 lines · plain
1 2// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme-mop4 < %s \3// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST4// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \5// RUN: | FileCheck %s --check-prefix=CHECK-ERROR6// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sme-mop4 < %s \7// RUN: | llvm-objdump -d --mattr=+sme-mop4 - | FileCheck %s --check-prefix=CHECK-INST8// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sme-mop4 < %s \9// RUN: | llvm-objdump -d --mattr=-sme-mop4 - | FileCheck %s --check-prefix=CHECK-UNKNOWN10// Disassemble encoding and check the re-encoding (-show-encoding) matches.11// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme-mop4 < %s \12// RUN: | sed '/.text/d' | sed 's/.*encoding: //g' \13// RUN: | llvm-mc -triple=aarch64 -mattr=+sme-mop4 -disassemble -show-encoding \14// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST15 16 17// FMOP4A18 19// Single vectors20fmop4a za0.s, z0.h, z16.h // 10000001-00100000-00000000-0000000021// CHECK-INST: fmop4a za0.s, z0.h, z16.h22// CHECK-ENCODING: [0x00,0x00,0x20,0x81]23// CHECK-ERROR: instruction requires: sme-mop424// CHECK-UNKNOWN: 81200000 <unknown>25 26fmop4a za1.s, z10.h, z20.h // 10000001-00100100-00000001-0100000127// CHECK-INST: fmop4a za1.s, z10.h, z20.h28// CHECK-ENCODING: [0x41,0x01,0x24,0x81]29// CHECK-ERROR: instruction requires: sme-mop430// CHECK-UNKNOWN: 81240141 <unknown>31 32fmop4a za3.s, z14.h, z30.h // 10000001-00101110-00000001-1100001133// CHECK-INST: fmop4a za3.s, z14.h, z30.h34// CHECK-ENCODING: [0xc3,0x01,0x2e,0x81]35// CHECK-ERROR: instruction requires: sme-mop436// CHECK-UNKNOWN: 812e01c3 <unknown>37 38// Single and multiple vectors39 40fmop4a za0.s, z0.h, {z16.h-z17.h} // 10000001-00110000-00000000-0000000041// CHECK-INST: fmop4a za0.s, z0.h, { z16.h, z17.h }42// CHECK-ENCODING: [0x00,0x00,0x30,0x81]43// CHECK-ERROR: instruction requires: sme-mop444// CHECK-UNKNOWN: 81300000 <unknown>45 46fmop4a za1.s, z10.h, {z20.h-z21.h} // 10000001-00110100-00000001-0100000147// CHECK-INST: fmop4a za1.s, z10.h, { z20.h, z21.h }48// CHECK-ENCODING: [0x41,0x01,0x34,0x81]49// CHECK-ERROR: instruction requires: sme-mop450// CHECK-UNKNOWN: 81340141 <unknown>51 52fmop4a za3.s, z14.h, {z30.h-z31.h} // 10000001-00111110-00000001-1100001153// CHECK-INST: fmop4a za3.s, z14.h, { z30.h, z31.h }54// CHECK-ENCODING: [0xc3,0x01,0x3e,0x81]55// CHECK-ERROR: instruction requires: sme-mop456// CHECK-UNKNOWN: 813e01c3 <unknown>57 58// Multiple and single vectors59 60fmop4a za0.s, {z0.h-z1.h}, z16.h // 10000001-00100000-00000010-0000000061// CHECK-INST: fmop4a za0.s, { z0.h, z1.h }, z16.h62// CHECK-ENCODING: [0x00,0x02,0x20,0x81]63// CHECK-ERROR: instruction requires: sme-mop464// CHECK-UNKNOWN: 81200200 <unknown>65 66fmop4a za1.s, {z10.h-z11.h}, z20.h // 10000001-00100100-00000011-0100000167// CHECK-INST: fmop4a za1.s, { z10.h, z11.h }, z20.h68// CHECK-ENCODING: [0x41,0x03,0x24,0x81]69// CHECK-ERROR: instruction requires: sme-mop470// CHECK-UNKNOWN: 81240341 <unknown>71 72fmop4a za3.s, {z14.h-z15.h}, z30.h // 10000001-00101110-00000011-1100001173// CHECK-INST: fmop4a za3.s, { z14.h, z15.h }, z30.h74// CHECK-ENCODING: [0xc3,0x03,0x2e,0x81]75// CHECK-ERROR: instruction requires: sme-mop476// CHECK-UNKNOWN: 812e03c3 <unknown>77 78// Multiple vectors79 80fmop4a za0.s, {z0.h-z1.h}, {z16.h-z17.h} // 10000001-00110000-00000010-0000000081// CHECK-INST: fmop4a za0.s, { z0.h, z1.h }, { z16.h, z17.h }82// CHECK-ENCODING: [0x00,0x02,0x30,0x81]83// CHECK-ERROR: instruction requires: sme-mop484// CHECK-UNKNOWN: 81300200 <unknown>85 86fmop4a za1.s, {z10.h-z11.h}, {z20.h-z21.h} // 10000001-00110100-00000011-0100000187// CHECK-INST: fmop4a za1.s, { z10.h, z11.h }, { z20.h, z21.h }88// CHECK-ENCODING: [0x41,0x03,0x34,0x81]89// CHECK-ERROR: instruction requires: sme-mop490// CHECK-UNKNOWN: 81340341 <unknown>91 92fmop4a za3.s, {z14.h-z15.h}, {z30.h-z31.h} // 10000001-00111110-00000011-1100001193// CHECK-INST: fmop4a za3.s, { z14.h, z15.h }, { z30.h, z31.h }94// CHECK-ENCODING: [0xc3,0x03,0x3e,0x81]95// CHECK-ERROR: instruction requires: sme-mop496// CHECK-UNKNOWN: 813e03c3 <unknown>97 98// FMOP4S99 100// Single vectors101fmop4s za0.s, z0.h, z16.h // 10000001-00100000-00000000-00010000102// CHECK-INST: fmop4s za0.s, z0.h, z16.h103// CHECK-ENCODING: [0x10,0x00,0x20,0x81]104// CHECK-ERROR: instruction requires: sme-mop4105// CHECK-UNKNOWN: 81200010 <unknown>106 107fmop4s za1.s, z10.h, z20.h // 10000001-00100100-00000001-01010001108// CHECK-INST: fmop4s za1.s, z10.h, z20.h109// CHECK-ENCODING: [0x51,0x01,0x24,0x81]110// CHECK-ERROR: instruction requires: sme-mop4111// CHECK-UNKNOWN: 81240151 <unknown>112 113fmop4s za3.s, z14.h, z30.h // 10000001-00101110-00000001-11010011114// CHECK-INST: fmop4s za3.s, z14.h, z30.h115// CHECK-ENCODING: [0xd3,0x01,0x2e,0x81]116// CHECK-ERROR: instruction requires: sme-mop4117// CHECK-UNKNOWN: 812e01d3 <unknown>118 119// Single and multiple vectors120 121fmop4s za0.s, z0.h, {z16.h-z17.h} // 10000001-00110000-00000000-00010000122// CHECK-INST: fmop4s za0.s, z0.h, { z16.h, z17.h }123// CHECK-ENCODING: [0x10,0x00,0x30,0x81]124// CHECK-ERROR: instruction requires: sme-mop4125// CHECK-UNKNOWN: 81300010 <unknown>126 127fmop4s za1.s, z10.h, {z20.h-z21.h} // 10000001-00110100-00000001-01010001128// CHECK-INST: fmop4s za1.s, z10.h, { z20.h, z21.h }129// CHECK-ENCODING: [0x51,0x01,0x34,0x81]130// CHECK-ERROR: instruction requires: sme-mop4131// CHECK-UNKNOWN: 81340151 <unknown>132 133fmop4s za3.s, z14.h, {z30.h-z31.h} // 10000001-00111110-00000001-11010011134// CHECK-INST: fmop4s za3.s, z14.h, { z30.h, z31.h }135// CHECK-ENCODING: [0xd3,0x01,0x3e,0x81]136// CHECK-ERROR: instruction requires: sme-mop4137// CHECK-UNKNOWN: 813e01d3 <unknown>138 139// Multiple and single vectors140 141fmop4s za0.s, {z0.h-z1.h}, z16.h // 10000001-00100000-00000010-00010000142// CHECK-INST: fmop4s za0.s, { z0.h, z1.h }, z16.h143// CHECK-ENCODING: [0x10,0x02,0x20,0x81]144// CHECK-ERROR: instruction requires: sme-mop4145// CHECK-UNKNOWN: 81200210 <unknown>146 147fmop4s za1.s, {z10.h-z11.h}, z20.h // 10000001-00100100-00000011-01010001148// CHECK-INST: fmop4s za1.s, { z10.h, z11.h }, z20.h149// CHECK-ENCODING: [0x51,0x03,0x24,0x81]150// CHECK-ERROR: instruction requires: sme-mop4151// CHECK-UNKNOWN: 81240351 <unknown>152 153fmop4s za3.s, {z14.h-z15.h}, z30.h // 10000001-00101110-00000011-11010011154// CHECK-INST: fmop4s za3.s, { z14.h, z15.h }, z30.h155// CHECK-ENCODING: [0xd3,0x03,0x2e,0x81]156// CHECK-ERROR: instruction requires: sme-mop4157// CHECK-UNKNOWN: 812e03d3 <unknown>158 159// Multiple vectors160 161fmop4s za0.s, {z0.h-z1.h}, {z16.h-z17.h} // 10000001-00110000-00000010-00010000162// CHECK-INST: fmop4s za0.s, { z0.h, z1.h }, { z16.h, z17.h }163// CHECK-ENCODING: [0x10,0x02,0x30,0x81]164// CHECK-ERROR: instruction requires: sme-mop4165// CHECK-UNKNOWN: 81300210 <unknown>166 167fmop4s za1.s, {z10.h-z11.h}, {z20.h-z21.h} // 10000001-00110100-00000011-01010001168// CHECK-INST: fmop4s za1.s, { z10.h, z11.h }, { z20.h, z21.h }169// CHECK-ENCODING: [0x51,0x03,0x34,0x81]170// CHECK-ERROR: instruction requires: sme-mop4171// CHECK-UNKNOWN: 81340351 <unknown>172 173fmop4s za3.s, {z14.h-z15.h}, {z30.h-z31.h} // 10000001-00111110-00000011-11010011174// CHECK-INST: fmop4s za3.s, { z14.h, z15.h }, { z30.h, z31.h }175// CHECK-ENCODING: [0xd3,0x03,0x3e,0x81]176// CHECK-ERROR: instruction requires: sme-mop4177// CHECK-UNKNOWN: 813e03d3 <unknown>178