brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.7 KiB · d155b7d Raw
128 lines · plain
1! RUN: bbc -emit-hlfir %s -o - | FileCheck %s --check-prefixes=CHECK%if target=x86_64{{.*}} %{,CHECK-KIND10%}%if flang-supports-f128-math %{,CHECK-KIND16%}2! Test real add on real kinds.3 4! CHECK-LABEL: real25REAL(2) FUNCTION real2(x0, x1)6  REAL(2) :: x07  REAL(2) :: x18  ! CHECK: %[[x0:.*]]:2 = hlfir.declare{{.*}}x0"9  ! CHECK: %[[x1:.*]]:2 = hlfir.declare{{.*}}x1"10  ! CHECK-DAG: %[[v1:.+]] = fir.load %[[x0]]#0 : !fir.ref<f16>11  ! CHECK-DAG: %[[v2:.+]] = fir.load %[[x1]]#0 : !fir.ref<f16>12  ! CHECK: %[[v3:.+]] = arith.addf %[[v1]], %[[v2]] {{.*}}: f1613  real2 = x0 + x114  ! CHECK: return %{{.*}} : f1615END FUNCTION real216 17! CHECK-LABEL: real318REAL(3) FUNCTION real3(x0, x1)19  REAL(3) :: x020  REAL(3) :: x121  ! CHECK: %[[x0:.*]]:2 = hlfir.declare{{.*}}x0"22  ! CHECK: %[[x1:.*]]:2 = hlfir.declare{{.*}}x1"23  ! CHECK-DAG: %[[v1:.+]] = fir.load %[[x0]]#0 : !fir.ref<bf16>24  ! CHECK-DAG: %[[v2:.+]] = fir.load %[[x1]]#0 : !fir.ref<bf16>25  ! CHECK: %[[v3:.+]] = arith.addf %[[v1]], %[[v2]] {{.*}}: bf1626  real3 = x0 + x127  ! CHECK: return %{{.*}} : bf1628END FUNCTION real329 30! CHECK-LABEL: real431REAL(4) FUNCTION real4(x0, x1)32  REAL(4) :: x033  REAL(4) :: x134  ! CHECK: %[[x0:.*]]:2 = hlfir.declare{{.*}}x0"35  ! CHECK: %[[x1:.*]]:2 = hlfir.declare{{.*}}x1"36  ! CHECK-DAG: %[[v1:.+]] = fir.load %[[x0]]#0 : !fir.ref<f32>37  ! CHECK-DAG: %[[v2:.+]] = fir.load %[[x1]]#0 : !fir.ref<f32>38  ! CHECK: %[[v3:.+]] = arith.addf %[[v1]], %[[v2]] {{.*}}: f3239  real4 = x0 + x140  ! CHECK: return %{{.*}} : f3241END FUNCTION real442 43! CHECK-LABEL: defreal44REAL FUNCTION defreal(x0, x1)45  REAL :: x046  REAL :: x147  ! CHECK: %[[x0:.*]]:2 = hlfir.declare{{.*}}x0"48  ! CHECK: %[[x1:.*]]:2 = hlfir.declare{{.*}}x1"49  ! CHECK-DAG: %[[v1:.+]] = fir.load %[[x0]]#0 : !fir.ref<f32>50  ! CHECK-DAG: %[[v2:.+]] = fir.load %[[x1]]#0 : !fir.ref<f32>51  ! CHECK: %[[v3:.+]] = arith.addf %[[v1]], %[[v2]] {{.*}}: f3252  defreal = x0 + x153  ! CHECK: return %{{.*}} : f3254END FUNCTION defreal55 56! CHECK-LABEL: real857REAL(8) FUNCTION real8(x0, x1)58  REAL(8) :: x059  REAL(8) :: x160  ! CHECK: %[[x0:.*]]:2 = hlfir.declare{{.*}}x0"61  ! CHECK: %[[x1:.*]]:2 = hlfir.declare{{.*}}x1"62  ! CHECK-DAG: %[[v1:.+]] = fir.load %[[x0]]#0 : !fir.ref<f64>63  ! CHECK-DAG: %[[v2:.+]] = fir.load %[[x1]]#0 : !fir.ref<f64>64  ! CHECK: %[[v3:.+]] = arith.addf %[[v1]], %[[v2]] {{.*}}: f6465  real8 = x0 + x166  ! CHECK: return %{{.*}} : f6467END FUNCTION real868 69! CHECK-LABEL: doubleprec70DOUBLE PRECISION FUNCTION doubleprec(x0, x1)71  DOUBLE PRECISION :: x072  DOUBLE PRECISION :: x173  ! CHECK: %[[x0:.*]]:2 = hlfir.declare{{.*}}x0"74  ! CHECK: %[[x1:.*]]:2 = hlfir.declare{{.*}}x1"75  ! CHECK-DAG: %[[v1:.+]] = fir.load %[[x0]]#0 : !fir.ref<f64>76  ! CHECK-DAG: %[[v2:.+]] = fir.load %[[x1]]#0 : !fir.ref<f64>77  ! CHECK: %[[v3:.+]] = arith.addf %[[v1]], %[[v2]] {{.*}}: f6478  doubleprec = x0 + x179  ! CHECK: return %{{.*}} : f6480END FUNCTION doubleprec81 82! CHECK-KIND10-LABEL: real1083FUNCTION real10(x0, x1)84  INTEGER, PARAMETER :: kind10 = merge(10, 4, selected_real_kind(p=18).eq.10)85  REAL(kind10) :: real1086  REAL(kind10) :: x087  REAL(kind10) :: x188  ! CHECK-KIND10: %[[x0:.*]]:2 = hlfir.declare{{.*}}x0"89  ! CHECK-KIND10: %[[x1:.*]]:2 = hlfir.declare{{.*}}x1"90  ! CHECK-KIND10-DAG: %[[v1:.+]] = fir.load %[[x0]]#0 : !fir.ref<f80>91  ! CHECK-KIND10-DAG: %[[v2:.+]] = fir.load %[[x1]]#0 : !fir.ref<f80>92  ! CHECK-KIND10: %[[v3:.+]] = arith.addf %[[v1]], %[[v2]] {{.*}}: f8093  real10 = x0 + x194  ! CHECK-KIND10: return %{{.*}} : f8095END FUNCTION real1096 97! CHECK-KIND16-LABEL: real16(98FUNCTION real16(x0, x1)99  INTEGER, PARAMETER :: kind16 = merge(16, 4, selected_real_kind(p=33).eq.16)100  REAL(kind16) :: real16101  REAL(kind16) :: x0102  REAL(kind16) :: x1103  ! CHECK-KIND16: %[[x0:.*]]:2 = hlfir.declare{{.*}}x0"104  ! CHECK-KIND16: %[[x1:.*]]:2 = hlfir.declare{{.*}}x1"105  ! CHECK-KIND16-DAG: %[[v1:.+]] = fir.load %[[x0]]#0 : !fir.ref<f128>106  ! CHECK-KIND16-DAG: %[[v2:.+]] = fir.load %[[x1]]#0 : !fir.ref<f128>107  ! CHECK-KIND16: %[[v3:.+]] = arith.addf %[[v1]], %[[v2]] {{.*}}: f128108  real16 = x0 + x1109  ! CHECK-KIND16: return %{{.*}} : f128110END FUNCTION real16111 112! CHECK-KIND16-LABEL: real16b113FUNCTION real16b(x0, x1)114  INTEGER, PARAMETER :: kind16 = merge(16, 4, selected_real_kind(p=33).eq.16)115  REAL(kind16) :: real16b116  REAL(kind16) :: x0117  REAL(kind16) :: x1118  ! CHECK-KIND16: %[[x0:.*]]:2 = hlfir.declare{{.*}}x0"119  ! CHECK-KIND16: %[[x1:.*]]:2 = hlfir.declare{{.*}}x1"120  ! CHECK-KIND16-DAG: %[[v1:.+]] = fir.load %[[x0]]#0 : !fir.ref<f128>121  ! CHECK-KIND16-DAG: %[[v2:.+]] = fir.load %[[x1]]#0 : !fir.ref<f128>122  ! CHECK-KIND16-DAG: %[[v3:.+]] = arith.addf %[[v1]], %[[v2]] {{.*}}: f128123  ! CHECK-KIND16-DAG: %[[v0:.+]] = arith.constant 4.0{{.*}} : f128124  ! CHECK-KIND16: %[[v4:.+]] = arith.subf %[[v3]], %[[v0]] {{.*}}: f128125  real16b = x0 + x1 - 4.0_16126  ! CHECK-KIND16: return %{{.*}} : f128127END FUNCTION real16b128