[PATCH] D129352: [CodeGen] Limit building time for CodeGenPrepare
LuoYuanke via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 31 02:48:16 PDT 2022
LuoYuanke added inline comments.
================
Comment at: llvm/lib/CodeGen/CodeGenPrepare.cpp:7103
+ // So we put the operands defs' BBs into FreshBBs to do optmization.
+ for (unsigned I = 0; I < NI->getNumOperands(); ++I) {
+ auto *OpDef = dyn_cast<Instruction>(NI->getOperand(I));
----------------
xiangzhangllvm wrote:
> xiangzhangllvm wrote:
> > LuoYuanke wrote:
> > > xiangzhangllvm wrote:
> > > > LuoYuanke wrote:
> > > > > The instruction is cloned. Why the def of its operand need to be sinked?
> > > > When we copy an Instruction (to a new place) to do optimization, means we updated an instruction. This instruction's operand defs may have new opportunity to sink to the optimized new instruction.
> > > Here we just copy the instruction. We know it is sinked when it is erased in line 7135.
> > Let me try give an example soon.
> I find an ARM case about it, it not about sink, it about copy 2 times:
>
> **1st time**: copy insertelement from entry to vector.body
> ```
> entry:
> ...
> 1 %l0 = trunc i16 %x to i8
> 2 %l1 = insertelement <8 x i8> undef, i8 %l0, i32 0
> ...
> 3 br label %vector.body
>
> vector.body: ; preds = %vector.body, %entry
> ...
> 4 %0 = insertelement <8 x i8> undef, i8 %l0, i32 0 // copy from line 2
> 5 %1 = shufflevector <8 x i8> %0, <8 x i8> undef, <8 x i32> zeroinitializer
> 6 %l9 = mul <8 x i8> %1, %l8
> ```
>
> **2nd time**, copy insertelement's operand trunc
>
> ```
> ...
> 1 %l0 = trunc i16 %x to i8
> 2 %l1 = insertelement <8 x i8> undef, i8 %l0, i32 0
> ...
> 3 br label %vector.body
>
> vector.body: ; preds = %vector.body, %entry
> ...
> %0 = trunc i16 %x to i8 // 2nd copy optimization
>
> %1 = insertelement <8 x i8> undef, i8 %0, i32 0 // use 2nd copy
> %2 = shufflevector <8 x i8> %1, <8 x i8> undef, <8 x i32> zeroinitializer
> %l9 = mul <8 x i8> %2, %l8
>
> ```
Is the `insertelement` in entry BB erased for the first time?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D129352/new/
https://reviews.llvm.org/D129352
More information about the llvm-commits
mailing list