| ! REQUIRES: flang, libc |
| ! 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 |