[PATCH] D154506: [ARM] in LowerConstantFP, make sure we cover armv6-m execute-only

Ties Stuij via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 10 07:26:51 PDT 2023


stuij updated this revision to Diff 538637.
stuij added a comment.

addressed review comments


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D154506/new/

https://reviews.llvm.org/D154506

Files:
  llvm/lib/Target/ARM/ARMISelLowering.cpp
  llvm/test/CodeGen/ARM/float-ops-xo.ll
  llvm/test/CodeGen/Thumb2/float-ops-vmovsr-nofp-xo.ll


Index: llvm/test/CodeGen/ARM/float-ops-xo.ll
===================================================================
--- llvm/test/CodeGen/ARM/float-ops-xo.ll
+++ llvm/test/CodeGen/ARM/float-ops-xo.ll
@@ -1,5 +1,6 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
 ; RUN: llc < %s -mtriple=thumbv8.1m.main-none-eabihf -mattr=+mve,+execute-only | FileCheck %s
+; RUN: llc < %s -mtriple=thumbv6m -mattr=+execute-only | FileCheck %s --check-prefix=V6M
 
 declare void @ext_fn(float)
 
@@ -12,6 +13,13 @@
 ; CHECK-NEXT:    vmov s0, r0
 ; CHECK-NEXT:    bl ext_fn
 ; CHECK-NEXT:    pop {r7, pc}
+;
+; V6M-LABEL: test1:
+; V6M:       @ %bb.0: @ %entry
+; V6M-NEXT:    push {r7, lr}
+; V6M-NEXT:    movs r0, #0
+; V6M-NEXT:    bl ext_fn
+; V6M-NEXT:    pop {r7, pc}
 entry:
   call void @ext_fn(float 0.000000e+00)
   ret void
@@ -24,6 +32,17 @@
 ; CHECK-NEXT:    movt r0, #16673
 ; CHECK-NEXT:    vmov s0, r0
 ; CHECK-NEXT:    bx lr
+;
+; V6M-LABEL: test2:
+; V6M:       @ %bb.0: @ %entry
+; V6M-NEXT:    movs r0, #65
+; V6M-NEXT:    lsls r0, r0, #8
+; V6M-NEXT:    adds r0, #33
+; V6M-NEXT:    lsls r0, r0, #8
+; V6M-NEXT:    adds r0, #249
+; V6M-NEXT:    lsls r0, r0, #8
+; V6M-NEXT:    adds r0, #167
+; V6M-NEXT:    bx lr
 entry:
   ret float 0x40243F34E0000000
 }
Index: llvm/lib/Target/ARM/ARMISelLowering.cpp
===================================================================
--- llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -7070,6 +7070,10 @@
   // Prevent floating-point constants from using literal loads
   // when execute-only is enabled.
   if (ST->genExecuteOnly()) {
+    // We shouldn't trigger this for v6m execute-only
+    assert((!ST->isThumb1Only() || ST->hasV8MBaselineOps()) &&
+           "Unexpected architecture");
+
     // If we can represent the constant as an immediate, don't lower it
     if (isFPImmLegal(FPVal, VT))
       return Op;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D154506.538637.patch
Type: text/x-patch
Size: 1955 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230710/8d3b0e6c/attachment.bin>


More information about the llvm-commits mailing list