[llvm] 98eda5d - Revert "[HIP][LLVM][Opt] Add LLVM support for `hipstdpar`" in order to address build breakage.
Alex Voicu via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 10 04:16:20 PDT 2023
Author: Alex Voicu
Date: 2023-10-10T12:16:10+01:00
New Revision: 98eda5dda71a513b6ad7c8e0205093780289b36c
URL: https://github.com/llvm/llvm-project/commit/98eda5dda71a513b6ad7c8e0205093780289b36c
DIFF: https://github.com/llvm/llvm-project/commit/98eda5dda71a513b6ad7c8e0205093780289b36c.diff
LOG: Revert "[HIP][LLVM][Opt] Add LLVM support for `hipstdpar`" in order to address build breakage.
This reverts commit 9b98ebb0eb43b005921926a622177f10e13b1ac6.
Added:
Modified:
llvm/lib/Passes/CMakeLists.txt
llvm/lib/Passes/PassBuilder.cpp
llvm/lib/Passes/PassBuilderPipelines.cpp
llvm/lib/Passes/PassRegistry.def
llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
llvm/lib/Transforms/CMakeLists.txt
Removed:
llvm/include/llvm/Transforms/HipStdPar/HipStdPar.h
llvm/lib/Transforms/HipStdPar/CMakeLists.txt
llvm/lib/Transforms/HipStdPar/HipStdPar.cpp
llvm/test/Transforms/HipStdPar/accelerator-code-selection.ll
llvm/test/Transforms/HipStdPar/allocation-interposition.ll
llvm/test/Transforms/HipStdPar/allocation-no-interposition.ll
llvm/test/Transforms/HipStdPar/unsupported-asm.ll
llvm/test/Transforms/HipStdPar/unsupported-builtins.ll
llvm/test/Transforms/HipStdPar/unsupported-thread-local-direct-use.ll
llvm/test/Transforms/HipStdPar/unsupported-thread-local-indirect-use.ll
################################################################################
diff --git a/llvm/include/llvm/Transforms/HipStdPar/HipStdPar.h b/llvm/include/llvm/Transforms/HipStdPar/HipStdPar.h
deleted file mode 100644
index 9df093d8d5d5977..000000000000000
--- a/llvm/include/llvm/Transforms/HipStdPar/HipStdPar.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//===--------- HipStdPar.h - Standard Parallelism passes --------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-/// \file
-///
-/// AcceleratorCodeSelection - Identify all functions reachable from a kernel,
-/// removing those that are unreachable.
-///
-/// AllocationInterposition - Forward calls to allocation / deallocation
-// functions to runtime provided equivalents that allocate memory that is
-// accessible for an accelerator
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_TRANSFORMS_HIPSTDPAR_HIPSTDPAR_H
-#define LLVM_TRANSFORMS_HIPSTDPAR_HIPSTDPAR_H
-
-#include "llvm/IR/PassManager.h"
-
-namespace llvm {
-
-class Module;
-class ModuleAnaysisManager;
-
-class HipStdParAcceleratorCodeSelectionPass
- : public PassInfoMixin<HipStdParAcceleratorCodeSelectionPass> {
-public:
- PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
-
- static bool isRequired() { return true; }
-};
-
-class HipStdParAllocationInterpositionPass
- : public PassInfoMixin<HipStdParAllocationInterpositionPass> {
-public:
- PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
-
- static bool isRequired() { return true; }
-};
-
-} // namespace llvm
-
-#endif // LLVM_TRANSFORMS_HIPSTDPAR_HIPSTDPAR_H
diff --git a/llvm/lib/Passes/CMakeLists.txt b/llvm/lib/Passes/CMakeLists.txt
index e42edfe94969745..576d0f3ff442983 100644
--- a/llvm/lib/Passes/CMakeLists.txt
+++ b/llvm/lib/Passes/CMakeLists.txt
@@ -19,7 +19,6 @@ add_llvm_component_library(LLVMPasses
CodeGen
Core
Coroutines
- HipStdPar
IPO
InstCombine
IRPrinter
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp
index fde759026e5d780..985ff88139323c6 100644
--- a/llvm/lib/Passes/PassBuilder.cpp
+++ b/llvm/lib/Passes/PassBuilder.cpp
@@ -94,7 +94,6 @@
#include "llvm/Transforms/Coroutines/CoroEarly.h"
#include "llvm/Transforms/Coroutines/CoroElide.h"
#include "llvm/Transforms/Coroutines/CoroSplit.h"
-#include "llvm/Transforms/HipStdPar/HipStdPar.h"
#include "llvm/Transforms/IPO/AlwaysInliner.h"
#include "llvm/Transforms/IPO/Annotation2Metadata.h"
#include "llvm/Transforms/IPO/ArgumentPromotion.h"
diff --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp
index 9e37488eeb8e8c8..78e0e6353056343 100644
--- a/llvm/lib/Passes/PassBuilderPipelines.cpp
+++ b/llvm/lib/Passes/PassBuilderPipelines.cpp
@@ -37,7 +37,6 @@
#include "llvm/Transforms/Coroutines/CoroEarly.h"
#include "llvm/Transforms/Coroutines/CoroElide.h"
#include "llvm/Transforms/Coroutines/CoroSplit.h"
-#include "llvm/Transforms/HipStdPar/HipStdPar.h"
#include "llvm/Transforms/IPO/AlwaysInliner.h"
#include "llvm/Transforms/IPO/Annotation2Metadata.h"
#include "llvm/Transforms/IPO/ArgumentPromotion.h"
diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def
index 91782d661ddd7b7..df9f14920f29161 100644
--- a/llvm/lib/Passes/PassRegistry.def
+++ b/llvm/lib/Passes/PassRegistry.def
@@ -64,9 +64,6 @@ MODULE_PASS("forceattrs", ForceFunctionAttrsPass())
MODULE_PASS("function-import", FunctionImportPass())
MODULE_PASS("globalopt", GlobalOptPass())
MODULE_PASS("globalsplit", GlobalSplitPass())
-MODULE_PASS("hipstdpar-select-accelerator-code",
- HipStdParAcceleratorCodeSelectionPass())
-MODULE_PASS("hipstdpar-interpose-alloc", HipStdParAllocationInterpositionPass())
MODULE_PASS("hotcoldsplit", HotColdSplittingPass())
MODULE_PASS("inferattrs", InferFunctionAttrsPass())
MODULE_PASS("inliner-wrapper", ModuleInlinerWrapperPass())
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
index dc7321cd5de9fcd..b7c1f03459cb640 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
@@ -50,7 +50,6 @@
#include "llvm/InitializePasses.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Passes/PassBuilder.h"
-#include "llvm/Transforms/HipStdPar/HipStdPar.h"
#include "llvm/Transforms/IPO.h"
#include "llvm/Transforms/IPO/AlwaysInliner.h"
#include "llvm/Transforms/IPO/GlobalDCE.h"
@@ -349,11 +348,6 @@ static cl::opt<bool> EnableRewritePartialRegUses(
cl::desc("Enable rewrite partial reg uses pass"), cl::init(false),
cl::Hidden);
-static cl::opt<bool> EnableHipStdPar(
- "amdgpu-enable-hipstdpar",
- cl::desc("Enable HIP Standard Parallelism Offload support"), cl::init(false),
- cl::Hidden);
-
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAMDGPUTarget() {
// Register the target
RegisterTargetMachine<R600TargetMachine> X(getTheR600Target());
@@ -705,8 +699,6 @@ void AMDGPUTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
if (EnableLibCallSimplify && Level != OptimizationLevel::O0)
FPM.addPass(AMDGPUSimplifyLibCallsPass());
PM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM)));
- if (EnableHipStdPar)
- PM.addPass(HipStdParAcceleratorCodeSelectionPass());
});
PB.registerPipelineEarlySimplificationEPCallback(
diff --git a/llvm/lib/Transforms/CMakeLists.txt b/llvm/lib/Transforms/CMakeLists.txt
index 84a7e34147d0843..dda5f6de11e326a 100644
--- a/llvm/lib/Transforms/CMakeLists.txt
+++ b/llvm/lib/Transforms/CMakeLists.txt
@@ -9,4 +9,3 @@ add_subdirectory(Hello)
add_subdirectory(ObjCARC)
add_subdirectory(Coroutines)
add_subdirectory(CFGuard)
-add_subdirectory(HipStdPar)
diff --git a/llvm/lib/Transforms/HipStdPar/CMakeLists.txt b/llvm/lib/Transforms/HipStdPar/CMakeLists.txt
deleted file mode 100644
index b2ae3d18ecb3107..000000000000000
--- a/llvm/lib/Transforms/HipStdPar/CMakeLists.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-add_llvm_component_library(LLVMHipStdPar
- HipStdPar.cpp
-
- ADDITIONAL_HEADER_DIRS
- ${LLVM_MAIN_INCLUDE_DIR}/llvm/Transforms/HipStdPar
-
- DEPENDS
- intrinsics_gen
-
- LINK_COMPONENTS
- Core
- Support
- TransformUtils)
diff --git a/llvm/lib/Transforms/HipStdPar/HipStdPar.cpp b/llvm/lib/Transforms/HipStdPar/HipStdPar.cpp
deleted file mode 100644
index fb7cba9edbdb8b2..000000000000000
--- a/llvm/lib/Transforms/HipStdPar/HipStdPar.cpp
+++ /dev/null
@@ -1,312 +0,0 @@
-//===----- HipStdPar.cpp - HIP C++ Standard Parallelism Support Passes ----===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-// This file implements two passes that enable HIP C++ Standard Parallelism
-// Support:
-//
-// 1. AcceleratorCodeSelection (required): Given that only algorithms are
-// accelerated, and that the accelerated implementation exists in the form of
-// a compute kernel, we assume that only the kernel, and all functions
-// reachable from it, constitute code that the user expects the accelerator
-// to execute. Thus, we identify the set of all functions reachable from
-// kernels, and then remove all unreachable ones. This last part is necessary
-// because it is possible for code that the user did not expect to execute on
-// an accelerator to contain constructs that cannot be handled by the target
-// BE, which cannot be provably demonstrated to be dead code in general, and
-// thus can lead to mis-compilation. The degenerate case of this is when a
-// Module contains no kernels (the parent TU had no algorithm invocations fit
-// for acceleration), which we handle by completely emptying said module.
-// **NOTE**: The above does not handle indirectly reachable functions i.e.
-// it is possible to obtain a case where the target of an indirect
-// call is otherwise unreachable and thus is removed; this
-// restriction is aligned with the current `-hipstdpar` limitations
-// and will be relaxed in the future.
-//
-// 2. AllocationInterposition (required only when on-demand paging is
-// unsupported): Some accelerators or operating systems might not support
-// transparent on-demand paging. Thus, they would only be able to access
-// memory that is allocated by an accelerator-aware mechanism. For such cases
-// the user can opt into enabling allocation / deallocation interposition,
-// whereby we replace calls to known allocation / deallocation functions with
-// calls to runtime implemented equivalents that forward the requests to
-// accelerator-aware interfaces. We also support freeing system allocated
-// memory that ends up in one of the runtime equivalents, since this can
-// happen if e.g. a library that was compiled without interposition returns
-// an allocation that can be validly passed to `free`.
-//===----------------------------------------------------------------------===//
-
-#include "llvm/Transforms/HipStdPar/HipStdPar.h"
-
-#include "llvm/ADT/SmallPtrSet.h"
-#include "llvm/ADT/SmallVector.h"
-#include "llvm/ADT/STLExtras.h"
-#include "llvm/Analysis/CallGraph.h"
-#include "llvm/Analysis/OptimizationRemarkEmitter.h"
-#include "llvm/IR/Constants.h"
-#include "llvm/IR/DebugInfoMetadata.h"
-#include "llvm/IR/Function.h"
-#include "llvm/IR/Module.h"
-#include "llvm/Transforms/Utils/ModuleUtils.h"
-
-#include <cassert>
-#include <string>
-#include <utility>
-
-using namespace llvm;
-
-template<typename T>
-static inline void eraseFromModule(T &ToErase) {
- ToErase.replaceAllUsesWith(PoisonValue::get(ToErase.getType()));
- ToErase.eraseFromParent();
-}
-
-static inline bool checkIfSupported(GlobalVariable &G) {
- if (!G.isThreadLocal())
- return true;
-
- G.dropDroppableUses();
-
- if (!G.isConstantUsed())
- return true;
-
- std::string W;
- raw_string_ostream OS(W);
-
- OS << "Accelerator does not support the thread_local variable "
- << G.getName();
-
- Instruction *I = nullptr;
- SmallVector<User *> Tmp(G.user_begin(), G.user_end());
- SmallPtrSet<User *, 5> Visited;
- do {
- auto U = std::move(Tmp.back());
- Tmp.pop_back();
-
- if (Visited.contains(U))
- continue;
-
- if (isa<Instruction>(U))
- I = cast<Instruction>(U);
- else
- Tmp.insert(Tmp.end(), U->user_begin(), U->user_end());
-
- Visited.insert(U);
- } while (!I && !Tmp.empty());
-
- assert(I && "thread_local global should have at least one non-constant use.");
-
- G.getContext().diagnose(
- DiagnosticInfoUnsupported(*I->getParent()->getParent(), W,
- I->getDebugLoc(), DS_Error));
-
- return false;
-}
-
-static inline void clearModule(Module &M) { // TODO: simplify.
- while (!M.functions().empty())
- eraseFromModule(*M.begin());
- while (!M.globals().empty())
- eraseFromModule(*M.globals().begin());
- while (!M.aliases().empty())
- eraseFromModule(*M.aliases().begin());
- while (!M.ifuncs().empty())
- eraseFromModule(*M.ifuncs().begin());
-}
-
-static inline void maybeHandleGlobals(Module &M) {
- unsigned GlobAS = M.getDataLayout().getDefaultGlobalsAddressSpace();
- for (auto &&G : M.globals()) { // TODO: should we handle these in the FE?
- if (!checkIfSupported(G))
- return clearModule(M);
-
- if (G.isThreadLocal())
- continue;
- if (G.isConstant())
- continue;
- if (G.getAddressSpace() != GlobAS)
- continue;
- if (G.getLinkage() != GlobalVariable::ExternalLinkage)
- continue;
-
- G.setLinkage(GlobalVariable::ExternalWeakLinkage);
- G.setExternallyInitialized(true);
- }
-}
-
-template<unsigned N>
-static inline void removeUnreachableFunctions(
- const SmallPtrSet<const Function *, N>& Reachable, Module &M) {
- removeFromUsedLists(M, [&](Constant *C) {
- if (auto F = dyn_cast<Function>(C))
- return !Reachable.contains(F);
-
- return false;
- });
-
- SmallVector<std::reference_wrapper<Function>> ToRemove;
- copy_if(M, std::back_inserter(ToRemove), [&](auto &&F) {
- return !F.isIntrinsic() && !Reachable.contains(&F);
- });
-
- for_each(ToRemove, eraseFromModule<Function>);
-}
-
-static inline bool isAcceleratorExecutionRoot(const Function *F) {
- if (!F)
- return false;
-
- return F->getCallingConv() == CallingConv::AMDGPU_KERNEL;
-}
-
-static inline bool checkIfSupported(const Function *F, const CallBase *CB) {
- const auto Dx = F->getName().rfind("__hipstdpar_unsupported");
-
- if (Dx == StringRef::npos)
- return true;
-
- const auto N = F->getName().substr(0, Dx);
-
- std::string W;
- raw_string_ostream OS(W);
-
- if (N == "__ASM")
- OS << "Accelerator does not support the ASM block:\n"
- << cast<ConstantDataArray>(CB->getArgOperand(0))->getAsCString();
- else
- OS << "Accelerator does not support the " << N << " function.";
-
- auto Caller = CB->getParent()->getParent();
-
- Caller->getContext().diagnose(
- DiagnosticInfoUnsupported(*Caller, W, CB->getDebugLoc(), DS_Error));
-
- return false;
-}
-
-PreservedAnalyses
- HipStdParAcceleratorCodeSelectionPass::run(Module &M,
- ModuleAnalysisManager &MAM) {
- auto &CGA = MAM.getResult<CallGraphAnalysis>(M);
-
- SmallPtrSet<const Function *, 32> Reachable;
- for (auto &&CGN : CGA) {
- if (!isAcceleratorExecutionRoot(CGN.first))
- continue;
-
- Reachable.insert(CGN.first);
-
- SmallVector<const Function *> Tmp({CGN.first});
- do {
- auto F = std::move(Tmp.back());
- Tmp.pop_back();
-
- for (auto &&N : *CGA[F]) {
- if (!N.second)
- continue;
- if (!N.second->getFunction())
- continue;
- if (Reachable.contains(N.second->getFunction()))
- continue;
-
- if (!checkIfSupported(N.second->getFunction(),
- dyn_cast<CallBase>(*N.first)))
- return PreservedAnalyses::none();
-
- Reachable.insert(N.second->getFunction());
- Tmp.push_back(N.second->getFunction());
- }
- } while (!std::empty(Tmp));
- }
-
- if (std::empty(Reachable))
- clearModule(M);
- else
- removeUnreachableFunctions(Reachable, M);
-
- maybeHandleGlobals(M);
-
- return PreservedAnalyses::none();
-}
-
-static constexpr std::pair<StringLiteral, StringLiteral> ReplaceMap[]{
- {"aligned_alloc", "__hipstdpar_aligned_alloc"},
- {"calloc", "__hipstdpar_calloc"},
- {"free", "__hipstdpar_free"},
- {"malloc", "__hipstdpar_malloc"},
- {"memalign", "__hipstdpar_aligned_alloc"},
- {"posix_memalign", "__hipstdpar_posix_aligned_alloc"},
- {"realloc", "__hipstdpar_realloc"},
- {"reallocarray", "__hipstdpar_realloc_array"},
- {"_ZdaPv", "__hipstdpar_operator_delete"},
- {"_ZdaPvm", "__hipstdpar_operator_delete_sized"},
- {"_ZdaPvSt11align_val_t", "__hipstdpar_operator_delete_aligned"},
- {"_ZdaPvmSt11align_val_t", "__hipstdpar_operator_delete_aligned_sized"},
- {"_ZdlPv", "__hipstdpar_operator_delete"},
- {"_ZdlPvm", "__hipstdpar_operator_delete_sized"},
- {"_ZdlPvSt11align_val_t", "__hipstdpar_operator_delete_aligned"},
- {"_ZdlPvmSt11align_val_t", "__hipstdpar_operator_delete_aligned_sized"},
- {"_Znam", "__hipstdpar_operator_new"},
- {"_ZnamRKSt9nothrow_t", "__hipstdpar_operator_new_nothrow"},
- {"_ZnamSt11align_val_t", "__hipstdpar_operator_new_aligned"},
- {"_ZnamSt11align_val_tRKSt9nothrow_t",
- "__hipstdpar_operator_new_aligned_nothrow"},
-
- {"_Znwm", "__hipstdpar_operator_new"},
- {"_ZnwmRKSt9nothrow_t", "__hipstdpar_operator_new_nothrow"},
- {"_ZnwmSt11align_val_t", "__hipstdpar_operator_new_aligned"},
- {"_ZnwmSt11align_val_tRKSt9nothrow_t",
- "__hipstdpar_operator_new_aligned_nothrow"},
- {"__builtin_calloc", "__hipstdpar_calloc"},
- {"__builtin_free", "__hipstdpar_free"},
- {"__builtin_malloc", "__hipstdpar_malloc"},
- {"__builtin_operator_delete", "__hipstdpar_operator_delete"},
- {"__builtin_operator_new", "__hipstdpar_operator_new"},
- {"__builtin_realloc", "__hipstdpar_realloc"},
- {"__libc_calloc", "__hipstdpar_calloc"},
- {"__libc_free", "__hipstdpar_free"},
- {"__libc_malloc", "__hipstdpar_malloc"},
- {"__libc_memalign", "__hipstdpar_aligned_alloc"},
- {"__libc_realloc", "__hipstdpar_realloc"}
-};
-
-PreservedAnalyses
-HipStdParAllocationInterpositionPass::run(Module &M, ModuleAnalysisManager&) {
- SmallDenseMap<StringRef, StringRef> AllocReplacements(std::cbegin(ReplaceMap),
- std::cend(ReplaceMap));
-
- for (auto &&F : M) {
- if (!F.hasName())
- continue;
- if (!AllocReplacements.contains(F.getName()))
- continue;
-
- if (auto R = M.getFunction(AllocReplacements[F.getName()])) {
- F.replaceAllUsesWith(R);
- } else {
- std::string W;
- raw_string_ostream OS(W);
-
- OS << "cannot be interposed, missing: " << AllocReplacements[F.getName()]
- << ". Tried to run the allocation interposition pass without the "
- << "replacement functions available.";
-
- F.getContext().diagnose(DiagnosticInfoUnsupported(F, W,
- F.getSubprogram(),
- DS_Warning));
- }
- }
-
- if (auto F = M.getFunction("__hipstdpar_hidden_free")) {
- auto LibcFree = M.getOrInsertFunction("__libc_free", F->getFunctionType(),
- F->getAttributes());
- F->replaceAllUsesWith(LibcFree.getCallee());
-
- eraseFromModule(*F);
- }
-
- return PreservedAnalyses::none();
-}
diff --git a/llvm/test/Transforms/HipStdPar/accelerator-code-selection.ll b/llvm/test/Transforms/HipStdPar/accelerator-code-selection.ll
deleted file mode 100644
index 2d41bd9b3443515..000000000000000
--- a/llvm/test/Transforms/HipStdPar/accelerator-code-selection.ll
+++ /dev/null
@@ -1,116 +0,0 @@
-; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -passes=hipstdpar-select-accelerator-code \
-; RUN: %s | FileCheck %s
-
-$_ZNK8CallableclEPi = comdat any
-$_ZNK8CallableclEPf = comdat any
-$_ZNK8Callable6mem_fnEPKi = comdat any
-$_ZN8Callable13static_mem_fnEPKi = comdat any
-; CHECK-NOT: $_ZNK8Callable37another_mem_fn_which_will_get_removedEPKf
-$_ZNK8Callable37another_mem_fn_which_will_get_removedEPKf = comdat any
-; CHECK-NOT: $_ZN8Callable44another_static_mem_fn_which_will_get_removedEPKf
-$_ZN8Callable44another_static_mem_fn_which_will_get_removedEPKf = comdat any
-
-%struct.Callable = type { [64 x i8] }
-
-; CHECK-NOT: @should_be_removed
- at llvm.compiler.used = appending addrspace(1) global [1 x ptr] [ptr @should_be_removed], section "llvm.metadata"
-
-define void @should_be_removed(ptr %p) {
- ret void
-}
-
-declare void @llvm.trap()
-
-; CHECK: define {{.*}} @called_via_chain
-define void @called_via_chain(ptr %p) {
- entry:
- %tobool.not = icmp eq ptr %p, null
- br i1 %tobool.not, label %if.then, label %if.end
-
- if.then:
- tail call void @llvm.trap()
- unreachable
-
- if.end:
- ret void
-}
-
-; CHECK: define {{.*}} @directly_called
-define void @directly_called(ptr %p) {
- tail call void @called_via_chain(ptr %p)
- ret void
-}
-
-; CHECK: define {{.*}} amdgpu_kernel {{.*}} @accelerator_execution_root
-define hidden amdgpu_kernel void @accelerator_execution_root(ptr %p) {
- tail call void @directly_called(ptr %p)
- ret void
-}
-
-; CHECK-NOT: @defined_elsewhere_should_be_removed
-declare void @defined_elsewhere_should_be_removed(ptr)
-
-; CHECK: declare {{.*}} @defined_elsewhere_directly_called
-declare void @defined_elsewhere_directly_called(ptr)
-
-; CHECK: define {{.*}} amdgpu_kernel {{.*}} @another_accelerator_execution_root
-define hidden amdgpu_kernel void @another_accelerator_execution_root(ptr %p) {
- tail call void @defined_elsewhere_directly_called(ptr %p)
- ret void
-}
-
-; Also test passing a callable object (functor / lambda) to a kernel, which is
-; the common pattern for customising algorithms.
-
-; CHECK: define {{.*}} amdgpu_kernel {{.*}} @_Z22accelerator_execution_root_taking_callablePi8Callable
-define hidden amdgpu_kernel void @_Z22accelerator_execution_root_taking_callablePi8Callable(ptr noundef %p, ptr addrspace(4) nocapture readonly byref(%struct.Callable) align 8 %callable) {
- %callable_in_generic = addrspacecast ptr addrspace(4) %callable to ptr
- call void @_ZNK8CallableclEPi(ptr noundef nonnull align 1 dereferenceable(64) %callable_in_generic, ptr noundef %p)
-
- ret void
-}
-
-; CHECK: define {{.*}} @_ZNK8CallableclEPi
-define linkonce_odr dso_local void @_ZNK8CallableclEPi(ptr noundef nonnull align 1 dereferenceable(64) %this, ptr noundef %p) {
- call void @_ZNK8Callable6mem_fnEPKi(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %p)
-
- ret void
-}
-
-; CHECK: define {{.*}} @_ZNK8Callable6mem_fnEPKi
-define linkonce_odr dso_local void @_ZNK8Callable6mem_fnEPKi(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %p) {
- call void @_ZN8Callable13static_mem_fnEPKi(ptr noundef %p)
-
- ret void
-}
-
-; CHECK: define {{.*}} @_ZN8Callable13static_mem_fnEPKi
-define linkonce_odr dso_local void @_ZN8Callable13static_mem_fnEPKi(ptr noundef %p) {
- ret void
-}
-
-; CHECK-NOT: define {{.*}} @_Z26non_kernel_taking_callablePf8Callable
-define dso_local void @_Z26non_kernel_taking_callablePf8Callable(ptr noundef %p, ptr noundef byval(%struct.Callable) align 8 %callable) {
- call void @_ZNK8CallableclEPf(ptr noundef nonnull align 1 dereferenceable(64) %callable, ptr noundef %p)
-
- ret void
-}
-
-; CHECK-NOT: define {{.*}} @_ZNK8CallableclEPf
-define linkonce_odr dso_local void @_ZNK8CallableclEPf(ptr noundef nonnull align 1 dereferenceable(64) %this, ptr noundef %p) {
- call void @_ZNK8Callable37another_mem_fn_which_will_get_removedEPKf(ptr noundef nonnull align 1 dereferenceable(64) %this, ptr noundef %p)
-
- ret void
-}
-
-; CHECK-NOT: @_ZNK8Callable37another_mem_fn_which_will_get_removedEPKf
-define linkonce_odr dso_local void @_ZNK8Callable37another_mem_fn_which_will_get_removedEPKf(ptr noundef nonnull align 1 dereferenceable(64) %this, ptr noundef %p) {
- call void @_ZN8Callable44another_static_mem_fn_which_will_get_removedEPKf(ptr noundef %p)
-
- ret void
-}
-
-; CHECK-NOT: @_ZN8Callable44another_static_mem_fn_which_will_get_removedEPKf
-define linkonce_odr dso_local void @_ZN8Callable44another_static_mem_fn_which_will_get_removedEPKf(ptr noundef %p) {
- ret void
-}
\ No newline at end of file
diff --git a/llvm/test/Transforms/HipStdPar/allocation-interposition.ll b/llvm/test/Transforms/HipStdPar/allocation-interposition.ll
deleted file mode 100644
index 291b06ed0ca9edc..000000000000000
--- a/llvm/test/Transforms/HipStdPar/allocation-interposition.ll
+++ /dev/null
@@ -1,221 +0,0 @@
-; RUN: opt -S -passes=hipstdpar-interpose-alloc %s | FileCheck %s
-
-%"struct.std::nothrow_t" = type { i8 }
-
- at _ZSt7nothrow = external global %"struct.std::nothrow_t", align 1
-
-declare ptr @__hipstdpar_aligned_alloc(i64, i64)
-
-declare ptr @__hipstdpar_malloc(i64)
-
-declare ptr @__hipstdpar_calloc(i64, i64)
-
-declare i32 @__hipstdpar_posix_aligned_alloc(ptr, i64, i64)
-
-declare void @__hipstdpar_hidden_free(ptr)
-
-declare ptr @__hipstdpar_realloc(ptr, i64)
-
-declare ptr @__hipstdpar_realloc_array(ptr, i64, i64)
-
-declare void @__hipstdpar_free(ptr)
-
-declare ptr @__hipstdpar_operator_new_aligned(i64, i64)
-
-declare ptr @__hipstdpar_operator_new(i64)
-
-declare ptr @__hipstdpar_operator_new_nothrow(i64, %"struct.std::nothrow_t")
-
-declare ptr @__hipstdpar_operator_new_aligned_nothrow(i64, i64, %"struct.std::nothrow_t")
-
-declare void @__hipstdpar_operator_delete_aligned_sized(ptr, i64, i64)
-
-declare void @__hipstdpar_operator_delete(ptr)
-
-declare void @__hipstdpar_operator_delete_aligned(ptr, i64)
-
-declare void @__hipstdpar_operator_delete_sized(ptr, i64)
-
-define dso_local noundef i32 @allocs() {
- ; CHECK: %1 = call noalias align 8 ptr @__hipstdpar_aligned_alloc(i64 noundef 8, i64 noundef 42)
- %1 = call noalias align 8 ptr @aligned_alloc(i64 noundef 8, i64 noundef 42)
- ; CHECK: call void @__hipstdpar_free(ptr noundef %1)
- call void @free(ptr noundef %1)
-
- ; CHECK: %2 = call noalias ptr @__hipstdpar_calloc(i64 noundef 1, i64 noundef 42)
- %2 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 42)
- ; CHECK: call void @__hipstdpar_free(ptr noundef %2)
- call void @free(ptr noundef %2)
-
- ; CHECK: %3 = call noalias ptr @__hipstdpar_malloc(i64 noundef 42)
- %3 = call noalias ptr @malloc(i64 noundef 42)
- ; CHECK: call void @__hipstdpar_free(ptr noundef %3)
- call void @free(ptr noundef %3)
-
- ; CHECK: %4 = call noalias align 8 ptr @__hipstdpar_aligned_alloc(i64 noundef 8, i64 noundef 42)
- %4 = call noalias align 8 ptr @memalign(i64 noundef 8, i64 noundef 42)
- ; CHECK: call void @__hipstdpar_free(ptr noundef %4)
- call void @free(ptr noundef %4)
-
- %tmp = alloca ptr, align 8
- ; CHECK: %5 = call i32 @__hipstdpar_posix_aligned_alloc(ptr noundef %tmp, i64 noundef 8, i64 noundef 42)
- %5 = call i32 @posix_memalign(ptr noundef %tmp, i64 noundef 8, i64 noundef 42)
- ; CHECK: call void @__hipstdpar_free(ptr noundef %tmp)
- call void @free(ptr noundef %tmp)
-
- ; CHECK: %6 = call noalias ptr @__hipstdpar_malloc(i64 noundef 42)
- %6 = call noalias ptr @malloc(i64 noundef 42)
- ; CHECK: %7 = call ptr @__hipstdpar_realloc(ptr noundef %6, i64 noundef 42)
- %7 = call ptr @realloc(ptr noundef %6, i64 noundef 42)
- ; CHECK: call void @__hipstdpar_free(ptr noundef %7)
- call void @free(ptr noundef %7)
-
- ; CHECK: %8 = call noalias ptr @__hipstdpar_calloc(i64 noundef 1, i64 noundef 42)
- %8 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 42)
- ; CHECK: %9 = call ptr @__hipstdpar_realloc_array(ptr noundef %8, i64 noundef 1, i64 noundef 42)
- %9 = call ptr @reallocarray(ptr noundef %8, i64 noundef 1, i64 noundef 42)
- ; CHECK: call void @__hipstdpar_free(ptr noundef %9)
- call void @free(ptr noundef %9)
-
- ; CHECK: %10 = call noalias noundef nonnull ptr @__hipstdpar_operator_new(i64 noundef 1)
- %10 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 1)
- ; CHECK: call void @__hipstdpar_operator_delete(ptr noundef %10)
- call void @_ZdlPv(ptr noundef %10)
-
- ; CHECK: %11 = call noalias noundef nonnull align 8 ptr @__hipstdpar_operator_new_aligned(i64 noundef 1, i64 noundef 8)
- %11 = call noalias noundef nonnull align 8 ptr @_ZnwmSt11align_val_t(i64 noundef 1, i64 noundef 8)
- ; CHECK: call void @__hipstdpar_operator_delete_aligned(ptr noundef %11, i64 noundef 8)
- call void @_ZdlPvSt11align_val_t(ptr noundef %11, i64 noundef 8)
-
- ; CHECK: %12 = call noalias noundef ptr @__hipstdpar_operator_new_nothrow(i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- %12 = call noalias noundef ptr @_ZnwmRKSt9nothrow_t(i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- ; CHECK: call void @__hipstdpar_operator_delete(ptr noundef %12)
- call void @_ZdlPv(ptr noundef %12)
-
- ; CHECK: %13 = call noalias noundef align 8 ptr @__hipstdpar_operator_new_aligned_nothrow(i64 noundef 1, i64 noundef 8, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- %13 = call noalias noundef align 8 ptr @_ZnwmSt11align_val_tRKSt9nothrow_t(i64 noundef 1, i64 noundef 8, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- ; CHECK: call void @__hipstdpar_operator_delete_aligned(ptr noundef %13, i64 noundef 8)
- call void @_ZdlPvSt11align_val_t(ptr noundef %13, i64 noundef 8)
-
- ; CHECK: %14 = call noalias noundef nonnull ptr @__hipstdpar_operator_new(i64 noundef 42)
- %14 = call noalias noundef nonnull ptr @_Znam(i64 noundef 42)
- ; CHECK: call void @__hipstdpar_operator_delete(ptr noundef %14)
- call void @_ZdaPv(ptr noundef %14)
-
- ; CHECK: %15 = call noalias noundef nonnull align 8 ptr @__hipstdpar_operator_new_aligned(i64 noundef 42, i64 noundef 8)
- %15 = call noalias noundef nonnull align 8 ptr @_ZnamSt11align_val_t(i64 noundef 42, i64 noundef 8)
- ; CHECK: call void @__hipstdpar_operator_delete_aligned(ptr noundef %15, i64 noundef 8)
- call void @_ZdaPvSt11align_val_t(ptr noundef %15, i64 noundef 8)
-
- ; CHECK: %16 = call noalias noundef ptr @__hipstdpar_operator_new_nothrow(i64 noundef 42, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- %16 = call noalias noundef ptr @_ZnamRKSt9nothrow_t(i64 noundef 42, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- ; CHECK: call void @__hipstdpar_operator_delete(ptr noundef %16)
- call void @_ZdaPv(ptr noundef %16)
-
- ; CHECK: %17 = call noalias noundef align 8 ptr @__hipstdpar_operator_new_aligned_nothrow(i64 noundef 42, i64 noundef 8, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- %17 = call noalias noundef align 8 ptr @_ZnamSt11align_val_tRKSt9nothrow_t(i64 noundef 42, i64 noundef 8, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- ; CHECK: call void @__hipstdpar_operator_delete_aligned(ptr noundef %17, i64 noundef 8)
- call void @_ZdaPvSt11align_val_t(ptr noundef %17, i64 noundef 8)
-
- ; CHECK: %18 = call ptr @__hipstdpar_calloc(i64 noundef 1, i64 noundef 42)
- %18 = call ptr @calloc(i64 noundef 1, i64 noundef 42)
- ; CHECK: call void @__hipstdpar_free(ptr noundef %18)
- call void @free(ptr noundef %18)
-
- ; CHECK: %19 = call ptr @__hipstdpar_malloc(i64 noundef 42)
- %19 = call ptr @malloc(i64 noundef 42)
- ; CHECK: call void @__hipstdpar_free(ptr noundef %19)
- call void @free(ptr noundef %19)
-
- ; CHECK: %20 = call noalias noundef nonnull ptr @__hipstdpar_operator_new(i64 noundef 42)
- %20 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 42)
- ; CHECK: call void @__hipstdpar_operator_delete(ptr noundef %20)
- call void @_ZdlPv(ptr noundef %20)
-
- ; CHECK: %21 = call noalias noundef nonnull align 8 ptr @__hipstdpar_operator_new_aligned(i64 noundef 42, i64 noundef 8)
- %21 = call noalias noundef nonnull align 8 ptr @_ZnwmSt11align_val_t(i64 noundef 42, i64 noundef 8)
- ; CHECK: call void @__hipstdpar_operator_delete_aligned(ptr noundef %21, i64 noundef 8)
- call void @_ZdlPvSt11align_val_t(ptr noundef %21, i64 noundef 8)
-
- ; CHECK: %22 = call noalias noundef ptr @__hipstdpar_operator_new_nothrow(i64 noundef 42, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- %22 = call noalias noundef ptr @_ZnwmRKSt9nothrow_t(i64 noundef 42, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- ; CHECK: call void @__hipstdpar_operator_delete(ptr noundef %22)
- call void @_ZdlPv(ptr noundef %22)
-
- ; CHECK: %23 = call noalias noundef align 8 ptr @__hipstdpar_operator_new_aligned_nothrow(i64 noundef 42, i64 noundef 8, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- %23 = call noalias noundef align 8 ptr @_ZnwmSt11align_val_tRKSt9nothrow_t(i64 noundef 42, i64 noundef 8, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- ; CHECK: call void @__hipstdpar_operator_delete_aligned(ptr noundef %23, i64 noundef 8)
- call void @_ZdlPvSt11align_val_t(ptr noundef %23, i64 noundef 8)
-
- ; CHECK: %24 = call ptr @__hipstdpar_malloc(i64 noundef 42)
- %24 = call ptr @malloc(i64 noundef 42)
- ; CHECK: %25 = call ptr @__hipstdpar_realloc(ptr noundef %24, i64 noundef 41)
- %25 = call ptr @realloc(ptr noundef %24, i64 noundef 41)
- ; CHECK: call void @__hipstdpar_free(ptr noundef %25)
- call void @free(ptr noundef %25)
-
- ; CHECK: %26 = call ptr @__hipstdpar_calloc(i64 noundef 1, i64 noundef 42)
- %26 = call ptr @__libc_calloc(i64 noundef 1, i64 noundef 42)
- ; CHECK: call void @__hipstdpar_free(ptr noundef %26)
- call void @__libc_free(ptr noundef %26)
-
- ; CHECK: %27 = call ptr @__hipstdpar_malloc(i64 noundef 42)
- %27 = call ptr @__libc_malloc(i64 noundef 42)
- ; CHECK: call void @__hipstdpar_free(ptr noundef %27)
- call void @__libc_free(ptr noundef %27)
-
- ; CHECK: %28 = call ptr @__hipstdpar_aligned_alloc(i64 noundef 8, i64 noundef 42)
- %28 = call ptr @__libc_memalign(i64 noundef 8, i64 noundef 42)
- ; CHECK: call void @__hipstdpar_free(ptr noundef %28)
- call void @__libc_free(ptr noundef %28)
-
- ret i32 0
-}
-
-declare noalias ptr @aligned_alloc(i64 noundef, i64 noundef)
-
-declare void @free(ptr noundef)
-
-declare noalias ptr @calloc(i64 noundef, i64 noundef)
-
-declare noalias ptr @malloc(i64 noundef)
-
-declare noalias ptr @memalign(i64 noundef, i64 noundef)
-
-declare i32 @posix_memalign(ptr noundef, i64 noundef, i64 noundef)
-
-declare ptr @realloc(ptr noundef, i64 noundef)
-
-declare ptr @reallocarray(ptr noundef, i64 noundef, i64 noundef)
-
-declare noundef nonnull ptr @_Znwm(i64 noundef)
-
-declare void @_ZdlPv(ptr noundef)
-
-declare noalias noundef nonnull ptr @_ZnwmSt11align_val_t(i64 noundef, i64 noundef)
-
-declare void @_ZdlPvSt11align_val_t(ptr noundef, i64 noundef)
-
-declare noalias noundef ptr @_ZnwmRKSt9nothrow_t(i64 noundef, ptr noundef nonnull align 1 dereferenceable(1))
-
-declare noalias noundef ptr @_ZnwmSt11align_val_tRKSt9nothrow_t(i64 noundef, i64 noundef, ptr noundef nonnull align 1 dereferenceable(1))
-
-declare noundef nonnull ptr @_Znam(i64 noundef)
-
-declare void @_ZdaPv(ptr noundef)
-
-declare noalias noundef nonnull ptr @_ZnamSt11align_val_t(i64 noundef, i64 noundef)
-
-declare void @_ZdaPvSt11align_val_t(ptr noundef, i64 noundef)
-
-declare noalias noundef ptr @_ZnamRKSt9nothrow_t(i64 noundef, ptr noundef nonnull align 1 dereferenceable(1))
-
-declare noalias noundef ptr @_ZnamSt11align_val_tRKSt9nothrow_t(i64 noundef, i64 noundef, ptr noundef nonnull align 1 dereferenceable(1))
-
-declare ptr @__libc_calloc(i64 noundef, i64 noundef)
-
-declare void @__libc_free(ptr noundef)
-
-declare ptr @__libc_malloc(i64 noundef)
-
-declare ptr @__libc_memalign(i64 noundef, i64 noundef)
\ No newline at end of file
diff --git a/llvm/test/Transforms/HipStdPar/allocation-no-interposition.ll b/llvm/test/Transforms/HipStdPar/allocation-no-interposition.ll
deleted file mode 100644
index 15640c6ae94e0d8..000000000000000
--- a/llvm/test/Transforms/HipStdPar/allocation-no-interposition.ll
+++ /dev/null
@@ -1,161 +0,0 @@
-; RUN: opt < %s -passes=hipstdpar-interpose-alloc -S 2>&1 | FileCheck %s
-
-; CHECK: warning: {{.*}} aligned_alloc {{.*}} cannot be interposed, missing: __hipstdpar_aligned_alloc. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} free {{.*}} cannot be interposed, missing: __hipstdpar_free. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} calloc {{.*}} cannot be interposed, missing: __hipstdpar_calloc. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} malloc {{.*}} cannot be interposed, missing: __hipstdpar_malloc. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} memalign {{.*}} cannot be interposed, missing: __hipstdpar_aligned_alloc. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} posix_memalign {{.*}} cannot be interposed, missing: __hipstdpar_posix_aligned_alloc. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} realloc {{.*}} cannot be interposed, missing: __hipstdpar_realloc. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} reallocarray {{.*}} cannot be interposed, missing: __hipstdpar_realloc_array. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} _Znwm {{.*}} cannot be interposed, missing: __hipstdpar_operator_new. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} _ZdlPv {{.*}} cannot be interposed, missing: __hipstdpar_operator_delete. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} _ZnwmSt11align_val_t {{.*}} cannot be interposed, missing: __hipstdpar_operator_new_aligned. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} _ZdlPvSt11align_val_t {{.*}} cannot be interposed, missing: __hipstdpar_operator_delete_aligned. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} _ZnwmRKSt9nothrow_t {{.*}} cannot be interposed, missing: __hipstdpar_operator_new_nothrow. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} _ZnwmSt11align_val_tRKSt9nothrow_t {{.*}} cannot be interposed, missing: __hipstdpar_operator_new_aligned_nothrow. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} _Znam {{.*}} cannot be interposed, missing: __hipstdpar_operator_new. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} _ZdaPv {{.*}} cannot be interposed, missing: __hipstdpar_operator_delete. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} _ZnamSt11align_val_t {{.*}} cannot be interposed, missing: __hipstdpar_operator_new_aligned. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} _ZdaPvSt11align_val_t {{.*}} cannot be interposed, missing: __hipstdpar_operator_delete_aligned. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} _ZnamRKSt9nothrow_t {{.*}} cannot be interposed, missing: __hipstdpar_operator_new_nothrow. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} _ZnamSt11align_val_tRKSt9nothrow_t {{.*}} cannot be interposed, missing: __hipstdpar_operator_new_aligned_nothrow. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} __libc_calloc {{.*}} cannot be interposed, missing: __hipstdpar_calloc. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} __libc_free {{.*}} cannot be interposed, missing: __hipstdpar_free. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} __libc_malloc {{.*}} cannot be interposed, missing: __hipstdpar_malloc. Tried to run the allocation interposition pass without the replacement functions available.
-; CHECK: warning: {{.*}} __libc_memalign {{.*}} cannot be interposed, missing: __hipstdpar_aligned_alloc. Tried to run the allocation interposition pass without the replacement functions available.
-
-%"struct.std::nothrow_t" = type { i8 }
-
- at _ZSt7nothrow = external global %"struct.std::nothrow_t", align 1
-
-define dso_local noundef i32 @allocs() {
- %1 = call noalias align 8 ptr @aligned_alloc(i64 noundef 8, i64 noundef 42)
- call void @free(ptr noundef %1)
-
- %2 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 42)
- call void @free(ptr noundef %2)
-
- %3 = call noalias ptr @malloc(i64 noundef 42)
- call void @free(ptr noundef %3)
-
- %4 = call noalias align 8 ptr @memalign(i64 noundef 8, i64 noundef 42)
- call void @free(ptr noundef %4)
-
- %tmp = alloca ptr, align 8
- %5 = call i32 @posix_memalign(ptr noundef %tmp, i64 noundef 8, i64 noundef 42)
- call void @free(ptr noundef %tmp)
-
- %6 = call noalias ptr @malloc(i64 noundef 42)
- %7 = call ptr @realloc(ptr noundef %6, i64 noundef 42)
- call void @free(ptr noundef %7)
-
- %8 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 42)
- %9 = call ptr @reallocarray(ptr noundef %8, i64 noundef 1, i64 noundef 42)
- call void @free(ptr noundef %9)
-
- %10 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 1)
- call void @_ZdlPv(ptr noundef %10)
-
- %11 = call noalias noundef nonnull align 8 ptr @_ZnwmSt11align_val_t(i64 noundef 1, i64 noundef 8)
- call void @_ZdlPvSt11align_val_t(ptr noundef %11, i64 noundef 8)
-
- %12 = call noalias noundef ptr @_ZnwmRKSt9nothrow_t(i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- call void @_ZdlPv(ptr noundef %12)
-
- %13 = call noalias noundef align 8 ptr @_ZnwmSt11align_val_tRKSt9nothrow_t(i64 noundef 1, i64 noundef 8, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- call void @_ZdlPvSt11align_val_t(ptr noundef %13, i64 noundef 8)
-
- %14 = call noalias noundef nonnull ptr @_Znam(i64 noundef 42)
- call void @_ZdaPv(ptr noundef %14)
-
- %15 = call noalias noundef nonnull align 8 ptr @_ZnamSt11align_val_t(i64 noundef 42, i64 noundef 8)
- call void @_ZdaPvSt11align_val_t(ptr noundef %15, i64 noundef 8)
-
- %16 = call noalias noundef ptr @_ZnamRKSt9nothrow_t(i64 noundef 42, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- call void @_ZdaPv(ptr noundef %16)
-
- %17 = call noalias noundef align 8 ptr @_ZnamSt11align_val_tRKSt9nothrow_t(i64 noundef 42, i64 noundef 8, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- call void @_ZdaPvSt11align_val_t(ptr noundef %17, i64 noundef 8)
-
- %18 = call ptr @calloc(i64 noundef 1, i64 noundef 42)
- call void @free(ptr noundef %18)
-
- %19 = call ptr @malloc(i64 noundef 42)
- call void @free(ptr noundef %19)
-
- %20 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 42)
- call void @_ZdlPv(ptr noundef %20)
-
- %21 = call noalias noundef nonnull align 8 ptr @_ZnwmSt11align_val_t(i64 noundef 42, i64 noundef 8)
- call void @_ZdlPvSt11align_val_t(ptr noundef %21, i64 noundef 8)
-
- %22 = call noalias noundef ptr @_ZnwmRKSt9nothrow_t(i64 noundef 42, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- call void @_ZdlPv(ptr noundef %22)
-
- %23 = call noalias noundef align 8 ptr @_ZnwmSt11align_val_tRKSt9nothrow_t(i64 noundef 42, i64 noundef 8, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
- call void @_ZdlPvSt11align_val_t(ptr noundef %23, i64 noundef 8)
-
- %24 = call ptr @malloc(i64 noundef 42)
- %25 = call ptr @realloc(ptr noundef %24, i64 noundef 41)
- call void @free(ptr noundef %25)
-
- %26 = call ptr @__libc_calloc(i64 noundef 1, i64 noundef 42)
- call void @__libc_free(ptr noundef %26)
-
- %27 = call ptr @__libc_malloc(i64 noundef 42)
- call void @__libc_free(ptr noundef %27)
-
- %28 = call ptr @__libc_memalign(i64 noundef 8, i64 noundef 42)
- call void @__libc_free(ptr noundef %28)
-
- ret i32 0
-}
-
-declare noalias ptr @aligned_alloc(i64 noundef, i64 noundef)
-
-declare void @free(ptr noundef)
-
-declare noalias ptr @calloc(i64 noundef, i64 noundef)
-
-declare noalias ptr @malloc(i64 noundef)
-
-declare noalias ptr @memalign(i64 noundef, i64 noundef)
-
-declare i32 @posix_memalign(ptr noundef, i64 noundef, i64 noundef)
-
-declare ptr @realloc(ptr noundef, i64 noundef)
-
-declare ptr @reallocarray(ptr noundef, i64 noundef, i64 noundef)
-
-declare noundef nonnull ptr @_Znwm(i64 noundef)
-
-declare void @_ZdlPv(ptr noundef)
-
-declare noalias noundef nonnull ptr @_ZnwmSt11align_val_t(i64 noundef, i64 noundef)
-
-declare void @_ZdlPvSt11align_val_t(ptr noundef, i64 noundef)
-
-declare noalias noundef ptr @_ZnwmRKSt9nothrow_t(i64 noundef, ptr noundef nonnull align 1 dereferenceable(1))
-
-declare noalias noundef ptr @_ZnwmSt11align_val_tRKSt9nothrow_t(i64 noundef, i64 noundef, ptr noundef nonnull align 1 dereferenceable(1))
-
-declare noundef nonnull ptr @_Znam(i64 noundef)
-
-declare void @_ZdaPv(ptr noundef)
-
-declare noalias noundef nonnull ptr @_ZnamSt11align_val_t(i64 noundef, i64 noundef)
-
-declare void @_ZdaPvSt11align_val_t(ptr noundef, i64 noundef)
-
-declare noalias noundef ptr @_ZnamRKSt9nothrow_t(i64 noundef, ptr noundef nonnull align 1 dereferenceable(1))
-
-declare noalias noundef ptr @_ZnamSt11align_val_tRKSt9nothrow_t(i64 noundef, i64 noundef, ptr noundef nonnull align 1 dereferenceable(1))
-
-declare ptr @__libc_calloc(i64 noundef, i64 noundef)
-
-declare void @__libc_free(ptr noundef)
-
-declare ptr @__libc_malloc(i64 noundef)
-
-declare ptr @__libc_memalign(i64 noundef, i64 noundef)
\ No newline at end of file
diff --git a/llvm/test/Transforms/HipStdPar/unsupported-asm.ll b/llvm/test/Transforms/HipStdPar/unsupported-asm.ll
deleted file mode 100644
index 19e6b28cc91642d..000000000000000
--- a/llvm/test/Transforms/HipStdPar/unsupported-asm.ll
+++ /dev/null
@@ -1,12 +0,0 @@
-; RUN: not opt -S -mtriple=amdgcn-amd-amdhsa -passes=hipstdpar-select-accelerator-code \
-; RUN: %s 2>&1 | FileCheck %s
-
-; CHECK: error: {{.*}} in function foo void (): Accelerator does not support the ASM block:
-; CHECK-NEXT: {{.*}}Invalid ASM block{{.*}}
-define amdgpu_kernel void @foo() {
-entry:
- call void @__ASM__hipstdpar_unsupported([18 x i8] c"Invalid ASM block\00")
- ret void
-}
-
-declare void @__ASM__hipstdpar_unsupported([18 x i8])
\ No newline at end of file
diff --git a/llvm/test/Transforms/HipStdPar/unsupported-builtins.ll b/llvm/test/Transforms/HipStdPar/unsupported-builtins.ll
deleted file mode 100644
index 19490dad80bab1b..000000000000000
--- a/llvm/test/Transforms/HipStdPar/unsupported-builtins.ll
+++ /dev/null
@@ -1,11 +0,0 @@
-; RUN: not opt -S -mtriple=amdgcn-amd-amdhsa -passes=hipstdpar-select-accelerator-code \
-; RUN: %s 2>&1 | FileCheck %s
-
-; CHECK: error: {{.*}} in function foo void (): Accelerator does not support the __builtin_ia32_pause function
-define amdgpu_kernel void @foo() {
-entry:
- call void @__builtin_ia32_pause__hipstdpar_unsupported()
- ret void
-}
-
-declare void @__builtin_ia32_pause__hipstdpar_unsupported()
\ No newline at end of file
diff --git a/llvm/test/Transforms/HipStdPar/unsupported-thread-local-direct-use.ll b/llvm/test/Transforms/HipStdPar/unsupported-thread-local-direct-use.ll
deleted file mode 100644
index fa17bb114eae600..000000000000000
--- a/llvm/test/Transforms/HipStdPar/unsupported-thread-local-direct-use.ll
+++ /dev/null
@@ -1,14 +0,0 @@
-; RUN: not opt -S -mtriple=amdgcn-amd-amdhsa -passes=hipstdpar-select-accelerator-code \
-; RUN: %s 2>&1 | FileCheck %s
-
- at tls = hidden thread_local addrspace(1) global i32 0, align 4
-
-; CHECK: error: {{.*}} in function direct_use void (): Accelerator does not support the thread_local variable tls
-define amdgpu_kernel void @direct_use() {
-entry:
- %0 = call align 4 ptr addrspace(1) @llvm.threadlocal.address.p1(ptr addrspace(1) @tls)
- %1 = load i32, ptr addrspace(1) %0, align 4
- ret void
-}
-
-declare nonnull ptr addrspace(1) @llvm.threadlocal.address.p1(ptr addrspace(1) nonnull)
diff --git a/llvm/test/Transforms/HipStdPar/unsupported-thread-local-indirect-use.ll b/llvm/test/Transforms/HipStdPar/unsupported-thread-local-indirect-use.ll
deleted file mode 100644
index 40014853d8ac526..000000000000000
--- a/llvm/test/Transforms/HipStdPar/unsupported-thread-local-indirect-use.ll
+++ /dev/null
@@ -1,14 +0,0 @@
-; RUN: not opt -S -mtriple=amdgcn-amd-amdhsa -passes=hipstdpar-select-accelerator-code \
-; RUN: %s 2>&1 | FileCheck %s
-
- at tls = hidden thread_local addrspace(1) global i32 0, align 4
-
-; CHECK: error: {{.*}} in function indirect_use void (): Accelerator does not support the thread_local variable tls
-define amdgpu_kernel void @indirect_use() {
-entry:
- %0 = call align 4 ptr @llvm.threadlocal.address.p0(ptr addrspacecast (ptr addrspace(1) @tls to ptr))
- %1 = load i32, ptr %0, align 4
- ret void
-}
-
-declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull)
More information about the llvm-commits
mailing list