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