[llvm-dev] Instruction selection bug for vector store with FixedStack
Alex Susu via llvm-dev
llvm-dev at lists.llvm.org
Fri Jul 29 19:14:14 PDT 2016
Hello.
Could you please help me solve the following LLC bug happening at instruction
selection time:
ISEL: Starting pattern match on root node: t172: ch = store<ST64[FixedStack6]>
t0, t6, FrameIndex:i64<6>, undef:i64
Initial Opcode index to 157
Skipped scope entry (due to false predicate) at index 162, continuing at 236
Match failed at index 241
Continuing at 263
LLVM ERROR: Cannot select: t172: ch = store<ST64[FixedStack6]> t0, t6,
FrameIndex:i64<6>, undef:i64
t6: v8i64,ch = CopyFromReg t0, Register:v8i64 %vreg19
t5: v8i64 = Register %vreg19
t171: i64 = FrameIndex<6>
t73: i64 = undef
In function: foo
I actually have difficulties in understanding in the Selection DAG what the
FixedStack operand means. Also, it is not really clear for me how to handle it in my back end.
Below follows and excerpt of the Selection DAG with the problem:
Optimized legalized selection DAG: BB#16 'foo:vector.body34'
SelectionDAG has 71 nodes:
t0: ch = EntryToken
t6: v8i64,ch = CopyFromReg t0, Register:v8i64 %vreg19
t142: i64,ch = CopyFromReg t0, Register:i64 %vreg18
t143: i64 = add t142, Constant:i64<8>
t172: ch = store<ST64[FixedStack6]> t0, t6, FrameIndex:i64<6>, undef:i64
t173: i64,ch = load<LD8[FixedStack6](align=64)> t172, FrameIndex:i64<6>,
undef:i64
...
t127: ch = store<ST8[%aPtr.addr74]> t105:1, t109, Constant:i64<0>,
undef:i64
t106: v8i64 = add t105, t79
t129: ch = store<ST64[inttoptr (i64 3 to <8 x
i64>*)](align=8)(alias.scope=<0x20c8ea0>)(noalias=<0x20c8a80>,<0x20cd700>)> t127, t106,
Constant:i64<3>, undef:i64
...
...
Thank you,
Alex
More information about the llvm-dev
mailing list