@@ -799,18 +799,13 @@ class AMDGPUDimNoSampleProfile<string opmod,
799
799
800
800
class AMDGPUDimAtomicProfile<string opmod,
801
801
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];
804
805
let DataArgs = dataargs;
805
806
let IsAtomic = true;
806
807
}
807
808
808
- class AMDGPUDimAtomicFloatProfile<string opmod, AMDGPUDimProps dim,
809
- list<AMDGPUArg> dataargs>
810
- : AMDGPUDimAtomicProfile<opmod, dim, dataargs> {
811
- let RetTypes = [llvm_anyfloat_ty];
812
- }
813
-
814
809
class AMDGPUDimGetResInfoProfile<AMDGPUDimProps dim>
815
810
: AMDGPUDimProfile<"GET_RESINFO", dim> {
816
811
let RetTypes = [llvm_anyfloat_ty];
@@ -1023,26 +1018,28 @@ defset list<AMDGPUImageDimIntrinsic> AMDGPUImageDimIntrinsics = {
1023
1018
//////////////////////////////////////////////////////////////////////////
1024
1019
defset list<AMDGPUImageDimIntrinsic> AMDGPUImageDimAtomicIntrinsics = {
1025
1020
multiclass AMDGPUImageDimAtomicX<string opmod, list<AMDGPUArg> dataargs,
1026
- int isFloat = 0 > {
1021
+ LLVMType rettype = llvm_anyint_ty > {
1027
1022
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]>;
1032
1026
}
1033
1027
}
1034
1028
1035
- multiclass AMDGPUImageDimAtomic<string opmod, int isFloat = 0 > {
1029
+ multiclass AMDGPUImageDimAtomic<string opmod, LLVMType rettype = llvm_anyint_ty > {
1036
1030
defm ""
1037
- : AMDGPUImageDimAtomicX<opmod, [AMDGPUArg<LLVMMatchType<0>, "vdata">],
1038
- isFloat>;
1031
+ : AMDGPUImageDimAtomicX<opmod, [AMDGPUArg<LLVMMatchType<0>, "vdata">], rettype>;
1039
1032
}
1040
1033
1041
1034
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>;
1043
1040
}
1044
1041
1045
- defm int_amdgcn_image_atomic_swap : AMDGPUImageDimAtomic <"ATOMIC_SWAP">;
1042
+ defm int_amdgcn_image_atomic_swap : AMDGPUImageDimAnyAtomic <"ATOMIC_SWAP">;
1046
1043
defm int_amdgcn_image_atomic_add : AMDGPUImageDimAtomic<"ATOMIC_ADD">;
1047
1044
defm int_amdgcn_image_atomic_sub : AMDGPUImageDimAtomic<"ATOMIC_SUB">;
1048
1045
defm int_amdgcn_image_atomic_smin : AMDGPUImageDimAtomic<"ATOMIC_SMIN">;
0 commit comments