blob: 07fad4d487e195f5b47e8e9a7a1da3e489849dac [file] [log] [blame]
# REQUIRES: aarch64
# This checks that lldb's disassembler enables every extension that an AArch64
# target could have.
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnueabihf %s -o %t --mattr=+all
# RUN: %lldb %t -o "disassemble -n fn" -o exit 2>&1 | FileCheck %s
.globl fn
.type fn, @function
fn:
// These are in the same order as llvm/include/llvm/Support/AArch64TargetParser.def
crc32b w0, w0, w0 // CRC
ldaddab w0, w0, [sp] // LSE
sqrdmlah v0.4h, v1.4h, v2.4h // RDM
// CRYPTO enables a combination of other features
sm4e v0.4s, v0.4s // SM4
bcax v0.16b, v0.16b, v0.16b, v0.16b // SHA3
sha256h q0, q0, v0.4s // SHA256
aesd v0.16b, v0.16b // AES
sdot v0.2s, v1.8b, v2.8b // DOTPROD
fcvt d0, s0 // FP
addp v0.4s, v0.4s, v0.4s // SIMD (neon)
fabs h1, h2 // FP16
fmlal v0.2s, v1.2h, v2.2h // FP16FML
psb csync // PROFILE/SPE
msr erxpfgctl_el1, x0 // RAS
abs z31.h, p7/m, z31.h // SVE
sqdmlslbt z0.d, z1.s, z31.s // SVE2
aesd z0.b, z0.b, z31.b // SVE2AES
sm4e z0.s, z0.s, z0.s // SVE2SM4
rax1 z0.d, z0.d, z0.d // SVE2SHA3
bdep z0.b, z1.b, z31.b // SVE2BITPERM
ldaprb w0, [x0, #0] // RCPC
mrs x0, rndr // RAND
irg x0, x0 // MTE
mrs x2, ssbs // SSBS
sb // SB
cfp rctx, x0 // PREDRES
bfdot v2.2s, v3.4h, v4.4h // BF16
smmla v1.4s, v16.16b, v31.16b // I8MM
fmmla z0.s, z1.s, z2.s // F32MM
fmmla z0.d, z1.d, z2.d // F64MM
tcommit // TME
ld64b x0, [x13] // LS64
brb iall // BRBE
pacia x0, x1 // PAUTH
cfinv // FLAGM
addha za0.s, p0/m, p0/m, z0.s // SME
fmopa za0.d, p0/m, p0/m, z0.d, z0.d // SMEF64
addha za0.d, p0/m, p0/m, z0.d // SMEI64
lbl:
bc.eq lbl // HBC
cpyfp [x0]!, [x1]!, x2! // MOPS
mrs x0, pmccntr_el0 // PERFMON
.fn_end:
.size fn, .fn_end-fn
# CHECK: command-disassemble-aarch64-extensions.s.tmp`fn:
# CHECK: crc32b w0, w0, w0
# CHECK: ldaddab w0, w0, [sp]
# CHECK: sqrdmlah v0.4h, v1.4h, v2.4h
# CHECK: sm4e v0.4s, v0.4s
# CHECK: bcax v0.16b, v0.16b, v0.16b, v0.16b
# CHECK: sha256h q0, q0, v0.4s
# CHECK: aesd v0.16b, v0.16b
# CHECK: sdot v0.2s, v1.8b, v2.8b
# CHECK: fcvt d0, s0
# CHECK: addp v0.4s, v0.4s, v0.4s
# CHECK: fabs h1, h2
# CHECK: fmlal v0.2s, v1.2h, v2.2h
# CHECK: psb csync
# CHECK: msr ERXPFGCTL_EL1, x0
# CHECK: abs z31.h, p7/m, z31.h
# CHECK: sqdmlslbt z0.d, z1.s, z31.s
# CHECK: aesd z0.b, z0.b, z31.b
# CHECK: sm4e z0.s, z0.s, z0.s
# CHECK: rax1 z0.d, z0.d, z0.d
# CHECK: bdep z0.b, z1.b, z31.b
# CHECK: ldaprb w0, [x0]
# CHECK: mrs x0, RNDR
# CHECK: irg x0, x0
# CHECK: mrs x2, SSBS
# CHECK: sb
# CHECK: cfp rctx, x0
# CHECK: bfdot v2.2s, v3.4h, v4.4h
# CHECK: smmla v1.4s, v16.16b, v31.16b
# CHECK: fmmla z0.s, z1.s, z2.s
# CHECK: fmmla z0.d, z1.d, z2.d
# CHECK: tcommit
# CHECK: ld64b x0, [x13]
# CHECK: brb iall
# CHECK: pacia x0, x1
# CHECK: cfinv
# CHECK: addha za0.s, p0/m, p0/m, z0.s
# CHECK: fmopa za0.d, p0/m, p0/m, z0.d, z0.d
# CHECK: addha za0.d, p0/m, p0/m, z0.d
# CHECK: bc.eq 0x98
# CHECK: cpyfp [x0]!, [x1]!, x2!
# CHECK: mrs x0, PMCCNTR_EL0