@@ -3015,28 +3015,11 @@ def NVVM_GriddepcontrolLaunchDependentsOp
3015
3015
// NVVM Mapa Op
3016
3016
//===----------------------------------------------------------------------===//
3017
3017
3018
- // Helper predicates for address space checking
3019
- def IsGenericAddressSpace : CPred<"llvm::cast<LLVM::LLVMPointerType>($_self).getAddressSpace() == 0">;
3020
- def IsSharedAddressSpace : CPred<"llvm::cast<LLVM::LLVMPointerType>($_self).getAddressSpace() == 3">;
3021
- def IsSharedClusterAddressSpace : CPred<"llvm::cast<LLVM::LLVMPointerType>($_self).getAddressSpace() == 7">;
3022
-
3023
- class NVVM_MapaASCheck<string inputArg, string resultArg> :
3024
- PredOpTrait<"Valid address-space check(or mapping) for mapa Op",
3025
- Or<[
3026
- // Generic -> Generic
3027
- And<[
3028
- SubstLeaves<"$_self", "$" # inputArg # ".getType()", IsGenericAddressSpace>,
3029
- SubstLeaves<"$_self", "$" # resultArg # ".getType()", IsGenericAddressSpace>
3030
- ]>,
3031
- // Shared -> SharedCluster
3032
- And<[
3033
- SubstLeaves<"$_self", "$" # inputArg # ".getType()", IsSharedAddressSpace>,
3034
- SubstLeaves<"$_self", "$" # resultArg # ".getType()", IsSharedClusterAddressSpace>
3035
- ]>
3036
- ]>>;
3037
-
3038
- def NVVM_MapaOp: NVVM_Op<"mapa",
3039
- [NVVM_MapaASCheck<"a", "res">, NVVMRequiresSM<90>]> {
3018
+ def NVVM_MapaASCheck : PredOpTrait<"Valid address-space check(or mapping) for mapa Op",
3019
+ Or<[InputMatchesTypes<["a", "res"], [LLVM_PointerShared, LLVM_PointerSharedCluster]>.predicate,
3020
+ InputMatchesTypes<["a", "res"], [LLVM_PointerGeneric, LLVM_PointerGeneric]>.predicate]>>;
3021
+
3022
+ def NVVM_MapaOp: NVVM_Op<"mapa", [NVVM_MapaASCheck, NVVMRequiresSM<90>]> {
3040
3023
let results = (outs AnyTypeOf<[LLVM_PointerGeneric, LLVM_PointerSharedCluster]>:$res);
3041
3024
let arguments = (ins AnyTypeOf<[LLVM_PointerGeneric, LLVM_PointerShared]>:$a, I32:$b);
3042
3025
0 commit comments