@@ -799,18 +799,13 @@ class AMDGPUDimNoSampleProfile<string opmod,
799799
800800class AMDGPUDimAtomicProfile<string opmod,
801801 AMDGPUDimProps dim,
802- list<AMDGPUArg> dataargs> : AMDGPUDimProfile<opmod, dim> {
803- let RetTypes = [llvm_anyint_ty];
802+ list<AMDGPUArg> dataargs,
803+ LLVMType rettype> : AMDGPUDimProfile<opmod, dim> {
804+ let RetTypes = [rettype];
804805 let DataArgs = dataargs;
805806 let IsAtomic = true;
806807}
807808
808- class AMDGPUDimAtomicFloatProfile<string opmod, AMDGPUDimProps dim,
809- list<AMDGPUArg> dataargs>
810- : AMDGPUDimAtomicProfile<opmod, dim, dataargs> {
811- let RetTypes = [llvm_anyfloat_ty];
812- }
813-
814809class AMDGPUDimGetResInfoProfile<AMDGPUDimProps dim>
815810 : AMDGPUDimProfile<"GET_RESINFO", dim> {
816811 let RetTypes = [llvm_anyfloat_ty];
@@ -1023,26 +1018,28 @@ defset list<AMDGPUImageDimIntrinsic> AMDGPUImageDimIntrinsics = {
10231018//////////////////////////////////////////////////////////////////////////
10241019defset list<AMDGPUImageDimIntrinsic> AMDGPUImageDimAtomicIntrinsics = {
10251020 multiclass AMDGPUImageDimAtomicX<string opmod, list<AMDGPUArg> dataargs,
1026- int isFloat = 0 > {
1021+ LLVMType rettype = llvm_anyint_ty > {
10271022 foreach dim = AMDGPUDims.All in {
1028- def !strconcat(NAME, "_", dim.Name): AMDGPUImageDimIntrinsic<
1029- !if (isFloat, AMDGPUDimAtomicFloatProfile<opmod, dim, dataargs>,
1030- AMDGPUDimAtomicProfile<opmod, dim, dataargs>),
1031- [], [SDNPMemOperand]>;
1023+ def !strconcat(NAME, "_", dim.Name):
1024+ AMDGPUImageDimIntrinsic<AMDGPUDimAtomicProfile<opmod, dim, dataargs, rettype>,
1025+ [], [SDNPMemOperand]>;
10321026 }
10331027 }
10341028
1035- multiclass AMDGPUImageDimAtomic<string opmod, int isFloat = 0 > {
1029+ multiclass AMDGPUImageDimAtomic<string opmod, LLVMType rettype = llvm_anyint_ty > {
10361030 defm ""
1037- : AMDGPUImageDimAtomicX<opmod, [AMDGPUArg<LLVMMatchType<0>, "vdata">],
1038- isFloat>;
1031+ : AMDGPUImageDimAtomicX<opmod, [AMDGPUArg<LLVMMatchType<0>, "vdata">], rettype>;
10391032 }
10401033
10411034 multiclass AMDGPUImageDimFloatAtomic<string opmod> {
1042- defm "" : AMDGPUImageDimAtomic<opmod, 1 /*isFloat*/>;
1035+ defm "" : AMDGPUImageDimAtomic<opmod, llvm_anyfloat_ty>;
1036+ }
1037+
1038+ multiclass AMDGPUImageDimAnyAtomic<string opmod> {
1039+ defm "" : AMDGPUImageDimAtomic<opmod, llvm_any_ty>;
10431040 }
10441041
1045- defm int_amdgcn_image_atomic_swap : AMDGPUImageDimAtomic <"ATOMIC_SWAP">;
1042+ defm int_amdgcn_image_atomic_swap : AMDGPUImageDimAnyAtomic <"ATOMIC_SWAP">;
10461043 defm int_amdgcn_image_atomic_add : AMDGPUImageDimAtomic<"ATOMIC_ADD">;
10471044 defm int_amdgcn_image_atomic_sub : AMDGPUImageDimAtomic<"ATOMIC_SUB">;
10481045 defm int_amdgcn_image_atomic_smin : AMDGPUImageDimAtomic<"ATOMIC_SMIN">;
0 commit comments