<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/74202>74202</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [flang][openmp] difference of timestamps between two SYSTEM_CLOCK calls returns CPU time 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            flang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          foxtran
      </td>
    </tr>
</table>

<pre>
    Having the following code (tests matrix multiplication speed in stupid way):
```
program matrix_multiply
  use omp_lib
  implicit none
  real(8), allocatable :: A(:,:), B(:,:), C(:,:)
  integer(4) :: i, j, k, nbfcn4, df4
  integer(8) :: nbfcn, df
  integer :: ierr, num_threads
  integer(8) :: start_time, end_time, elapsed_time
 integer(8) :: count,count_rate,clock_rate
  real(8) :: seconds_elapsed, peak, actual
  real(8) :: ts1, ts2
  nbfcn4 = 635
  df4 = 8645
 nbfcn = nbfcn4
  df = df4
  allocate(A(nbfcn,nbfcn), B(df,nbfcn), C(nbfcn,df), source = 0d0)
  call random_seed()
  call random_number(A)
  call random_number(B)
  call dgemm('t','t',nbfcn,df,nbfcn,1.d0,A,nbfcn,B,df,0.d0,C,nbfcn)
  call SYSTEM_CLOCK(count=start_time, count_rate=clock_rate)
  call cpu_time(ts1)
  do i = 1, 100
  call dgemm('t','t',nbfcn,df,nbfcn,1.d0,A,nbfcn,B,df,0.d0,C,nbfcn)
  end do
 call SYSTEM_CLOCK(count=end_time)
  call cpu_time(ts2)
  elapsed_time = end_time - start_time
  seconds_elapsed = real(elapsed_time) / real(clock_rate)
  peak = seconds_elapsed * omp_get_max_threads() * 2.45_8 * 1e9_8 * 16._8
  actual = real(2 * nbfcn*nbfcn * df, kind=8) * 100
 write(*,"(F6.2,A,F6.2,' ',I0)") seconds_elapsed, "s ", actual / peak * 100._8, omp_get_max_threads()
  seconds_elapsed = ts2 - ts1
  peak = seconds_elapsed * omp_get_max_threads() * 2.45_8 * 1e9_8 * 16._8
  actual = real(2 * nbfcn*nbfcn * df, kind=8) * 100
  write(*,"(F6.2,A,F6.2,' ',I0)") seconds_elapsed, "s ", actual / peak * 100._8, omp_get_max_threads()
  ! time * cores * freq * ops
end program matrix_multiply
```

For current flang, it gives me the same number for CPU_TIME calls and for SYSTEM_CLOCK calls.
Example output:
```
LD_LIBRARY_PATH=/home/lokalgi/test/llvm-install/lib:D_LIBRARY_PATH OMP_NUM_THREADS=8 numactl -C 24-31 ./MM2.libblis-mt.orig.f18
 23.23s 9.57 8
 23.23s   9.57 8
 ```
 
 At the same time, GCC produces different timings:
 ```
 OMP_NUM_THREADS=8 numactl -C 24-31 ./MM2.libblis-mt.orig.gcc
  2.14s 103.76 8
 17.04s  13.05 8
 ```
 
**Expected**
- SYSTEM_CLOCK takes system time (not happens)
- CPU_TIME takes total CPU time (works now)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUV02TmzwS_jXypcsUNNjGBx8YPN6kNrNJJZNDTpQAgZURiJVEZubfb0l8mPFMJoc9vO9b5cJSqz_U3c8jBNWa1y1jB7K5IZvjivbmLNWhkk9G0XaVy_L58IH-4m0N5sygkkLIRzsrZMmAYGyYNhoaahR_gqYXhneCF9Rw2YLuGCuBt6BN3_ESHukzwT0JE-IfiZ-QrT_-3LRTsla0GX1lo6_nYRGg1wxk02WC55OINzYWN9DKlk1CxaggGMc2EqZAhZAFNTQXDGzkMIGEYGyHmLqnU7t5Q5Zey6awrWE1UwTjiOB-8sqtyU_7eLCPNq-KNrKjsopeW8YLS6c6aF4pzr6ZUs5p32TmrBgt9fsutaHKZIY3zJqxtryMBe00G-eDj7ddFLJvDcHU_WeKGmteCFk8DJPX5Z6Ds0K2pc7GUDZqx6irCi1MT8U7tkYHVs9onJSGQgIJj7ANN5O0rAZRvI0mmVN0wrH2s6oTLtowYoIRjC0WpvqP_zMeyupKmC6U7aITatmrgrkQfukvYFJQIUDRtpRNppmtQ_yb1bZvclf_5E8KN9cKZc2axnneGYI7i9V5tNzqPAk8u8k0WYhuJh1_WEuXaS-Dffvx7f72Lks_fU7_TTAeEBIeX4JtgZfwuMDLla-i60eT2PV8Xi0lcFdNB4TA9_-SfFlbQinH2XvJX7j1Tn649LwgoMtz8gDrJW1H7SsuOYORNi-YbBmEp2npzbJbDjr7Vz4xcSdrzUzW0Kf5hMGBmJgAetEmi90wYPtptPWyeKaUI_Zye-iUxromIzkxAVd5eOBtScLjHOHS50fFHTMJupMXkWB82no4NnEcEtzB0PWPjnNWbf_WyUMQNbjldN4knsZiDIFtGpj-vgTv9cJohLU7tf5ZVf4bl5lgAAM50L6FFNNuVCn236GI3fjysxx999JwdcEYniepoOiVYq2BStC2tpviBmr-i2lomLvnaNowGE5dqKSC9Mv37P7j3a3jtgbalk68PBOGJW8IcvtEm04wkL3pevO7G8-nY_bp483X5OuP7Ety_4GER4Kns7R0Pgn5QEXNCZ7sDcsKxK9mzVttqBB2ynMSJi8dwOe7L9l_vt9l9x--3ibHb7b1NgtaGAHrFDBahwF4BE93d-gJnueC63VjPKl47VXBhDMMPQw17L3NDq5k8FJ6lRCMf4m5VHF6L_wrTW23yr5gGkpeVcy1wPCGt7WeS_TK5f-VU10UE6zQCyINgR96u-28_2Dn-ZEGCELP3_whK8eU5PapY4WxoHcCt7J-CQRDH5gG_awNayYkx600cKZdx1o9Y319wdVgY6Shwgpns0epHjS08pHgflUewnIf7umKHYKdH2yiIMbd6nwIdmG-j_ZlTDflNi52lG32VbWJ_CqP8zgqVvyAPoYB-hjEoY87r4yKeBOWZRDmu4hVWxL5rKFceBZlnlT1imvds8MuQh9XguZMaPeJgDhyBu3Xgjo4VOZ9rUnkC66Nvngw3Aj3XTFYbI5kcyM71jYd2RxnBBQMZOXS1YY2nYacmUfGWjCP8g1-gWKmV62-FGnVK3E4G9M5DOGJ4Knm5tznXiGbkTcTfTolf7LCssmlpwmeXIb_CwAA__9xkMMZ">