Index: llvm/include/llvm/CodeGen/TargetLowering.h =================================================================== --- llvm/include/llvm/CodeGen/TargetLowering.h +++ llvm/include/llvm/CodeGen/TargetLowering.h @@ -2256,6 +2256,7 @@ OpActions[(unsigned)VT.SimpleTy][Op] = Action; } } + void setOperationAction(ArrayRef Ops, ArrayRef VTs, LegalizeAction Action) { for (auto VT : VTs) @@ -2290,10 +2291,28 @@ /// /// NOTE: All indexed mode loads are initialized to Expand in /// TargetLowering.cpp + void setIndexedLoadAction(unsigned IdxMode, MVT VT, LegalizeAction Action) { setIndexedModeAction(IdxMode, VT, IMAB_Load, Action); } + void setIndexedLoadAction(ArrayRef IdxModes, MVT VT, + LegalizeAction Action) { + for (auto IdxMode : IdxModes) + setIndexedModeAction(IdxMode, VT, IMAB_Load, Action); + } + + void setIndexedLoadAction(unsigned IdxMode, ArrayRef VTs, + LegalizeAction Action) { + for (auto VT : VTs) + setIndexedModeAction(IdxMode, VT, IMAB_Load, Action); + } + + void setIndexedLoadAction(ArrayRef IdxModes, ArrayRef VTs, + LegalizeAction Action) { + for (auto VT : VTs) + setIndexedLoadAction(IdxModes, VT, Action); + } /// Indicate that the specified indexed store does or does not work with the /// specified type and indicate what to do about it. /// @@ -2303,6 +2322,24 @@ setIndexedModeAction(IdxMode, VT, IMAB_Store, Action); } + void setIndexedStoreAction(ArrayRef IdxModes, MVT VT, + LegalizeAction Action) { + for (auto IdxMode : IdxModes) + setIndexedModeAction(IdxMode, VT, IMAB_Store, Action); + } + + void setIndexedStoreAction(unsigned IdxMode, ArrayRef VTs, + LegalizeAction Action) { + for (auto VT : VTs) + setIndexedModeAction(IdxMode, VT, IMAB_Store, Action); + } + + void setIndexedStoreAction(ArrayRef IdxModes, ArrayRef VTs, + LegalizeAction Action) { + for (auto VT : VTs) + setIndexedStoreAction(IdxModes, VT, Action); + } + /// Indicate that the specified indexed masked load does or does not work with /// the specified type and indicate what to do about it. ///