Displaying 3 results from an estimated 3 matches for "m_fdiv".
2019 Dec 31
3
Any significance for m_OneUse in (X / Y) / Z => X / (Y * Z) ??
Dear All,
The InstCombine pass performs the following transformation.
Z / (X / Y) => (Y * Z) / X
This is performed only when operand Op1 ( (X/Y) in this case) has only one
use in future. The code snippet is shown below.
if (match(Op1, m_OneUse(m_FDiv(m_Value(X), m_Value(Y)))) &&
(!isa<Constant>(Y) || !isa<Constant>(Op0))) {
// Z / (X / Y) => (Y * Z) / X
Value *YZ = Builder.CreateFMulFMF(Y, Op0, &I);
return BinaryOperator::CreateFDivFMF(YZ, X, &I);
}
It would be great if someone expla...
2020 Jan 03
3
Any significance for m_OneUse in (X / Y) / Z => X / (Y * Z) ??
...tCombine pass performs the following transformation.
>>
>> Z / (X / Y) => (Y * Z) / X
>>
>> This is performed only when operand Op1 ( (X/Y) in this case) has only
>> one use in future. The code snippet is shown below.
>>
>> if (match(Op1, m_OneUse(m_FDiv(m_Value(X), m_Value(Y)))) &&
>> (!isa<Constant>(Y) || !isa<Constant>(Op0))) {
>> // Z / (X / Y) => (Y * Z) / X
>> Value *YZ = Builder.CreateFMulFMF(Y, Op0, &I);
>> return BinaryOperator::CreateFDivFMF(YZ, X, &I);
>&...
2020 Jan 06
2
Any significance for m_OneUse in (X / Y) / Z => X / (Y * Z) ??
...;>>>
>>>> Z / (X / Y) => (Y * Z) / X
>>>>
>>>> This is performed only when operand Op1 ( (X/Y) in this case) has only
>>>> one use in future. The code snippet is shown below.
>>>>
>>>> if (match(Op1, m_OneUse(m_FDiv(m_Value(X), m_Value(Y)))) &&
>>>> (!isa<Constant>(Y) || !isa<Constant>(Op0))) {
>>>> // Z / (X / Y) => (Y * Z) / X
>>>> Value *YZ = Builder.CreateFMulFMF(Y, Op0, &I);
>>>> return BinaryOperator::Cre...