# 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 \ # RUN: --mattr=+tme,+mte,+crc,+lse,+rdm,+sm4,+sha3,+aes,+dotprod,+fullfp16 \ # RUN: --mattr=+fp16fml,+sve,+sve2,+sve2-aes,+sve2-sm4,+sve2-sha3,+sve2-bitperm \ # RUN: --mattr=+spe,+rcpc,+ssbs,+sb,+predres,+bf16,+mops,+hbc,+sme,+sme-i64 \ # RUN: --mattr=+sme-f64,+flagm,+pauth,+brbe,+ls64,+f64mm,+f32mm,+i8mm,+rand # 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