@@ -3884,90 +3884,65 @@ def int_nvvm_match_all_sync_i64p :
3884
3884
//
3885
3885
3886
3886
// WMMA.LOAD
3887
- class NVVM_WMMA_LD_ALSTS<string Abc, string Layout, string Space ,
3888
- string Type, LLVMType regty, int WithStride>
3887
+ class NVVM_WMMA_LD_ALSTS<string Abc, string Layout, string Type ,
3888
+ LLVMType regty, int WithStride>
3889
3889
: Intrinsic<!if(!eq(Abc#Type,"cf16"),
3890
3890
[regty, regty, regty, regty],
3891
3891
[regty, regty, regty, regty,
3892
3892
regty, regty, regty, regty]),
3893
- !if(WithStride, [llvm_ptr_ty , llvm_i32_ty], [llvm_ptr_ty ]),
3894
- [], // Properties must be set during instantiation.
3893
+ !if(WithStride, [llvm_anyptr_ty , llvm_i32_ty], [llvm_anyptr_ty ]),
3894
+ [IntrReadMem, IntrArgMemOnly, ReadOnly<0>, NoCapture<0>],
3895
3895
"llvm.nvvm.wmma.load."#Abc#".sync."#Layout#".m16n16k16"
3896
- #Space
3897
3896
#!if(WithStride,".stride","")
3898
3897
#"."#Type>;
3899
3898
3900
- multiclass NVVM_WMMA_LD_ALST<string Abc, string Layout, string Space,
3901
- string Type, LLVMType regty> {
3902
- def _stride: NVVM_WMMA_LD_ALSTS<Abc, Layout, Space, Type, regty, 1>;
3903
- def NAME : NVVM_WMMA_LD_ALSTS<Abc, Layout, Space, Type, regty, 0>;
3904
- }
3905
-
3906
- multiclass NVVM_WMMA_LD_ALT<string Abc, string Layout,
3907
- string Type, LLVMType regty> {
3908
- defm _global: NVVM_WMMA_LD_ALST<Abc, Layout, ".global", Type, regty>;
3909
- defm _shared: NVVM_WMMA_LD_ALST<Abc, Layout, ".shared", Type, regty>;
3910
- defm NAME: NVVM_WMMA_LD_ALST<Abc, Layout, "", Type, regty>;
3899
+ multiclass NVVM_WMMA_LD_ALT<string Abc, string Layout, string Type,
3900
+ LLVMType regty> {
3901
+ def _stride: NVVM_WMMA_LD_ALSTS<Abc, Layout, Type, regty, 1>;
3902
+ def NAME : NVVM_WMMA_LD_ALSTS<Abc, Layout, Type, regty, 0>;
3911
3903
}
3912
3904
3913
3905
multiclass NVVM_WMMA_LD_AT<string Abc, string Type, LLVMType regty> {
3914
3906
defm _row: NVVM_WMMA_LD_ALT<Abc, "row", Type, regty>;
3915
3907
defm _col: NVVM_WMMA_LD_ALT<Abc, "col", Type, regty>;
3916
3908
}
3917
3909
3918
- // For some reason ReadOnly<N> and NoCapture<N> confuses tblgen if they are
3919
- // passed to Intrinsic<> form inside of a multiclass. Setting them globally
3920
- // outside of the multiclass works.
3921
- let IntrProperties = [IntrReadMem, IntrArgMemOnly,
3922
- ReadOnly<0>, NoCapture<0>] in {
3923
- defm int_nvvm_wmma_load_a_f16: NVVM_WMMA_LD_AT<"a", "f16", llvm_v2f16_ty>;
3924
- defm int_nvvm_wmma_load_b_f16: NVVM_WMMA_LD_AT<"b", "f16", llvm_v2f16_ty>;
3925
- defm int_nvvm_wmma_load_c_f16: NVVM_WMMA_LD_AT<"c", "f16", llvm_v2f16_ty>;
3926
- defm int_nvvm_wmma_load_c_f32: NVVM_WMMA_LD_AT<"c", "f32", llvm_float_ty>;
3927
- }
3910
+ defm int_nvvm_wmma_load_a_f16: NVVM_WMMA_LD_AT<"a", "f16", llvm_v2f16_ty>;
3911
+ defm int_nvvm_wmma_load_b_f16: NVVM_WMMA_LD_AT<"b", "f16", llvm_v2f16_ty>;
3912
+ defm int_nvvm_wmma_load_c_f16: NVVM_WMMA_LD_AT<"c", "f16", llvm_v2f16_ty>;
3913
+ defm int_nvvm_wmma_load_c_f32: NVVM_WMMA_LD_AT<"c", "f32", llvm_float_ty>;
3928
3914
3929
3915
// WMMA.STORE.D
3930
- class NVVM_WMMA_STD_LSTS<string Layout, string Space,
3931
- string Type, LLVMType regty, int WithStride,
3916
+ class NVVM_WMMA_STD_LSTS<string Layout, string Type, LLVMType regty, int WithStride,
3932
3917
// This is only used to create a typed empty array we
3933
3918
// need to pass to !if below.
3934
3919
list<LLVMType>Empty=[]>
3935
3920
: Intrinsic<[],
3936
3921
!listconcat(
3937
- [llvm_ptr_ty ],
3922
+ [llvm_anyptr_ty ],
3938
3923
!if(!eq(Type,"f16"),
3939
3924
[regty, regty, regty, regty],
3940
3925
[regty, regty, regty, regty,
3941
3926
regty, regty, regty, regty]),
3942
3927
!if(WithStride, [llvm_i32_ty], Empty)),
3943
- [], // Properties must be set during instantiation.
3928
+ [IntrWriteMem, IntrArgMemOnly, WriteOnly<0>, NoCapture<0>],
3944
3929
"llvm.nvvm.wmma.store.d.sync."#Layout
3945
- #".m16n16k16"#Space
3930
+ #".m16n16k16"
3946
3931
#!if(WithStride,".stride","")
3947
3932
#"."#Type>;
3948
3933
3949
- multiclass NVVM_WMMA_STD_LST<string Layout, string Space,
3950
- string Type, LLVMType regty> {
3951
- def _stride: NVVM_WMMA_STD_LSTS<Layout, Space, Type, regty, 1>;
3952
- def NAME: NVVM_WMMA_STD_LSTS<Layout, Space, Type, regty, 0>;
3953
- }
3954
-
3955
3934
multiclass NVVM_WMMA_STD_LT<string Layout, string Type, LLVMType regty> {
3956
- defm _global: NVVM_WMMA_STD_LST<Layout, ".global", Type, regty>;
3957
- defm _shared: NVVM_WMMA_STD_LST<Layout, ".shared", Type, regty>;
3958
- defm NAME: NVVM_WMMA_STD_LST<Layout, "", Type, regty>;
3935
+ def _stride: NVVM_WMMA_STD_LSTS<Layout, Type, regty, 1>;
3936
+ def NAME: NVVM_WMMA_STD_LSTS<Layout, Type, regty, 0>;
3959
3937
}
3960
3938
3961
3939
multiclass NVVM_WMMA_STD_T<string Type, LLVMType regty> {
3962
3940
defm _row: NVVM_WMMA_STD_LT<"row", Type, regty>;
3963
3941
defm _col: NVVM_WMMA_STD_LT<"col", Type, regty>;
3964
3942
}
3965
3943
3966
- let IntrProperties = [IntrWriteMem, IntrArgMemOnly,
3967
- WriteOnly<0>, NoCapture<0>] in {
3968
- defm int_nvvm_wmma_store_d_f16: NVVM_WMMA_STD_T<"f16", llvm_v2f16_ty>;
3969
- defm int_nvvm_wmma_store_d_f32: NVVM_WMMA_STD_T<"f32", llvm_float_ty>;
3970
- }
3944
+ defm int_nvvm_wmma_store_d_f16: NVVM_WMMA_STD_T<"f16", llvm_v2f16_ty>;
3945
+ defm int_nvvm_wmma_store_d_f32: NVVM_WMMA_STD_T<"f32", llvm_float_ty>;
3971
3946
3972
3947
// WMMA.MMA
3973
3948
class NVVM_WMMA_MMA_ABDCS<string ALayout, string BLayout,
0 commit comments