[compiler-rt] 5a0d73b - [compiler-rt][AArch64] NFCI: Simplify __arm_get_current_vg. (#119210)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 10 08:35:11 PST 2024
Author: Sander de Smalen
Date: 2024-12-10T16:35:06Z
New Revision: 5a0d73b1da880e475e8187e8962b574174bdd0a9
URL: https://github.com/llvm/llvm-project/commit/5a0d73b1da880e475e8187e8962b574174bdd0a9
DIFF: https://github.com/llvm/llvm-project/commit/5a0d73b1da880e475e8187e8962b574174bdd0a9.diff
LOG: [compiler-rt][AArch64] NFCI: Simplify __arm_get_current_vg. (#119210)
This patch simplifies the code in two different ways:
* When SVE is available, return `cntd` directly to avoid the need for
bitfield insert.
* When SME is available, check the PSTATE.SM bit of `SVCR` directly
rather than calling `__arm_sme_state`.
Added:
Modified:
compiler-rt/lib/builtins/aarch64/sme-abi.S
Removed:
################################################################################
diff --git a/compiler-rt/lib/builtins/aarch64/sme-abi.S b/compiler-rt/lib/builtins/aarch64/sme-abi.S
index 3e9bd2c23b2fc0..623a95dd4dae5f 100644
--- a/compiler-rt/lib/builtins/aarch64/sme-abi.S
+++ b/compiler-rt/lib/builtins/aarch64/sme-abi.S
@@ -8,6 +8,8 @@
#include "../assembly.h"
+.set FEAT_SVE_BIT, 30
+.set SVCR_PSTATE_SM_BIT, 0
#if !defined(__APPLE__)
#define TPIDR2_SYMBOL SYMBOL_NAME(__aarch64_has_sme_and_tpidr2_el0)
@@ -188,39 +190,20 @@ DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(__arm_get_current_vg)
.variant_pcs __arm_get_current_vg
BTI_C
- stp x29, x30, [sp, #-16]!
- .cfi_def_cfa_offset 16
- mov x29, sp
- .cfi_def_cfa w29, 16
- .cfi_offset w30, -8
- .cfi_offset w29, -16
adrp x17, CPU_FEATS_SYMBOL
ldr w17, [x17, CPU_FEATS_SYMBOL_OFFSET]
- tbnz w17, #30, 0f
- adrp x16, TPIDR2_SYMBOL
- ldrb w16, [x16, TPIDR2_SYMBOL_OFFSET]
- cbz w16, 1f
+ tbnz w17, #FEAT_SVE_BIT, 1f
+ adrp x17, TPIDR2_SYMBOL
+ ldrb w17, [x17, TPIDR2_SYMBOL_OFFSET]
+ cbz x17, 2f
0:
- mov x18, x1
- bl __arm_sme_state
- mov x1, x18
- and x17, x17, #0x40000000
- bfxil x17, x0, #0, #1
- cbz x17, 1f
+ mrs x17, SVCR
+ tbz x17, #SVCR_PSTATE_SM_BIT, 2f
+1:
cntd x0
- .cfi_def_cfa wsp, 16
- ldp x29, x30, [sp], #16
- .cfi_def_cfa_offset 0
- .cfi_restore w30
- .cfi_restore w29
ret
-1:
+2:
mov x0, xzr
- .cfi_def_cfa wsp, 16
- ldp x29, x30, [sp], #16
- .cfi_def_cfa_offset 0
- .cfi_restore w30
- .cfi_restore w29
ret
END_COMPILERRT_OUTLINE_FUNCTION(__arm_get_current_vg)
More information about the llvm-commits
mailing list