mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-16 11:24:39 +00:00
Provide InstCombines for the following 3 cases:
A * (1 - (uitofp i1 C)) -> select C, 0, A B * (uitofp i1 C) -> select C, B, 0 select C, 0, A + select C, B, 0 -> select C, B, A These come up in code that has been hand-optimized from a select to a linear blend, on platforms where that may have mattered. We want to undo such changes with the following transform: A*(1 - uitofp i1 C) + B*(uitofp i1 C) -> select C, A, B git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181216 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -693,6 +693,12 @@ m_ZExt(const OpTy &Op) {
|
||||
return CastClass_match<OpTy, Instruction::ZExt>(Op);
|
||||
}
|
||||
|
||||
/// m_UIToFP
|
||||
template<typename OpTy>
|
||||
inline CastClass_match<OpTy, Instruction::UIToFP>
|
||||
m_UIToFp(const OpTy &Op) {
|
||||
return CastClass_match<OpTy, Instruction::UIToFP>(Op);
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Matchers for unary operators
|
||||
|
Reference in New Issue
Block a user