diff options
author | Chad Rosier <mcrosier@codeaurora.org> | 2015-03-23 17:19:34 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@codeaurora.org> | 2015-03-23 17:19:34 +0000 |
commit | affe181b397be2bef404e0158b3a8410795fd716 (patch) | |
tree | a38b08f749f58780a8ba0c5e0b8c52b9dc02b080 /llvm/lib | |
parent | acd80d80dda80ef3b6818b2fdb5b538866aae4c1 (diff) | |
download | bcm5719-llvm-affe181b397be2bef404e0158b3a8410795fd716.tar.gz bcm5719-llvm-affe181b397be2bef404e0158b3a8410795fd716.zip |
[AArch64] Enable rematerialization of float 0 values.
Patch by Geoff Berry<gberry@codeaurora.org>.
llvm-svn: 232967
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64InstrInfo.td | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td b/llvm/lib/Target/AArch64/AArch64InstrInfo.td index 57a23a05beb..552be6d64f4 100644 --- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td +++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td @@ -2348,8 +2348,15 @@ defm UCVTF : IntegerToFP<1, "ucvtf", uint_to_fp>; defm FMOV : UnscaledConversion<"fmov">; -def : Pat<(f32 (fpimm0)), (FMOVWSr WZR)>, Requires<[NoZCZ]>; -def : Pat<(f64 (fpimm0)), (FMOVXDr XZR)>, Requires<[NoZCZ]>; +// Add pseudo ops for FMOV 0 so we can mark them as isReMaterializable +let isReMaterializable = 1, isCodeGenOnly = 1 in { +def FMOVS0 : Pseudo<(outs FPR32:$Rd), (ins), [(set f32:$Rd, (fpimm0))]>, + PseudoInstExpansion<(FMOVWSr FPR32:$Rd, WZR)>, + Requires<[NoZCZ]>; +def FMOVD0 : Pseudo<(outs FPR64:$Rd), (ins), [(set f64:$Rd, (fpimm0))]>, + PseudoInstExpansion<(FMOVXDr FPR64:$Rd, XZR)>, + Requires<[NoZCZ]>; +} //===----------------------------------------------------------------------===// // Floating point conversion instruction. |