summaryrefslogtreecommitdiff
path: root/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.h
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.h')
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.h b/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.h
index bddfb8dd1913..7243d75aa830 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.h
+++ b/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.h
@@ -15,6 +15,7 @@
namespace llvm {
+class LLT;
class MachineRegisterInfo;
class MachineInstr;
class GCNSubtarget;
@@ -26,6 +27,9 @@ using MachineUniformityInfo = GenericUniformityInfo<MachineSSAContext>;
namespace AMDGPU {
+/// \returns true if \p Ty is a pointer type with size \p Width.
+bool isAnyPtr(LLT Ty, unsigned Width);
+
// IDs used to build predicate for RegBankLegalizeRule. Predicate can have one
// or more IDs and each represents a check for 'uniform or divergent' + LLT or
// just LLT on register operand.
@@ -39,16 +43,19 @@ enum UniformityLLTOpPredicateID {
S16,
S32,
S64,
+ S128,
UniS1,
UniS16,
UniS32,
UniS64,
+ UniS128,
DivS1,
DivS16,
DivS32,
DivS64,
+ DivS128,
// pointers
P0,
@@ -56,18 +63,27 @@ enum UniformityLLTOpPredicateID {
P3,
P4,
P5,
+ Ptr32,
+ Ptr64,
+ Ptr128,
UniP0,
UniP1,
UniP3,
UniP4,
UniP5,
+ UniPtr32,
+ UniPtr64,
+ UniPtr128,
DivP0,
DivP1,
DivP3,
DivP4,
DivP5,
+ DivPtr32,
+ DivPtr64,
+ DivPtr128,
// vectors
V2S16,
@@ -117,10 +133,14 @@ enum RegBankLLTMappingApplyID {
Sgpr16,
Sgpr32,
Sgpr64,
+ Sgpr128,
SgprP1,
SgprP3,
SgprP4,
SgprP5,
+ SgprPtr32,
+ SgprPtr64,
+ SgprPtr128,
SgprV2S16,
SgprV4S32,
SgprV2S32,
@@ -135,11 +155,15 @@ enum RegBankLLTMappingApplyID {
Vgpr16,
Vgpr32,
Vgpr64,
+ Vgpr128,
VgprP0,
VgprP1,
VgprP3,
VgprP4,
VgprP5,
+ VgprPtr32,
+ VgprPtr64,
+ VgprPtr128,
VgprV2S16,
VgprV2S32,
VgprB32,