Changes in directory llvm/lib/Transforms/Scalar:
InstructionCombining.cpp updated: 1.552 -> 1.553 --- Log message: Implement Regression/Transforms/InstCombine/bswap-fold.ll, folding seteq (bswap(x)), c -> seteq(x,bswap(c)) --- Diffs of the changes: (+24 -1) InstructionCombining.cpp | 25 ++++++++++++++++++++++++- 1 files changed, 24 insertions(+), 1 deletion(-) Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.552 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.553 --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.552 Tue Nov 28 19:11:01 2006 +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Tue Nov 28 23:02:16 2006 @@ -4664,7 +4664,7 @@ break; } - // Simplify seteq and setne instructions... + // Simplify seteq and setne instructions with integer constant RHS. if (I.isEquality()) { bool isSetNE = I.getOpcode() == Instruction::SetNE; @@ -4780,6 +4780,29 @@ } default: break; } + } else if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(Op0)) { + // Handle set{eq|ne} <intrinsic>, intcst. + switch (II->getIntrinsicID()) { + default: break; + case Intrinsic::bswap_i16: // seteq (bswap(x)), c -> seteq(x,bswap(c)) + WorkList.push_back(II); // Dead? + I.setOperand(0, II->getOperand(1)); + I.setOperand(1, ConstantInt::get(Type::UShortTy, + ByteSwap_16(CI->getZExtValue()))); + return &I; + case Intrinsic::bswap_i32: // seteq (bswap(x)), c -> seteq(x,bswap(c)) + WorkList.push_back(II); // Dead? + I.setOperand(0, II->getOperand(1)); + I.setOperand(1, ConstantInt::get(Type::UIntTy, + ByteSwap_32(CI->getZExtValue()))); + return &I; + case Intrinsic::bswap_i64: // seteq (bswap(x)), c -> seteq(x,bswap(c)) + WorkList.push_back(II); // Dead? + I.setOperand(0, II->getOperand(1)); + I.setOperand(1, ConstantInt::get(Type::ULongTy, + ByteSwap_64(CI->getZExtValue()))); + return &I; + } } } else { // Not a SetEQ/SetNE // If the LHS is a cast from an integral value of the same size, _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits