diff options
author | Fiona Glaser <escha@apple.com> | 2015-04-21 00:05:41 +0000 |
---|---|---|
committer | Fiona Glaser <escha@apple.com> | 2015-04-21 00:05:41 +0000 |
commit | 0d41db11a2dcfc8f4410fb45aaa74d5ec1d10311 (patch) | |
tree | 73038e5ecc20b1034fb92a1809a4d8b24f028b88 /llvm/lib/IR/Instructions.cpp | |
parent | 80f958dbf430dfe828a525d560d97eb14f5cf7ca (diff) | |
download | bcm5719-llvm-0d41db11a2dcfc8f4410fb45aaa74d5ec1d10311.tar.gz bcm5719-llvm-0d41db11a2dcfc8f4410fb45aaa74d5ec1d10311.zip |
InstCombine: fold (sitofp (zext x)) to (uitofp x)
This is okay because the zext guarantees the high bit is zero,
and so the value is unsigned.
llvm-svn: 235364
Diffstat (limited to 'llvm/lib/IR/Instructions.cpp')
-rw-r--r-- | llvm/lib/IR/Instructions.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/IR/Instructions.cpp b/llvm/lib/IR/Instructions.cpp index 1c831ccd289..b2898429239 100644 --- a/llvm/lib/IR/Instructions.cpp +++ b/llvm/lib/IR/Instructions.cpp @@ -2118,7 +2118,7 @@ unsigned CastInst::isEliminableCastPair( // N X X U S F F N X N 2 V V | // C T T I I P P C T T P T T -+ { 1, 0, 0,99,99, 0, 0,99,99,99, 0, 3, 0}, // Trunc -+ - { 8, 1, 9,99,99, 2, 0,99,99,99, 2, 3, 0}, // ZExt | + { 8, 1, 9,99,99, 2,17,99,99,99, 2, 3, 0}, // ZExt | { 8, 0, 1,99,99, 0, 2,99,99,99, 0, 3, 0}, // SExt | { 0, 0, 0,99,99, 0, 0,99,99,99, 0, 3, 0}, // FPToUI | { 0, 0, 0,99,99, 0, 0,99,99,99, 0, 3, 0}, // FPToSI | @@ -2285,6 +2285,9 @@ unsigned CastInst::isEliminableCastPair( "Illegal bitcast, ptrtoint sequence!"); // Allowed, use second cast's opcode return secondOp; + case 17: + // (sitofp (zext x)) -> (uitofp x) + return Instruction::UIToFP; case 99: // Cast combination can't happen (error in input). This is for all cases // where the MidTy is not the same for the two cast instructions. |