80 lines · plain
1! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s2 3! CHECK-LABEL: iand_test4! CHECK-SAME: %[[A:.*]]: !fir.ref<i32>{{.*}}, %[[B:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i32>{{.*}}5subroutine iand_test(a, b, c)6 integer :: a, b, c7! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i32>8! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i32>9 c = iand(a, b)10! CHECK: %[[C_VAL:.*]] = arith.andi %[[A_VAL]], %[[B_VAL]] : i3211! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref<i32>12end subroutine iand_test13 14! CHECK-LABEL: iand_test115! CHECK-SAME: %[[A:.*]]: !fir.ref<i8>{{.*}}, %[[B:.*]]: !fir.ref<i8>{{.*}}, %[[C:.*]]: !fir.ref<i8>{{.*}}16subroutine iand_test1(a, b, c)17 integer(kind=1) :: a, b, c18! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i8>19! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i8>20 c = iand(a, b)21! CHECK: %[[C_VAL:.*]] = arith.andi %[[A_VAL]], %[[B_VAL]] : i822! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref<i8>23end subroutine iand_test124 25! CHECK-LABEL: iand_test226! CHECK-SAME: %[[A:.*]]: !fir.ref<i16>{{.*}}, %[[B:.*]]: !fir.ref<i16>{{.*}}, %[[C:.*]]: !fir.ref<i16>{{.*}}27subroutine iand_test2(a, b, c)28 integer(kind=2) :: a, b, c29! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i16>30! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i16>31 c = iand(a, b)32! CHECK: %[[C_VAL:.*]] = arith.andi %[[A_VAL]], %[[B_VAL]] : i1633! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref<i16>34end subroutine iand_test235 36! CHECK-LABEL: iand_test337! CHECK-SAME: %[[A:.*]]: !fir.ref<i32>{{.*}}, %[[B:.*]]: !fir.ref<i32>{{.*}}, %[[C:.*]]: !fir.ref<i32>{{.*}}38subroutine iand_test3(a, b, c)39 integer(kind=4) :: a, b, c40! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i32>41! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i32>42 c = iand(a, b)43! CHECK: %[[C_VAL:.*]] = arith.andi %[[A_VAL]], %[[B_VAL]] : i3244! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref<i32>45end subroutine iand_test346 47! CHECK-LABEL: iand_test448! CHECK-SAME: %[[A:.*]]: !fir.ref<i64>{{.*}}, %[[B:.*]]: !fir.ref<i64>{{.*}}, %[[C:.*]]: !fir.ref<i64>{{.*}}49subroutine iand_test4(a, b, c)50 integer(kind=8) :: a, b, c51! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i64>52! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i64>53 c = iand(a, b)54! CHECK: %[[C_VAL:.*]] = arith.andi %[[A_VAL]], %[[B_VAL]] : i6455! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref<i64>56end subroutine iand_test457 58! CHECK-LABEL: iand_test559! CHECK-SAME: %[[A:.*]]: !fir.ref<i128>{{.*}}, %[[B:.*]]: !fir.ref<i128>{{.*}}, %[[C:.*]]: !fir.ref<i128>{{.*}}60subroutine iand_test5(a, b, c)61 integer(kind=16) :: a, b, c62! CHECK: %[[A_VAL:.*]] = fir.load %[[A]] : !fir.ref<i128>63! CHECK: %[[B_VAL:.*]] = fir.load %[[B]] : !fir.ref<i128>64 c = iand(a, b)65! CHECK: %[[C_VAL:.*]] = arith.andi %[[A_VAL]], %[[B_VAL]] : i12866! CHECK: fir.store %[[C_VAL]] to %[[C]] : !fir.ref<i128>67end subroutine iand_test568 69! CHECK-LABEL: iand_test670! CHECK-SAME: %[[S1:.*]]: !fir.ref<i32>{{.*}}, %[[S2:.*]]: !fir.ref<i32>{{.*}}71subroutine iand_test6(s1, s2)72 integer :: s1, s273! CHECK-DAG: %[[S1_VAL:.*]] = fir.load %[[S1]] : !fir.ref<i32>74! CHECK-DAG: %[[S2_VAL:.*]] = fir.load %[[S2]] : !fir.ref<i32>75 stop iand(s1,s2)76! CHECK-DAG: %[[ANDI:.*]] = arith.andi %[[S1_VAL]], %[[S2_VAL]] : i3277! CHECK: fir.call @_FortranAStopStatement(%[[ANDI]], {{.*}}, {{.*}}) {{.*}}: (i32, i1, i1) -> ()78! CHECK-NEXT: fir.unreachable79end subroutine iand_test680