This replaces the A32 NEON vqadds, vqaddu, vqsubs and vqsubu intrinsics with the target independent sadd_sat, uadd_sat, ssub_sat and usub_sat. This helps generate vqadds from standard IR nodes, which might be produced from the vectoriser. The old variants are removed in the process.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/test/CodeGen/ARM/addsubo-legalization.ll | ||
---|---|---|
88 | Nit, just curious why this one is unaffected. Looking at the changes below, I was perhaps expecting similar changes here. |
llvm/test/CodeGen/ARM/addsubo-legalization.ll | ||
---|---|---|
88 | Good question. It looks like the default expansion for SADD/SUBO can go via a SADD/SUBSAT, but the UADD/SUBO prefers to go via ADD/SUBCARRY. We could add expansion for UADDO to UADDSAT, but I think it's best not to do that here. |
llvm/test/CodeGen/ARM/addsubo-legalization.ll | ||
---|---|---|
88 | Cheers, agreed, LGTM |
Comment Actions
I was about to commit this but as its removing old intrinsics it deserves some update code. I've added that now along with a test.
Nit, just curious why this one is unaffected. Looking at the changes below, I was perhaps expecting similar changes here.