summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Mips/MipsInstrInfo.td
diff options
context:
space:
mode:
authorAleksandar Beserminji <abeserminji@wavecomp.com>2019-01-28 14:59:30 +0000
committerAleksandar Beserminji <abeserminji@wavecomp.com>2019-01-28 14:59:30 +0000
commit6c5dfcb89edf93eb50356dc39ea0ea2dcbba906f (patch)
treed36c2d32305d6a18db49a79cbe30bddc4bf9cb7d /llvm/lib/Target/Mips/MipsInstrInfo.td
parent9feaecf22c235e5b97bd56d657a90fe1736eba56 (diff)
downloadbcm5719-llvm-6c5dfcb89edf93eb50356dc39ea0ea2dcbba906f.tar.gz
bcm5719-llvm-6c5dfcb89edf93eb50356dc39ea0ea2dcbba906f.zip
[mips] Support for +abs2008 attribute
Instruction abs.[ds] is not generating correct result when working with NaNs for revisions prior mips32r6 and mips64r6. To generate a sequence which always produce a correct result, but also to allow user more control on how his code is compiled, attribute +abs2008 is added, so user can choose legacy or 2008. By default legacy mode is used on revisions prior R6. Mips32r6 and mips64r6 use abs2008 mode by default. Differential Revision: https://reviews.llvm.org/D35983 llvm-svn: 352370
Diffstat (limited to 'llvm/lib/Target/Mips/MipsInstrInfo.td')
-rw-r--r--llvm/lib/Target/Mips/MipsInstrInfo.td2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/MipsInstrInfo.td b/llvm/lib/Target/Mips/MipsInstrInfo.td
index 1943168ac42..f18877f9a7a 100644
--- a/llvm/lib/Target/Mips/MipsInstrInfo.td
+++ b/llvm/lib/Target/Mips/MipsInstrInfo.td
@@ -220,6 +220,8 @@ def IsNotN64 : Predicate<"!Subtarget->isABI_N64()">;
def RelocNotPIC : Predicate<"!TM.isPositionIndependent()">;
def RelocPIC : Predicate<"TM.isPositionIndependent()">;
def NoNaNsFPMath : Predicate<"TM.Options.NoNaNsFPMath">;
+def UseAbs : Predicate<"Subtarget->inAbs2008Mode() ||"
+ "TM.Options.NoNaNsFPMath">;
def HasStdEnc : Predicate<"Subtarget->hasStandardEncoding()">,
AssemblerPredicate<"!FeatureMips16">;
def NotDSP : Predicate<"!Subtarget->hasDSP()">;
OpenPOWER on IntegriCloud