These changes allow us to support sign-extending gather loads with the existing intrinsics (i.e. @llvm.aarch64.sve.ld1.gather.*).
Details
Details
Diff Detail
Diff Detail
Event Timeline
| llvm/lib/Target/AArch64/AArch64ISelLowering.cpp | ||
|---|---|---|
| 9954 | AArch64Subtarget *Subtarget isn't used by performSVEAndCombine, so you can remove this change.  | |
| 11937 | The condition Src.hasOneUse() is not in the SVEAndCombine, so you probably want to add one there as well.  | |
Comment Actions
- Apply suggestions from @sdesmalen (e.g. add !Src.hasOneUse() in performANDCombine)
 - Removed a bunch of setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::nxv2i64, Legal), which are not needed for this patch
 - Simplified performSignExtendInRegCombine
 - Added patterns for sext_inreg (required for the new tests vvvv)
 - Added tests that verify that the new DAG Combine rules are not used when the result of gather load has multiple uses
 
nit: Are these asserts necessary?