[PATCH] D60459: SILoadStoreOptimizer pass mischedules s_add,s_addc with interfering s_lshl
Ron Lieberman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 9 06:16:41 PDT 2019
ronlieb created this revision.
ronlieb added reviewers: rampitec, arsenm.
Herald added subscribers: llvm-commits, jdoerfert, jfb, nhaehnle, wdng, jvesely.
Herald added a project: LLVM.
A 64 bit add implimented with two 32 bit add instructions uses the
$SCC register for carry. The S_LSHL_B32 instruction write the $SCC reg
Pass was incorrectly transforming
S_LSHL_B32
S_ADD_U32
S_ADDC_U32
into
S_ADD_U32
S_LSHL_B32
S_ADDC_U32
SILoadStoreOptimizer constructs a list of instructions to move and did
not take into account the dependent S_ADD_u32 instruction when it chose
to move the S_ADDC_U32 instruction.
Repository:
rL LLVM
https://reviews.llvm.org/D60459
Files:
lib/Target/AMDGPU/SILoadStoreOptimizer.cpp
test/CodeGen/AMDGPU/scc-add-lshl-addc.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D60459.194302.patch
Type: text/x-patch
Size: 10560 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190409/eea3c957/attachment.bin>
More information about the llvm-commits
mailing list