| ! REQUIRES: flang, flang-rt, libc, amdgpu | |
| ! RUN: %libomptarget-compile-fortran-run-and-check-generic | |
| program formatted_io_test | |
| implicit none | |
| integer :: i, ios | |
| real :: r | |
| complex :: c | |
| logical :: l | |
| character(len=5) :: s | |
| i = 42 | |
| r = 3.14 | |
| c = (1.0, -1.0) | |
| l = .true. | |
| s = "Hello" | |
| ! CHECK: i= 42 | |
| !$omp target | |
| write(*, '(A,I4)') "i=", i | |
| !$omp end target | |
| ! CHECK: r= 3.14 | |
| !$omp target | |
| write(*, '(A,F5.2)') "r=", r | |
| !$omp end target | |
| ! CHECK: s=Hello | |
| !$omp target map(to : s) | |
| write(*, '(A,A)') "s=", s | |
| !$omp end target | |
| ! CHECK: l=T | |
| !$omp target | |
| write(*, '(A,L1)') "l=", l | |
| !$omp end target | |
| ! CHECK: c=( 1.00, -1.00) | |
| !$omp target | |
| write(*, '(A,A,F6.2,A,F6.2,A)') "c=", "(", real(c), ",", aimag(c), ")" | |
| !$omp end target | |
| ! CHECK: mixed: Hello 42 3.14 T | |
| !$omp target map(to : s) | |
| write(*, '(A,A,I5,F5.2,L2)') "mixed: ", s, i, r, l | |
| !$omp end target | |
| ! Test IOSTAT handling | |
| ! CHECK: iostat: 0 | |
| !$omp target | |
| write(*, '(A)', iostat=ios) "dummy" | |
| write(*, '(A,I12)') "iostat:", ios | |
| !$omp end target | |
| ! Test formatted output from multiple teams. | |
| ! CHECK: val= 42 | |
| ! CHECK: val= 42 | |
| ! CHECK: val= 42 | |
| ! CHECK: val= 42 | |
| !$omp target teams num_teams(4) | |
| !$omp parallel num_threads(1) | |
| write(*, '(A,I4)') "val=", i | |
| !$omp end parallel | |
| !$omp end target teams | |
| end program formatted_io_test |