67 lines · plain
1! REQUIRES: flang-supports-f128-math2! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s --check-prefixes="CHECK,CHECK-FAST"3! RUN: bbc --math-runtime=precise -emit-fir -hlfir=false %s -o - | FileCheck %s --check-prefixes="CHECK,CHECK-PRECISE"4! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir %s -o - | FileCheck %s --check-prefixes="CHECK,CHECK-FAST"5 6function test_real4(x)7 real :: x, test_real48 test_real4 = atand(x)9end function10 11! CHECK-LABEL: @_QPtest_real412! CHECK-PRECISE: %[[atan:.*]] = fir.call @atanf({{%[A-Za-z0-9._]+}}) fastmath<contract> : (f32) -> f3213! CHECK-FAST: %[[atan:.*]] = math.atan %{{.*}} : f3214! CHECK: %[[factor:.*]] = arith.constant 57.2957763 : f3215! CHECK: %{{.*}} = arith.mulf %[[atan]], %[[factor]] fastmath<contract> : f3216 17function test_real8(x)18 real(8) :: x, test_real819 test_real8 = atand(x)20end function21 22! CHECK-LABEL: @_QPtest_real823! CHECK-PRECISE: %[[atan:.*]] = fir.call @atan({{%[A-Za-z0-9._]+}}) fastmath<contract> : (f64) -> f6424! CHECK-FAST: %[[atan:.*]] = math.atan %{{.*}} : f6425! CHECK: %[[factor:.*]] = arith.constant 57.295779513082323 : f6426! CHECK: %{{.*}} = arith.mulf %[[atan]], %[[factor]] fastmath<contract> : f6427 28function test_real16(x)29 real(16) :: x, test_real1630 test_real16 = atand(x)31end function32 33! CHECK-LABEL: @_QPtest_real1634! CHECK: %[[atan:.*]] = fir.call @_FortranAAtanF128({{.*}}) fastmath<contract> : (f128) -> f12835! CHECK: %[[factor:.*]] = arith.constant 57.295779513082320876798154814105{{.*}} : f12836! CHECK: %{{.*}} = arith.mulf %[[atan]], %[[factor]] fastmath<contract> : f12837 38function test_real4_yx(y, x)39 real(4) :: x, y, test_real440 test_real4 = atand(y, x)41end function42 43! CHECK-LABEL: @_QPtest_real4_yx44! CHECK: %[[atan2:.*]] = math.atan2 %{{.*}}, %{{.*}}: f3245! CHECK: %[[factor:.*]] = arith.constant 57.2957763 : f3246! CHECK: %{{.*}} = arith.mulf %[[atan2]], %[[factor]] fastmath<contract> : f3247 48function test_real8_yx(y, x)49 real(8) :: x, y, test_real850 test_real8 = atand(y, x)51end function52 53! CHECK-LABEL: @_QPtest_real8_yx54! CHECK: %[[atan2:.*]] = math.atan2 %{{.*}}, %{{.*}}: f6455! CHECK: %[[factor:.*]] = arith.constant 57.295779513082323 : f6456! CHECK: %{{.*}} = arith.mulf %[[atan2]], %[[factor]] fastmath<contract> : f6457 58function test_real16_yx(y, x)59 real(16) :: x, y, test_real1660 test_real16 = atand(y, x)61end function62 63! CHECK-LABEL: @_QPtest_real16_yx64! CHECK: %[[atan2:.*]] = math.atan2 %{{.*}}, %{{.*}}: f12865! CHECK: %[[factor:.*]] = arith.constant 57.295779513082320876798154814105{{.*}} : f12866! CHECK: %{{.*}} = arith.mulf %[[atan2]], %[[factor]] fastmath<contract> : f12867