diff options
author | Sergio Afonso <safonsof@amd.com> | 2024-08-02 11:58:40 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-02 11:58:40 +0100 |
commit | 84b1e59580a44ef8a89198aedc6b01fd7d6775fb (patch) | |
tree | 60a26a9c9b165754d42fb5d9d12bab9c6c4fd368 /llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp | |
parent | 99ae2edc2592e602b0eb5a287f4d003aa3902440 (diff) | |
download | llvm-84b1e59580a44ef8a89198aedc6b01fd7d6775fb.zip llvm-84b1e59580a44ef8a89198aedc6b01fd7d6775fb.tar.gz llvm-84b1e59580a44ef8a89198aedc6b01fd7d6775fb.tar.bz2 |
[MLIR][OpenMP][OMPIRBuilder] Add lowering support for omp.target_triples (#100156)
This patch modifies MLIR to LLVM IR lowering of the OpenMP dialect to take into
consideration the contents of the `omp.target_triples` module attribute while
generating code for `omp.target` operations.
It adds the `OpenMPIRBuilderConfig::TargetTriples` field and initializes it
using the `amendOperation` flow of the `OpenMPToLLVMIRTranslation` pass. Some
changes are introduced into the `OpenMPIRBuilder` to allow passing the
information about whether a target region is intended to be offloaded from
outside.
The result of this change is that offloading calls are only generated when the
`--offload-arch` or `-fopenmp-targets` options are given to the compiler.
Otherwise, only the host fallback code is generated. This fixes linker errors
currently triggered by `flang-new` if a source file containing a `target`
construct is compiled without any of the aforementioned options.
Several unit tests impacted by these changes, which are intended to check host
code generated for `omp.target` operations, are updated to contain the new
attribute. Without it, no calls to `__tgt_target_kernel` and associated control
flow operations are generated.
Fixes #100209.
Diffstat (limited to 'llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp')
-rw-r--r-- | llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp index cb4c289..6207792 100644 --- a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp +++ b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp @@ -5983,8 +5983,8 @@ TEST_F(OpenMPIRBuilderTest, TargetRegion) { TargetRegionEntryInfo EntryInfo("func", 42, 4711, 17); OpenMPIRBuilder::LocationDescription OmpLoc({Builder.saveIP(), DL}); Builder.restoreIP(OMPBuilder.createTarget( - OmpLoc, Builder.saveIP(), Builder.saveIP(), EntryInfo, -1, 0, Inputs, - GenMapInfoCB, BodyGenCB, SimpleArgAccessorCB)); + OmpLoc, /*IsOffloadEntry=*/true, Builder.saveIP(), Builder.saveIP(), + EntryInfo, -1, 0, Inputs, GenMapInfoCB, BodyGenCB, SimpleArgAccessorCB)); OMPBuilder.finalize(); Builder.CreateRetVoid(); @@ -6087,7 +6087,8 @@ TEST_F(OpenMPIRBuilderTest, TargetRegionDevice) { /*Line=*/3, /*Count=*/0); Builder.restoreIP( - OMPBuilder.createTarget(Loc, EntryIP, EntryIP, EntryInfo, /*NumTeams=*/-1, + OMPBuilder.createTarget(Loc, /*IsOffloadEntry=*/true, EntryIP, EntryIP, + EntryInfo, /*NumTeams=*/-1, /*NumThreads=*/0, CapturedArgs, GenMapInfoCB, BodyGenCB, SimpleArgAccessorCB)); @@ -6235,7 +6236,8 @@ TEST_F(OpenMPIRBuilderTest, ConstantAllocaRaise) { /*Line=*/3, /*Count=*/0); Builder.restoreIP( - OMPBuilder.createTarget(Loc, EntryIP, EntryIP, EntryInfo, /*NumTeams=*/-1, + OMPBuilder.createTarget(Loc, /*IsOffloadEntry=*/true, EntryIP, EntryIP, + EntryInfo, /*NumTeams=*/-1, /*NumThreads=*/0, CapturedArgs, GenMapInfoCB, BodyGenCB, SimpleArgAccessorCB)); |