@@ -5103,8 +5103,8 @@ let Predicates = [hasSM<90>, hasPTX<78>] in {
51035103def EXIT : NullaryInst<"exit", int_nvvm_exit>;
51045104
51055105// Tcgen05 intrinsics
5106- let isConvergent = true, Predicates = [hasTcgen05Instructions] in {
5107-
5106+ let isConvergent = true in {
5107+ let Predicates = [callSubtarget<"hasTcgen05InstSupport">] in {
51085108multiclass TCGEN05_ALLOC_INTR<string AS, string num, Intrinsic Intr> {
51095109 def "" : BasicNVPTXInst<(outs),
51105110 (ins ADDR:$dst, B32:$ncols),
@@ -5156,15 +5156,6 @@ defm TCGEN05_COMMIT_CG2 : TCGEN05_COMMIT_INTR<"", "2">;
51565156defm TCGEN05_COMMIT_S64_CG1 : TCGEN05_COMMIT_INTR<"shared", "1">;
51575157defm TCGEN05_COMMIT_S64_CG2 : TCGEN05_COMMIT_INTR<"shared", "2">;
51585158
5159- multiclass TCGEN05_SHIFT_INTR<string num, Intrinsic Intr> {
5160- def "" : BasicNVPTXInst<(outs),
5161- (ins ADDR:$tmem_addr),
5162- "tcgen05.shift.cta_group::" # num # ".down",
5163- [(Intr addr:$tmem_addr)]>;
5164- }
5165- defm TCGEN05_SHIFT_CG1: TCGEN05_SHIFT_INTR<"1", int_nvvm_tcgen05_shift_down_cg1>;
5166- defm TCGEN05_SHIFT_CG2: TCGEN05_SHIFT_INTR<"2", int_nvvm_tcgen05_shift_down_cg2>;
5167-
51685159multiclass TCGEN05_CP_INTR<string shape, string src_fmt, string mc = ""> {
51695160 defvar dst_fmt = !if(!eq(src_fmt, ""), "", ".b8x16");
51705161 defvar fmt_asm = StrJoin<".", [dst_fmt, src_fmt]>.ret;
@@ -5195,9 +5186,22 @@ foreach src_fmt = ["", "b6x16_p32", "b4x16_p64"] in {
51955186 defm TCGEN05_CP_64x128_2 # src_fmt : TCGEN05_CP_INTR<"64x128b", src_fmt, "warpx2::01_23">;
51965187 defm TCGEN05_CP_32x128 # src_fmt : TCGEN05_CP_INTR<"32x128b", src_fmt, "warpx4">;
51975188}
5189+ } // Predicates
5190+
5191+ let Predicates = [callSubtarget<"hasTcgen05ShiftSupport">] in {
5192+ multiclass TCGEN05_SHIFT_INTR<string num, Intrinsic Intr> {
5193+ def "" : BasicNVPTXInst<(outs),
5194+ (ins ADDR:$tmem_addr),
5195+ "tcgen05.shift.cta_group::" # num # ".down",
5196+ [(Intr addr:$tmem_addr)]>;
5197+ }
5198+ defm TCGEN05_SHIFT_CG1: TCGEN05_SHIFT_INTR<"1", int_nvvm_tcgen05_shift_down_cg1>;
5199+ defm TCGEN05_SHIFT_CG2: TCGEN05_SHIFT_INTR<"2", int_nvvm_tcgen05_shift_down_cg2>;
5200+ } // Predicates
5201+
51985202} // isConvergent
51995203
5200- let hasSideEffects = 1, Predicates = [hasTcgen05Instructions ] in {
5204+ let hasSideEffects = 1, Predicates = [callSubtarget<"hasTcgen05InstSupport"> ] in {
52015205
52025206 def tcgen05_fence_before_thread_sync: NullaryInst<
52035207 "tcgen05.fence::before_thread_sync", int_nvvm_tcgen05_fence_before_thread_sync>;
@@ -5231,8 +5235,7 @@ class TCGEN05_LDST_REGINFO<int Veclen> {
52315235//
52325236
52335237class TCGEN05_LD_INST<string Shape, int Num, bit Pack> :
5234- NVPTXInst<(outs), (ins), "?", []>,
5235- Requires<[hasTcgen05Instructions]> {
5238+ NVPTXInst<(outs), (ins), "?", []> {
52365239
52375240 TCGEN05_LDST_REGINFO Info = TCGEN05_LDST_REGINFO<
52385241 NVVM_TCGEN05_LDST_ACCESS_SIZE<Shape, Num>.veclen>;
@@ -5256,8 +5259,7 @@ class TCGEN05_LD_INST<string Shape, int Num, bit Pack> :
52565259//
52575260
52585261class TCGEN05_ST_INST<string Shape, int Num, bit Unpack> :
5259- NVPTXInst<(outs), (ins), "?", []>,
5260- Requires<[hasTcgen05Instructions]> {
5262+ NVPTXInst<(outs), (ins), "?", []> {
52615263
52625264 TCGEN05_LDST_REGINFO Info = TCGEN05_LDST_REGINFO<
52635265 NVVM_TCGEN05_LDST_ACCESS_SIZE<Shape, Num>.veclen>;
0 commit comments