https://github.com/Varnike updated 
https://github.com/llvm/llvm-project/pull/137101

>From 3f54051f0e92b330ca40ebf77ff0c4af009f7701 Mon Sep 17 00:00:00 2001
From: Erik Enikeev <en.enik...@ispras.ru>
Date: Sat, 31 May 2025 11:52:13 -0400
Subject: [PATCH 1/3] set strictfp=1 for ARM

---
 clang/lib/Basic/Targets/ARM.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/clang/lib/Basic/Targets/ARM.cpp b/clang/lib/Basic/Targets/ARM.cpp
index 65d4ed1e96540..4d5b6c6c0c965 100644
--- a/clang/lib/Basic/Targets/ARM.cpp
+++ b/clang/lib/Basic/Targets/ARM.cpp
@@ -362,6 +362,9 @@ ARMTargetInfo::ARMTargetInfo(const llvm::Triple &Triple,
                            : "\01mcount";
 
   SoftFloatABI = llvm::is_contained(Opts.FeaturesAsWritten, "+soft-float-abi");
+
+  if (!SoftFloatABI)
+    HasStrictFP = true;
 }
 
 StringRef ARMTargetInfo::getABI() const { return ABI; }

>From cd0a79380966c4ac7769e38981e6faebdfef0f77 Mon Sep 17 00:00:00 2001
From: Erik Enikeev <en.enik...@ispras.ru>
Date: Mon, 9 Jun 2025 11:10:35 -0400
Subject: [PATCH 2/3] ARMInstrInfo.td: first attempt to modify fp instr

---
 llvm/lib/Target/ARM/ARMInstrInfo.td | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/llvm/lib/Target/ARM/ARMInstrInfo.td 
b/llvm/lib/Target/ARM/ARMInstrInfo.td
index 1f5ba998970fc..782ddd85eb983 100644
--- a/llvm/lib/Target/ARM/ARMInstrInfo.td
+++ b/llvm/lib/Target/ARM/ARMInstrInfo.td
@@ -474,10 +474,10 @@ def xor_su : PatFrag<(ops node:$lhs, node:$rhs), (xor 
node:$lhs, node:$rhs)>;
 
 // An 'fmul' node with a single use.
 let HasOneUse = 1 in
-def fmul_su : PatFrag<(ops node:$lhs, node:$rhs), (fmul node:$lhs, node:$rhs)>;
+def fmul_su : PatFrag<(ops node:$lhs, node:$rhs), (any_fmul node:$lhs, 
node:$rhs)>;
 
 // An 'fadd' node which checks for single non-hazardous use.
-def fadd_mlx : PatFrag<(ops node:$lhs, node:$rhs),(fadd node:$lhs, 
node:$rhs),[{
+def fadd_mlx : PatFrag<(ops node:$lhs, node:$rhs),(any_fadd node:$lhs, 
node:$rhs),[{
   return hasNoVMLxHazardUse(N);
 }]>;
 
@@ -487,7 +487,7 @@ def fsub_mlx : PatFrag<(ops node:$lhs, node:$rhs),(fsub 
node:$lhs, node:$rhs),[{
 }]>;
 
 // An 'fadd' node which can be contracted into a fma
-def fadd_contract : PatFrag<(ops node:$lhs, node:$rhs),(fadd node:$lhs, 
node:$rhs),[{
+def fadd_contract : PatFrag<(ops node:$lhs, node:$rhs),(any_fadd node:$lhs, 
node:$rhs),[{
   return N->getFlags().hasAllowContract();
 }]>;
 

>From f57085e3824ebd52f8775e28b4ce8872f743ae09 Mon Sep 17 00:00:00 2001
From: Erik Enikeev <en.enik...@ispras.ru>
Date: Mon, 9 Jun 2025 11:11:52 -0400
Subject: [PATCH 3/3] ARMInstrInfo.td: first(2) attempt to modify fp instr

---
 llvm/lib/Target/ARM/ARMInstrVFP.td | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/llvm/lib/Target/ARM/ARMInstrVFP.td 
b/llvm/lib/Target/ARM/ARMInstrVFP.td
index 1d5c12fabf093..6bdd3e92eb822 100644
--- a/llvm/lib/Target/ARM/ARMInstrVFP.td
+++ b/llvm/lib/Target/ARM/ARMInstrVFP.td
@@ -489,21 +489,21 @@ let TwoOperandAliasConstraint = "$Dn = $Dd" in
 def VDIVD  : ADbI<0b11101, 0b00, 0, 0,
                   (outs DPR:$Dd), (ins DPR:$Dn, DPR:$Dm),
                   IIC_fpDIV64, "vdiv", ".f64\t$Dd, $Dn, $Dm",
-                  [(set DPR:$Dd, (fdiv DPR:$Dn, (f64 DPR:$Dm)))]>,
+                  [(set DPR:$Dd, (any_fdiv DPR:$Dn, (f64 DPR:$Dm)))]>,
              Sched<[WriteFPDIV64]>;
 
 let TwoOperandAliasConstraint = "$Sn = $Sd" in
 def VDIVS  : ASbI<0b11101, 0b00, 0, 0,
                   (outs SPR:$Sd), (ins SPR:$Sn, SPR:$Sm),
                   IIC_fpDIV32, "vdiv", ".f32\t$Sd, $Sn, $Sm",
-                  [(set SPR:$Sd, (fdiv SPR:$Sn, SPR:$Sm))]>,
+                  [(set SPR:$Sd, (any_fdiv SPR:$Sn, SPR:$Sm))]>,
              Sched<[WriteFPDIV32]>;
 
 let TwoOperandAliasConstraint = "$Sn = $Sd" in
 def VDIVH  : AHbI<0b11101, 0b00, 0, 0,
                   (outs HPR:$Sd), (ins HPR:$Sn, HPR:$Sm),
                   IIC_fpDIV16, "vdiv", ".f16\t$Sd, $Sn, $Sm",
-                  [(set (f16 HPR:$Sd), (fdiv (f16 HPR:$Sn), (f16 HPR:$Sm)))]>,
+                  [(set (f16 HPR:$Sd), (any_fdiv (f16 HPR:$Sn), (f16 
HPR:$Sm)))]>,
              Sched<[WriteFPDIV32]>;
 
 let TwoOperandAliasConstraint = "$Dn = $Dd" in

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to