Home | History | Annotate | Download | only in CodeGenCUDA
      1 // RUN: %clang_cc1 -fcuda-is-device \
      2 // RUN:   -triple nvptx-nvidia-cuda -emit-llvm -o - %s | \
      3 // RUN:   FileCheck %s -check-prefix CHECK -check-prefix NOFTZ
      4 // RUN: %clang_cc1 -fcuda-is-device -fcuda-flush-denormals-to-zero \
      5 // RUN:   -triple nvptx-nvidia-cuda -emit-llvm -o - %s | \
      6 // RUN:   FileCheck %s -check-prefix CHECK -check-prefix FTZ
      7 
      8 #include "Inputs/cuda.h"
      9 
     10 // Checks that device function calls get emitted with the "ntpvx-f32ftz"
     11 // attribute set to "true" when we compile CUDA device code with
     12 // -fcuda-flush-denormals-to-zero.  Further, check that we reflect the presence
     13 // or absence of -fcuda-flush-denormals-to-zero in a module flag.
     14 
     15 // CHECK-LABEL: define void @foo() #0
     16 extern "C" __device__ void foo() {}
     17 
     18 // FTZ: attributes #0 = {{.*}} "nvptx-f32ftz"="true"
     19 // NOFTZ-NOT: attributes #0 = {{.*}} "nvptx-f32ftz"
     20 
     21 // FTZ:!llvm.module.flags = !{[[MODFLAG:![0-9]+]]}
     22 // FTZ:[[MODFLAG]] = !{i32 4, !"nvvm-reflect-ftz", i32 1}
     23 
     24 // NOFTZ:!llvm.module.flags = !{[[MODFLAG:![0-9]+]]}
     25 // NOFTZ:[[MODFLAG]] = !{i32 4, !"nvvm-reflect-ftz", i32 0}
     26