summaryrefslogtreecommitdiff
path: root/llvm/test/MC/AArch64/armv8.5a-mte.s
diff options
context:
space:
mode:
authorOliver Stannard <oliver.stannard@arm.com>2018-10-02 09:48:43 +0000
committerOliver Stannard <oliver.stannard@arm.com>2018-10-02 09:48:43 +0000
commit07f7c6f23df4f76de45606b1534d2e5bad2c35e9 (patch)
tree9d0139ecc401f172432b04fd73206e798e1d2a50 /llvm/test/MC/AArch64/armv8.5a-mte.s
parent6cb442849ec031d9495b631ea13df410d83f7c6e (diff)
[AArch64][v8.5A] Add MTE system instructions
The Memory Tagging Extension adds system instructions for data cache maintenance, implemented as new operands to the DC instruction. Patch by Pablo Barrio! Differential revision: https://reviews.llvm.org/D52487
Diffstat (limited to 'llvm/test/MC/AArch64/armv8.5a-mte.s')
-rw-r--r--llvm/test/MC/AArch64/armv8.5a-mte.s60
1 files changed, 60 insertions, 0 deletions
diff --git a/llvm/test/MC/AArch64/armv8.5a-mte.s b/llvm/test/MC/AArch64/armv8.5a-mte.s
new file mode 100644
index 00000000000..345797a11d0
--- /dev/null
+++ b/llvm/test/MC/AArch64/armv8.5a-mte.s
@@ -0,0 +1,60 @@
+// RUN: llvm-mc -triple aarch64 -show-encoding -mattr=+mte < %s | FileCheck %s
+// RUN: not llvm-mc -triple aarch64 -show-encoding -mattr=+v8.5a < %s 2>&1 | FileCheck %s --check-prefix=NOMTE
+// RUN: not llvm-mc -triple aarch64 -show-encoding -mattr=-mte < %s 2>&1 | FileCheck %s --check-prefix=NOMTE
+
+dc igvac, x0
+dc igsw, x1
+dc cgsw, x2
+dc cigsw, x3
+dc cgvac, x4
+dc cgvap, x5
+dc cgvadp, x6
+dc cigvac, x7
+dc gva, x8
+dc igdvac, x9
+dc igdsw, x10
+dc cgdsw, x11
+dc cigdsw, x12
+dc cgdvac, x13
+dc cgdvap, x14
+dc cgdvadp, x15
+dc cigdvac, x16
+dc gzva, x17
+
+// CHECK: dc igvac, x0 // encoding: [0x60,0x76,0x08,0xd5]
+// CHECK: dc igsw, x1 // encoding: [0x81,0x76,0x08,0xd5]
+// CHECK: dc cgsw, x2 // encoding: [0x82,0x7a,0x08,0xd5]
+// CHECK: dc cigsw, x3 // encoding: [0x83,0x7e,0x08,0xd5]
+// CHECK: dc cgvac, x4 // encoding: [0x64,0x7a,0x0b,0xd5]
+// CHECK: dc cgvap, x5 // encoding: [0x65,0x7c,0x0b,0xd5]
+// CHECK: dc cgvadp, x6 // encoding: [0x66,0x7d,0x0b,0xd5]
+// CHECK: dc cigvac, x7 // encoding: [0x67,0x7e,0x0b,0xd5]
+// CHECK: dc gva, x8 // encoding: [0x68,0x74,0x0b,0xd5]
+// CHECK: dc igdvac, x9 // encoding: [0xa9,0x76,0x08,0xd5]
+// CHECK: dc igdsw, x10 // encoding: [0xca,0x76,0x08,0xd5]
+// CHECK: dc cgdsw, x11 // encoding: [0xcb,0x7a,0x08,0xd5]
+// CHECK: dc cigdsw, x12 // encoding: [0xcc,0x7e,0x08,0xd5]
+// CHECK: dc cgdvac, x13 // encoding: [0xad,0x7a,0x0b,0xd5]
+// CHECK: dc cgdvap, x14 // encoding: [0xae,0x7c,0x0b,0xd5]
+// CHECK: dc cgdvadp, x15 // encoding: [0xaf,0x7d,0x0b,0xd5]
+// CHECK: dc cigdvac, x16 // encoding: [0xb0,0x7e,0x0b,0xd5]
+// CHECK: dc gzva, x17 // encoding: [0x91,0x74,0x0b,0xd5]
+
+// NOMTE: DC IGVAC requires mte
+// NOMTE: DC IGSW requires mte
+// NOMTE: DC CGSW requires mte
+// NOMTE: DC CIGSW requires mte
+// NOMTE: DC CGVAC requires mte
+// NOMTE: DC CGVAP requires mte
+// NOMTE: DC CGVADP requires mte
+// NOMTE: DC CIGVAC requires mte
+// NOMTE: DC GVA requires mte
+// NOMTE: DC IGDVAC requires mte
+// NOMTE: DC IGDSW requires mte
+// NOMTE: DC CGDSW requires mte
+// NOMTE: DC CIGDSW requires mte
+// NOMTE: DC CGDVAC requires mte
+// NOMTE: DC CGDVAP requires mte
+// NOMTE: DC CGDVADP requires mte
+// NOMTE: DC CIGDVAC requires mte
+// NOMTE: DC GZVA requires mte