[llvm-dev] Using llc -disablg-cgp to fix instruction selection (store) error
Alex Susu via llvm-dev
llvm-dev at lists.llvm.org
Wed Mar 8 00:32:31 PST 2017
Hello.
I want to report a bug I encountered and the quick fix I found.
Basically I was getting the following rather strange instruction selection error for
a program using vector LLVM IR instructions when giving llc -O1 (but not for -O0):
ISEL: Starting pattern match on root node: t8965: ch = store<ST256[FixedStack0]>
t0, t1068, FrameIndex:i64<0>, 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: t8965: ch = store<ST256[FixedStack0]> t0, t1068,
FrameIndex:i64<0>, undef:i64
t1068: v128i16 = add t9412, t9540
t9412: v128i16 = insert_vector_elt t9411, t5182, Constant:i64<127>
t9411: v128i16 = insert_vector_elt t9410, t5184, Constant:i64<126>
t9410: v128i16 = insert_vector_elt t9409, t5186, Constant:i64<125>
t9409: v128i16 = insert_vector_elt t9408, t5188, Constant:i64<124>
t9408: v128i16 = insert_vector_elt t9407, t5190, Constant:i64<123>
t9407: v128i16 = insert_vector_elt t9406, t5192, Constant:i64<122>
t9406: v128i16 = insert_vector_elt t9405, t5194, Constant:i64<121>
t9405: v128i16 = insert_vector_elt t9404, t5196, Constant:i64<120>
Note: I saw also that my vector loads and stores (gathers and scatters, to be more
exact) are treated differently: LD256 is broken into several LD2 instructions; ST256 has
FrameIndex / FixedStack0 attributes now (for llc -O0 I think it does not).
I had the inspiration to examine the standard output of llc around a message "CGP:
Found ...", which was something new from llc -O0. This message is generated by method
CodeGenPrepare::optimizeMemoryInst(), which "is used to optimize both load/store and
inline asms with memory operands."
So I gave llc -O1 -disable-cgp to Disable Codegen Prepare and I got NO more error at
llc -O1.
Any comment on this solved issue is appreciated.
Best regards,
Alex
More information about the llvm-dev
mailing list