brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.6 KiB · dbfa1bd Raw
174 lines · plain
1! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s2 3! CHECK-LABEL: func.func @_QPselected_real_kind_test1(4! CHECK-SAME:                                         %[[VAL_0:.*]]: !fir.ref<i8> {fir.bindc_name = "p"},5! CHECK-SAME:                                         %[[VAL_1:.*]]: !fir.ref<i8> {fir.bindc_name = "r"},6! CHECK-SAME:                                         %[[VAL_2:.*]]: !fir.ref<i8> {fir.bindc_name = "d"}) {7! CHECK:         %[[VAL_3:.*]] = fir.alloca i8 {bindc_name = "res", uniq_name = "_QFselected_real_kind_test1Eres"}8! CHECK:         %[[VAL_6:.*]] = arith.constant 1 : i329! CHECK:         %[[VAL_7:.*]] = arith.constant 1 : i3210! CHECK:         %[[VAL_8:.*]] = arith.constant 1 : i3211! CHECK:         %[[VAL_10:.*]] = fir.convert %[[VAL_0]] : (!fir.ref<i8>) -> !fir.llvm_ptr<i8>12! CHECK:         %[[VAL_11:.*]] = fir.convert %[[VAL_1]] : (!fir.ref<i8>) -> !fir.llvm_ptr<i8>13! CHECK:         %[[VAL_12:.*]] = fir.convert %[[VAL_2]] : (!fir.ref<i8>) -> !fir.llvm_ptr<i8>14! CHECK:         %[[VAL_13:.*]] = fir.call @_FortranASelectedRealKind(%{{.*}}, %{{.*}}, %[[VAL_10]], %[[VAL_6]], %[[VAL_11]], %[[VAL_7]], %[[VAL_12]], %[[VAL_8]]) {{.*}}: (!fir.ref<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32) -> i3215! CHECK:         %[[VAL_14:.*]] = fir.convert %[[VAL_13]] : (i32) -> i816! CHECK:         fir.store %[[VAL_14]] to %[[VAL_3]] : !fir.ref<i8>17! CHECK:         return18! CHECK:       }19 20subroutine selected_real_kind_test1(p, r, d)21  integer(1) :: p, r, d, res22  res = selected_real_kind(P=p, R=r, RADIX=d)23end24 25! CHECK-LABEL: func.func @_QPselected_real_kind_test2(26! CHECK-SAME:                                         %[[VAL_0:.*]]: !fir.ref<i16> {fir.bindc_name = "p"},27! CHECK-SAME:                                         %[[VAL_1:.*]]: !fir.ref<i16> {fir.bindc_name = "r"},28! CHECK-SAME:                                         %[[VAL_2:.*]]: !fir.ref<i16> {fir.bindc_name = "d"}) {29! CHECK:         %[[VAL_3:.*]] = fir.alloca i16 {bindc_name = "res", uniq_name = "_QFselected_real_kind_test2Eres"}30! CHECK:         %[[VAL_6:.*]] = arith.constant 2 : i3231! CHECK:         %[[VAL_7:.*]] = arith.constant 2 : i3232! CHECK:         %[[VAL_8:.*]] = arith.constant 2 : i3233! CHECK:         %[[VAL_10:.*]] = fir.convert %[[VAL_0]] : (!fir.ref<i16>) -> !fir.llvm_ptr<i8>34! CHECK:         %[[VAL_11:.*]] = fir.convert %[[VAL_1]] : (!fir.ref<i16>) -> !fir.llvm_ptr<i8>35! CHECK:         %[[VAL_12:.*]] = fir.convert %[[VAL_2]] : (!fir.ref<i16>) -> !fir.llvm_ptr<i8>36! CHECK:         %[[VAL_13:.*]] = fir.call @_FortranASelectedRealKind(%{{.*}}, %{{.*}}, %[[VAL_10]], %[[VAL_6]], %[[VAL_11]], %[[VAL_7]], %[[VAL_12]], %[[VAL_8]]) {{.*}}: (!fir.ref<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32) -> i3237! CHECK:         %[[VAL_14:.*]] = fir.convert %[[VAL_13]] : (i32) -> i1638! CHECK:         fir.store %[[VAL_14]] to %[[VAL_3]] : !fir.ref<i16>39! CHECK:         return40! CHECK:       }41 42subroutine selected_real_kind_test2(p, r, d)43  integer(2) :: p, r, d, res44  res = selected_real_kind(P=p, R=r, RADIX=d)45end46 47! CHECK-LABEL: func.func @_QPselected_real_kind_test4(48! CHECK-SAME:                                         %[[VAL_0:.*]]: !fir.ref<i32> {fir.bindc_name = "p"},49! CHECK-SAME:                                         %[[VAL_1:.*]]: !fir.ref<i32> {fir.bindc_name = "r"},50! CHECK-SAME:                                         %[[VAL_2:.*]]: !fir.ref<i32> {fir.bindc_name = "d"}) {51! CHECK:         %[[VAL_3:.*]] = fir.alloca i32 {bindc_name = "res", uniq_name = "_QFselected_real_kind_test4Eres"}52! CHECK:         %[[VAL_6:.*]] = arith.constant 4 : i3253! CHECK:         %[[VAL_7:.*]] = arith.constant 4 : i3254! CHECK:         %[[VAL_8:.*]] = arith.constant 4 : i3255! CHECK:         %[[VAL_10:.*]] = fir.convert %[[VAL_0]] : (!fir.ref<i32>) -> !fir.llvm_ptr<i8>56! CHECK:         %[[VAL_11:.*]] = fir.convert %[[VAL_1]] : (!fir.ref<i32>) -> !fir.llvm_ptr<i8>57! CHECK:         %[[VAL_12:.*]] = fir.convert %[[VAL_2]] : (!fir.ref<i32>) -> !fir.llvm_ptr<i8>58! CHECK:         %[[VAL_13:.*]] = fir.call @_FortranASelectedRealKind(%{{.*}}, %{{.*}}, %[[VAL_10]], %[[VAL_6]], %[[VAL_11]], %[[VAL_7]], %[[VAL_12]], %[[VAL_8]]) {{.*}}: (!fir.ref<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32) -> i3259! CHECK:         fir.store %[[VAL_13]] to %[[VAL_3]] : !fir.ref<i32>60! CHECK:         return61! CHECK:       }62 63subroutine selected_real_kind_test4(p, r, d)64  integer(4) :: p, r, d, res65  res = selected_real_kind(P=p, R=r, RADIX=d)66end67 68! CHECK-LABEL: func.func @_QPselected_real_kind_test8(69! CHECK-SAME:                                         %[[VAL_0:.*]]: !fir.ref<i64> {fir.bindc_name = "p"},70! CHECK-SAME:                                         %[[VAL_1:.*]]: !fir.ref<i64> {fir.bindc_name = "r"},71! CHECK-SAME:                                         %[[VAL_2:.*]]: !fir.ref<i64> {fir.bindc_name = "d"}) {72! CHECK:         %[[VAL_3:.*]] = fir.alloca i64 {bindc_name = "res", uniq_name = "_QFselected_real_kind_test8Eres"}73! CHECK:         %[[VAL_6:.*]] = arith.constant 8 : i3274! CHECK:         %[[VAL_7:.*]] = arith.constant 8 : i3275! CHECK:         %[[VAL_8:.*]] = arith.constant 8 : i3276! CHECK:         %[[VAL_10:.*]] = fir.convert %[[VAL_0]] : (!fir.ref<i64>) -> !fir.llvm_ptr<i8>77! CHECK:         %[[VAL_11:.*]] = fir.convert %[[VAL_1]] : (!fir.ref<i64>) -> !fir.llvm_ptr<i8>78! CHECK:         %[[VAL_12:.*]] = fir.convert %[[VAL_2]] : (!fir.ref<i64>) -> !fir.llvm_ptr<i8>79! CHECK:         %[[VAL_13:.*]] = fir.call @_FortranASelectedRealKind(%{{.*}}, %{{.*}}, %[[VAL_10]], %[[VAL_6]], %[[VAL_11]], %[[VAL_7]], %[[VAL_12]], %[[VAL_8]]) {{.*}}: (!fir.ref<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32) -> i3280! CHECK:         %[[VAL_14:.*]] = fir.convert %[[VAL_13]] : (i32) -> i6481! CHECK:         fir.store %[[VAL_14]] to %[[VAL_3]] : !fir.ref<i64>82! CHECK:         return83! CHECK:       }84 85subroutine selected_real_kind_test8(p, r, d)86  integer(8) :: p, r, d, res87  res = selected_real_kind(P=p, R=r, RADIX=d)88end89 90! CHECK-LABEL: func.func @_QPselected_real_kind_test16(91! CHECK-SAME:                                          %[[VAL_0:.*]]: !fir.ref<i128> {fir.bindc_name = "p"},92! CHECK-SAME:                                          %[[VAL_1:.*]]: !fir.ref<i128> {fir.bindc_name = "r"},93! CHECK-SAME:                                          %[[VAL_2:.*]]: !fir.ref<i128> {fir.bindc_name = "d"}) {94! CHECK:         %[[VAL_3:.*]] = fir.alloca i128 {bindc_name = "res", uniq_name = "_QFselected_real_kind_test16Eres"}95! CHECK:         %[[VAL_6:.*]] = arith.constant 16 : i3296! CHECK:         %[[VAL_7:.*]] = arith.constant 16 : i3297! CHECK:         %[[VAL_8:.*]] = arith.constant 16 : i3298! CHECK:         %[[VAL_10:.*]] = fir.convert %[[VAL_0]] : (!fir.ref<i128>) -> !fir.llvm_ptr<i8>99! CHECK:         %[[VAL_11:.*]] = fir.convert %[[VAL_1]] : (!fir.ref<i128>) -> !fir.llvm_ptr<i8>100! CHECK:         %[[VAL_12:.*]] = fir.convert %[[VAL_2]] : (!fir.ref<i128>) -> !fir.llvm_ptr<i8>101! CHECK:         %[[VAL_13:.*]] = fir.call @_FortranASelectedRealKind(%{{.*}}, %{{.*}}, %[[VAL_10]], %[[VAL_6]], %[[VAL_11]], %[[VAL_7]], %[[VAL_12]], %[[VAL_8]]) {{.*}}: (!fir.ref<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32) -> i32102! CHECK:         %[[VAL_14:.*]] = fir.convert %[[VAL_13]] : (i32) -> i128103! CHECK:         fir.store %[[VAL_14]] to %[[VAL_3]] : !fir.ref<i128>104! CHECK:         return105! CHECK:       }106 107subroutine selected_real_kind_test16(p, r, d)108  integer(16) :: p, r, d, res109  res = selected_real_kind(P=p, R=r, RADIX=d)110end111 112! CHECK-LABEL: func.func @_QPselected_real_kind_test_rd(113! CHECK-SAME:                                           %[[VAL_0:.*]]: !fir.ref<i32> {fir.bindc_name = "r"},114! CHECK-SAME:                                           %[[VAL_1:.*]]: !fir.ref<i32> {fir.bindc_name = "d"}) {115! CHECK:         %[[VAL_2:.*]] = fir.alloca i32 {bindc_name = "res", uniq_name = "_QFselected_real_kind_test_rdEres"}116! CHECK:         %[[VAL_3:.*]] = fir.absent !fir.ref<i1>117! CHECK:         %[[VAL_6:.*]] = arith.constant 0 : i32118! CHECK:         %[[VAL_7:.*]] = arith.constant 4 : i32119! CHECK:         %[[VAL_8:.*]] = arith.constant 4 : i32120! CHECK:         %[[VAL_10:.*]] = fir.convert %[[VAL_3]] : (!fir.ref<i1>) -> !fir.llvm_ptr<i8>121! CHECK:         %[[VAL_11:.*]] = fir.convert %[[VAL_0]] : (!fir.ref<i32>) -> !fir.llvm_ptr<i8>122! CHECK:         %[[VAL_12:.*]] = fir.convert %[[VAL_1]] : (!fir.ref<i32>) -> !fir.llvm_ptr<i8>123! CHECK:         %[[VAL_13:.*]] = fir.call @_FortranASelectedRealKind(%{{.*}}, %{{.*}}, %[[VAL_10]], %[[VAL_6]], %[[VAL_11]], %[[VAL_7]], %[[VAL_12]], %[[VAL_8]]) {{.*}}: (!fir.ref<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32) -> i32124! CHECK:         fir.store %[[VAL_13]] to %[[VAL_2]] : !fir.ref<i32>125! CHECK:         return126! CHECK:       }127 128subroutine selected_real_kind_test_rd(r, d)129  integer :: r, d, res130  res = selected_real_kind(R=r, RADIX=d)131end132 133! CHECK-LABEL: func.func @_QPselected_real_kind_test_pd(134! CHECK-SAME:                                           %[[VAL_0:.*]]: !fir.ref<i32> {fir.bindc_name = "p"},135! CHECK-SAME:                                           %[[VAL_1:.*]]: !fir.ref<i32> {fir.bindc_name = "d"}) {136! CHECK:         %[[VAL_2:.*]] = fir.alloca i32 {bindc_name = "res", uniq_name = "_QFselected_real_kind_test_pdEres"}137! CHECK:         %[[VAL_3:.*]] = fir.absent !fir.ref<i1>138! CHECK:         %[[VAL_6:.*]] = arith.constant 4 : i32139! CHECK:         %[[VAL_7:.*]] = arith.constant 0 : i32140! CHECK:         %[[VAL_8:.*]] = arith.constant 4 : i32141! CHECK:         %[[VAL_10:.*]] = fir.convert %[[VAL_0]] : (!fir.ref<i32>) -> !fir.llvm_ptr<i8>142! CHECK:         %[[VAL_11:.*]] = fir.convert %[[VAL_3]] : (!fir.ref<i1>) -> !fir.llvm_ptr<i8>143! CHECK:         %[[VAL_12:.*]] = fir.convert %[[VAL_1]] : (!fir.ref<i32>) -> !fir.llvm_ptr<i8>144! CHECK:         %[[VAL_13:.*]] = fir.call @_FortranASelectedRealKind(%{{.*}}, %{{.*}}, %[[VAL_10]], %[[VAL_6]], %[[VAL_11]], %[[VAL_7]], %[[VAL_12]], %[[VAL_8]]) {{.*}}: (!fir.ref<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32) -> i32145! CHECK:         fir.store %[[VAL_13]] to %[[VAL_2]] : !fir.ref<i32>146! CHECK:         return147! CHECK:       }148 149subroutine selected_real_kind_test_pd(p, d)150  integer :: p, d, res151  res = selected_real_kind(P=p, RADIX=d)152end153 154! CHECK-LABEL: func.func @_QPselected_real_kind_test_pr(155! CHECK-SAME:                                           %[[VAL_0:.*]]: !fir.ref<i32> {fir.bindc_name = "p"},156! CHECK-SAME:                                           %[[VAL_1:.*]]: !fir.ref<i32> {fir.bindc_name = "r"}) {157! CHECK:         %[[VAL_2:.*]] = fir.alloca i32 {bindc_name = "res", uniq_name = "_QFselected_real_kind_test_prEres"}158! CHECK:         %[[VAL_3:.*]] = fir.absent !fir.ref<i1>159! CHECK:         %[[VAL_6:.*]] = arith.constant 4 : i32160! CHECK:         %[[VAL_7:.*]] = arith.constant 4 : i32161! CHECK:         %[[VAL_8:.*]] = arith.constant 0 : i32162! CHECK:         %[[VAL_10:.*]] = fir.convert %[[VAL_0]] : (!fir.ref<i32>) -> !fir.llvm_ptr<i8>163! CHECK:         %[[VAL_11:.*]] = fir.convert %[[VAL_1]] : (!fir.ref<i32>) -> !fir.llvm_ptr<i8>164! CHECK:         %[[VAL_12:.*]] = fir.convert %[[VAL_3]] : (!fir.ref<i1>) -> !fir.llvm_ptr<i8>165! CHECK:         %[[VAL_13:.*]] = fir.call @_FortranASelectedRealKind(%{{.*}}, %{{.*}}, %[[VAL_10]], %[[VAL_6]], %[[VAL_11]], %[[VAL_7]], %[[VAL_12]], %[[VAL_8]]) {{.*}}: (!fir.ref<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32, !fir.llvm_ptr<i8>, i32) -> i32166! CHECK:         fir.store %[[VAL_13]] to %[[VAL_2]] : !fir.ref<i32>167! CHECK:         return168! CHECK:       }169 170subroutine selected_real_kind_test_pr(p, r)171  integer :: p, r, res172  res = selected_real_kind(P=p, R=r)173end174