Call = callseq_start + CALL + callseq_end
(sign_extend_inreg(CopyFromReg(callseq_end X), X10), i32) ->(CopyFromReg(callseq_end X), X10)
Paths
| Differential D135514
[RISCV] If sign extended values that return from calls, remove sign extended node AbandonedPublic Authored by liaolucy on Oct 8 2022, 6:50 AM.
Details
Summary Call = callseq_start + CALL + callseq_end (sign_extend_inreg(CopyFromReg(callseq_end X), X10), i32) ->(CopyFromReg(callseq_end X), X10)
Diff Detail
Event TimelineHerald added subscribers: StephenFan, frasercrmck, luismarques and 20 others. · View Herald Transcript liaolucy retitled this revision from Add isel pattern for (setne/eq (sext_inreg GPR), 0) to remove sext_inreg to [RISCV] Add isel pattern for (setne/eq (sext_inreg GPR), 0) to remove sext_inreg.Oct 8 2022, 6:51 AM Herald added subscribers: sunshaoce, eopXD, VincentWu and 6 others. · View Herald TranscriptOct 8 2022, 6:51 AM Comment Actions This isn’t correct. For example if rs is 0x8000000000000000, it’s not 0. But sext_inreg of 0x8000000000000000 is 0. This revision now requires changes to proceed.Oct 8 2022, 10:08 AM liaolucy retitled this revision from [RISCV] Add isel pattern for (setne/eq (sext_inreg GPR), 0) to remove sext_inreg to [RISCV] If sign extended values that return from calls, remove sign extended node.Oct 17 2022, 8:36 PM liaolucy added inline comments.
This revision now requires changes to proceed.Oct 17 2022, 8:55 PM
Revision Contents
Diff 468403 llvm/lib/Target/RISCV/RISCVISelLowering.cpp
llvm/lib/Target/RISCV/RISCVSExtWRemoval.cpp
llvm/test/CodeGen/RISCV/atomic-signext.ll
llvm/test/CodeGen/RISCV/calling-conv-lp64.ll
llvm/test/CodeGen/RISCV/libcall-tail-calls.ll
llvm/test/CodeGen/RISCV/mul.ll
|
I do not know how to teach the pass.