Displaying 4 results from an estimated 4 matches for "m_mul".
Did you mean:
s_mul
2008 May 17
0
[LLVMdev] More info, was Help needed after hiatus
...; preds = %entry
> ret void
> }
BTW, It's usually better to file a bug for this sort of thing.
The issue is around InstructionCombining:2507:
// W*X + Y*Z --> W * (X+Z) iff W == Y
if (I.getType()->isIntOrIntVector()) {
Value *W, *X, *Y, *Z;
if (match(LHS, m_Mul(m_Value(W), m_Value(X))) &&
match(RHS, m_Mul(m_Value(Y), m_Value(Z)))) {
The issue starts with the lines:
add i32 %2, 2 ; <i32>:3 [#uses=1]
mul i32 %3, ptrtoint (i32* getelementptr (i32* null, i32 1) to
i32) ; <i32>:4 [#uses=1]
Rou...
2008 May 17
2
[LLVMdev] More info, was Help needed after hiatus
Hi,
I know my last question was very vague (i.e. "It stopped working, what
went wrong?"), so here is a little more concrete example:
If I run the optimizer (opt) on this code snippet with -std-compile-opts
the optimizer hangs.
; ModuleID = 'test.ubc'
target datalayout =
2015 Apr 15
2
[LLVMdev] Instruction combiner multiplication canonicalization
...*X;
271 Constant *C1;
272 if (match(Op0, m_OneUse(m_Add(m_Value(X), m_Constant(C1))))) {
273 Value *Mul = Builder->CreateMul(C1, Op1);
274 // Only go forward with the transform if C1*CI simplifies to a tidier
275 // constant.
276 if (!match(Mul, m_Mul(m_Value(), m_Value())))
277 return BinaryOperator::CreateAdd(Builder->CreateMul(X, Op1), Mul);
278 }
279 }
If my understanding is correct then I like propose below change here:
If input operation to canonicalization is guaranteed to not overflow then transformed operation...
2008 May 14
3
[LLVMdev] Help needed after hiatus
Hi,
I've restarted my Elsa/LLVM project after three months of having real
life intrude. I upgraded my LLVM source to the current trunk. I had to
make a few changes to my source, e.g. LLVMFoldingBuilder became
IRBuilder and several instances of "new" became "Create".
Now, a test case that previously succeeded fails. I run the following
script:
#!/bin/sh
if [ 1 -ne 0 ]