@@ -3996,12 +3996,6 @@ class AdjointGenerator : public llvm::InstVisitor<AdjointGenerator> {
39963996 (void )vdiff;
39973997
39983998 switch (ID ) {
3999- #if LLVM_VERSION_MAJOR <= 20
4000- case Intrinsic::nvvm_barrier0:
4001- #else
4002- case Intrinsic::nvvm_barrier_cta_sync_aligned_all:
4003- case Intrinsic::nvvm_barrier_cta_sync_aligned_count:
4004- #endif
40053999#if LLVM_VERSION_MAJOR < 22
40064000 case Intrinsic::nvvm_barrier0_popc:
40074001 case Intrinsic::nvvm_barrier0_and:
@@ -4013,6 +4007,32 @@ class AdjointGenerator : public llvm::InstVisitor<AdjointGenerator> {
40134007 case Intrinsic::nvvm_barrier_cta_red_or_aligned_count:
40144008 case Intrinsic::nvvm_barrier_cta_red_popc_aligned_all:
40154009 case Intrinsic::nvvm_barrier_cta_red_popc_aligned_count:
4010+ #endif
4011+ {
4012+ SmallVector<Value *, 1 > args = {};
4013+ #if LLVM_VERSION_MAJOR > 20
4014+ auto cal = cast<CallInst>(Builder2.CreateCall (
4015+ getIntrinsicDeclaration (
4016+ M, Intrinsic::nvvm_barrier_cta_sync_aligned_all),
4017+ args));
4018+ cal->setCallingConv (getIntrinsicDeclaration (
4019+ M, Intrinsic::nvvm_barrier_cta_sync_aligned_all)
4020+ ->getCallingConv ());
4021+ #else
4022+ auto cal = cast<CallInst>(Builder2.CreateCall (
4023+ getIntrinsicDeclaration (M, Intrinsic::nvvm_barrier0), args));
4024+ cal->setCallingConv (getIntrinsicDeclaration (M, Intrinsic::nvvm_barrier0)
4025+ ->getCallingConv ());
4026+ #endif
4027+ cal->setDebugLoc (gutils->getNewFromOriginal (I.getDebugLoc ()));
4028+ return false ;
4029+ }
4030+
4031+ #if LLVM_VERSION_MAJOR <= 20
4032+ case Intrinsic::nvvm_barrier0:
4033+ #else
4034+ case Intrinsic::nvvm_barrier_cta_sync_aligned_all:
4035+ case Intrinsic::nvvm_barrier_cta_sync_aligned_count:
40164036#endif
40174037 case Intrinsic::amdgcn_s_barrier:
40184038 case Intrinsic::nvvm_membar_cta:
0 commit comments