brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · e6c6284 Raw
102 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: shiftr1_test5! CHECK-SAME: %[[A:.*]]: !fir.ref<i8>{{.*}}, %[[B:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i8>{{.*}}6subroutine shiftr1_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 = shiftr(a, b)14  ! CHECK: %[[C_BITS:.*]] = arith.constant 8 : i815  ! CHECK: %[[C_0:.*]] = arith.constant 0 : i816  ! CHECK: %[[B_CONV:.*]] = fir.convert %[[B_VAL]] : (i32) -> i817  ! CHECK: %[[UNDER:.*]] = arith.cmpi slt, %[[B_CONV]], %[[C_0]] : i818  ! CHECK: %[[OVER:.*]] = arith.cmpi sge, %[[B_CONV]], %[[C_BITS]] : i819  ! CHECK: %[[INVALID:.*]] = arith.ori %[[UNDER]], %[[OVER]] : i120  ! CHECK: %[[SHIFT:.*]] = arith.shrui %[[A_VAL]], %[[B_CONV]] : i821  ! CHECK: %[[RES:.*]] = arith.select %[[INVALID]], %[[C_0]], %[[SHIFT]] : i822end subroutine shiftr1_test23 24! CHECK-LABEL: shiftr2_test25! CHECK-SAME: %[[A:.*]]: !fir.ref<i16>{{.*}}, %[[B:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i16>{{.*}}26subroutine shiftr2_test(a, b, c)27  integer(kind=2) :: a28  integer :: b29  integer(kind=2) :: c30 31  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i16>32  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i32>33  c = shiftr(a, b)34  ! CHECK: %[[C_BITS:.*]] = arith.constant 16 : i1635  ! CHECK: %[[C_0:.*]] = arith.constant 0 : i1636  ! CHECK: %[[B_CONV:.*]] = fir.convert %[[B_VAL]] : (i32) -> i1637  ! CHECK: %[[UNDER:.*]] = arith.cmpi slt, %[[B_CONV]], %[[C_0]] : i1638  ! CHECK: %[[OVER:.*]] = arith.cmpi sge, %[[B_CONV]], %[[C_BITS]] : i1639  ! CHECK: %[[INVALID:.*]] = arith.ori %[[UNDER]], %[[OVER]] : i140  ! CHECK: %[[SHIFT:.*]] = arith.shrui %[[A_VAL]], %[[B_CONV]] : i1641  ! CHECK: %[[RES:.*]] = arith.select %[[INVALID]], %[[C_0]], %[[SHIFT]] : i1642end subroutine shiftr2_test43 44! CHECK-LABEL: shiftr4_test45! CHECK-SAME: %[[A:.*]]: !fir.ref<i32>{{.*}}, %[[B:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i32>{{.*}}46subroutine shiftr4_test(a, b, c)47  integer(kind=4) :: a48  integer :: b49  integer(kind=4) :: c50 51  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i32>52  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i32>53  c = shiftr(a, b)54  ! CHECK: %[[C_BITS:.*]] = arith.constant 32 : i3255  ! CHECK: %[[C_0:.*]] = arith.constant 0 : i3256  ! CHECK: %[[UNDER:.*]] = arith.cmpi slt, %[[B_VAL]], %[[C_0]] : i3257  ! CHECK: %[[OVER:.*]] = arith.cmpi sge, %[[B_VAL]], %[[C_BITS]] : i3258  ! CHECK: %[[INVALID:.*]] = arith.ori %[[UNDER]], %[[OVER]] : i159  ! CHECK: %[[SHIFT:.*]] = arith.shrui %[[A_VAL]], %[[B_VAL]] : i3260  ! CHECK: %[[RES:.*]] = arith.select %[[INVALID]], %[[C_0]], %[[SHIFT]] : i3261end subroutine shiftr4_test62 63! CHECK-LABEL: shiftr8_test64! CHECK-SAME: %[[A:.*]]: !fir.ref<i64>{{.*}}, %[[B:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i64>{{.*}}65subroutine shiftr8_test(a, b, c)66  integer(kind=8) :: a67  integer :: b68  integer(kind=8) :: c69 70  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i64>71  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i32>72  c = shiftr(a, b)73  ! CHECK: %[[C_BITS:.*]] = arith.constant 64 : i6474  ! CHECK: %[[C_0:.*]] = arith.constant 0 : i6475  ! CHECK: %[[B_CONV:.*]] = fir.convert %[[B_VAL]] : (i32) -> i6476  ! CHECK: %[[UNDER:.*]] = arith.cmpi slt, %[[B_CONV]], %[[C_0]] : i6477  ! CHECK: %[[OVER:.*]] = arith.cmpi sge, %[[B_CONV]], %[[C_BITS]] : i6478  ! CHECK: %[[INVALID:.*]] = arith.ori %[[UNDER]], %[[OVER]] : i179  ! CHECK: %[[SHIFT:.*]] = arith.shrui %[[A_VAL]], %[[B_CONV]] : i6480  ! CHECK: %[[RES:.*]] = arith.select %[[INVALID]], %[[C_0]], %[[SHIFT]] : i6481end subroutine shiftr8_test82 83! CHECK-LABEL: shiftr16_test84! CHECK-SAME: %[[A:.*]]: !fir.ref<i128>{{.*}}, %[[B:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i128>{{.*}}85subroutine shiftr16_test(a, b, c)86  integer(kind=16) :: a87  integer :: b88  integer(kind=16) :: c89 90  ! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i128>91  ! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i32>92  c = shiftr(a, b)93  ! CHECK: %[[C_BITS:.*]] = arith.constant 128 : i12894  ! CHECK: %[[C_0:.*]] = arith.constant 0 : i12895  ! CHECK: %[[B_CONV:.*]] = fir.convert %[[B_VAL]] : (i32) -> i12896  ! CHECK: %[[UNDER:.*]] = arith.cmpi slt, %[[B_CONV]], %[[C_0]] : i12897  ! CHECK: %[[OVER:.*]] = arith.cmpi sge, %[[B_CONV]], %[[C_BITS]] : i12898  ! CHECK: %[[INVALID:.*]] = arith.ori %[[UNDER]], %[[OVER]] : i199  ! CHECK: %[[SHIFT:.*]] = arith.shrui %[[A_VAL]], %[[B_CONV]] : i128100  ! CHECK: %[[RES:.*]] = arith.select %[[INVALID]], %[[C_0]], %[[SHIFT]] : i128101end subroutine shiftr16_test102