@@ -273,6 +273,10 @@ static constexpr IntrinsicHandler handlers[]{
273273 &I::genAny,
274274 {{{" mask" , asAddr}, {" dim" , asValue}}},
275275 /* isElemental=*/ false },
276+ {" any_sync" ,
277+ &I::genVoteAnySync,
278+ {{{" mask" , asValue}, {" pred" , asValue}}},
279+ /* isElemental=*/ false },
276280 {" asind" , &I::genAsind},
277281 {" associated" ,
278282 &I::genAssociated,
@@ -335,6 +339,10 @@ static constexpr IntrinsicHandler handlers[]{
335339 {" atomicsubi" , &I::genAtomicSub, {{{" a" , asAddr}, {" v" , asValue}}}, false },
336340 {" atomicsubl" , &I::genAtomicSub, {{{" a" , asAddr}, {" v" , asValue}}}, false },
337341 {" atomicxori" , &I::genAtomicXor, {{{" a" , asAddr}, {" v" , asValue}}}, false },
342+ {" ballot_sync" ,
343+ &I::genVoteBallotSync,
344+ {{{" mask" , asValue}, {" pred" , asValue}}},
345+ /* isElemental=*/ false },
338346 {" bessel_jn" ,
339347 &I::genBesselJn,
340348 {{{" n1" , asValue}, {" n2" , asValue}, {" x" , asValue}}},
@@ -6499,12 +6507,9 @@ IntrinsicLibrary::genMatchAllSync(mlir::Type resultType,
64996507 return value;
65006508}
65016509
6502- // ALL_SYNC
6503- mlir::Value IntrinsicLibrary::genVoteAllSync (mlir::Type resultType,
6504- llvm::ArrayRef<mlir::Value> args) {
6505- assert (args.size () == 2 );
6506-
6507- llvm::StringRef funcName = " llvm.nvvm.vote.all.sync" ;
6510+ static mlir::Value genVoteSync (fir::FirOpBuilder &builder, mlir::Location loc,
6511+ llvm::StringRef funcName,
6512+ llvm::ArrayRef<mlir::Value> args) {
65086513 mlir::MLIRContext *context = builder.getContext ();
65096514 mlir::Type i32Ty = builder.getI32Type ();
65106515 mlir::FunctionType ftype =
@@ -6514,6 +6519,28 @@ mlir::Value IntrinsicLibrary::genVoteAllSync(mlir::Type resultType,
65146519 return builder.create <fir::CallOp>(loc, funcOp, args).getResult (0 );
65156520}
65166521
6522+ // ALL_SYNC
6523+ mlir::Value IntrinsicLibrary::genVoteAllSync (mlir::Type resultType,
6524+ llvm::ArrayRef<mlir::Value> args) {
6525+ assert (args.size () == 2 );
6526+ return genVoteSync (builder, loc, " llvm.nvvm.vote.all.sync" , args);
6527+ }
6528+
6529+ // ANY_SYNC
6530+ mlir::Value IntrinsicLibrary::genVoteAnySync (mlir::Type resultType,
6531+ llvm::ArrayRef<mlir::Value> args) {
6532+ assert (args.size () == 2 );
6533+ return genVoteSync (builder, loc, " llvm.nvvm.vote.any.sync" , args);
6534+ }
6535+
6536+ // BALLOT_SYNC
6537+ mlir::Value
6538+ IntrinsicLibrary::genVoteBallotSync (mlir::Type resultType,
6539+ llvm::ArrayRef<mlir::Value> args) {
6540+ assert (args.size () == 2 );
6541+ return genVoteSync (builder, loc, " llvm.nvvm.vote.ballot.sync" , args);
6542+ }
6543+
65176544// MATCH_ANY_SYNC
65186545mlir::Value
65196546IntrinsicLibrary::genMatchAnySync (mlir::Type resultType,
0 commit comments