[PATCH] D106139: [AMDGPU] Combine srl of add that intends to get the carry of the add as addcarry
Abinav Puthan Purayil via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 21 10:31:57 PDT 2021
abinavpp marked 2 inline comments as done.
abinavpp added inline comments.
================
Comment at: llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp:3285-3286
+
+ // Make sure that the users of `N0` is not expecting the zero-extended type
+ for (SDNode *U : N0->uses()) {
+ if (U == N)
----------------
arsenm wrote:
> I don't understand why you are looking at the uses, you probably should just skip this if !N0.hasOnEUse
The add I'm handling in https://github.com/RadeonOpenCompute/ROCm/issues/488 is used by a truncate, so we need to check for it to improve coverage. https://alive2.llvm.org/ce/z/Vv4DSr is what I'm trying to cover here.
================
Comment at: llvm/test/CodeGen/AMDGPU/combine-srl-add.ll:13
+ ret i64 %add.c.shr
+}
----------------
arsenm wrote:
> This could use a lot more tests, like making sure the number of bits in the shift match, and that the sources are zexts. Also what if tere are multiple uses of the add?
>
> Also should cover sub, and stress both vector and scalar versions. Does this also work with sext if the shift is ashr?
I would like this patch to just handle (srl (add (zext))) kinds. I'll improve the coverage for ashr, vector, sub etc. in different patches.
> like making sure the number of bits in the shift match, and that the sources are zexts. Also what if tere are multiple uses of the add?
You mean like adding test-cases that shows no transformation for unfavourable shift value, (srl (add (sext))) kinds?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D106139/new/
https://reviews.llvm.org/D106139
More information about the llvm-commits
mailing list