diff --git a/flang/include/flang/Optimizer/Builder/IntrinsicCall.h b/flang/include/flang/Optimizer/Builder/IntrinsicCall.h index b15dd29d68f65..01801dbdaffca 100644 --- a/flang/include/flang/Optimizer/Builder/IntrinsicCall.h +++ b/flang/include/flang/Optimizer/Builder/IntrinsicCall.h @@ -241,7 +241,6 @@ struct IntrinsicLibrary { void genCFProcPointer(llvm::ArrayRef); fir::ExtendedValue genCFunLoc(mlir::Type, llvm::ArrayRef); fir::ExtendedValue genCLoc(mlir::Type, llvm::ArrayRef); - mlir::Value genClock64(mlir::Type, llvm::ArrayRef); template fir::ExtendedValue genCPtrCompare(mlir::Type, llvm::ArrayRef); diff --git a/flang/lib/Optimizer/Builder/IntrinsicCall.cpp b/flang/lib/Optimizer/Builder/IntrinsicCall.cpp index bfbc26e5e6c19..7aa5602d2bc84 100644 --- a/flang/lib/Optimizer/Builder/IntrinsicCall.cpp +++ b/flang/lib/Optimizer/Builder/IntrinsicCall.cpp @@ -386,7 +386,10 @@ static constexpr IntrinsicHandler handlers[]{ {{{"name", asAddr}, {"status", asAddr, handleDynamicOptional}}}, /*isElemental=*/false}, {"clock", &I::genNVVMTime, {}, /*isElemental=*/false}, - {"clock64", &I::genClock64, {}, /*isElemental=*/false}, + {"clock64", + &I::genNVVMTime, + {}, + /*isElemental=*/false}, {"cmplx", &I::genCmplx, {{{"x", asValue}, {"y", asValue, handleDynamicOptional}}}}, @@ -3565,16 +3568,6 @@ IntrinsicLibrary::genChdir(std::optional resultType, return {}; } -// CLOCK64 -mlir::Value IntrinsicLibrary::genClock64(mlir::Type resultType, - llvm::ArrayRef args) { - constexpr llvm::StringLiteral funcName = "llvm.nvvm.read.ptx.sreg.clock64"; - mlir::MLIRContext *context = builder.getContext(); - mlir::FunctionType ftype = mlir::FunctionType::get(context, {}, {resultType}); - auto funcOp = builder.createFunction(loc, funcName, ftype); - return builder.create(loc, funcOp, args).getResult(0); -} - // CMPLX mlir::Value IntrinsicLibrary::genCmplx(mlir::Type resultType, llvm::ArrayRef args) { @@ -7204,7 +7197,7 @@ IntrinsicLibrary::genNull(mlir::Type, llvm::ArrayRef args) { return fir::MutableBoxValue(boxStorage, mold->nonDeferredLenParams(), {}); } -// CLOCK, GLOBALTIMER +// CLOCK, CLOCK64, GLOBALTIMER template mlir::Value IntrinsicLibrary::genNVVMTime(mlir::Type resultType, llvm::ArrayRef args) { diff --git a/flang/test/Lower/CUDA/cuda-device-proc.cuf b/flang/test/Lower/CUDA/cuda-device-proc.cuf index 2d6f734670740..d5e614a83b354 100644 --- a/flang/test/Lower/CUDA/cuda-device-proc.cuf +++ b/flang/test/Lower/CUDA/cuda-device-proc.cuf @@ -48,7 +48,6 @@ attributes(global) subroutine devsub() smalltime = clock() time = clock64() - time = globalTimer() end @@ -87,7 +86,7 @@ end ! CHECK: %{{.*}} = llvm.atomicrmw udec_wrap %{{.*}}, %{{.*}} seq_cst : !llvm.ptr, i32 ! CHECK: %{{.*}} = nvvm.read.ptx.sreg.clock : i32 -! CHECK: fir.call @llvm.nvvm.read.ptx.sreg.clock64() +! CHECK: %{{.*}} = nvvm.read.ptx.sreg.clock64 : i64 ! CHECK: %{{.*}} = nvvm.read.ptx.sreg.globaltimer : i64 subroutine host1()