1! RUN: bbc -hlfir=false %s -o "-" | FileCheck %s 2 3! Test real intrinsic operation lowering to FIR. 4 5! CHECK-LABEL:eq0_test 6LOGICAL FUNCTION eq0_test(x0, x1) 7REAL(4) :: x0 8REAL(4) :: x1 9! CHECK-DAG:[[reg1:%[0-9]+]] = fir.load %arg0 10! CHECK-DAG:[[reg2:%[0-9]+]] = fir.load %arg1 11! CHECK:[[reg3:%[0-9]+]] = arith.cmpf oeq, [[reg1]], [[reg2]] {{.*}} : f32 12! CHECK:fir.convert [[reg3]] {{.*}} -> !fir.logical<4> 13eq0_test = x0 .EQ. x1 14END FUNCTION 15 16! CHECK-LABEL:ne1_test 17LOGICAL FUNCTION ne1_test(x0, x1) 18REAL(4) :: x0 19REAL(4) :: x1 20! CHECK-DAG:[[reg1:%[0-9]+]] = fir.load %arg0 21! CHECK-DAG:[[reg2:%[0-9]+]] = fir.load %arg1 22! CHECK:[[reg3:%[0-9]+]] = arith.cmpf une, [[reg1]], [[reg2]] {{.*}} : f32 23! CHECK:fir.convert [[reg3]] {{.*}} -> !fir.logical<4> 24ne1_test = x0 .NE. x1 25END FUNCTION 26 27! CHECK-LABEL:lt2_test 28LOGICAL FUNCTION lt2_test(x0, x1) 29REAL(4) :: x0 30REAL(4) :: x1 31! CHECK-DAG:[[reg1:%[0-9]+]] = fir.load %arg0 32! CHECK-DAG:[[reg2:%[0-9]+]] = fir.load %arg1 33! CHECK:[[reg3:%[0-9]+]] = arith.cmpf olt, [[reg1]], [[reg2]] {{.*}} : f32 34! CHECK:fir.convert [[reg3]] {{.*}} -> !fir.logical<4> 35lt2_test = x0 .LT. x1 36END FUNCTION 37 38! CHECK-LABEL:le3_test 39LOGICAL FUNCTION le3_test(x0, x1) 40REAL(4) :: x0 41REAL(4) :: x1 42! CHECK-DAG:[[reg1:%[0-9]+]] = fir.load %arg0 43! CHECK-DAG:[[reg2:%[0-9]+]] = fir.load %arg1 44! CHECK:[[reg3:%[0-9]+]] = arith.cmpf ole, [[reg1]], [[reg2]] {{.*}} : f32 45! CHECK:fir.convert [[reg3]] {{.*}} -> !fir.logical<4> 46le3_test = x0 .LE. x1 47END FUNCTION 48 49! CHECK-LABEL:gt4_test 50LOGICAL FUNCTION gt4_test(x0, x1) 51REAL(4) :: x0 52REAL(4) :: x1 53! CHECK-DAG:[[reg1:%[0-9]+]] = fir.load %arg0 54! CHECK-DAG:[[reg2:%[0-9]+]] = fir.load %arg1 55! CHECK:[[reg3:%[0-9]+]] = arith.cmpf ogt, [[reg1]], [[reg2]] {{.*}} : f32 56! CHECK:fir.convert [[reg3]] {{.*}} -> !fir.logical<4> 57gt4_test = x0 .GT. x1 58END FUNCTION 59 60! CHECK-LABEL:ge5_test 61LOGICAL FUNCTION ge5_test(x0, x1) 62REAL(4) :: x0 63REAL(4) :: x1 64! CHECK-DAG:[[reg1:%[0-9]+]] = fir.load %arg0 65! CHECK-DAG:[[reg2:%[0-9]+]] = fir.load %arg1 66! CHECK:[[reg3:%[0-9]+]] = arith.cmpf oge, [[reg1]], [[reg2]] {{.*}} : f32 67! CHECK:fir.convert [[reg3]] {{.*}} -> !fir.logical<4> 68ge5_test = x0 .GE. x1 69END FUNCTION 70 71! CHECK-LABEL:add6_test 72REAL(4) FUNCTION add6_test(x0, x1) 73REAL(4) :: x0 74REAL(4) :: x1 75! CHECK-DAG:[[reg1:%[0-9]+]] = fir.load %arg0 76! CHECK-DAG:[[reg2:%[0-9]+]] = fir.load %arg1 77! CHECK:addf [[reg1]], [[reg2]] {{.*}}: f32 78add6_test = x0 + x1 79END FUNCTION 80 81! CHECK-LABEL:sub7_test 82REAL(4) FUNCTION sub7_test(x0, x1) 83REAL(4) :: x0 84REAL(4) :: x1 85! CHECK-DAG:[[reg1:%[0-9]+]] = fir.load %arg0 86! CHECK-DAG:[[reg2:%[0-9]+]] = fir.load %arg1 87! CHECK:subf [[reg1]], [[reg2]] {{.*}}: f32 88sub7_test = x0 - x1 89END FUNCTION 90 91! CHECK-LABEL:mult8_test 92REAL(4) FUNCTION mult8_test(x0, x1) 93REAL(4) :: x0 94REAL(4) :: x1 95! CHECK-DAG:[[reg1:%[0-9]+]] = fir.load %arg0 96! CHECK-DAG:[[reg2:%[0-9]+]] = fir.load %arg1 97! CHECK:mulf [[reg1]], [[reg2]] {{.*}}: f32 98mult8_test = x0 * x1 99END FUNCTION 100 101! CHECK-LABEL:div9_test 102REAL(4) FUNCTION div9_test(x0, x1) 103REAL(4) :: x0 104REAL(4) :: x1 105! CHECK-DAG:[[reg1:%[0-9]+]] = fir.load %arg0 106! CHECK-DAG:[[reg2:%[0-9]+]] = fir.load %arg1 107! CHECK:divf [[reg1]], [[reg2]] {{.*}}: f32 108div9_test = x0 / x1 109END FUNCTION 110