| !===----------------------------------------------------------------------===! |
| ! This directory can be used to add Integration tests involving multiple |
| ! stages of the compiler (for eg. from Fortran to LLVM IR). It should not |
| ! contain executable tests. We should only add tests here sparingly and only |
| ! if there is no other way to test. Repeat this message in each test that is |
| ! added to this directory and sub-directories. |
| !===----------------------------------------------------------------------===! |
| |
| !REQUIRES: amdgpu-registered-target |
| !RUN: %flang_fc1 -triple amdgcn-amd-amdhsa -emit-llvm -fopenmp -fopenmp-version=50 -fopenmp-is-target-device %s -o - | FileCheck %s |
| |
| ! This tests the fix for https://github.com/llvm/llvm-project/issues/84606 |
| ! We are only interested in ensuring that the -mlir-to-llmvir pass doesn't crash. |
| |
| ! CHECK: define weak_odr protected amdgpu_kernel void @{{.*}}QQmain{{.*}}({{.*}}) |
| program main |
| implicit none |
| integer, parameter :: N = 5 |
| integer, dimension(5) :: a |
| integer :: i |
| integer :: target_a = 0 |
| |
| !$omp task depend(out:a) |
| do i = 1, N |
| a(i) = i |
| end do |
| !$omp end task |
| |
| !$omp target map(tofrom:target_a) map(tofrom:a) |
| do i = 1, N |
| target_a = target_a + i |
| a(i) = a(i) + i |
| end do |
| !$omp end target |
| print*, target_a |
| print*, a |
| end program main |