3 # This checks that lldb's disassembler enables every extension that an AArch64
6 # RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnueabihf %s -o %t --mattr=+all
7 # RUN: %lldb %t -o "disassemble -n fn" -o exit 2>&1 | FileCheck %s
12 // These are in alphabetical order by extension name
13 aesd v0.16
b, v0.16
b // AEK_AES
14 bfadd z23.h
, p3
/m
, z23.h
, z13.h
// AEK_B16B16
15 bfdot v2.2s
, v3.4h
, v4.4h
// AEK_BF16
17 crc32b w0
, w0
, w0
// AEK_CRC
18 // AEK_CRYPTO enables
a combination of other features
19 smin x0
, x0
, #0 // AEK_CSSC
20 sysp
#0, c2, c0, #0, x0, x1 // AEK_D128
21 sdot v0.2s
, v1.8
b, v2.8
b // AEK_DOTPROD
22 fmmla z0.s
, z1.s
, z2.s
// AEK_F32MM
23 fmmla z0.d
, z1.d
, z2.d
// AEK_F64MM
26 fabs h1
, h2
// AEK_FP16
27 fmlal v0.2s
, v1.2h
, v2.2h
// AEK_FP16FML
29 smmla v1.4s
, v16.16
b, v31.16
b // AEK_I8MM
30 ld64b x0
, [x13
] // AEK_LS64
31 ldaddab w0
, w0
, [sp
] // AEK_LSE
32 ldclrp x1
, x2
, [x11
] // AEK_LSE128
34 cpyfp
[x0
]!, [x1
]!, x2
! // AEK_MOPS
35 pacia x0
, x1
// AEK_PAUTH
36 mrs x0
, pmccntr_el0
// AEK_PERFMON
37 cfp rctx
, x0
// AEK_PREDRES
38 psb csync
// AEK_PROFILE
/SPE
39 msr erxpfgctl_el1
, x0
// AEK_RAS
40 ldaprb w0
, [x0
, #0] // AEK_RCPC
41 stilp w26
, w2
, [x18
] // AEK_RCPC3
42 sqrdmlah v0.4h
, v1.4h
, v2.4h
// AEK_RDM
43 mrs x0
, rndr
// AEK_RAND
45 sha256h q0
, q0
, v0.4s
// AEK_SHA2
46 bcax v0.16
b, v0.16
b, v0.16
b, v0.16
b // AEK_SHA3
47 addp v0.4s
, v0.4s
, v0.4s
// AEK_SIMD
(neon
)
48 sm4e v0.4s
, v0.4s
// AEK_SM4
49 addha za0.s
, p0
/m
, p0
/m
, z0.s
// AEK_SME
50 fadd za.h
[w11
, 7], {z12.h
- z13.h
} // AEK_SMEF16F16
51 fmopa za0.d
, p0
/m
, p0
/m
, z0.d
, z0.d
// AEK_SMEF64F64
52 addha za0.d
, p0
/m
, p0
/m
, z0.d
// AEK_SMEI16I64
53 add {z0.h
, z1.h
}, {z0.h
, z1.h
}, z0.h
// AEK_SME2
54 // AEK_SME2P1
: see AEK_SVE2P1
55 mrs x2
, ssbs
// AEK_SSBS
56 abs z31.h
, p7
/m
, z31.h
// AEK_SVE
57 sqdmlslbt z0.d
, z1.s
, z31.s
// AEK_SVE2
58 aesd z0.
b, z0.
b, z31.
b // AEK_SVE2AES
59 bdep z0.
b, z1.
b, z31.
b // AEK_SVE2BITPERM
60 rax1 z0.d
, z0.d
, z0.d
// AEK_SVE2SHA3
61 sm4e z0.s
, z0.s
, z0.s
// AEK_SVE2SM4
62 addqv v0.8h
, p0
, z0.h
// AEK_SVE2p1
/ AEK_SME2p1
63 rcwswp x0
, x1
, [x2
] // AEK_THE
69 # CHECK: command-disassemble-aarch64-extensions.s.tmp`fn:
70 # CHECK-NEXT: aesd v0.16b, v0.16b
71 # CHECK-NEXT: bfadd z23.h, p3/m, z23.h, z13.h
72 # CHECK-NEXT: bfdot v2.2s, v3.4h, v4.4h
73 # CHECK-NEXT: brb iall
74 # CHECK-NEXT: crc32b w0, w0, w0
75 # CHECK-NEXT: smin x0, x0, #0
76 # CHECK-NEXT: sysp #0x0, c2, c0, #0x0, x0, x1
77 # CHECK-NEXT: sdot v0.2s, v1.8b, v2.8b
78 # CHECK-NEXT: fmmla z0.s, z1.s, z2.s
79 # CHECK-NEXT: fmmla z0.d, z1.d, z2.d
81 # CHECK-NEXT: fcvt d0, s0
82 # CHECK-NEXT: fabs h1, h2
83 # CHECK-NEXT: fmlal v0.2s, v1.2h, v2.2h
84 # CHECK-NEXT: bc.eq 0xc8
85 # CHECK-NEXT: smmla v1.4s, v16.16b, v31.16b
86 # CHECK-NEXT: ld64b x0, [x13]
87 # CHECK-NEXT: ldaddab w0, w0, [sp]
88 # CHECK-NEXT: ldclrp x1, x2, [x11]
89 # CHECK-NEXT: irg x0, x0
90 # CHECK-NEXT: cpyfp [x0]!, [x1]!, x2!
91 # CHECK-NEXT: pacia x0, x1
92 # CHECK-NEXT: mrs x0, PMCCNTR_EL0
93 # CHECK-NEXT: cfp rctx, x0
94 # CHECK-NEXT: psb csync
95 # CHECK-NEXT: msr ERXPFGCTL_EL1, x0
96 # CHECK-NEXT: ldaprb w0, [x0]
97 # CHECK-NEXT: stilp w26, w2, [x18]
98 # CHECK-NEXT: sqrdmlah v0.4h, v1.4h, v2.4h
99 # CHECK-NEXT: mrs x0, RNDR
101 # CHECK-NEXT: sha256h q0, q0, v0.4s
102 # CHECK-NEXT: bcax v0.16b, v0.16b, v0.16b, v0.16b
103 # CHECK-NEXT: addp v0.4s, v0.4s, v0.4s
104 # CHECK-NEXT: sm4e v0.4s, v0.4s
105 # CHECK-NEXT: addha za0.s, p0/m, p0/m, z0.s
106 # CHECK-NEXT: fadd za.h[w11, 7, vgx2], { z12.h, z13.h }
107 # CHECK-NEXT: fmopa za0.d, p0/m, p0/m, z0.d, z0.d
108 # CHECK-NEXT: addha za0.d, p0/m, p0/m, z0.d
109 # CHECK-NEXT: add { z0.h, z1.h }, { z0.h, z1.h }, z0.h
110 # CHECK-NEXT: mrs x2, SSBS
111 # CHECK-NEXT: abs z31.h, p7/m, z31.h
112 # CHECK-NEXT: sqdmlslbt z0.d, z1.s, z31.s
113 # CHECK-NEXT: aesd z0.b, z0.b, z31.b
114 # CHECK-NEXT: bdep z0.b, z1.b, z31.b
115 # CHECK-NEXT: rax1 z0.d, z0.d, z0.d
116 # CHECK-NEXT: sm4e z0.s, z0.s, z0.s
117 # CHECK-NEXT: addqv v0.8h, p0, z0.h
118 # CHECK-NEXT: rcwswp x0, x1, [x2]
119 # CHECK-NEXT: tcommit