brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · 8cd72f5 Raw
111 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: merge_bits1_test5! CHECK-SAME: %[[IREF:.*]]: !fir.ref<i8>{{.*}}, %[[JREF:.*]]: !fir.ref<i8>{{.*}}, %[[MREF:.*]]: !fir.ref<i8>{{.*}}, %[[RREF:.*]]: !fir.ref<i8>{{.*}}6subroutine merge_bits1_test(i, j, m, r)7  integer(1) :: i, j, m8  integer(1) :: r9 10  ! CHECK: %[[I:.*]] = fir.load %[[IREF]] : !fir.ref<i8>11  ! CHECK: %[[J:.*]] = fir.load %[[JREF]] : !fir.ref<i8>12  ! CHECK: %[[M:.*]] = fir.load %[[MREF]] : !fir.ref<i8>13  r = merge_bits(i, j, m)14  ! CHECK: %[[C__1:.*]] = arith.constant -1 : i815  ! CHECK: %[[NM:.*]] = arith.xori %[[M]], %[[C__1]] : i816  ! CHECK: %[[LFT:.*]] = arith.andi %[[I]], %[[M]] : i817  ! CHECK: %[[RGT:.*]] = arith.andi %[[J]], %[[NM]] : i818  ! CHECK: %[[RES:.*]] = arith.ori %[[LFT]], %[[RGT]] : i819  ! CHECK: fir.store %[[RES]] to %[[RREF]] : !fir.ref<i8>20end subroutine merge_bits1_test21 22! CHECK-LABEL: merge_bits2_test23! CHECK-SAME: %[[IREF:.*]]: !fir.ref<i16>{{.*}}, %[[JREF:.*]]: !fir.ref<i16>{{.*}}, %[[MREF:.*]]: !fir.ref<i16>{{.*}}, %[[RREF:.*]]: !fir.ref<i16>{{.*}}24subroutine merge_bits2_test(i, j, m, r)25  integer(2) :: i, j, m26  integer(2) :: r27 28  ! CHECK: %[[I:.*]] = fir.load %[[IREF]] : !fir.ref<i16>29  ! CHECK: %[[J:.*]] = fir.load %[[JREF]] : !fir.ref<i16>30  ! CHECK: %[[M:.*]] = fir.load %[[MREF]] : !fir.ref<i16>31  r = merge_bits(i, j, m)32  ! CHECK: %[[C__1:.*]] = arith.constant -1 : i1633  ! CHECK: %[[NM:.*]] = arith.xori %[[M]], %[[C__1]] : i1634  ! CHECK: %[[LFT:.*]] = arith.andi %[[I]], %[[M]] : i1635  ! CHECK: %[[RGT:.*]] = arith.andi %[[J]], %[[NM]] : i1636  ! CHECK: %[[RES:.*]] = arith.ori %[[LFT]], %[[RGT]] : i1637  ! CHECK: fir.store %[[RES]] to %[[RREF]] : !fir.ref<i16>38end subroutine merge_bits2_test39 40! CHECK-LABEL: merge_bits4_test41! CHECK-SAME: %[[IREF:.*]]: !fir.ref<i32>{{.*}}, %[[JREF:.*]]: !fir.ref<i32>{{.*}}, %[[MREF:.*]]: !fir.ref<i32>{{.*}}, %[[RREF:.*]]: !fir.ref<i32>{{.*}}42subroutine merge_bits4_test(i, j, m, r)43  integer(4) :: i, j, m44  integer(4) :: r45 46  ! CHECK: %[[I:.*]] = fir.load %[[IREF]] : !fir.ref<i32>47  ! CHECK: %[[J:.*]] = fir.load %[[JREF]] : !fir.ref<i32>48  ! CHECK: %[[M:.*]] = fir.load %[[MREF]] : !fir.ref<i32>49  r = merge_bits(i, j, m)50  ! CHECK: %[[C__1:.*]] = arith.constant -1 : i3251  ! CHECK: %[[NM:.*]] = arith.xori %[[M]], %[[C__1]] : i3252  ! CHECK: %[[LFT:.*]] = arith.andi %[[I]], %[[M]] : i3253  ! CHECK: %[[RGT:.*]] = arith.andi %[[J]], %[[NM]] : i3254  ! CHECK: %[[RES:.*]] = arith.ori %[[LFT]], %[[RGT]] : i3255  ! CHECK: fir.store %[[RES]] to %[[RREF]] : !fir.ref<i32>56end subroutine merge_bits4_test57 58! CHECK-LABEL: merge_bits8_test59! CHECK-SAME: %[[IREF:.*]]: !fir.ref<i64>{{.*}}, %[[JREF:.*]]: !fir.ref<i64>{{.*}}, %[[MREF:.*]]: !fir.ref<i64>{{.*}}, %[[RREF:.*]]: !fir.ref<i64>{{.*}}60subroutine merge_bits8_test(i, j, m, r)61  integer(8) :: i, j, m62  integer(8) :: r63 64  ! CHECK: %[[I:.*]] = fir.load %[[IREF]] : !fir.ref<i64>65  ! CHECK: %[[J:.*]] = fir.load %[[JREF]] : !fir.ref<i64>66  ! CHECK: %[[M:.*]] = fir.load %[[MREF]] : !fir.ref<i64>67  r = merge_bits(i, j, m)68  ! CHECK: %[[C__1:.*]] = arith.constant -1 : i6469  ! CHECK: %[[NM:.*]] = arith.xori %[[M]], %[[C__1]] : i6470  ! CHECK: %[[LFT:.*]] = arith.andi %[[I]], %[[M]] : i6471  ! CHECK: %[[RGT:.*]] = arith.andi %[[J]], %[[NM]] : i6472  ! CHECK: %[[RES:.*]] = arith.ori %[[LFT]], %[[RGT]] : i6473  ! CHECK: fir.store %[[RES]] to %[[RREF]] : !fir.ref<i64>74end subroutine merge_bits8_test75 76! CHECK-LABEL: merge_bitsz0_test77! CHECK-SAME: %[[JREF:.*]]: !fir.ref<i32>{{.*}}, %[[MREF:.*]]: !fir.ref<i32>{{.*}}, %[[RREF:.*]]: !fir.ref<i32>{{.*}}78subroutine merge_bitsz0_test(j, m, r)79  integer :: j, m80  integer :: r81 82  ! CHECK: %[[I:.*]] = arith.constant 13 : i3283  ! CHECK: %[[J:.*]] = fir.load %[[JREF]] : !fir.ref<i32>84  ! CHECK: %[[M:.*]] = fir.load %[[MREF]] : !fir.ref<i32>85  r = merge_bits(B'1101', j, m)86  ! CHECK: %[[C__1:.*]] = arith.constant -1 : i3287  ! CHECK: %[[NM:.*]] = arith.xori %[[M]], %[[C__1]] : i3288  ! CHECK: %[[LFT:.*]] = arith.andi %[[I]], %[[M]] : i3289  ! CHECK: %[[RGT:.*]] = arith.andi %[[J]], %[[NM]] : i3290  ! CHECK: %[[RES:.*]] = arith.ori %[[LFT]], %[[RGT]] : i3291  ! CHECK: fir.store %[[RES]] to %[[RREF]] : !fir.ref<i32>92end subroutine merge_bitsz0_test93 94! CHECK-LABEL: merge_bitsz1_test95! CHECK-SAME: %[[IREF:.*]]: !fir.ref<i32>{{.*}}, %[[MREF:.*]]: !fir.ref<i32>{{.*}}, %[[RREF:.*]]: !fir.ref<i32>{{.*}}96subroutine merge_bitsz1_test(i, m, r)97  integer :: i, m98  integer :: r99 100  ! CHECK: %[[I:.*]] = fir.load %[[IREF]] : !fir.ref<i32>101  ! CHECK: %[[J:.*]] = arith.constant 13 : i32102  ! CHECK: %[[M:.*]] = fir.load %[[MREF]] : !fir.ref<i32>103  r = merge_bits(i, Z'0D', m)104  ! CHECK: %[[C__1:.*]] = arith.constant -1 : i32105  ! CHECK: %[[NM:.*]] = arith.xori %[[M]], %[[C__1]] : i32106  ! CHECK: %[[LFT:.*]] = arith.andi %[[I]], %[[M]] : i32107  ! CHECK: %[[RGT:.*]] = arith.andi %[[J]], %[[NM]] : i32108  ! CHECK: %[[RES:.*]] = arith.ori %[[LFT]], %[[RGT]] : i32109  ! CHECK: fir.store %[[RES]] to %[[RREF]] : !fir.ref<i32>110end subroutine merge_bitsz1_test111