Instruction select G_SADDE, G_UADDE, G_SSUBE and G_USUBE for AArch64.
Fix the issue: https://github.com/llvm/llvm-project/issues/59407
Paths
| Differential D153165
Select `G_SADDE`, `G_UADDE`, `G_SSUBE` and `G_USUBE` for AArch64 Needs RevisionPublic Authored by niwinanto on Jun 16 2023, 12:56 PM.
Details
Summary Instruction select G_SADDE, G_UADDE, G_SSUBE and G_USUBE for AArch64. Fix the issue: https://github.com/llvm/llvm-project/issues/59407
Diff Detail
Unit TestsFailed Event TimelineComment Actions I fixed these same issues here https://reviews.llvm.org/D153164 2 minutes earlier. I do generate better code though, because I generate less instructions for carry-in setting and optimize these instructions away whenever possible. For >O0 I generate identical code to SelectionDag. I also have higher test coverage. Comment Actions
Ohh cool. Insane coincidence. My plan was to support missing instructions, other wise it can cause internal compiler crashes. I did not touch the optimization, hence less optimized code is expected. Comment Actions
Insane indeed! By internal compiler crashes do you mean fallbacks? If so I generally don't class them as crashes (although certainly it's great to fix them). Thanks for this work anyway, I'll review the other patch from @tobias-stadler This revision now requires changes to proceed.Aug 23 2023, 6:50 PM Comment Actions
Yes, Its done https://reviews.llvm.org/D153164 here.
Revision Contents
Diff 532267 llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-lse2.ll
llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-lse2_lse128.ll
llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-outline_atomics.ll
llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-rcpc.ll
llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-rcpc3.ll
llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-v8_1a.ll
llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-v8a.ll
|