Lines Matching refs:ShVal1
78 auto matchFunnelShift = [](Value *V, Value *&ShVal0, Value *&ShVal1,
82 // fshl(ShVal0, ShVal1, ShAmt)
83 // == (ShVal0 << ShAmt) | (ShVal1 >> (Width -ShAmt))
86 m_LShr(m_Value(ShVal1),
91 // fshr(ShVal0, ShVal1, ShAmt)
92 // == (ShVal0 >> ShAmt) | (ShVal1 << (Width - ShAmt))
96 m_LShr(m_Value(ShVal1), m_Deferred(ShAmt)))))) {
106 // phi [ fshl(ShVal0, ShVal1, ShAmt), FunnelBB ], [ ShVal0, GuardBB ]
107 // phi [ fshr(ShVal0, ShVal1, ShAmt), FunnelBB ], [ ShVal1, GuardBB ]
111 Value *ShVal0, *ShVal1, *ShAmt;
112 Intrinsic::ID IID = matchFunnelShift(P0, ShVal0, ShVal1, ShAmt);
115 (IID == Intrinsic::fshr && ShVal1 != P1)) {
116 IID = matchFunnelShift(P1, ShVal0, ShVal1, ShAmt);
119 (IID == Intrinsic::fshr && ShVal1 != P0))
135 if (!DT.dominates(ShVal0, TermI) || !DT.dominates(ShVal1, TermI))
149 if (ShVal0 == ShVal1)
157 if (ShVal0 != ShVal1) {
158 if (IsFshl && !llvm::isGuaranteedNotToBePoison(ShVal1))
159 ShVal1 = Builder.CreateFreeze(ShVal1);
170 // %shr = lshr i32 %ShVal1, %sub
177 // llvm.fshl.i32(i32 %ShVal0, i32 %ShVal1, i32 %ShAmt)
179 Phi.replaceAllUsesWith(Builder.CreateCall(F, {ShVal0, ShVal1, ShAmt}));