Even though https://bugs.llvm.org/show_bug.cgi?id=51615 appears to be introduced by D105390,
the fix lies here.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/lib/Target/X86/X86ISelLowering.cpp | ||
---|---|---|
5049 | Can you use normal and simple tests here? |
just call the test file pr51615.ll - you gain nothing by having such a cumbersome filename
llvm/lib/Target/X86/X86ISelLowering.cpp | ||
---|---|---|
5049 | We could, but i'm not sure we have to? |
llvm/lib/Target/X86/X86ISelLowering.cpp | ||
---|---|---|
5043–5046 | This comment doesn't read clearly to me. The comment on the test does, so copy that here? | |
5049 | We are already checking ISD::isNormalLoad() by calling MayFoldLoad() first, right? |
Deduplicate comments.
llvm/lib/Target/X86/X86ISelLowering.cpp | ||
---|---|---|
5049 | I'm vary to change that without a testcast. atomic load operand must have integer, pointer, or floating point type! <2 x double> %i = load atomic <2 x double>, <2 x double>* @g0 unordered, align 16 so i'm not sure if there is some thing bad wrt atomics. |
llvm/lib/Target/X86/X86ISelLowering.cpp | ||
---|---|---|
5047 | I'm not sure if the semantics on this are settled - what happens if the overall size matches, but the "shape" isn't the same? %i = load volatile <2 x float>, <2 x float>* @test5_id12345, align 16 %b = bitcast <2 x float> %i to <1 x double> %i1 = shufflevector <1 x double> %b, <1 x double> poison, <4 x i32> <i32 undef, i32 0, i32 undef, i32 0> |
llvm/lib/Target/X86/X86ISelLowering.cpp | ||
---|---|---|
5047 | I don't see why the "shape" would matter. it's either a single load of the same size or it's not.
|
llvm/lib/Target/X86/X86ISelLowering.cpp | ||
---|---|---|
5047 | It's that clause about changing types that raises the question. Ie, if it's not allowable to change from float to i32 for example, then is it also not allowable to change from <1 x double> to <1 x i64>? The restriction seems to be limited to IR for some reason, so maybe it is irrelevant here, but seems worth adding another test, so we have some marker for current behavior. |
This comment doesn't read clearly to me. The comment on the test does, so copy that here?