diff --git a/flang/test/Lower/Intrinsics/bessel_yn.f90 b/flang/test/Lower/Intrinsics/bessel_yn.f90 index 2097fb9006ff5..2ce0fe3c6e5b7 100644 --- a/flang/test/Lower/Intrinsics/bessel_yn.f90 +++ b/flang/test/Lower/Intrinsics/bessel_yn.f90 @@ -1,116 +1,127 @@ -! RUN: bbc -emit-fir -hlfir=false %s -o - --math-runtime=fast | FileCheck --check-prefixes=ALL %s -! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir -mllvm -math-runtime=fast %s -o - | FileCheck --check-prefixes=ALL %s -! RUN: bbc -emit-fir -hlfir=false %s -o - --math-runtime=relaxed | FileCheck --check-prefixes=ALL %s -! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir -mllvm -math-runtime=relaxed %s -o - | FileCheck --check-prefixes=ALL %s -! RUN: bbc -emit-fir -hlfir=false %s -o - --math-runtime=precise | FileCheck --check-prefixes=ALL %s -! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir -mllvm -math-runtime=precise %s -o - | FileCheck --check-prefixes=ALL %s +! RUN: %flang_fc1 -emit-hlfir %s -o - -mllvm -math-runtime=fast | FileCheck --check-prefixes=ALL %s +! RUN: %flang_fc1 -emit-hlfir %s -o - -mllvm -math-runtime=relaxed | FileCheck --check-prefixes=ALL %s +! RUN: %flang_fc1 -emit-hlfir %s -o - -mllvm -math-runtime=precise | FileCheck --check-prefixes=ALL %s -! ALL-LABEL: @_QPtest_real4 -! ALL-SAME: (%[[argx:.*]]: !fir.ref{{.*}}, %[[argn:.*]]: !fir.ref{{.*}}) -> f32 +! ALL-LABEL: func.func @_QPtest_real4 +! ALL-SAME: (%[[argx:.*]]: !fir.ref {fir.bindc_name = "x"}, %[[argn:.*]]: !fir.ref {fir.bindc_name = "n"}) -> f32 { function test_real4(x, n) real :: x, test_real4 integer :: n - ! ALL-DAG: %[[x:.*]] = fir.load %[[argx]] : !fir.ref - ! ALL-DAG: %[[n:.*]] = fir.load %[[argn]] : !fir.ref + ! ALL: %[[scope:.*]] = fir.dummy_scope : !fir.dscope + ! ALL: %[[n_decl:.*]]:2 = hlfir.declare %[[argn]] dummy_scope %[[scope]] arg 2 {uniq_name = "_QFtest_real4En"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! ALL: %[[res_alloc:.*]] = fir.alloca f32 {bindc_name = "test_real4", uniq_name = "_QFtest_real4Etest_real4"} + ! ALL: %[[res_decl:.*]]:2 = hlfir.declare %[[res_alloc]] {uniq_name = "_QFtest_real4Etest_real4"} : (!fir.ref) -> (!fir.ref, !fir.ref) + ! ALL: %[[x_decl:.*]]:2 = hlfir.declare %[[argx]] dummy_scope %[[scope]] arg 1 {uniq_name = "_QFtest_real4Ex"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! ALL-DAG: %[[n:.*]] = fir.load %[[n_decl]]#0 : !fir.ref + ! ALL-DAG: %[[x:.*]] = fir.load %[[x_decl]]#0 : !fir.ref ! ALL: fir.call @ynf(%[[n]], %[[x]]) {{.*}} : (i32, f32) -> f32 test_real4 = bessel_yn(n, x) end function -! ALL-LABEL: @_QPtest_real8 -! ALL-SAME: (%[[argx:.*]]: !fir.ref{{.*}}, %[[argn:.*]]: !fir.ref{{.*}}) -> f64 +! ALL-LABEL: func.func @_QPtest_real8 +! ALL-SAME: (%[[argx:.*]]: !fir.ref {fir.bindc_name = "x"}, %[[argn:.*]]: !fir.ref {fir.bindc_name = "n"}) -> f64 { function test_real8(x, n) real(8) :: x, test_real8 integer :: n - ! ALL-DAG: %[[x:.*]] = fir.load %[[argx]] : !fir.ref - ! ALL-DAG: %[[n:.*]] = fir.load %[[argn]] : !fir.ref + ! ALL: %[[scope:.*]] = fir.dummy_scope : !fir.dscope + ! ALL: %[[n_decl:.*]]:2 = hlfir.declare %[[argn]] dummy_scope %[[scope]] arg 2 {uniq_name = "_QFtest_real8En"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! ALL: %[[res_alloc:.*]] = fir.alloca f64 {bindc_name = "test_real8", uniq_name = "_QFtest_real8Etest_real8"} + ! ALL: %[[res_decl:.*]]:2 = hlfir.declare %[[res_alloc]] {uniq_name = "_QFtest_real8Etest_real8"} : (!fir.ref) -> (!fir.ref, !fir.ref) + ! ALL: %[[x_decl:.*]]:2 = hlfir.declare %[[argx]] dummy_scope %[[scope]] arg 1 {uniq_name = "_QFtest_real8Ex"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! ALL-DAG: %[[n:.*]] = fir.load %[[n_decl]]#0 : !fir.ref + ! ALL-DAG: %[[x:.*]] = fir.load %[[x_decl]]#0 : !fir.ref ! ALL: fir.call @yn(%[[n]], %[[x]]) {{.*}} : (i32, f64) -> f64 test_real8 = bessel_yn(n, x) end function -! ALL-LABEL: @_QPtest_transformational_real4 -! ALL-SAME: %[[argx:.*]]: !fir.ref{{.*}}, %[[argn1:.*]]: !fir.ref{{.*}}, %[[argn2:.*]]: !fir.ref{{.*}} +! ALL-LABEL: func.func @_QPtest_transformational_real4 +! ALL-SAME: (%[[argx:.*]]: !fir.ref {fir.bindc_name = "x"}, %[[argn1:.*]]: !fir.ref {fir.bindc_name = "n1"}, %[[argn2:.*]]: !fir.ref {fir.bindc_name = "n2"}, %[[argr:.*]]: !fir.box> {fir.bindc_name = "r"}) { subroutine test_transformational_real4(x, n1, n2, r) real(4) :: x integer :: n1, n2 real(4) :: r(:) - ! ALL-DAG: %[[zero:.*]] = arith.constant 0{{.*}} : f32 - ! ALL-DAG: %[[one:.*]] = arith.constant 1 : i32 - ! ALL-DAG: %[[r:.*]] = fir.alloca !fir.box>> - ! ALL-DAG: %[[x:.*]] = fir.load %[[argx]] : !fir.ref - ! ALL-DAG: %[[n1:.*]] = fir.load %[[argn1]] : !fir.ref - ! ALL-DAG: %[[n2:.*]] = fir.load %[[argn2]] : !fir.ref - ! ALL-DAG: %[[xeq0:.*]] = arith.cmpf ueq, %[[x]], %[[zero]] {{.*}} : f32 - ! ALL-DAG: %[[n1ltn2:.*]] = arith.cmpi slt, %[[n1]], %[[n2]] : i32 - ! ALL-DAG: %[[n1eqn2:.*]] = arith.cmpi eq, %[[n1]], %[[n2]] : i32 + ! ALL: %[[temp:.*]] = fir.alloca !fir.box>> + ! ALL: %[[scope:.*]] = fir.dummy_scope : !fir.dscope + ! ALL: %[[n1_decl:.*]]:2 = hlfir.declare %[[argn1]] dummy_scope %[[scope]] arg 2 {uniq_name = "_QFtest_transformational_real4En1"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! ALL: %[[n2_decl:.*]]:2 = hlfir.declare %[[argn2]] dummy_scope %[[scope]] arg 3 {uniq_name = "_QFtest_transformational_real4En2"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! ALL: %[[r_decl:.*]]:2 = hlfir.declare %[[argr]] dummy_scope %[[scope]] arg 4 {uniq_name = "_QFtest_transformational_real4Er"} : (!fir.box>, !fir.dscope) -> (!fir.box>, !fir.box>) + ! ALL: %[[x_decl:.*]]:2 = hlfir.declare %[[argx]] dummy_scope %[[scope]] arg 1 {uniq_name = "_QFtest_transformational_real4Ex"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! ALL-DAG: %[[n1:.*]] = fir.load %[[n1_decl]]#0 : !fir.ref + ! ALL-DAG: %[[n2:.*]] = fir.load %[[n2_decl]]#0 : !fir.ref + ! ALL-DAG: %[[x:.*]] = fir.load %[[x_decl]]#0 : !fir.ref + ! ALL: %[[zero:.*]] = arith.constant 0{{.*}} : f32 + ! ALL: %[[one:.*]] = arith.constant 1 : i32 + ! ALL: %[[xeq0:.*]] = arith.cmpf ueq, %[[x]], %[[zero]] {{.*}} : f32 + ! ALL: %[[n1ltn2:.*]] = arith.cmpi slt, %[[n1]], %[[n2]] : i32 + ! ALL: %[[n1eqn2:.*]] = arith.cmpi eq, %[[n1]], %[[n2]] : i32 ! ALL: fir.if %[[xeq0]] { - ! ALL: %[[resxeq0:.*]] = fir.convert %[[r]] {{.*}} + ! ALL: %[[resxeq0:.*]] = fir.convert %[[temp]] {{.*}} ! ALL: fir.call @_FortranABesselYnX0_4(%[[resxeq0]], %[[n1]], %[[n2]], {{.*}}, {{.*}}) {{.*}} : (!fir.ref>, i32, i32, !fir.ref, i32) -> () - ! ALL-NEXT: } else { - ! ALL-NEXT: fir.if %[[n1ltn2]] { + ! ALL: } else { + ! ALL: fir.if %[[n1ltn2]] { ! ALL-DAG: %[[n1_1:.*]] = arith.addi %[[n1]], %[[one]] : i32 ! ALL-DAG: %[[bn1:.*]] = fir.call @ynf(%[[n1]], %[[x]]) {{.*}} : (i32, f32) -> f32 ! ALL-DAG: %[[bn1_1:.*]] = fir.call @ynf(%[[n1_1]], %[[x]]) {{.*}} : (i32, f32) -> f32 - ! ALL-DAG: %[[resn1ltn2:.*]] = fir.convert %[[r]] {{.*}} + ! ALL: %[[resn1ltn2:.*]] = fir.convert %[[temp]] {{.*}} ! ALL: fir.call @_FortranABesselYn_4(%[[resn1ltn2]], %[[n1]], %[[n2]], %[[x]], %[[bn1]], %[[bn1_1]], {{.*}}, {{.*}}) {{.*}} : (!fir.ref>, i32, i32, f32, f32, f32, !fir.ref, i32) -> () - ! ALL-NEXT: } else { - ! ALL-NEXT: fir.if %[[n1eqn2]] { + ! ALL: } else { + ! ALL: fir.if %[[n1eqn2]] { ! ALL-DAG: %[[bn1:.*]] = fir.call @ynf(%[[n1]], %[[x]]) {{.*}} : (i32, f32) -> f32 - ! ALL-DAG: %[[resn1eqn2:.*]] = fir.convert %[[r]] {{.*}} + ! ALL: %[[resn1eqn2:.*]] = fir.convert %[[temp]] {{.*}} ! ALL: fir.call @_FortranABesselYn_4(%[[resn1eqn2]], %[[n1]], %[[n2]], %[[x]], %[[bn1]], %[[zero]], {{.*}}, {{.*}}) {{.*}} : (!fir.ref>, i32, i32, f32, f32, f32, !fir.ref, i32) -> () - ! ALL-NEXT: } else { - ! ALL-DAG: %[[resn1gtn2:.*]] = fir.convert %[[r]] {{.*}} + ! ALL: } else { + ! ALL: %[[resn1gtn2:.*]] = fir.convert %[[temp]] {{.*}} ! ALL: fir.call @_FortranABesselYn_4(%[[resn1gtn2]], %[[n1]], %[[n2]], %[[x]], %[[zero]], %[[zero]], {{.*}}, {{.*}}) {{.*}} : (!fir.ref>, i32, i32, f32, f32, f32, !fir.ref, i32) -> () - ! ALL-NEXT: } - ! ALL-NEXT: } - ! ALL-NEXT: } + ! ALL: } + ! ALL: } + ! ALL: } r = bessel_yn(n1, n2, x) - ! ALL: %[[box:.*]] = fir.load %[[r]] : !fir.ref>>> - ! ALL: %[[addr:.*]] = fir.box_addr %[[box]] : (!fir.box>>) -> !fir.heap> - ! ALL: fir.freemem %[[addr]] : !fir.heap> end subroutine test_transformational_real4 -! ALL-LABEL: @_QPtest_transformational_real8 -! ALL-SAME: %[[argx:.*]]: !fir.ref{{.*}}, %[[argn1:.*]]: !fir.ref{{.*}}, %[[argn2:.*]]: !fir.ref{{.*}} +! ALL-LABEL: func.func @_QPtest_transformational_real8 +! ALL-SAME: (%[[argx:.*]]: !fir.ref {fir.bindc_name = "x"}, %[[argn1:.*]]: !fir.ref {fir.bindc_name = "n1"}, %[[argn2:.*]]: !fir.ref {fir.bindc_name = "n2"}, %[[argr:.*]]: !fir.box> {fir.bindc_name = "r"}) { subroutine test_transformational_real8(x, n1, n2, r) real(8) :: x integer :: n1, n2 real(8) :: r(:) - ! ALL-DAG: %[[zero:.*]] = arith.constant 0{{.*}} : f64 - ! ALL-DAG: %[[one:.*]] = arith.constant 1 : i32 - ! ALL-DAG: %[[r:.*]] = fir.alloca !fir.box>> - ! ALL-DAG: %[[x:.*]] = fir.load %[[argx]] : !fir.ref - ! ALL-DAG: %[[n1:.*]] = fir.load %[[argn1]] : !fir.ref - ! ALL-DAG: %[[n2:.*]] = fir.load %[[argn2]] : !fir.ref - ! ALL-DAG: %[[xeq0:.*]] = arith.cmpf ueq, %[[x]], %[[zero]] {{.*}} : f64 - ! ALL-DAG: %[[n1ltn2:.*]] = arith.cmpi slt, %[[n1]], %[[n2]] : i32 - ! ALL-DAG: %[[n1eqn2:.*]] = arith.cmpi eq, %[[n1]], %[[n2]] : i32 + ! ALL: %[[temp:.*]] = fir.alloca !fir.box>> + ! ALL: %[[scope:.*]] = fir.dummy_scope : !fir.dscope + ! ALL: %[[n1_decl:.*]]:2 = hlfir.declare %[[argn1]] dummy_scope %[[scope]] arg 2 {uniq_name = "_QFtest_transformational_real8En1"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! ALL: %[[n2_decl:.*]]:2 = hlfir.declare %[[argn2]] dummy_scope %[[scope]] arg 3 {uniq_name = "_QFtest_transformational_real8En2"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! ALL: %[[r_decl:.*]]:2 = hlfir.declare %[[argr]] dummy_scope %[[scope]] arg 4 {uniq_name = "_QFtest_transformational_real8Er"} : (!fir.box>, !fir.dscope) -> (!fir.box>, !fir.box>) + ! ALL: %[[x_decl:.*]]:2 = hlfir.declare %[[argx]] dummy_scope %[[scope]] arg 1 {uniq_name = "_QFtest_transformational_real8Ex"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! ALL-DAG: %[[n1:.*]] = fir.load %[[n1_decl]]#0 : !fir.ref + ! ALL-DAG: %[[n2:.*]] = fir.load %[[n2_decl]]#0 : !fir.ref + ! ALL-DAG: %[[x:.*]] = fir.load %[[x_decl]]#0 : !fir.ref + ! ALL: %[[zero:.*]] = arith.constant 0{{.*}} : f64 + ! ALL: %[[one:.*]] = arith.constant 1 : i32 + ! ALL: %[[xeq0:.*]] = arith.cmpf ueq, %[[x]], %[[zero]] {{.*}} : f64 + ! ALL: %[[n1ltn2:.*]] = arith.cmpi slt, %[[n1]], %[[n2]] : i32 + ! ALL: %[[n1eqn2:.*]] = arith.cmpi eq, %[[n1]], %[[n2]] : i32 ! ALL: fir.if %[[xeq0]] { - ! ALL: %[[resxeq0:.*]] = fir.convert %[[r]] {{.*}} + ! ALL: %[[resxeq0:.*]] = fir.convert %[[temp]] {{.*}} ! ALL: fir.call @_FortranABesselYnX0_8(%[[resxeq0]], %[[n1]], %[[n2]], {{.*}}, {{.*}}) {{.*}} : (!fir.ref>, i32, i32, !fir.ref, i32) -> () - ! ALL-NEXT: } else { - ! ALL-NEXT: fir.if %[[n1ltn2]] { + ! ALL: } else { + ! ALL: fir.if %[[n1ltn2]] { ! ALL-DAG: %[[n1_1:.*]] = arith.addi %[[n1]], %[[one]] : i32 ! ALL-DAG: %[[bn1:.*]] = fir.call @yn(%[[n1]], %[[x]]) {{.*}} : (i32, f64) -> f64 ! ALL-DAG: %[[bn1_1:.*]] = fir.call @yn(%[[n1_1]], %[[x]]) {{.*}} : (i32, f64) -> f64 - ! ALL-DAG: %[[resn1ltn2:.*]] = fir.convert %[[r]] {{.*}} + ! ALL: %[[resn1ltn2:.*]] = fir.convert %[[temp]] {{.*}} ! ALL: fir.call @_FortranABesselYn_8(%[[resn1ltn2]], %[[n1]], %[[n2]], %[[x]], %[[bn1]], %[[bn1_1]], {{.*}}, {{.*}}) {{.*}} : (!fir.ref>, i32, i32, f64, f64, f64, !fir.ref, i32) -> () - ! ALL-NEXT: } else { - ! ALL-NEXT: fir.if %[[n1eqn2]] { + ! ALL: } else { + ! ALL: fir.if %[[n1eqn2]] { ! ALL-DAG: %[[bn1:.*]] = fir.call @yn(%[[n1]], %[[x]]) {{.*}} : (i32, f64) -> f64 - ! ALL-DAG: %[[resn1eqn2:.*]] = fir.convert %[[r]] {{.*}} + ! ALL: %[[resn1eqn2:.*]] = fir.convert %[[temp]] {{.*}} ! ALL: fir.call @_FortranABesselYn_8(%[[resn1eqn2]], %[[n1]], %[[n2]], %[[x]], %[[bn1]], %[[zero]], {{.*}}, {{.*}}) {{.*}} : (!fir.ref>, i32, i32, f64, f64, f64, !fir.ref, i32) -> () - ! ALL-NEXT: } else { - ! ALL-DAG: %[[resn1gtn2:.*]] = fir.convert %[[r]] {{.*}} + ! ALL: } else { + ! ALL: %[[resn1gtn2:.*]] = fir.convert %[[temp]] {{.*}} ! ALL: fir.call @_FortranABesselYn_8(%[[resn1gtn2]], %[[n1]], %[[n2]], %[[x]], %[[zero]], %[[zero]], {{.*}}, {{.*}}) {{.*}} : (!fir.ref>, i32, i32, f64, f64, f64, !fir.ref, i32) -> () - ! ALL-NEXT: } - ! ALL-NEXT: } - ! ALL-NEXT: } + ! ALL: } + ! ALL: } + ! ALL: } r = bessel_yn(n1, n2, x) - ! ALL: %[[box:.*]] = fir.load %[[r]] : !fir.ref>>> - ! ALL: %[[addr:.*]] = fir.box_addr %[[box]] : (!fir.box>>) -> !fir.heap> - ! ALL: fir.freemem %[[addr]] : !fir.heap> end subroutine test_transformational_real8 diff --git a/flang/test/Lower/Intrinsics/bge.f90 b/flang/test/Lower/Intrinsics/bge.f90 index 19ddf7d95c388..f4d05e38f6991 100644 --- a/flang/test/Lower/Intrinsics/bge.f90 +++ b/flang/test/Lower/Intrinsics/bge.f90 @@ -1,158 +1,199 @@ -! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s -! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir %s -o - | FileCheck %s +! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s -! CHECK-LABEL: bge_test -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbge_test( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bge_test(a, b, c) integer :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbge_testEa"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbge_testEb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbge_testEc"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bge(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi uge, %[[A_VAL]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bge_test -! CHECK-LABEL: bge_test1 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbge_test1( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bge_test1(a, b, c) integer(kind=1) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbge_test1Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbge_test1Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbge_test1Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bge(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi uge, %[[A_VAL]], %[[B_VAL]] : i8 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bge_test1 -! CHECK-LABEL: bge_test2 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbge_test2( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bge_test2(a, b, c) integer(kind=2) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbge_test2Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbge_test2Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbge_test2Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bge(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi uge, %[[A_VAL]], %[[B_VAL]] : i16 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bge_test2 -! CHECK-LABEL: bge_test3 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbge_test3( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bge_test3(a, b, c) integer(kind=4) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbge_test3Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbge_test3Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbge_test3Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bge(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi uge, %[[A_VAL]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bge_test3 -! CHECK-LABEL: bge_test4 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbge_test4( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bge_test4(a, b, c) integer(kind=8) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbge_test4Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbge_test4Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbge_test4Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bge(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi uge, %[[A_VAL]], %[[B_VAL]] : i64 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bge_test4 -! CHECK-LABEL: bge_test5 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbge_test5( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bge_test5(a, b, c) integer(kind=16) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbge_test5Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbge_test5Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbge_test5Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bge(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi uge, %[[A_VAL]], %[[B_VAL]] : i128 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bge_test5 -! CHECK-LABEL: bge_test6 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbge_test6( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bge_test6(a, b, c) integer(kind=2) :: a integer(kind=4) :: b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbge_test6Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbge_test6Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbge_test6Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bge(a, b) ! CHECK: %[[A_EXT:.*]] = arith.extui %[[A_VAL]] : i16 to i32 ! CHECK: %[[C_CMP:.*]] = arith.cmpi uge, %[[A_EXT]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bge_test6 -! CHECK-LABEL: bge_test7 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbge_test7( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bge_test7(a, b, c) integer(kind=4) :: a integer(kind=2) :: b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbge_test7Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbge_test7Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbge_test7Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bge(a, b) ! CHECK: %[[B_EXT:.*]] = arith.extui %[[B_VAL]] : i16 to i32 ! CHECK: %[[C_CMP:.*]] = arith.cmpi uge, %[[A_VAL]], %[[B_EXT]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bge_test7 -! CHECK-LABEL: bge_test8 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbge_test8( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bge_test8(a, c) integer(kind=2) :: a logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbge_test8Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbge_test8Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) ! CHECK: %[[B_VAL:.*]] = arith.constant 42 : i32 + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref c = bge(a, 42_4) ! CHECK: %[[A_EXT:.*]] = arith.extui %[[A_VAL]] : i16 to i32 ! CHECK: %[[C_CMP:.*]] = arith.cmpi uge, %[[A_EXT]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bge_test8 -! CHECK-LABEL: bge_test9 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbge_test9( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bge_test9(a, c) integer(kind=4) :: a logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = arith.constant 42 : i16 + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbge_test9Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbge_test9Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[B_VAL_K2:.*]] = arith.constant 42 : i16 + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref c = bge(a, 42_2) - ! CHECK: %[[B_EXT:.*]] = arith.extui %[[B_VAL]] : i16 to i32 - ! CHECK: %[[C_CMP:.*]] = arith.cmpi uge, %[[A_VAL]], %[[B_EXT]] : i32 + ! CHECK: %[[B_VAL:.*]] = arith.extui %[[B_VAL_K2]] : i16 to i32 + ! CHECK: %[[C_CMP:.*]] = arith.cmpi uge, %[[A_VAL]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bge_test9 -! CHECK-LABEL: bge_test10 -! CHECK-SAME: %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbge_test10( +! CHECK-SAME: %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bge_test10(c) logical :: c + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbge_test10Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) c = bge(-1_2, -1_4) ! CHECK: %[[R:.*]] = arith.constant false ! CHECK: %[[V:.*]] = fir.convert %[[R]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[V]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[V]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bge_test10 -! CHECK-LABEL: bge_test11 -! CHECK-SAME: %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbge_test11( +! CHECK-SAME: %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bge_test11(c) logical :: c + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbge_test11Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) c = bge(-1_4, -1_2) ! CHECK: %[[R:.*]] = arith.constant true ! CHECK: %[[V:.*]] = fir.convert %[[R]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[V]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[V]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bge_test11 diff --git a/flang/test/Lower/Intrinsics/bgt.f90 b/flang/test/Lower/Intrinsics/bgt.f90 index fea8611c17014..95a4a875de03e 100644 --- a/flang/test/Lower/Intrinsics/bgt.f90 +++ b/flang/test/Lower/Intrinsics/bgt.f90 @@ -1,158 +1,199 @@ -! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s -! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir %s -o - | FileCheck %s +! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s -! CHECK-LABEL: bgt_test -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbgt_test( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bgt_test(a, b, c) integer :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbgt_testEa"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbgt_testEb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbgt_testEc"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bgt(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ugt, %[[A_VAL]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bgt_test -! CHECK-LABEL: bgt_test1 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbgt_test1( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bgt_test1(a, b, c) integer(kind=1) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbgt_test1Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbgt_test1Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbgt_test1Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bgt(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ugt, %[[A_VAL]], %[[B_VAL]] : i8 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bgt_test1 -! CHECK-LABEL: bgt_test2 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbgt_test2( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bgt_test2(a, b, c) integer(kind=2) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbgt_test2Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbgt_test2Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbgt_test2Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bgt(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ugt, %[[A_VAL]], %[[B_VAL]] : i16 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bgt_test2 -! CHECK-LABEL: bgt_test3 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbgt_test3( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bgt_test3(a, b, c) integer(kind=4) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbgt_test3Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbgt_test3Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbgt_test3Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bgt(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ugt, %[[A_VAL]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bgt_test3 -! CHECK-LABEL: bgt_test4 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbgt_test4( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bgt_test4(a, b, c) integer(kind=8) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbgt_test4Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbgt_test4Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbgt_test4Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bgt(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ugt, %[[A_VAL]], %[[B_VAL]] : i64 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bgt_test4 -! CHECK-LABEL: bgt_test5 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbgt_test5( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bgt_test5(a, b, c) integer(kind=16) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbgt_test5Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbgt_test5Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbgt_test5Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bgt(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ugt, %[[A_VAL]], %[[B_VAL]] : i128 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bgt_test5 -! CHECK-LABEL: bgt_test6 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbgt_test6( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bgt_test6(a, b, c) integer(kind=2) :: a integer(kind=4) :: b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbgt_test6Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbgt_test6Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbgt_test6Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bgt(a, b) ! CHECK: %[[A_EXT:.*]] = arith.extui %[[A_VAL]] : i16 to i32 ! CHECK: %[[C_CMP:.*]] = arith.cmpi ugt, %[[A_EXT]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bgt_test6 -! CHECK-LABEL: bgt_test7 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbgt_test7( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bgt_test7(a, b, c) integer(kind=4) :: a integer(kind=2) :: b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbgt_test7Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbgt_test7Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFbgt_test7Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = bgt(a, b) ! CHECK: %[[B_EXT:.*]] = arith.extui %[[B_VAL]] : i16 to i32 ! CHECK: %[[C_CMP:.*]] = arith.cmpi ugt, %[[A_VAL]], %[[B_EXT]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bgt_test7 -! CHECK-LABEL: bgt_test8 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbgt_test8( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bgt_test8(a, c) integer(kind=2) :: a logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbgt_test8Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbgt_test8Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) ! CHECK: %[[B_VAL:.*]] = arith.constant 42 : i32 + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref c = bgt(a, 42_4) ! CHECK: %[[A_EXT:.*]] = arith.extui %[[A_VAL]] : i16 to i32 ! CHECK: %[[C_CMP:.*]] = arith.cmpi ugt, %[[A_EXT]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bgt_test8 -! CHECK-LABEL: bgt_test9 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbgt_test9( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bgt_test9(a, c) integer(kind=4) :: a logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = arith.constant 42 : i16 + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbgt_test9Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFbgt_test9Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[B_VAL_K2:.*]] = arith.constant 42 : i16 + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref c = bgt(a, 42_2) - ! CHECK: %[[B_EXT:.*]] = arith.extui %[[B_VAL]] : i16 to i32 - ! CHECK: %[[C_CMP:.*]] = arith.cmpi ugt, %[[A_VAL]], %[[B_EXT]] : i32 + ! CHECK: %[[B_VAL:.*]] = arith.extui %[[B_VAL_K2]] : i16 to i32 + ! CHECK: %[[C_CMP:.*]] = arith.cmpi ugt, %[[A_VAL]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bgt_test9 -! CHECK-LABEL: bgt_test10 -! CHECK-SAME: %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbgt_test10( +! CHECK-SAME: %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bgt_test10(c) logical :: c + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbgt_test10Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) c = bgt(-1_2, -1_4) ! CHECK: %[[R:.*]] = arith.constant false ! CHECK: %[[V:.*]] = fir.convert %[[R]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[V]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[V]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bgt_test10 -! CHECK-LABEL: bgt_test11 -! CHECK-SAME: %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPbgt_test11( +! CHECK-SAME: %[[C:.*]]: !fir.ref> {{.*}}) { subroutine bgt_test11(c) logical :: c + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFbgt_test11Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) c = bgt(-1_4, -1_2) ! CHECK: %[[R:.*]] = arith.constant true ! CHECK: %[[V:.*]] = fir.convert %[[R]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[V]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[V]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine bgt_test11 diff --git a/flang/test/Lower/Intrinsics/ble.f90 b/flang/test/Lower/Intrinsics/ble.f90 index 1c996a963e430..4605227710358 100644 --- a/flang/test/Lower/Intrinsics/ble.f90 +++ b/flang/test/Lower/Intrinsics/ble.f90 @@ -1,158 +1,199 @@ -! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s -! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir %s -o - | FileCheck %s +! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s -! CHECK-LABEL: ble_test -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPble_test( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine ble_test(a, b, c) integer :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFble_testEa"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFble_testEb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFble_testEc"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = ble(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ule, %[[A_VAL]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine ble_test -! CHECK-LABEL: ble_test1 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPble_test1( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine ble_test1(a, b, c) integer(kind=1) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFble_test1Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFble_test1Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFble_test1Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = ble(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ule, %[[A_VAL]], %[[B_VAL]] : i8 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine ble_test1 -! CHECK-LABEL: ble_test2 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPble_test2( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine ble_test2(a, b, c) integer(kind=2) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFble_test2Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFble_test2Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFble_test2Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = ble(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ule, %[[A_VAL]], %[[B_VAL]] : i16 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine ble_test2 -! CHECK-LABEL: ble_test3 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPble_test3( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine ble_test3(a, b, c) integer(kind=4) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFble_test3Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFble_test3Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFble_test3Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = ble(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ule, %[[A_VAL]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine ble_test3 -! CHECK-LABEL: ble_test4 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPble_test4( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine ble_test4(a, b, c) integer(kind=8) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFble_test4Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFble_test4Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFble_test4Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = ble(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ule, %[[A_VAL]], %[[B_VAL]] : i64 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine ble_test4 -! CHECK-LABEL: ble_test5 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPble_test5( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine ble_test5(a, b, c) integer(kind=16) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFble_test5Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFble_test5Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFble_test5Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = ble(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ule, %[[A_VAL]], %[[B_VAL]] : i128 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine ble_test5 -! CHECK-LABEL: ble_test6 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPble_test6( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine ble_test6(a, b, c) integer(kind=2) :: a integer(kind=4) :: b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFble_test6Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFble_test6Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFble_test6Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = ble(a, b) ! CHECK: %[[A_EXT:.*]] = arith.extui %[[A_VAL]] : i16 to i32 ! CHECK: %[[C_CMP:.*]] = arith.cmpi ule, %[[A_EXT]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine ble_test6 -! CHECK-LABEL: ble_test7 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPble_test7( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine ble_test7(a, b, c) integer(kind=4) :: a integer(kind=2) :: b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFble_test7Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFble_test7Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFble_test7Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = ble(a, b) ! CHECK: %[[B_EXT:.*]] = arith.extui %[[B_VAL]] : i16 to i32 ! CHECK: %[[C_CMP:.*]] = arith.cmpi ule, %[[A_VAL]], %[[B_EXT]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine ble_test7 -! CHECK-LABEL: ble_test8 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPble_test8( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine ble_test8(a, c) integer(kind=2) :: a logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFble_test8Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFble_test8Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) ! CHECK: %[[B_VAL:.*]] = arith.constant 42 : i32 + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref c = ble(a, 42_4) ! CHECK: %[[A_EXT:.*]] = arith.extui %[[A_VAL]] : i16 to i32 ! CHECK: %[[C_CMP:.*]] = arith.cmpi ule, %[[A_EXT]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine ble_test8 -! CHECK-LABEL: ble_test9 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPble_test9( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine ble_test9(a, c) integer(kind=4) :: a logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = arith.constant 42 : i16 + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFble_test9Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFble_test9Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[B_VAL_K2:.*]] = arith.constant 42 : i16 + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref c = ble(a, 42_2) - ! CHECK: %[[B_EXT:.*]] = arith.extui %[[B_VAL]] : i16 to i32 - ! CHECK: %[[C_CMP:.*]] = arith.cmpi ule, %[[A_VAL]], %[[B_EXT]] : i32 + ! CHECK: %[[B_VAL:.*]] = arith.extui %[[B_VAL_K2]] : i16 to i32 + ! CHECK: %[[C_CMP:.*]] = arith.cmpi ule, %[[A_VAL]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine ble_test9 -! CHECK-LABEL: ble_test10 -! CHECK-SAME: %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPble_test10( +! CHECK-SAME: %[[C:.*]]: !fir.ref> {{.*}}) { subroutine ble_test10(c) logical :: c + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFble_test10Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) c = ble(-1_2, -1_4) ! CHECK: %[[R:.*]] = arith.constant true ! CHECK: %[[V:.*]] = fir.convert %[[R]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[V]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[V]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine ble_test10 -! CHECK-LABEL: ble_test11 -! CHECK-SAME: %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPble_test11( +! CHECK-SAME: %[[C:.*]]: !fir.ref> {{.*}}) { subroutine ble_test11(c) logical :: c + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFble_test11Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) c = ble(-1_4, -1_2) ! CHECK: %[[R:.*]] = arith.constant false ! CHECK: %[[V:.*]] = fir.convert %[[R]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[V]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[V]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine ble_test11 diff --git a/flang/test/Lower/Intrinsics/blt.f90 b/flang/test/Lower/Intrinsics/blt.f90 index 06a57fb579e6b..89e743c64a081 100644 --- a/flang/test/Lower/Intrinsics/blt.f90 +++ b/flang/test/Lower/Intrinsics/blt.f90 @@ -1,158 +1,199 @@ -! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s -! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir %s -o - | FileCheck %s +! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s -! CHECK-LABEL: blt_test -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPblt_test( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine blt_test(a, b, c) integer :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFblt_testEa"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFblt_testEb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFblt_testEc"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = blt(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ult, %[[A_VAL]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine blt_test -! CHECK-LABEL: blt_test1 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPblt_test1( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine blt_test1(a, b, c) integer(kind=1) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFblt_test1Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFblt_test1Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFblt_test1Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = blt(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ult, %[[A_VAL]], %[[B_VAL]] : i8 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine blt_test1 -! CHECK-LABEL: blt_test2 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPblt_test2( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine blt_test2(a, b, c) integer(kind=2) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFblt_test2Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFblt_test2Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFblt_test2Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = blt(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ult, %[[A_VAL]], %[[B_VAL]] : i16 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine blt_test2 -! CHECK-LABEL: blt_test3 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPblt_test3( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine blt_test3(a, b, c) integer(kind=4) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFblt_test3Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFblt_test3Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFblt_test3Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = blt(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ult, %[[A_VAL]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine blt_test3 -! CHECK-LABEL: blt_test4 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPblt_test4( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine blt_test4(a, b, c) integer(kind=8) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFblt_test4Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFblt_test4Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFblt_test4Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = blt(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ult, %[[A_VAL]], %[[B_VAL]] : i64 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine blt_test4 -! CHECK-LABEL: blt_test5 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPblt_test5( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine blt_test5(a, b, c) integer(kind=16) :: a, b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFblt_test5Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFblt_test5Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFblt_test5Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = blt(a, b) ! CHECK: %[[C_CMP:.*]] = arith.cmpi ult, %[[A_VAL]], %[[B_VAL]] : i128 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine blt_test5 -! CHECK-LABEL: blt_test6 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPblt_test6( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine blt_test6(a, b, c) integer(kind=2) :: a integer(kind=4) :: b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFblt_test6Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFblt_test6Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFblt_test6Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = blt(a, b) ! CHECK: %[[A_EXT:.*]] = arith.extui %[[A_VAL]] : i16 to i32 ! CHECK: %[[C_CMP:.*]] = arith.cmpi ult, %[[A_EXT]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine blt_test6 -! CHECK-LABEL: blt_test7 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[B:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPblt_test7( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[B:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine blt_test7(a, b, c) integer(kind=4) :: a integer(kind=2) :: b logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFblt_test7Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[B_DECL:.*]]:2 = hlfir.declare %[[B]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFblt_test7Eb"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 3 {uniq_name = "_QFblt_test7Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref + ! CHECK: %[[B_VAL:.*]] = fir.load %[[B_DECL]]#0 : !fir.ref c = blt(a, b) ! CHECK: %[[B_EXT:.*]] = arith.extui %[[B_VAL]] : i16 to i32 ! CHECK: %[[C_CMP:.*]] = arith.cmpi ult, %[[A_VAL]], %[[B_EXT]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine blt_test7 -! CHECK-LABEL: blt_test8 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPblt_test8( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine blt_test8(a, c) integer(kind=2) :: a logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFblt_test8Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFblt_test8Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) ! CHECK: %[[B_VAL:.*]] = arith.constant 42 : i32 + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref c = blt(a, 42_4) ! CHECK: %[[A_EXT:.*]] = arith.extui %[[A_VAL]] : i16 to i32 ! CHECK: %[[C_CMP:.*]] = arith.cmpi ult, %[[A_EXT]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine blt_test8 -! CHECK-LABEL: blt_test9 -! CHECK-SAME: %[[A:.*]]: !fir.ref{{.*}}, %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPblt_test9( +! CHECK-SAME: %[[A:.*]]: !fir.ref {{.*}}, %[[C:.*]]: !fir.ref> {{.*}}) { subroutine blt_test9(a, c) integer(kind=4) :: a logical :: c - ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref - ! CHECK: %[[B_VAL:.*]] = arith.constant 42 : i16 + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[A_DECL:.*]]:2 = hlfir.declare %[[A]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFblt_test9Ea"} : (!fir.ref, !fir.dscope) -> (!fir.ref, !fir.ref) + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 2 {uniq_name = "_QFblt_test9Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) + ! CHECK: %[[B_VAL_K2:.*]] = arith.constant 42 : i16 + ! CHECK: %[[A_VAL:.*]] = fir.load %[[A_DECL]]#0 : !fir.ref c = blt(a, 42_2) - ! CHECK: %[[B_EXT:.*]] = arith.extui %[[B_VAL]] : i16 to i32 - ! CHECK: %[[C_CMP:.*]] = arith.cmpi ult, %[[A_VAL]], %[[B_EXT]] : i32 + ! CHECK: %[[B_VAL:.*]] = arith.extui %[[B_VAL_K2]] : i16 to i32 + ! CHECK: %[[C_CMP:.*]] = arith.cmpi ult, %[[A_VAL]], %[[B_VAL]] : i32 ! CHECK: %[[C_VAL:.*]] = fir.convert %[[C_CMP]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[C_VAL]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine blt_test9 -! CHECK-LABEL: blt_test10 -! CHECK-SAME: %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPblt_test10( +! CHECK-SAME: %[[C:.*]]: !fir.ref> {{.*}}) { subroutine blt_test10(c) logical :: c + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFblt_test10Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) c = blt(-1_2, -1_4) ! CHECK: %[[R:.*]] = arith.constant true ! CHECK: %[[V:.*]] = fir.convert %[[R]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[V]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[V]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine blt_test10 -! CHECK-LABEL: blt_test11 -! CHECK-SAME: %[[C:.*]]: !fir.ref>{{.*}} +! CHECK-LABEL: func.func @_QPblt_test11( +! CHECK-SAME: %[[C:.*]]: !fir.ref> {{.*}}) { subroutine blt_test11(c) logical :: c + ! CHECK: %[[SCOPE:.*]] = fir.dummy_scope : !fir.dscope + ! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C]] dummy_scope %[[SCOPE]] arg 1 {uniq_name = "_QFblt_test11Ec"} : (!fir.ref>, !fir.dscope) -> (!fir.ref>, !fir.ref>) c = blt(-1_4, -1_2) ! CHECK: %[[R:.*]] = arith.constant false ! CHECK: %[[V:.*]] = fir.convert %[[R]] : (i1) -> !fir.logical<4> - ! CHECK: fir.store %[[V]] to %[[C]] : !fir.ref> + ! CHECK: hlfir.assign %[[V]] to %[[C_DECL]]#0 : !fir.logical<4>, !fir.ref> end subroutine blt_test11