anchor.diff:  ! This is because splitmix64 assumes uint64 wrap-around, which is undefined in F90/95 std.
   ! Even though there are warnings, AFAIK, generated assembler codes are ones as expected.
   seed = seed + step
  -res = seed
  -res = ieor(res, ishft(res, -30)) * mix1
  -res = ieor(res, ishft(res, -27)) * mix2
  -res = ieor(res, ishft(res, -31))
  -end function
  -!====================================================================!
  -end module +tmp = seed
  +tmp = ieor(tmp, ishft(res, -30)) * mix1
  +tmp = ieor(tmp, ishft(res, -27)) * mix2
  +tmp = ieor(tmp, ishft(res, -31))
  +res = tmp
  +end subroutine
  +!====================================================================!
  +end module 
  
positive.code: !====================================================================!
  
  !====================================================================!
  function splitmix64(seed) result(res)
    !! SplitMix64 implementation for random number seed initialization
  !====================================================================!
  integer(i64), intent(inout) :: seed
  integer(i64) :: res
  
  ! As of Fortran95 BOZ literals are available only in DATA stmts.
  ! Also, gfortran does not allow integer(8) greater than 2^63...
  
negative.code: 
  ! use splimix64 for initialization
  do i = 1, nSeeds
    call splitmix64(t, seed(i))
  end do
  
  end subroutine
  