summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/R600/AMDGPUMCInstLower.cpp
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2014-12-17 21:04:08 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2014-12-17 21:04:08 +0000
commit303011a0059039a9635db856e0b4bb5d4df12347 (patch)
tree755c1810fc463a84bae7f6de16c6f912eb7922dd /llvm/lib/Target/R600/AMDGPUMCInstLower.cpp
parentd663fdd2165d39862f7d466412b0321a776070f2 (diff)
downloadbcm5719-llvm-303011a0059039a9635db856e0b4bb5d4df12347.tar.gz
bcm5719-llvm-303011a0059039a9635db856e0b4bb5d4df12347.zip
R600/SI: Fix f64 inline immediates
llvm-svn: 224458
Diffstat (limited to 'llvm/lib/Target/R600/AMDGPUMCInstLower.cpp')
-rw-r--r--llvm/lib/Target/R600/AMDGPUMCInstLower.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/Target/R600/AMDGPUMCInstLower.cpp b/llvm/lib/Target/R600/AMDGPUMCInstLower.cpp
index 2dcebf5f7e1..84ee7842a72 100644
--- a/llvm/lib/Target/R600/AMDGPUMCInstLower.cpp
+++ b/llvm/lib/Target/R600/AMDGPUMCInstLower.cpp
@@ -70,9 +70,14 @@ void AMDGPUMCInstLower::lower(const MachineInstr *MI, MCInst &OutMI) const {
llvm_unreachable("unknown operand type");
case MachineOperand::MO_FPImmediate: {
const APFloat &FloatValue = MO.getFPImm()->getValueAPF();
- assert(&FloatValue.getSemantics() == &APFloat::IEEEsingle &&
- "Only floating point immediates are supported at the moment.");
- MCOp = MCOperand::CreateFPImm(FloatValue.convertToFloat());
+
+ if (&FloatValue.getSemantics() == &APFloat::IEEEsingle)
+ MCOp = MCOperand::CreateFPImm(FloatValue.convertToFloat());
+ else if (&FloatValue.getSemantics() == &APFloat::IEEEdouble)
+ MCOp = MCOperand::CreateFPImm(FloatValue.convertToDouble());
+ else
+ llvm_unreachable("Unhandled floating point type");
+
break;
}
case MachineOperand::MO_Immediate:
OpenPOWER on IntegriCloud