[llvm] [AArch64][GlobalISel] Use GPR for illegal fconstants and extend < 32 bit GPR constants to 32 bits (PR #178692)
Ryan Cowan via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 19 03:24:55 PST 2026
================
@@ -1,60 +1,122 @@
-; RUN: llc < %s -mtriple=arm64-apple-darwin | FileCheck %s
-; RUN: llc < %s -mtriple=arm64-apple-darwin -global-isel | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
+; RUN: llc < %s -mtriple=arm64-apple-darwin | FileCheck --check-prefixes=CHECK,CHECK-SD %s
+; RUN: llc < %s -mtriple=arm64-apple-darwin -global-isel | FileCheck --check-prefixes=CHECK,CHECK-GI %s
-; CHECK: literal8
-; CHECK: .quad 0x400921fb54442d18
define double @foo() optsize {
-; CHECK: _foo:
-; CHECK: adrp x[[REG:[0-9]+]], lCPI0_0 at PAGE
-; CHECK: ldr d0, [x[[REG]], lCPI0_0 at PAGEOFF]
-; CHECK-NEXT: ret
+; CHECK-SD-LABEL: foo:
+; CHECK-SD: ; %bb.0:
+; CHECK-SD-NEXT: Lloh0:
+; CHECK-SD-NEXT: adrp x8, lCPI0_0 at PAGE
+; CHECK-SD-NEXT: Lloh1:
+; CHECK-SD-NEXT: ldr d0, [x8, lCPI0_0 at PAGEOFF]
+; CHECK-SD-NEXT: ret
+; CHECK-SD-NEXT: .loh AdrpLdr Lloh0, Lloh1
+;
+; CHECK-GI-LABEL: foo:
+; CHECK-GI: ; %bb.0:
+; CHECK-GI-NEXT: mov x8, #11544 ; =0x2d18
+; CHECK-GI-NEXT: movk x8, #21572, lsl #16
+; CHECK-GI-NEXT: movk x8, #8699, lsl #32
+; CHECK-GI-NEXT: movk x8, #16393, lsl #48
+; CHECK-GI-NEXT: fmov d0, x8
+; CHECK-GI-NEXT: ret
----------------
HolyMolyCowMan wrote:
I tried to use a stripped down version of isFPImmLegal. The extra checks it performs are useful as we may otherwise introduce a much longer series of instructions. I have instead supplemented this with checks for advSIMD encodings & added a supporting tablegen pattern.
https://github.com/llvm/llvm-project/pull/178692
More information about the llvm-commits
mailing list