122 lines · plain
1! Basic offloading test with a target region2! REQUIRES: flang, amdgpu3! RUN: %libomptarget-compile-fortran-run-and-check-generic4 5! Testing simple variables in common block.6program main7 call check_device8 call commonblock_simple_with_implicit_type_var9 call commonblock_simple_with_integer10 call commonblock_simple_with_real11 call commonblock_simple_to_from12 call set_commonblock_named13 call use_commonblock_named14end program main15 16!-----17 18subroutine check_device19 use omp_lib20 integer :: devices(2)21 devices(1) = omp_get_device_num()22 !$omp target map(tofrom:devices)23 devices(2) = omp_get_device_num()24 !$omp end target25 print *, omp_get_num_devices()26 !CHECK: [[ND:[0-9]+]]27 print *, omp_get_default_device()28 !CHECK: [[DD:[0-9]+]]29 !CHECK: devices: [[ND]] [[DD]]30 print *, "devices: ", devices31end subroutine check_device32 33!-----34 35subroutine commonblock_simple_with_implicit_type_var36 use omp_lib37 common var138 var1 = 1039 print *, "var1 before target = ", var140 !$omp target map(tofrom:var1)41 var1 = 2042 !$omp end target43 print *, "var1 after target = ", var144end subroutine45 46! CHECK: var1 before target = 1047! CHECK: var1 after target = 2048 49! -----50 51subroutine commonblock_simple_with_integer52 use omp_lib53 integer :: var254 common var255 var2 = 1056 print *, "var2 before target = ", var257 !$omp target map(tofrom:var2)58 var2 = 2059 !$omp end target60 print *, "var2 after target = ", var261end subroutine62 63! CHECK: var2 before target = 1064! CHECK: var2 after target = 2065 66! -----67 68subroutine commonblock_simple_with_real69 use omp_lib70 real :: var371 common var372 var3 = 12.573 print *, "var3 before target = ", var374 !$omp target map(tofrom:var3)75 var3 = 14.576 !$omp end target77 print *, "var3 after target = ", var378end subroutine79 80! CHECK: var3 before target = 12.581! CHECK: var3 after target = 14.582 83! -----84 85subroutine commonblock_simple_to_from86 use omp_lib87 integer :: var4, tmp88 common var489 var4 = 1090 tmp = 2091 !$omp target map(to:var4) map(from:tmp)92 tmp = var493 var4 = 2094 !$omp end target95 print *, "var4 after target = ", var496 print *, "tmp after target = ", tmp97end subroutine98 99! CHECK: var4 after target = 10100! CHECK: tmp after target = 10101 102! -----103 104subroutine set_commonblock_named105 integer :: var6106 common /my_common_block/ var6107 var6 = 20108end subroutine109 110subroutine use_commonblock_named111 integer :: var6112 common /my_common_block/ var6113 print *, "var6 before target = ", var6114 !$omp target map(tofrom: var6)115 var6 = 30116 !$omp end target117 print *, "var6 after target = ", var6118end subroutine119 120! CHECK: var6 before target = 20121! CHECK: var6 after target = 30122