diff options
Diffstat (limited to 'llvm/lib/Target/AMDGPU/AMDGPUGISel.td')
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUGISel.td | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUGISel.td b/llvm/lib/Target/AMDGPU/AMDGPUGISel.td index f2be1ca44d34..d420aa02ac28 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUGISel.td +++ b/llvm/lib/Target/AMDGPU/AMDGPUGISel.td @@ -30,14 +30,14 @@ def gi_vop3mods : GIComplexOperandMatcher<s32, "selectVOP3Mods">, GIComplexPatternEquiv<VOP3Mods>; +def gi_vop3mods_nnan : + GIComplexOperandMatcher<s32, "selectVOP3Mods_nnan">, + GIComplexPatternEquiv<VOP3Mods_nnan>; + def gi_vop3omods : GIComplexOperandMatcher<s32, "selectVOP3OMods">, GIComplexPatternEquiv<VOP3OMods>; -def gi_vop3omods0clamp0omod : - GIComplexOperandMatcher<s32, "selectVOP3Mods0Clamp0OMod">, - GIComplexPatternEquiv<VOP3Mods0Clamp0OMod>; - def gi_vop3opselmods0 : GIComplexOperandMatcher<s32, "selectVOP3OpSelMods0">, GIComplexPatternEquiv<VOP3OpSelMods0>; @@ -117,6 +117,8 @@ def : GINodeEquiv<G_ATOMICRMW_UMAX, atomic_load_umax_glue>; def : GINodeEquiv<G_ATOMICRMW_FADD, atomic_load_fadd_glue>; def : GINodeEquiv<G_AMDGPU_FFBH_U32, AMDGPUffbh_u32>; +def : GINodeEquiv<G_AMDGPU_ATOMIC_CMPXCHG, AMDGPUatomic_cmp_swap>; + class GISelSop2Pat < SDPatternOperator node, @@ -206,3 +208,15 @@ foreach Ty = [i64, p0, p1, p4] in { def gi_as_i32timm : GICustomOperandRenderer<"renderTruncImm32">, GISDNodeXFormEquiv<as_i32timm>; + +def gi_as_i16timm : GICustomOperandRenderer<"renderTruncTImm">, + GISDNodeXFormEquiv<as_i16timm>; + +def gi_NegateImm : GICustomOperandRenderer<"renderNegateImm">, + GISDNodeXFormEquiv<NegateImm>; + +def gi_bitcast_fpimm_to_i32 : GICustomOperandRenderer<"renderBitcastImm">, + GISDNodeXFormEquiv<bitcast_fpimm_to_i32>; + +def gi_IMMPopCount : GICustomOperandRenderer<"renderPopcntImm">, + GISDNodeXFormEquiv<IMMPopCount>; |