@@ -115,57 +115,14 @@ static LLVM::CallOp createDeviceFunctionCall(
115115 return callOp;
116116}
117117
118- static std::string getGenISATypeMangling (Type ty) {
118+ [[maybe_unused]] static std::string getGenISATypeMangling (Type ty) {
119119 if (auto vecTy = dyn_cast<VectorType>(ty))
120120 return " v" + std::to_string (vecTy.getNumElements ()) +
121121 getGenISATypeMangling (vecTy.getElementType ());
122122 return (ty.isInteger () ? " i" : " f" ) +
123123 std::to_string (ty.getIntOrFloatBitWidth ());
124124}
125125
126- static LLVM::CallOp
127- createGenISASubGroupReduce (TritonGEN::SubGroupReduceOp op, Value val,
128- ConversionPatternRewriter &rewriter) {
129- auto getKindVal = [](TritonGEN::ReduceKind kind) -> int {
130- switch (kind) {
131- case TritonGEN::ReduceKind::ADD:
132- return 0 ;
133- case TritonGEN::ReduceKind::MUL:
134- return 1 ;
135- case TritonGEN::ReduceKind::MIN:
136- return 2 ;
137- case TritonGEN::ReduceKind::MAX:
138- return 3 ;
139- case TritonGEN::ReduceKind::AND:
140- return 8 ;
141- case TritonGEN::ReduceKind::OR:
142- return 6 ;
143- case TritonGEN::ReduceKind::XOR:
144- return 7 ;
145- }
146- llvm_unreachable (" unsupported reduce kind" );
147- };
148-
149- Location loc = op.getLoc ();
150- auto kind =
151- rewriter.create <LLVM::ConstantOp>(loc, i8_ty, getKindVal (op.getKind ()));
152-
153- std::string funcName =
154- " llvm.genx.GenISA.WaveAll." + getGenISATypeMangling (val.getType ());
155- SmallVector<Type> argTypes = {val.getType (), i8_ty, i32_ty};
156- SmallVector<Value> args = {val, kind, i32_val (0 )};
157-
158- auto inaccessibleMemOnly = rewriter.getAttr <LLVM::MemoryEffectsAttr>(
159- /* other=*/ LLVM::ModRefInfo::NoModRef,
160- /* argMem=*/ LLVM::ModRefInfo::NoModRef,
161- /* inaccessibleMem=*/ LLVM::ModRefInfo::ModRef);
162- auto funcAttrs = convergentNoUnwindWillReturnAttrs;
163- funcAttrs.memEffectsAttr = inaccessibleMemOnly;
164-
165- return createDeviceFunctionCall (rewriter, funcName, val.getType (), argTypes,
166- args, {}, funcAttrs);
167- }
168-
169126static SmallVector<Attribute>
170127loadCacheControlToDecoration (Builder &builder, uint32_t operandNum,
171128 TritonGEN::LoadCacheControl orig) {
@@ -249,8 +206,9 @@ static bool isOCLBuiltinAvailable(TritonGEN::Matrix2DBlockLoadOp op) {
249206 return false ;
250207}
251208
252- static Value createGenISA2DBlockRead (TritonGEN::Matrix2DBlockLoadOp op,
253- ConversionPatternRewriter &rewriter) {
209+ [[maybe_unused]] static Value
210+ createGenISA2DBlockRead (TritonGEN::Matrix2DBlockLoadOp op,
211+ ConversionPatternRewriter &rewriter) {
254212 MLIRContext *ctx = rewriter.getContext ();
255213 VectorType resType = op.getRes ().getType ();
256214 Location loc = op->getLoc ();
@@ -399,55 +357,10 @@ createBlock2DReadWithAddressPayloadUpdate(TritonGEN::Matrix2DBlockLoadOp op,
399357 paramAttrs, funcAttrs);
400358 };
401359
402- auto createBlock2DReadGenISA = [&](Value ptr,
403- TritonGEN::Matrix2DBlockLoadOp op) {
404- assert (isa<LLVM::LLVMPointerType>(ptr.getType ()) &&
405- " Expecting a pointer type" );
406-
407- auto vecType = dyn_cast<VectorType>(resType);
408- assert (vecType && vecType.getShape ().size () == 1 &&
409- " Expecting a 1D vector" );
410-
411- std::string fnName = " llvm.genx.GenISA.LSC2DBlockReadAddrPayload." +
412- getGenISATypeMangling (vecType) + " .p0i8" ;
413-
414- Value zero = i32_val (0 );
415- SmallVector<Type> argTypes{ptr.getType (), i32_ty, i32_ty, i32_ty, i32_ty,
416- i32_ty, i32_ty, i1_ty, i1_ty, i32_ty};
417- SmallVector<Value> args{ptr,
418- zero, // x
419- zero, // y
420- i32_val (op.getElemSizeInBits ()),
421- i32_val (op.getTileWidth ()),
422- i32_val (op.getTileHeight ()),
423- i32_val (op.getVBlocks ()),
424- i1_val (op.getTranspose ()),
425- i1_val (op.getVnniTransform ()),
426- i32_val (4 ) /* cache*/ };
427-
428- // Function and parameters attributes.
429- std::array<std::pair<unsigned , mlir::StringRef>, 1 > paramAttrs{
430- std::make_pair (0 , LLVM::LLVMDialect::getNonNullAttrName ())};
431-
432- auto memAttr = rewriter.getAttr <LLVM::MemoryEffectsAttr>(
433- /* other=*/ LLVM::ModRefInfo::NoModRef,
434- /* argMem=*/ LLVM::ModRefInfo::Ref,
435- /* inaccessibleMem=*/ LLVM::ModRefInfo::NoModRef);
436- auto funcAttrs = noUnwindAttrs;
437- funcAttrs.memEffectsAttr = memAttr;
438-
439- return createDeviceFunctionCall (rewriter, fnName, resType, argTypes, args,
440- paramAttrs, funcAttrs);
441- };
442-
443360 Value ptr = createBlock2DAddressPayload (op);
444361 setBlock2DAddressPayload (ptr, op);
445362
446- // TODO: Remove GenISA lowering after PoC productization is completed.
447- char *env = std::getenv (" TRITONGEN_FORCE_GENISA" );
448- const bool useGenISA = env ? (bool )std::atoi (env) : false ;
449- return (useGenISA) ? createBlock2DReadGenISA (ptr, op)
450- : createBlock2DRead (ptr, op);
363+ return createBlock2DRead (ptr, op);
451364}
452365
453366static SmallVector<Attribute>
@@ -502,7 +415,7 @@ storeCacheControlToCacheControls(Builder &builder,
502415 return builder.getAttr <TritonGEN::DecorationCacheControlAttr>(decorations);
503416}
504417
505- static LLVM::CallOp
418+ [[maybe_unused]] static LLVM::CallOp
506419createGenISA2DBlockWrite (TritonGEN::Matrix2DBlockStoreOp op,
507420 ConversionPatternRewriter &rewriter) {
508421 MLIRContext *ctx = rewriter.getContext ();
@@ -550,7 +463,7 @@ createGenISA2DBlockWrite(TritonGEN::Matrix2DBlockStoreOp op,
550463 return call;
551464}
552465
553- static LLVM::CallOp
466+ [[maybe_unused]] static LLVM::CallOp
554467createGenISA2DBlockPrefetch (TritonGEN::Matrix2DBlockPrefetchOp op,
555468 ConversionPatternRewriter &rewriter) {
556469 MLIRContext *ctx = rewriter.getContext ();
@@ -783,13 +696,6 @@ struct TritonSubGroupReduceLowering
783696 SmallVector<Value> args{val};
784697 bool useCluster = (getSubgroupSize (op) != op.getSize ());
785698
786- if (tools::getBoolEnv (" TRITONGEN_FORCE_GENISA" ) && !useCluster) {
787- Value result = createGenISASubGroupReduce (op, val, rewriter).getResult ();
788- result = TritonSubGroupBase::truncate (op, result, origTy, rewriter);
789- rewriter.replaceOp (op, result);
790- return success ();
791- }
792-
793699 std::string fnName = " sub_group_" ;
794700 fnName += useCluster ? " clustered_" : " non_uniform_" ;
795701 fnName += " reduce_" + stringifyReduceKind (op.getKind ()).str ();
@@ -969,9 +875,8 @@ struct TritonMatrix2DBlockLoadLowering
969875 return success ();
970876 }
971877
972- // TODO: Remove GenISA lowering after PoC productization is completed.
973- if (tools::getBoolEnv (" TRITONGEN_FORCE_GENISA" ) ||
974- !isOCLBuiltinAvailable (op)) {
878+ if (!isOCLBuiltinAvailable (op)) {
879+ op.emitWarning (" OpenCL API not available for this operation" );
975880 rewriter.replaceOp (op, createGenISA2DBlockRead (op, rewriter));
976881 return success ();
977882 }
@@ -1036,12 +941,6 @@ struct TritonMatrix2DBlockStoreLowering
1036941 LogicalResult
1037942 matchAndRewrite (TritonGEN::Matrix2DBlockStoreOp op, OpAdaptor adaptor,
1038943 ConversionPatternRewriter &rewriter) const override {
1039- // TODO: Remove GenISA lowering after PoC productization is completed.
1040- if (tools::getBoolEnv (" TRITONGEN_FORCE_GENISA" )) {
1041- rewriter.replaceOp (op, createGenISA2DBlockWrite (op, rewriter));
1042- return success ();
1043- }
1044-
1045944 MLIRContext *ctx = rewriter.getContext ();
1046945 Location loc = op->getLoc ();
1047946
@@ -1104,13 +1003,6 @@ struct TritonMatrix2DBlockPrefetchLowering
11041003 LogicalResult
11051004 matchAndRewrite (TritonGEN::Matrix2DBlockPrefetchOp op, OpAdaptor adaptor,
11061005 ConversionPatternRewriter &rewriter) const override {
1107- // TODO: Remove GenISA lowering after PoC productization is completed.
1108- bool useGenISA = tools::getBoolEnv (" TRITONGEN_FORCE_GENISA" );
1109- if (useGenISA) {
1110- rewriter.replaceOp (op, createGenISA2DBlockPrefetch (op, rewriter));
1111- return success ();
1112- }
1113-
11141006 MLIRContext *ctx = rewriter.getContext ();
11151007 Location loc = op->getLoc ();
11161008 std::string fnName = " intel_sub_group_2d_block_prefetch_" ;
0 commit comments