summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2013-07-12 20:18:05 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2013-07-12 20:18:05 +0000
commitc22c790f894813ffe7310eaf0443c2b72a58e10d (patch)
tree11522d89b3c54e4c4f62e9eb5ca540917e17808e /llvm/lib/Target
parent2965971091d4c2871a5e7fd3e836e577d5272e35 (diff)
downloadbcm5719-llvm-c22c790f894813ffe7310eaf0443c2b72a58e10d.tar.gz
bcm5719-llvm-c22c790f894813ffe7310eaf0443c2b72a58e10d.zip
R600: Remove unsafe type punning. No intended functionality change.
llvm-svn: 186196
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/R600/SIInstrInfo.td10
1 files changed, 4 insertions, 6 deletions
diff --git a/llvm/lib/Target/R600/SIInstrInfo.td b/llvm/lib/Target/R600/SIInstrInfo.td
index 067a34bf479..52af79ccc25 100644
--- a/llvm/lib/Target/R600/SIInstrInfo.td
+++ b/llvm/lib/Target/R600/SIInstrInfo.td
@@ -22,9 +22,8 @@ def LO32 : SDNodeXForm<imm, [{
}]>;
def LO32f : SDNodeXForm<fpimm, [{
- uint64_t val = N->getValueAPF().bitcastToAPInt().getZExtValue() & 0xffffffff;
- float *fval = reinterpret_cast<float *>(&val);
- return CurDAG->getTargetConstantFP(*fval, MVT::f32);
+ APInt V = N->getValueAPF().bitcastToAPInt().trunc(32);
+ return CurDAG->getTargetConstantFP(APFloat(APFloat::IEEEsingle, V), MVT::f32);
}]>;
// Transformation function, extract the upper 32bit of a 64bit immediate
@@ -33,9 +32,8 @@ def HI32 : SDNodeXForm<imm, [{
}]>;
def HI32f : SDNodeXForm<fpimm, [{
- uint64_t val = N->getValueAPF().bitcastToAPInt().getZExtValue() >> 32;
- float *fval = reinterpret_cast<float *>(&val);
- return CurDAG->getTargetConstantFP(*fval, MVT::f32);
+ APInt V = N->getValueAPF().bitcastToAPInt().lshr(32).trunc(32);
+ return CurDAG->getTargetConstantFP(APFloat(APFloat::IEEEsingle, V), MVT::f32);
}]>;
def IMM8bitDWORD : ImmLeaf <
OpenPOWER on IntegriCloud