1# REQUIRES: aarch64 2 3# This checks that lldb's disassembler enables every extension that an AArch64 4# target could have. 5 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 8 9.globl fn 10.type fn, @function 11fn: 12 // These are in the same order as llvm/include/llvm/Support/AArch64TargetParser.def 13 crc32b w0, w0, w0 // CRC 14 ldaddab w0, w0, [sp] // LSE 15 sqrdmlah v0.4h, v1.4h, v2.4h // RDM 16 // CRYPTO enables a combination of other features 17 sm4e v0.4s, v0.4s // SM4 18 bcax v0.16b, v0.16b, v0.16b, v0.16b // SHA3 19 sha256h q0, q0, v0.4s // SHA256 20 aesd v0.16b, v0.16b // AES 21 sdot v0.2s, v1.8b, v2.8b // DOTPROD 22 fcvt d0, s0 // FP 23 addp v0.4s, v0.4s, v0.4s // SIMD (neon) 24 fabs h1, h2 // FP16 25 fmlal v0.2s, v1.2h, v2.2h // FP16FML 26 psb csync // PROFILE/SPE 27 msr erxpfgctl_el1, x0 // RAS 28 abs z31.h, p7/m, z31.h // SVE 29 sqdmlslbt z0.d, z1.s, z31.s // SVE2 30 aesd z0.b, z0.b, z31.b // SVE2AES 31 sm4e z0.s, z0.s, z0.s // SVE2SM4 32 rax1 z0.d, z0.d, z0.d // SVE2SHA3 33 bdep z0.b, z1.b, z31.b // SVE2BITPERM 34 ldaprb w0, [x0, #0] // RCPC 35 mrs x0, rndr // RAND 36 irg x0, x0 // MTE 37 mrs x2, ssbs // SSBS 38 sb // SB 39 cfp rctx, x0 // PREDRES 40 bfdot v2.2s, v3.4h, v4.4h // BF16 41 smmla v1.4s, v16.16b, v31.16b // I8MM 42 fmmla z0.s, z1.s, z2.s // F32MM 43 fmmla z0.d, z1.d, z2.d // F64MM 44 tcommit // TME 45 ld64b x0, [x13] // LS64 46 brb iall // BRBE 47 pacia x0, x1 // PAUTH 48 cfinv // FLAGM 49 addha za0.s, p0/m, p0/m, z0.s // SME 50 fmopa za0.d, p0/m, p0/m, z0.d, z0.d // SMEF64 51 addha za0.d, p0/m, p0/m, z0.d // SMEI64 52lbl: 53 bc.eq lbl // HBC 54 cpyfp [x0]!, [x1]!, x2! // MOPS 55 mrs x0, pmccntr_el0 // PERFMON 56.fn_end: 57 .size fn, .fn_end-fn 58 59# CHECK: command-disassemble-aarch64-extensions.s.tmp`fn: 60# CHECK: crc32b w0, w0, w0 61# CHECK: ldaddab w0, w0, [sp] 62# CHECK: sqrdmlah v0.4h, v1.4h, v2.4h 63# CHECK: sm4e v0.4s, v0.4s 64# CHECK: bcax v0.16b, v0.16b, v0.16b, v0.16b 65# CHECK: sha256h q0, q0, v0.4s 66# CHECK: aesd v0.16b, v0.16b 67# CHECK: sdot v0.2s, v1.8b, v2.8b 68# CHECK: fcvt d0, s0 69# CHECK: addp v0.4s, v0.4s, v0.4s 70# CHECK: fabs h1, h2 71# CHECK: fmlal v0.2s, v1.2h, v2.2h 72# CHECK: psb csync 73# CHECK: msr ERXPFGCTL_EL1, x0 74# CHECK: abs z31.h, p7/m, z31.h 75# CHECK: sqdmlslbt z0.d, z1.s, z31.s 76# CHECK: aesd z0.b, z0.b, z31.b 77# CHECK: sm4e z0.s, z0.s, z0.s 78# CHECK: rax1 z0.d, z0.d, z0.d 79# CHECK: bdep z0.b, z1.b, z31.b 80# CHECK: ldaprb w0, [x0] 81# CHECK: mrs x0, RNDR 82# CHECK: irg x0, x0 83# CHECK: mrs x2, SSBS 84# CHECK: sb 85# CHECK: cfp rctx, x0 86# CHECK: bfdot v2.2s, v3.4h, v4.4h 87# CHECK: smmla v1.4s, v16.16b, v31.16b 88# CHECK: fmmla z0.s, z1.s, z2.s 89# CHECK: fmmla z0.d, z1.d, z2.d 90# CHECK: tcommit 91# CHECK: ld64b x0, [x13] 92# CHECK: brb iall 93# CHECK: pacia x0, x1 94# CHECK: cfinv 95# CHECK: addha za0.s, p0/m, p0/m, z0.s 96# CHECK: fmopa za0.d, p0/m, p0/m, z0.d, z0.d 97# CHECK: addha za0.d, p0/m, p0/m, z0.d 98# CHECK: bc.eq 0x98 99# CHECK: cpyfp [x0]!, [x1]!, x2! 100# CHECK: mrs x0, PMCCNTR_EL0 101