Details
Diff Detail
Event Timeline
lib/CodeGen/GlobalISel/LegalizerHelper.cpp | ||
---|---|---|
934 | This is the entire problem. This was only handling the 1-to-8 bit case. All the AMDGPU 8 or 16-bit stores use 32-bit source registers | |
946 | I don't think that's true? In this test case for example, in PromoteIntOp_STORE/PromoteIntRes_LOAD it decided to use the morally equivalent ISD::EXTLOAD extload type. define void @foo(i8 addrspace(1)* %in, i8 addrspace(1)* %out) { %val = load i8, i8 addrspace(1)* %in store i8 %val, i8 addrspace(1)* %out ret void } The high bits also won't matter for a truncating store |
lib/CodeGen/GlobalISel/LegalizerHelper.cpp | ||
---|---|---|
934 | Oh sorry, for some reason I thought this hunk was the before-diff not the *after*. | |
946 | So I was using a test case like this to check: define void @test(i12 %v, i12 *%ptr) { store i12 %v, i12* %ptr ret void } I get your point that in theory it should be semantically correct to do anyext. However I'd rather not we change the way i1s are handled. |
lib/CodeGen/GlobalISel/LegalizerHelper.cpp | ||
---|---|---|
946 | This is preserving how i1 is handled. It's using zext for i1, and anyext for anything else. I don't think any other non-byte sizes are special cased though |
lib/CodeGen/GlobalISel/LegalizerHelper.cpp | ||
---|---|---|
946 | Yes, can you remove the comment about i1s before the code then. |
Why is this being changed?