brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 3487d84 Raw
52 lines · plain
1// Test lowering of REAL operations from FIR to LLVM IR2 3// RUN: tco %s | FileCheck %s4 5// CHECK-LABEL: @bar6func.func @bar(%a : f16, %b : f32, %c : f64, %d : f80, %e : f128) -> f80 {7  // CHECK: fpext half %{{.*}} to x86_fp808  %1 = fir.convert %a : (f16) -> f809  // CHECK: fpext float %{{.*}} to x86_fp8010  %2 = fir.convert %b : (f32) -> f8011  // CHECK: fpext double %{{.*}} to x86_fp8012  %3 = fir.convert %c : (f64) -> f8013  // CHECK-NOT: fpext14  // CHECK-NOT: fptrunc15  %4 = fir.convert %d : (f80) -> f8016  // CHECK: fptrunc fp128 %{{.*}} to x86_fp8017  %5 = fir.convert %e : (f128) -> f8018  // CHECK-NEXT: call x86_fp8019  %6 = fir.call @foop(%1, %2, %3, %4, %5) : (f80, f80, f80, f80, f80) -> f8020  return %6 : f8021}22 23// CHECK-LABEL: @foo24func.func @foo(%a : f128, %b : f128, %c : f128, %d : f128, %e : f128) -> f128 {25  // CHECK: fadd fp12826  %1 = arith.addf %a, %b : f12827  // CHECK: fmul fp12828  %2 = arith.mulf %1, %c : f12829  // CHECK: fsub fp12830  %3 = arith.subf %2, %d : f12831  // CHECK: fdiv fp12832  %4 = arith.divf %3, %e : f12833  // CHECK: frem fp12834  %5 = arith.remf %4, %a : f12835  return %5 : f12836}37 38// CHECK-LABEL: @foop39func.func @foop(%a : f80, %b : f80, %c : f80, %d : f80, %e : f80) -> f80 {40  // CHECK: fadd x86_fp8041  %1 = arith.addf %a, %b : f8042  // CHECK: fmul x86_fp8043  %2 = arith.mulf %1, %c : f8044  // CHECK: fsub x86_fp8045  %3 = arith.subf %2, %d : f8046  // CHECK: fdiv x86_fp8047  %4 = arith.divf %3, %e : f8048  // CHECK: frem x86_fp8049  %5 = arith.remf %4, %a : f8050  return %5 : f8051}52