/*! * \file tl/op/builtin.cc * \brief Builtin intrinsics. * */ #include "builtin.h" #include #include #include #include "../target/cuda.h" #include "../target/utils.h" namespace tvm { namespace tl { TVM_REGISTER_PASS_CONFIG_OPTION(kDisableTMALower, Bool); #define TIR_DEFINE_TL_BUILTIN(OpName) \ const Op &OpName() { \ static const Op &op = Op::Get("tl." #OpName); \ return op; \ } \ TVM_REGISTER_OP("tl." #OpName) \ .set_attr("TScriptPrinterName", #OpName) TIR_DEFINE_TL_BUILTIN(CreateListofMBarrierOp) .set_num_inputs(-1) .set_attr("TCallEffectKind", Integer(CallEffectKind::kOpaque)); TIR_DEFINE_TL_BUILTIN(CreateTMADescriptorOp) .set_num_inputs(-1) .set_attr("TCallEffectKind", Integer(CallEffectKind::kPure)); TIR_DEFINE_TL_BUILTIN(CreateTMAIm2ColDescriptorOp) .set_num_inputs(-1) .set_attr("TCallEffectKind", Integer(CallEffectKind::kPure)); TIR_DEFINE_TL_BUILTIN(GetMBarrierOp) .set_num_inputs(1) .set_attr("TCallEffectKind", Integer(CallEffectKind::kPure)); TIR_DEFINE_TL_BUILTIN(TMALoadOp).set_num_inputs(-1).set_attr( "TCallEffectKind", Integer(CallEffectKind::kOpaque)); TIR_DEFINE_TL_BUILTIN(TMALoadIm2ColOp) .set_num_inputs(-1) .set_attr("TCallEffectKind", Integer(CallEffectKind::kOpaque)); TIR_DEFINE_TL_BUILTIN(TMAStoreOp) .set_num_inputs(-1) .set_attr("TCallEffectKind", Integer(CallEffectKind::kOpaque)); TIR_DEFINE_TL_BUILTIN(MBarrierWaitParity) .set_num_inputs(2) .set_attr("TCallEffectKind", Integer(CallEffectKind::kOpaque)); TIR_DEFINE_TL_BUILTIN(MBarrierExpectTX) .set_num_inputs(2) .set_attr("TCallEffectKind", Integer(CallEffectKind::kOpaque)); TIR_DEFINE_TL_BUILTIN(LDMatrixOp) .set_num_inputs(4) .set_attr("TCallEffectKind", Integer(CallEffectKind::kOpaque)); TIR_DEFINE_TL_BUILTIN(STMatrixOp) .set_num_inputs(-1) .set_attr("TCallEffectKind", Integer(CallEffectKind::kOpaque)); TIR_DEFINE_TL_BUILTIN(SyncThreadsPartialOp) .set_num_inputs(1) .set_attr("TCallEffectKind", Integer(CallEffectKind::kOpaque)); TIR_DEFINE_TL_BUILTIN(FenceProxyAsyncOp) .set_num_inputs(0) .set_attr("TCallEffectKind", Integer(CallEffectKind::kOpaque)); TIR_DEFINE_TL_BUILTIN(SetMaxNReg) .set_num_inputs(2) .set_attr("TCallEffectKind", Integer(CallEffectKind::kOpaque)); TIR_DEFINE_TL_BUILTIN(WaitWgmma).set_num_inputs(1).set_attr( "TCallEffectKind", Integer(CallEffectKind::kOpaque)); TIR_DEFINE_TL_BUILTIN(PackB16Op).set_num_inputs(2).set_attr( "TCallEffectKind", Integer(CallEffectKind::kPure)); } // namespace tl } // namespace tvm