brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 5383c98 Raw
80 lines · cpp
1// RUN: %clang_cc1 -fexperimental-strict-floating-point -DEXCEPT=1 \2// RUN: -fcxx-exceptions -triple x86_64-linux-gnu -emit-llvm -o - %s \3// RUN: | FileCheck -check-prefix=CHECK-SRC %s4 5// RUN: %clang_cc1 -fexperimental-strict-floating-point \6// RUN: -triple x86_64-linux-gnu -emit-llvm -o - %s -ffp-eval-method=source \7// RUN: | FileCheck -check-prefix=CHECK-SRC %s8 9// RUN: %clang_cc1 -fexperimental-strict-floating-point \10// RUN: -triple x86_64-linux-gnu -emit-llvm -o - %s -ffp-eval-method=double \11// RUN: | FileCheck -check-prefixes=CHECK-DBL %s12 13// RUN: %clang_cc1 -fexperimental-strict-floating-point \14// RUN: -triple x86_64-linux-gnu -emit-llvm -o - %s -ffp-eval-method=extended \15// RUN: | FileCheck -check-prefixes=CHECK-EXT-FLT %s16 17// RUN: %clang_cc1 -triple powerpc-unknown-aix -emit-llvm -o - %s \18// RUN: | FileCheck %s -check-prefix=CHECK-DBL-PPC19 20// RUN: %clang_cc1 -fexperimental-strict-floating-point -triple i386-linux-gnu \21// RUN: -emit-llvm -o - %s -ffp-eval-method=extended -mlong-double-80 \22// RUN: | FileCheck %s -check-prefix=CHECK-EXT-FLT23 24int getFEM() {25  // LABEL: define {{.*}}getFEM{{.*}}26  return __FLT_EVAL_METHOD__;27  // CHECK-SRC: ret {{.*}} 028  // CHECK-DBL: ret {{.*}} 129  // CHECK-DBL-PPC: ret {{.*}} 130  // CHECK-EXT-FLT: ret {{.*}} 231}32 33float func() {34  // LABEL: define {{.*}}@_Z4func{{.*}}35  float X = 100.0f;36  float Y = -45.3f;37  float Z = 393.78f;38  float temp;39#if __FLT_EVAL_METHOD__ == 040  temp = X + Y + Z;41#elif __FLT_EVAL_METHOD__ == 142  temp = X * Y * Z;43#elif __FLT_EVAL_METHOD__ == 244  temp = X * Y - Z;45#endif46  // CHECK-SRC: load float, ptr47  // CHECK-SRC: load float, ptr48  // CHECK-SRC: fadd float49  // CHECK-SRC: load float, ptr50  // CHECK-SRC: fadd float51 52  // CHECK-DBL: load float, ptr53  // CHECK-DBL: fpext float54  // CHECK-DBL: load float, ptr55  // CHECK-DBL: fpext float56  // CHECK-DBL: fmul double57  // CHECK-DBL: load float, ptr58  // CHECK-DBL: fpext float59  // CHECK-DBL: fmul double60  // CHECK-DBL: fptrunc double61 62  // CHECK-EXT-FLT: load float, ptr63  // CHECK-EXT-FLT: fpext float64  // CHECK-EXT-FLT: load float, ptr65  // CHECK-EXT-FLT: fpext float66  // CHECK-EXT-FLT: fmul x86_fp8067  // CHECK-EXT-FLT: load float, ptr68  // CHECK-EXT-FLT: fpext float69  // CHECK-EXT-FLT: fsub x86_fp8070  // CHECK-EXT-FLT: fptrunc x86_fp8071 72  // CHECK-DBL-PPC: load float, ptr73  // CHECK-DBL-PPC: load float, ptr74  // CHECK-DBL-PPC: fmul float75  // CHECK-DBL-PPC: load float, ptr76  // CHECK-DBL-PPC: fmul float77 78  return temp;79}80