brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · ac72c53 Raw
107 lines · plain
1! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s2! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir %s -o - | FileCheck %s3 4! CHECK-LABEL: shifta1_test5! CHECK-SAME: %[[A:.*]]: !fir.ref<i8>{{.*}}, %[[B:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i8>{{.*}}6subroutine shifta1_test(a, b, c)7  integer(kind=1) :: a8  integer :: b9  integer(kind=1) :: c10 11  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i8>12  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i32>13  c = shifta(a, b)14  ! CHECK: %[[C_BITS:.*]] = arith.constant 8 : i815  ! CHECK: %[[B_CONV:.*]] = fir.convert %[[B_VAL]] : (i32) -> i816  ! CHECK: %[[SHIFT_IS_BITWIDTH:.*]] = arith.cmpi uge, %[[B_CONV]], %[[C_BITS]] : i817  ! CHECK: %[[C0:.*]] = arith.constant 0 : i818  ! CHECK: %[[CM1:.*]] = arith.constant -1 : i819  ! CHECK: %[[IS_NEG:.*]] = arith.cmpi slt, %[[A_VAL]], %[[C0]] : i820  ! CHECK: %[[RES:.*]] = arith.select %[[IS_NEG]], %[[CM1]], %[[C0]] : i821  ! CHECK: %[[SHIFTED:.*]] = arith.shrsi %[[A_VAL]], %[[B_CONV]] : i822  ! CHECK: %{{.*}} = arith.select %[[SHIFT_IS_BITWIDTH]], %[[RES]], %[[SHIFTED]] : i823end subroutine shifta1_test24 25! CHECK-LABEL: shifta2_test26! CHECK-SAME: %[[A:.*]]: !fir.ref<i16>{{.*}}, %[[B:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i16>{{.*}}27subroutine shifta2_test(a, b, c)28  integer(kind=2) :: a29  integer :: b30  integer(kind=2) :: c31 32  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i16>33  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i32>34  c = shifta(a, b)35  ! CHECK: %[[C_BITS:.*]] = arith.constant 16 : i1636  ! CHECK: %[[B_CONV:.*]] = fir.convert %[[B_VAL]] : (i32) -> i1637  ! CHECK: %[[SHIFT_IS_BITWIDTH:.*]] = arith.cmpi uge, %[[B_CONV]], %[[C_BITS]] : i1638  ! CHECK: %[[C0:.*]] = arith.constant 0 : i1639  ! CHECK: %[[CM1:.*]] = arith.constant -1 : i1640  ! CHECK: %[[IS_NEG:.*]] = arith.cmpi slt, %[[A_VAL]], %[[C0]] : i1641  ! CHECK: %[[RES:.*]] = arith.select %[[IS_NEG]], %[[CM1]], %[[C0]] : i1642  ! CHECK: %[[SHIFTED:.*]] = arith.shrsi %[[A_VAL]], %[[B_CONV]] : i1643  ! CHECK: %{{.*}} = arith.select %[[SHIFT_IS_BITWIDTH]], %[[RES]], %[[SHIFTED]] : i1644end subroutine shifta2_test45 46! CHECK-LABEL: shifta4_test47! CHECK-SAME: %[[A:.*]]: !fir.ref<i32>{{.*}}, %[[B:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i32>{{.*}}48subroutine shifta4_test(a, b, c)49  integer(kind=4) :: a50  integer :: b51  integer(kind=4) :: c52 53  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i32>54  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i32>55  c = shifta(a, b)56  ! CHECK: %[[C_BITS:.*]] = arith.constant 32 : i3257  ! CHECK: %[[SHIFT_IS_BITWIDTH:.*]] = arith.cmpi uge, %[[B_VAL]], %[[C_BITS]] : i3258  ! CHECK: %[[C0:.*]] = arith.constant 0 : i3259  ! CHECK: %[[CM1:.*]] = arith.constant -1 : i3260  ! CHECK: %[[IS_NEG:.*]] = arith.cmpi slt, %[[A_VAL]], %[[C0]] : i3261  ! CHECK: %[[RES:.*]] = arith.select %[[IS_NEG]], %[[CM1]], %[[C0]] : i3262  ! CHECK: %[[SHIFTED:.*]] = arith.shrsi %[[A_VAL]], %[[B_VAL]] : i3263  ! CHECK: %{{.*}} = arith.select %[[SHIFT_IS_BITWIDTH]], %[[RES]], %[[SHIFTED]] : i3264end subroutine shifta4_test65 66! CHECK-LABEL: shifta8_test67! CHECK-SAME: %[[A:.*]]: !fir.ref<i64>{{.*}}, %[[B:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i64>{{.*}}68subroutine shifta8_test(a, b, c)69  integer(kind=8) :: a70  integer :: b71  integer(kind=8) :: c72 73  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i64>74  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i32>75  c = shifta(a, b)76  ! CHECK: %[[C_BITS:.*]] = arith.constant 64 : i6477  ! CHECK: %[[B_CONV:.*]] = fir.convert %[[B_VAL]] : (i32) -> i6478  ! CHECK: %[[SHIFT_IS_BITWIDTH:.*]] = arith.cmpi uge, %[[B_CONV]], %[[C_BITS]] : i6479  ! CHECK: %[[C0:.*]] = arith.constant 0 : i6480  ! CHECK: %[[CM1:.*]] = arith.constant -1 : i6481  ! CHECK: %[[IS_NEG:.*]] = arith.cmpi slt, %[[A_VAL]], %[[C0]] : i6482  ! CHECK: %[[RES:.*]] = arith.select %[[IS_NEG]], %[[CM1]], %[[C0]] : i6483  ! CHECK: %[[SHIFTED:.*]] = arith.shrsi %[[A_VAL]], %[[B_CONV]] : i6484  ! CHECK: %{{.*}} = arith.select %[[SHIFT_IS_BITWIDTH]], %[[RES]], %[[SHIFTED]] : i6485end subroutine shifta8_test86 87! CHECK-LABEL: shifta16_test88! CHECK-SAME: %[[A:.*]]: !fir.ref<i128>{{.*}}, %[[B:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i128>{{.*}}89subroutine shifta16_test(a, b, c)90  integer(kind=16) :: a91  integer :: b92  integer(kind=16) :: c93 94  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i128>95  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i32>96  c = shifta(a, b)97  ! CHECK: %[[C_BITS:.*]] = arith.constant 128 : i12898  ! CHECK: %[[B_CONV:.*]] = fir.convert %[[B_VAL]] : (i32) -> i12899  ! CHECK: %[[SHIFT_IS_BITWIDTH:.*]] = arith.cmpi uge, %[[B_CONV]], %[[C_BITS]] : i128100  ! CHECK: %[[C0:.*]] = arith.constant 0 : i128101  ! CHECK: %[[CM1:.*]] = arith.constant {{.*}} : i128102  ! CHECK: %[[IS_NEG:.*]] = arith.cmpi slt, %[[A_VAL]], %[[C0]] : i128103  ! CHECK: %[[RES:.*]] = arith.select %[[IS_NEG]], %[[CM1]], %[[C0]] : i128104  ! CHECK: %[[SHIFTED:.*]] = arith.shrsi %[[A_VAL]], %[[B_CONV]] : i128105  ! CHECK: %{{.*}} = arith.select %[[SHIFT_IS_BITWIDTH]], %[[RES]], %[[SHIFTED]] : i128106end subroutine shifta16_test107