Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Algol68
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C with Coccinelle
C++ with Coccinelle
C++ (Circle)
CIRCT
Clean
CMake
CMakeScript
COBOL
C++ for OpenCL
MLIR
Cppx
Cppx-Blue
Cppx-Gold
Cpp2-cppfront
Crystal
C#
CUDA C++
D
Dart
Elixir
Erlang
Fortran
F#
GLSL
Go
Haskell
HLSL
Hook
Hylo
IL
ispc
Java
Julia
Kotlin
LLVM IR
LLVM MIR
Modula-2
Mojo
Nim
Numba
Nix
Objective-C
Objective-C++
OCaml
Odin
OpenCL C
Pascal
Pony
PTX
Python
Racket
Raku
Ruby
Rust
Sail
Snowball
Scala
Slang
Solidity
Spice
SPIR-V
Swift
LLVM TableGen
Toit
Triton
TypeScript Native
V
Vala
Visual Basic
Vyper
WASM
Zig
Javascript
GIMPLE
Ygen
sway
llvm source #1
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
clang (assertions trunk)
clang (trunk)
clang 10.0.0
clang 10.0.1
clang 11.0.0
clang 11.0.1
clang 12.0.0
clang 12.0.1
clang 13.0.0
clang 14.0.0
clang 15.0.0
clang 16.0.0
clang 17.0.1
clang 18.1.0
clang 19.1.0
clang 20.1.0
clang 21.1.0
clang 4.0.1
clang 5.0.0
clang 6.0.0
clang 7.0.0
clang 8.0.0
clang 9.0.0
hexagon-clang 16.0.5
llc (assertions trunk)
llc (trunk)
llc 10.0.0
llc 10.0.1
llc 11.0.0
llc 11.0.1
llc 12.0.0
llc 12.0.1
llc 13.0.0
llc 14.0.0
llc 15.0.0
llc 16.0.0
llc 17.0.1
llc 18.1.0
llc 19.1.0
llc 20.1.0
llc 21.1.0
llc 3.2
llc 3.3
llc 3.9.1
llc 4.0.0
llc 4.0.1
llc 5.0.0
llc 6.0.0
llc 7.0.0
llc 8.0.0
llc 9.0.0
opt (assertions trunk)
opt (trunk)
opt 10.0.0
opt 10.0.1
opt 11.0.0
opt 11.0.1
opt 12.0.0
opt 12.0.1
opt 13.0.0
opt 14.0.0
opt 15.0.0
opt 16.0.0
opt 17.0.1
opt 18.1.0
opt 19.1.0
opt 20.1.0
opt 21.1.0
opt 3.2
opt 3.3
opt 3.9.1
opt 4.0.0
opt 4.0.1
opt 5.0.0
opt 6.0.0
opt 7.0.0
opt 8.0.0
opt 9.0.0
Options
Source code
; ModuleID = 'run.cu' source_filename = "run.cu" target datalayout = "e-i64:64-i128:128-v16:16-v32:32-n16:32:64" target triple = "nvptx64-nvidia-cuda" @enzyme_dup = dso_local addrspace(1) externally_initialized global i32 0, align 4 @enzyme_dupnoneed = dso_local local_unnamed_addr addrspace(1) externally_initialized global i32 0, align 4 @enzyme_out = dso_local local_unnamed_addr addrspace(1) externally_initialized global i32 0, align 4 @enzyme_const = dso_local local_unnamed_addr addrspace(1) externally_initialized global i32 0, align 4 @__cudart_i2opi_f = internal unnamed_addr addrspace(1) constant [6 x i32] [i32 1011060801, i32 -614296167, i32 -181084736, i32 -64530479, i32 1313084713, i32 -1560706194], align 4 @__cudart_i2opi_d = internal unnamed_addr addrspace(1) constant [18 x i64] [i64 7780917995555872008, i64 4397547296490951402, i64 8441921394348257659, i64 5712322887342352941, i64 7869616827067468215, i64 -1211730484530615009, i64 2303758334597371919, i64 -7168499653074671557, i64 4148332274289687028, i64 -1613291254968254911, i64 -1692731182770600828, i64 -135693905287338178, i64 452944820249399836, i64 -5249950069107600672, i64 -121206125134887583, i64 -2638381946312093631, i64 -277156292786332224, i64 -6703182060581546711], align 8 @__cudart_sin_cos_coeffs = internal unnamed_addr addrspace(1) constant [16 x double] [double 0x3DE5DB65F9785EBA, double 0xBE5AE5F12CB0D246, double 0x3EC71DE369ACE392, double 0xBF2A01A019DB62A1, double 0x3F81111111110818, double 0xBFC5555555555554, double 0.000000e+00, double 0.000000e+00, double 0xBDA8FF8320FD8164, double 0x3E21EEA7C1EF8528, double 0xBE927E4F8E06E6D9, double 0x3EFA01A019DDBCE9, double 0xBF56C16C16C15D47, double 0x3FA5555555555551, double -5.000000e-01, double 1.000000e+00], align 8 @llvm.compiler.used = appending global [180 x ptr] [ptr @_ZL10nearbyintff, ptr @_ZL10nextafterfff, ptr @_ZL10normcdfinvd, ptr @_ZL10remainderfff, ptr @_ZL11normcdfinvff, ptr @_ZL13cyl_bessel_i0d, ptr @_ZL13cyl_bessel_i1d, ptr @_ZL14cyl_bessel_i0ff, ptr @_ZL14cyl_bessel_i1ff, ptr @_ZL2j0d, ptr @_ZL2j1d, ptr @_ZL2jnid, ptr @_ZL2y0d, ptr @_ZL2y1d, ptr @_ZL2ynid, ptr @_ZL3absi, ptr @_ZL3cosd, ptr @_ZL3erfd, ptr @_ZL3expd, ptr @_ZL3fmaddd, ptr @_ZL3j0ff, ptr @_ZL3j1ff, ptr @_ZL3jnfif, ptr @_ZL3logd, ptr @_ZL3maxii, ptr @_ZL3minii, ptr @_ZL3powdd, ptr @_ZL3sind, ptr @_ZL3tand, ptr @_ZL3y0ff, ptr @_ZL3y1ff, ptr @_ZL3ynfif, ptr @_ZL4acosd, ptr @_ZL4asind, ptr @_ZL4atand, ptr @_ZL4cbrtd, ptr @_ZL4ceild, ptr @_ZL4cosff, ptr @_ZL4coshd, ptr @_ZL4erfcd, ptr @_ZL4erfff, ptr @_ZL4exp2d, ptr @_ZL4expff, ptr @_ZL4fabsd, ptr @_ZL4fdimdd, ptr @_ZL4fmaffff, ptr @_ZL4fmaxdd, ptr @_ZL4fmindd, ptr @_ZL4fmoddd, ptr @_ZL4labsl, ptr @_ZL4log2d, ptr @_ZL4logbd, ptr @_ZL4logff, ptr @_ZL4modfdPd, ptr @_ZL4normiPKd, ptr @_ZL4powfff, ptr @_ZL4powidi, ptr @_ZL4rintd, ptr @_ZL4sinff, ptr @_ZL4sinhd, ptr @_ZL4sqrtd, ptr @_ZL4tanff, ptr @_ZL4tanhd, ptr @_ZL4umaxjj, ptr @_ZL4uminjj, ptr @_ZL5acosff, ptr @_ZL5acoshd, ptr @_ZL5asinff, ptr @_ZL5asinhd, ptr @_ZL5atan2dd, ptr @_ZL5atanff, ptr @_ZL5atanhd, ptr @_ZL5cbrtff, ptr @_ZL5ceilff, ptr @_ZL5coshff, ptr @_ZL5cospid, ptr @_ZL5erfcff, ptr @_ZL5erfcxd, ptr @_ZL5exp10d, ptr @_ZL5exp2ff, ptr @_ZL5expm1d, ptr @_ZL5fabsff, ptr @_ZL5fdimfff, ptr @_ZL5floord, ptr @_ZL5fmaxfff, ptr @_ZL5fminfff, ptr @_ZL5fmodfff, ptr @_ZL5frexpdPi, ptr @_ZL5hypotdd, ptr @_ZL5ilogbd, ptr @_ZL5ldexpdi, ptr @_ZL5llabsx, ptr @_ZL5llmaxxx, ptr @_ZL5llminxx, ptr @_ZL5log10d, ptr @_ZL5log1pd, ptr @_ZL5log2ff, ptr @_ZL5logbff, ptr @_ZL5lrintd, ptr @_ZL5modfffPf, ptr @_ZL5normfiPKf, ptr @_ZL5powiffi, ptr @_ZL5rcbrtd, ptr @_ZL5rintff, ptr @_ZL5rnormiPKd, ptr @_ZL5roundd, ptr @_ZL5rsqrtd, ptr @_ZL5sinhff, ptr @_ZL5sinpid, ptr @_ZL5sqrtff, ptr @_ZL5tanhff, ptr @_ZL5truncd, ptr @_ZL6acoshff, ptr @_ZL6asinhff, ptr @_ZL6atan2fff, ptr @_ZL6atanhff, ptr @_ZL6cospiff, ptr @_ZL6erfcxff, ptr @_ZL6erfinvd, ptr @_ZL6exp10ff, ptr @_ZL6expm1ff, ptr @_ZL6floorff, ptr @_ZL6frexpffPi, ptr @_ZL6hypotfff, ptr @_ZL6ilogbff, ptr @_ZL6ldexpffi, ptr @_ZL6lgammad, ptr @_ZL6llrintd, ptr @_ZL6log10ff, ptr @_ZL6log1pff, ptr @_ZL6lrintff, ptr @_ZL6lroundd, ptr @_ZL6norm3dddd, ptr @_ZL6norm4ddddd, ptr @_ZL6rcbrtff, ptr @_ZL6remquoddPi, ptr @_ZL6rhypotdd, ptr @_ZL6rnormfiPKf, ptr @_ZL6roundff, ptr @_ZL6rsqrtff, ptr @_ZL6scalbndi, ptr @_ZL6sincosdPdS_, ptr @_ZL6sinpiff, ptr @_ZL6tgammad, ptr @_ZL6truncff, ptr @_ZL6ullmaxyy, ptr @_ZL6ullminyy, ptr @_ZL7erfcinvd, ptr @_ZL7erfinvff, ptr @_ZL7fdividedd, ptr @_ZL7lgammaff, ptr @_ZL7llrintff, ptr @_ZL7llroundd, ptr @_ZL7lroundff, ptr @_ZL7norm3dffff, ptr @_ZL7norm4dfffff, ptr @_ZL7normcdfd, ptr @_ZL7remquofffPi, ptr @_ZL7rhypotfff, ptr @_ZL7rnorm3dddd, ptr @_ZL7rnorm4ddddd, ptr @_ZL7scalblndl, ptr @_ZL7scalbnffi, ptr @_ZL7sincosffPfS_, ptr @_ZL7tgammaff, ptr @_ZL8copysigndd, ptr @_ZL8erfcinvff, ptr @_ZL8fdividefff, ptr @_ZL8llroundff, ptr @_ZL8normcdfff, ptr @_ZL8rnorm3dffff, ptr @_ZL8rnorm4dfffff, ptr @_ZL8scalblnffl, ptr @_ZL8sincospidPdS_, ptr @_ZL9copysignfff, ptr @_ZL9nearbyintd, ptr @_ZL9nextafterdd, ptr @_ZL9remainderdd, ptr @_ZL9sincospiffPfS_, ptr addrspacecast (ptr addrspace(1) @enzyme_dup to ptr)], section "llvm.metadata" ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i32 @_ZL3absi(i32 noundef %__a) #0 { entry: %0 = tail call i32 @llvm.abs.i32(i32 %__a, i1 false) ret i32 %0 } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4fabsd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_fabs(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4acosd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_acos(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5acosff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_acosf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5acoshd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_acosh(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6acoshff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_acoshf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4asind(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_asin(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5asinff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_asinf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5asinhd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_asinh(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6asinhff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_asinhf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4atand(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_atan(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5atan2dd(double noundef %__a, double noundef %__b) #1 { entry: %call = tail call contract fastcc double @__nv_atan2(double noundef %__a, double noundef %__b) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6atan2fff(float noundef %__a, float noundef %__b) #1 { entry: %call = tail call contract fastcc float @__nv_atan2f(float noundef %__a, float noundef %__b) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5atanff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_atanf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5atanhd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_atanh(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6atanhff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_atanhf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4cbrtd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_cbrt(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5cbrtff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_cbrtf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4ceild(double noundef %__a) #0 { entry: %0 = tail call double @llvm.nvvm.ceil.d(double %__a) ret double %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5ceilff(float noundef %__a) #0 { entry: %0 = tail call float @llvm.nvvm.ceil.f(float %__a) ret float %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL8copysigndd(double noundef %__a, double noundef %__b) #0 { entry: %0 = tail call i32 @llvm.nvvm.d2i.hi(double %__b) #145 %1 = tail call i32 @llvm.nvvm.d2i.lo(double %__a) #145 %2 = tail call i32 @llvm.nvvm.d2i.hi(double %__a) #145 %3 = and i32 %0, -2147483648 %4 = and i32 %2, 2147483647 %5 = or i32 %3, %4 %6 = tail call double @llvm.nvvm.lohi.i2d(i32 %1, i32 %5) #145 ret double %6 } ; Function Attrs: alwaysinline mustprogress nofree norecurse nosync nounwind readnone willreturn define internal noundef float @_ZL9copysignfff(float noundef %__a, float noundef %__b) #2 { entry: %0 = bitcast float %__b to i32 %1 = and i32 %0, -2147483648 %2 = bitcast float %__a to i32 %3 = and i32 %2, 2147483647 %4 = or i32 %1, %3 %5 = bitcast i32 %4 to float ret float %5 } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL3cosd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_cos(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL4cosff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_cosf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4coshd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_cosh(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5coshff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_coshf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5cospid(double noundef %__a) #0 { entry: %0 = tail call i32 @llvm.nvvm.d2i.hi(double %__a) #145 %1 = shl i32 %0, 1 %2 = icmp ugt i32 %1, -2038431744 %3 = tail call double @llvm.nvvm.mul.rn.d(double %__a, double 0.000000e+00) #145 %.pre = tail call i32 @llvm.nvvm.d2i.hi(double %3) #145 %.pre-phi = select i1 %2, i32 %.pre, i32 %0 %.0.i = select i1 %2, double %3, double %__a %4 = tail call i32 @llvm.nvvm.d2i.lo(double %.0.i) #145 %5 = add i32 %.pre-phi, 1048576 %6 = tail call double @llvm.nvvm.lohi.i2d(i32 %4, i32 %5) #145 %7 = tail call double @llvm.nvvm.round.d(double %6) #145 %8 = fptosi double %7 to i64 %9 = trunc i64 %8 to i32 %10 = fneg double %7 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double 5.000000e-01, double %.0.i) #145 %12 = fmul double %11, 0x3CA1A62633145C07 %13 = tail call double @llvm.nvvm.fma.rn.d(double %11, double 0x400921FB54442D18, double %12) #145 %14 = add nsw i32 %9, 1 %15 = and i32 %14, 1 %16 = shl nuw nsw i32 %15, 3 %17 = zext i32 %16 to i64 %18 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %17 %19 = tail call double @llvm.nvvm.mul.rn.d(double %13, double %13) #145 %.not = icmp eq i32 %15, 0 %20 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %21 = getelementptr inbounds double, ptr addrspace(1) %18, i64 1 %22 = load double, ptr addrspace(1) %21, align 8 %23 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %19, double %22) #145 %24 = getelementptr inbounds double, ptr addrspace(1) %18, i64 2 %25 = load double, ptr addrspace(1) %24, align 8 %26 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %19, double %25) #145 %27 = getelementptr inbounds double, ptr addrspace(1) %18, i64 3 %28 = load double, ptr addrspace(1) %27, align 8 %29 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %19, double %28) #145 %30 = getelementptr inbounds double, ptr addrspace(1) %18, i64 4 %31 = load double, ptr addrspace(1) %30, align 8 %32 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %19, double %31) #145 %33 = getelementptr inbounds double, ptr addrspace(1) %18, i64 5 %34 = load double, ptr addrspace(1) %33, align 8 %35 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %19, double %34) #145 %36 = getelementptr inbounds double, ptr addrspace(1) %18, i64 6 %37 = load double, ptr addrspace(1) %36, align 8 %38 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %19, double %37) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %13, double %13) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %19, double 1.000000e+00) #145 %.03.i = select i1 %.not, double %39, double %40 %41 = and i32 %14, 2 %.not1 = icmp eq i32 %41, 0 %42 = tail call double @llvm.nvvm.fma.rn.d(double %.03.i, double -1.000000e+00, double 0.000000e+00) #145 %.1.i = select i1 %.not1, double %.03.i, double %42 ret double %.1.i } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6cospiff(float noundef %__a) #0 { entry: %0 = tail call float @llvm.nvvm.fabs.f(float %__a) #145 %1 = fcmp ogt float %0, 0x4170000000000000 %2 = tail call float @llvm.nvvm.mul.rn.f(float %__a, float 0.000000e+00) #145 %.01.i = select i1 %1, float %2, float %__a %3 = fadd float %.01.i, %.01.i %4 = tail call float @llvm.nvvm.round.f(float %3) #145 %5 = tail call i32 @llvm.nvvm.f2i.rz(float %4) %6 = fneg float %4 %7 = tail call float @llvm.nvvm.fma.rn.f(float %6, float 5.000000e-01, float %.01.i) #145 %8 = add i32 %5, 1 %9 = and i32 %8, 1 %10 = tail call float @llvm.nvvm.mul.rn.f(float %7, float %7) #145 %.not = icmp eq i32 %9, 0 %11 = select i1 %.not, float %7, float 1.000000e+00 %12 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %11, float 0.000000e+00) #145 %13 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FCD09C240000000, float %10, float 0xBFF55A5C00000000) #145 %14 = select i1 %.not, float 0xBFE2F59920000000, float %13 %15 = select i1 %.not, float 0x400466B200000000, float 0x40103C19E0000000 %16 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %10, float %15) #145 %17 = select i1 %.not, float 0xC014ABBEC0000000, float 0xC013BD3CC0000000 %18 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %10, float %17) #145 %19 = select i1 %.not, float 0.000000e+00, float 1.000000e+00 %20 = tail call float @llvm.nvvm.fma.rn.f(float %18, float %12, float %19) #145 %21 = tail call float @llvm.nvvm.fma.rn.f(float 0x400921FB60000000, float %7, float %20) #145 %22 = select i1 %.not, float %21, float %20 %23 = and i32 %8, 2 %.not1 = icmp eq i32 %23, 0 %24 = fsub float 0.000000e+00, %22 %25 = select i1 %.not1, float %22, float %24 ret float %25 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal noundef double @_ZL13cyl_bessel_i0d(double noundef %__a) #3 { entry: %0 = tail call double @llvm.nvvm.fabs.d(double %__a) #145 %1 = tail call i32 @llvm.nvvm.d2i.hi(double %0) #145 %2 = add i32 %1, -1076238844 %3 = icmp ult i32 %2, 127526404 br i1 %3, label %4, label %77 4: ; preds = %entry %5 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %0) #145 %6 = fneg double %0 %7 = tail call double @llvm.nvvm.fma.rn.d(double %6, double %5, double 1.000000e+00) #145 %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double %7, double %7) #145 %9 = tail call double @llvm.nvvm.fma.rn.d(double %8, double %5, double %5) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double 0x41F2F851FC237B1D, double %9, double 0x41FFEFDD4FF37461) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %9, double 0xC1FA8A1907F57F70) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %9, double 0x41E10B6852851C22) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %9, double 0xC1B925FC57CCB350) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %9, double 0x41885261A7176974) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %9, double 0xC1506BFA24BE44DB) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %9, double 0x411003CC0DA58B08) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %9, double 0xC0C6E73AA6A2C47A) #145 %18 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %9, double 0x40785E17BC10541A) #145 %19 = tail call double @llvm.nvvm.fma.rn.d(double %18, double %9, double 0xC0216C6690365068) #145 %20 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %9, double 0x3FD934E08086004C) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %9, double 0x3FB6AA7C7D428943) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %9, double 0x3FA6EAC2735A091E) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %9, double 0x3F9DEBAA90561E71) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %9, double 0x3F9CB94DDFD23F70) #145 %25 = tail call double @llvm.nvvm.fma.rn.d(double %24, double %9, double 0x3FA9884533D30179) #145 %26 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %9, double 0x3FD9884533D43657) #145 %27 = tail call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %0) #146, !srcloc !9 %28 = tail call double @llvm.nvvm.mul.rn.d(double %27, double %27) #145 %29 = fneg double %28 %30 = tail call double @llvm.nvvm.fma.rn.d(double %0, double %29, double 1.000000e+00) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double 3.750000e-01, double %30, double 5.000000e-01) #145 %32 = tail call double @llvm.nvvm.mul.rn.d(double %30, double %27) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %32, double %27) #145 %34 = fmul double %33, %26 %35 = fmul double %0, 5.000000e-01 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double 0x3FF71547652B82FE, double 0x4338000000000000) #145 %37 = tail call i32 @llvm.nvvm.d2i.lo(double %36) #145 %38 = tail call double @llvm.nvvm.add.rn.d(double %36, double 0xC338000000000000) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double 0xBFE62E42FEFA39EF, double %35) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %38, double 0xBC7ABC9E3B39803F, double %39) #145 %41 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E5ADE1569CE2BDF, double %40, double 0x3E928AF3FCA213EA) #145 %42 = tail call double @llvm.nvvm.fma.rn.d(double %41, double %40, double 0x3EC71DEE62401315) #145 %43 = tail call double @llvm.nvvm.fma.rn.d(double %42, double %40, double 0x3EFA01997C89EB71) #145 %44 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %40, double 0x3F2A01A014761F65) #145 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %40, double 0x3F56C16C1852B7AF) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %40, double 0x3F81111111122322) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %40, double 0x3FA55555555502A1) #145 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %40, double 0x3FC5555555555511) #145 %49 = tail call double @llvm.nvvm.fma.rn.d(double %48, double %40, double 0x3FE000000000000B) #145 %50 = tail call double @llvm.nvvm.fma.rn.d(double %49, double %40, double 1.000000e+00) #145 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %40, double 1.000000e+00) #145 %52 = tail call i32 @llvm.nvvm.d2i.lo(double %51) #145 %53 = tail call i32 @llvm.nvvm.d2i.hi(double %51) #145 %54 = shl i32 %37, 20 %55 = add i32 %53, %54 %56 = tail call double @llvm.nvvm.lohi.i2d(i32 %52, i32 %55) #145 %57 = tail call i32 @llvm.nvvm.d2i.hi(double %35) #145 %58 = bitcast i32 %57 to float %59 = tail call float @llvm.nvvm.fabs.f(float %58) #145 %60 = fcmp olt float %59, 0x4010C46560000000 br i1 %60, label %__nv_exp.exit.i, label %61 61: ; preds = %4 %62 = fcmp olt double %35, 0.000000e+00 %63 = fadd double %35, 0x7FF0000000000000 %z.i.0.i = select i1 %62, double 0.000000e+00, double %63 %64 = fcmp olt float %59, 0x4010E90000000000 br i1 %64, label %65, label %__nv_exp.exit.i 65: ; preds = %61 %66 = sdiv i32 %37, 2 %67 = shl i32 %66, 20 %68 = add i32 %53, %67 %69 = tail call double @llvm.nvvm.lohi.i2d(i32 %52, i32 %68) #145 %70 = sub nsw i32 %37, %66 %71 = shl i32 %70, 20 %72 = add nsw i32 %71, 1072693248 %73 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %72) #145 %74 = fmul double %73, %69 br label %__nv_exp.exit.i __nv_exp.exit.i: ; preds = %61, %65, %4 %z.i.2.i = phi double [ %56, %4 ], [ %74, %65 ], [ %z.i.0.i, %61 ] %75 = fmul double %34, %z.i.2.i %76 = fmul double %z.i.2.i, %75 br label %__nv_cyl_bessel_i0.exit 77: ; preds = %entry %78 = fmul double %0, %0 %79 = tail call double @llvm.nvvm.fma.rn.d(double 0x37D4D7F592957DA6, double %78, double 0x3858C41D50AB516F) #145 %80 = tail call double @llvm.nvvm.fma.rn.d(double %79, double %78, double 0x39095DDA3F2C417B) #145 %81 = tail call double @llvm.nvvm.fma.rn.d(double %80, double %78, double 0x39A367189A01363E) #145 %82 = tail call double @llvm.nvvm.fma.rn.d(double %81, double %78, double 0x3A3E90745678B866) #145 %83 = tail call double @llvm.nvvm.fma.rn.d(double %82, double %78, double 0x3AD416D14FA3A4BD) #145 %84 = tail call double @llvm.nvvm.fma.rn.d(double %83, double %78, double 0x3B669D021FDE720E) #145 %85 = tail call double @llvm.nvvm.fma.rn.d(double %84, double %78, double 0x3BF5601014E95430) #145 %86 = tail call double @llvm.nvvm.fma.rn.d(double %85, double %78, double 0x3C80B313C0325230) #145 %87 = tail call double @llvm.nvvm.fma.rn.d(double %86, double %78, double 0x3D0522A42FFEF890) #145 %88 = tail call double @llvm.nvvm.fma.rn.d(double %87, double %78, double 0x3D8522A440809476) #145 %89 = tail call double @llvm.nvvm.fma.rn.d(double %88, double %78, double 0x3E002E85C07BA843) #145 %90 = tail call double @llvm.nvvm.fma.rn.d(double %89, double %78, double 0x3E723456789B9DE8) #145 %91 = tail call double @llvm.nvvm.fma.rn.d(double %90, double %78, double 0x3EDC71C71C71B63C) #145 %92 = tail call double @llvm.nvvm.fma.rn.d(double %91, double %78, double 0x3F3C71C71C71C7C2) #145 %93 = tail call double @llvm.nvvm.fma.rn.d(double %92, double %78, double 0x3F8FFFFFFFFFFFFB) #145 %94 = tail call double @llvm.nvvm.fma.rn.d(double %93, double %78, double 2.500000e-01) #145 %95 = tail call double @llvm.nvvm.fma.rn.d(double %94, double %78, double 1.000000e+00) #145 br label %__nv_cyl_bessel_i0.exit __nv_cyl_bessel_i0.exit: ; preds = %__nv_exp.exit.i, %77 %p.0.i = phi double [ %76, %__nv_exp.exit.i ], [ %95, %77 ] ret double %p.0.i } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal noundef float @_ZL14cyl_bessel_i0ff(float noundef %__a) #3 { entry: %0 = tail call float @llvm.nvvm.fabs.f(float %__a) #145 %1 = fcmp oge float %0, 9.000000e+00 %2 = fcmp olt float %0, 0x7FF0000000000000 %or.cond = and i1 %1, %2 br i1 %or.cond, label %__nv_expm1f.exit.i, label %38 __nv_expm1f.exit.i: ; preds = %entry %3 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %0) #146, !srcloc !10 %4 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FD65174C0000000, float %3, float 0xBF765961A0000000) #145 %5 = tail call float @llvm.nvvm.fma.rn.f(float %4, float %3, float 0x3FA112E0E0000000) #145 %6 = tail call float @llvm.nvvm.fma.rn.f(float %5, float %3, float 0x3F9C8EFC40000000) #145 %7 = tail call float @llvm.nvvm.fma.rn.f(float %6, float %3, float 0x3FA988A4A0000000) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float %3, float 0x3FD9884520000000) #145 %9 = tail call float @llvm.nvvm.rsqrt.approx.ftz.f(float %0) #145 %10 = fmul float %9, %8 %11 = fmul float %0, 5.000000e-01 %12 = fmul float %11, 0x3FF7154760000000 %13 = tail call float @llvm.nvvm.round.f(float %12) #145 %14 = tail call float @llvm.nvvm.fabs.f(float %11) #145 %15 = fcmp olt float %14, 0x3FDA3D70A0000000 %t.i.0.i = select i1 %15, float 0.000000e+00, float %13 %16 = fneg float %t.i.0.i %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float 0x3FE62E4000000000, float %11) #145 %18 = tail call float @llvm.nvvm.fma.rn.f(float %16, float 0x3EB7F7D1C0000000, float %17) #145 %19 = fcmp oeq float %t.i.0.i, 1.280000e+02 %j.i.0.i = select i1 %19, float 1.270000e+02, float %t.i.0.i %20 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F56BD7CC0000000, float %18, float 0x3F812ACC60000000) #145 %21 = tail call float @llvm.nvvm.fma.rn.f(float %20, float %18, float 0x3FA5557C60000000) #145 %22 = tail call float @llvm.nvvm.fma.rn.f(float %21, float %18, float 0x3FC5553EC0000000) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %22, float %18, float 0x3FDFFFFFC0000000) #145 %24 = fmul float %18, %23 %25 = tail call float @llvm.nvvm.fma.rn.f(float %24, float %18, float %18) #145 %26 = tail call float @llvm.nvvm.ex2.approx.f(float %j.i.0.i) #145 %27 = fadd float %26, -1.000000e+00 %28 = tail call float @llvm.nvvm.fma.rn.f(float %25, float %26, float %27) #145 %29 = select i1 %19, float %28, float -0.000000e+00 %u.i.0.i = fadd float %28, %29 %30 = fcmp ogt float %j.i.0.i, 1.280000e+02 %u.i.1.i = select i1 %30, float 0x7FF0000000000000, float %u.i.0.i %31 = fcmp olt float %j.i.0.i, -2.500000e+01 %u.i.2.i = select i1 %31, float -1.000000e+00, float %u.i.1.i %32 = fcmp oeq float %11, 0.000000e+00 %33 = fadd float %11, %11 %u.i.3.i = select i1 %32, float %33, float %u.i.2.i %34 = tail call float @llvm.nvvm.mul.rn.f(float %10, float %u.i.3.i) #145 %35 = tail call float @llvm.nvvm.add.rn.f(float %u.i.3.i, float 2.000000e+00) #145 %36 = tail call float @llvm.nvvm.mul.rn.f(float %34, float %35) #145 %37 = tail call float @llvm.nvvm.add.rn.f(float %36, float %10) #145 br label %__nv_cyl_bessel_i0f.exit 38: ; preds = %entry %39 = fmul float %0, %0 %40 = tail call float @llvm.nvvm.fma.rn.f(float 0x3C06E52020000000, float %39, float 0x3C70B56EC0000000) #145 %41 = tail call float @llvm.nvvm.fma.rn.f(float %40, float %39, float 0x3D08110240000000) #145 %42 = tail call float @llvm.nvvm.fma.rn.f(float %41, float %39, float 0x3D8489DB60000000) #145 %43 = tail call float @llvm.nvvm.fma.rn.f(float %42, float %39, float 0x3E00412280000000) #145 %44 = tail call float @llvm.nvvm.fma.rn.f(float %43, float %39, float 0x3E7231AB40000000) #145 %45 = tail call float @llvm.nvvm.fma.rn.f(float %44, float %39, float 0x3EDC723380000000) #145 %46 = tail call float @llvm.nvvm.fma.rn.f(float %45, float %39, float 0x3F3C71BEC0000000) #145 %47 = tail call float @llvm.nvvm.fma.rn.f(float %46, float %39, float 0x3F90000040000000) #145 %48 = tail call float @llvm.nvvm.fma.rn.f(float %47, float %39, float 2.500000e-01) #145 %49 = tail call float @llvm.nvvm.fma.rn.f(float %48, float %39, float 1.000000e+00) #145 br label %__nv_cyl_bessel_i0f.exit __nv_cyl_bessel_i0f.exit: ; preds = %__nv_expm1f.exit.i, %38 %p.0.i = phi float [ %37, %__nv_expm1f.exit.i ], [ %49, %38 ] ret float %p.0.i } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal noundef double @_ZL13cyl_bessel_i1d(double noundef %__a) #3 { entry: %0 = tail call double @llvm.nvvm.fabs.d(double %__a) #145 %1 = tail call i32 @llvm.nvvm.d2i.hi(double %0) #145 %2 = add i32 %1, -1076232192 %3 = icmp ult i32 %2, 127533056 br i1 %3, label %4, label %83 4: ; preds = %entry %5 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %0) #145 %6 = fneg double %0 %7 = tail call double @llvm.nvvm.fma.rn.d(double %6, double %5, double 1.000000e+00) #145 %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double %7, double %7) #145 %9 = tail call double @llvm.nvvm.fma.rn.d(double %8, double %5, double %5) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double 0x41D8729DA7E5A092, double %9, double 0xC20A9923A6810426) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %9, double 0x42015D3DB3C5FFE0) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %9, double 0xC1E4D2D89A3913C1) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %9, double 0x41BDCDFF9B080398) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %9, double 0xC18C5F2E01FB2FF9) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %9, double 0x4152FCFB5FD54150) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %9, double 0xC1126D4CD831FC06) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %9, double 0x40CA49ABC2CAD407) #145 %18 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %9, double 0xC07BF09A8D0B4BCF) #145 %19 = tail call double @llvm.nvvm.fma.rn.d(double %18, double %9, double 0x4023F8F8F6F26890) #145 %20 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %9, double 0xBFDD6E31961ECE73) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %9, double 0xBFBBBDC121C5123B) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %9, double 0xBFAD76AACF55FC53) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %9, double 0xBFA4F1C4FF86494B) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %9, double 0xBFA7EFC0E3C7167E) #145 %25 = tail call double @llvm.nvvm.fma.rn.d(double %24, double %9, double 0xBFC32633E6DECF48) #145 %26 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %9, double 0x3FD9884533D43649) #145 %27 = tail call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %0) #146, !srcloc !9 %28 = tail call double @llvm.nvvm.mul.rn.d(double %27, double %27) #145 %29 = fneg double %28 %30 = tail call double @llvm.nvvm.fma.rn.d(double %0, double %29, double 1.000000e+00) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double 3.750000e-01, double %30, double 5.000000e-01) #145 %32 = tail call double @llvm.nvvm.mul.rn.d(double %30, double %27) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %32, double %27) #145 %34 = tail call double @llvm.nvvm.mul.rn.d(double %26, double %33) #145 %35 = fmul double %0, 5.000000e-01 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double 0x3FF71547652B82FE, double 0x4338000000000000) #145 %37 = tail call i32 @llvm.nvvm.d2i.lo(double %36) #145 %38 = tail call double @llvm.nvvm.add.rn.d(double %36, double 0xC338000000000000) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double 0xBFE62E42FEFA39EF, double %35) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %38, double 0xBC7ABC9E3B39803F, double %39) #145 %41 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E5ADE1569CE2BDF, double %40, double 0x3E928AF3FCA213EA) #145 %42 = tail call double @llvm.nvvm.fma.rn.d(double %41, double %40, double 0x3EC71DEE62401315) #145 %43 = tail call double @llvm.nvvm.fma.rn.d(double %42, double %40, double 0x3EFA01997C89EB71) #145 %44 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %40, double 0x3F2A01A014761F65) #145 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %40, double 0x3F56C16C1852B7AF) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %40, double 0x3F81111111122322) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %40, double 0x3FA55555555502A1) #145 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %40, double 0x3FC5555555555511) #145 %49 = tail call double @llvm.nvvm.fma.rn.d(double %48, double %40, double 0x3FE000000000000B) #145 %50 = tail call double @llvm.nvvm.fma.rn.d(double %49, double %40, double 1.000000e+00) #145 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %40, double 1.000000e+00) #145 %52 = tail call i32 @llvm.nvvm.d2i.lo(double %51) #145 %53 = tail call i32 @llvm.nvvm.d2i.hi(double %51) #145 %54 = shl i32 %37, 20 %55 = add i32 %53, %54 %56 = tail call double @llvm.nvvm.lohi.i2d(i32 %52, i32 %55) #145 %57 = tail call i32 @llvm.nvvm.d2i.hi(double %35) #145 %58 = bitcast i32 %57 to float %59 = tail call float @llvm.nvvm.fabs.f(float %58) #145 %60 = fcmp olt float %59, 0x4010C46560000000 br i1 %60, label %__nv_exp.exit.i, label %61 61: ; preds = %4 %62 = fcmp olt double %35, 0.000000e+00 %63 = fadd double %35, 0x7FF0000000000000 %z.i.0.i = select i1 %62, double 0.000000e+00, double %63 %64 = fcmp olt float %59, 0x4010E90000000000 br i1 %64, label %65, label %__nv_exp.exit.i 65: ; preds = %61 %66 = sdiv i32 %37, 2 %67 = shl i32 %66, 20 %68 = add i32 %53, %67 %69 = tail call double @llvm.nvvm.lohi.i2d(i32 %52, i32 %68) #145 %70 = sub nsw i32 %37, %66 %71 = shl i32 %70, 20 %72 = add nsw i32 %71, 1072693248 %73 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %72) #145 %74 = fmul double %73, %69 br label %__nv_exp.exit.i __nv_exp.exit.i: ; preds = %61, %65, %4 %z.i.2.i = phi double [ %56, %4 ], [ %74, %65 ], [ %z.i.0.i, %61 ] %75 = tail call double @llvm.nvvm.mul.rn.d(double %34, double %z.i.2.i) #145 %76 = tail call double @llvm.nvvm.mul.rn.d(double %75, double %z.i.2.i) #145 %77 = tail call i32 @llvm.nvvm.d2i.hi(double %__a) #145 %78 = tail call i32 @llvm.nvvm.d2i.lo(double %76) #145 %79 = tail call i32 @llvm.nvvm.d2i.hi(double %76) #145 %80 = and i32 %77, -2147483648 %81 = or i32 %79, %80 %82 = tail call double @llvm.nvvm.lohi.i2d(i32 %78, i32 %81) #145 br label %__nv_cyl_bessel_i1.exit 83: ; preds = %entry %84 = tail call double @llvm.nvvm.mul.rn.d(double %__a, double %__a) #145 %85 = tail call double @llvm.nvvm.fma.rn.d(double 0x38268D52E367973F, double %84, double 0x38A76B71C28918B0) #145 %86 = tail call double @llvm.nvvm.fma.rn.d(double %85, double %84, double 0x3958082FE6606ACB) #145 %87 = tail call double @llvm.nvvm.fma.rn.d(double %86, double %84, double 0x39F0EC04908E2753) #145 %88 = tail call double @llvm.nvvm.fma.rn.d(double %87, double %84, double 0x3A88D983808A730D) #145 %89 = tail call double @llvm.nvvm.fma.rn.d(double %88, double %84, double 0x3B1E21624AF0555A) #145 %90 = tail call double @llvm.nvvm.fma.rn.d(double %89, double %84, double 0x3BAF18024073231E) #145 %91 = tail call double @llvm.nvvm.fma.rn.d(double %90, double %84, double 0x3C3AB810D07C53A4) #145 %92 = tail call double @llvm.nvvm.fma.rn.d(double %91, double %84, double 0x3CC2C97677FAB629) #145 %93 = tail call double @llvm.nvvm.fma.rn.d(double %92, double %84, double 0x3D4522A42918D8A1) #145 %94 = tail call double @llvm.nvvm.fma.rn.d(double %93, double %84, double 0x3DC27E4FB8F617FC) #145 %95 = tail call double @llvm.nvvm.fma.rn.d(double %94, double %84, double 0x3E3845C8A0ABD799) #145 %96 = tail call double @llvm.nvvm.fma.rn.d(double %95, double %84, double 0x3EA6C16C16C369A2) #145 %97 = tail call double @llvm.nvvm.fma.rn.d(double %96, double %84, double 0x3F0C71C71C71A4B2) #145 %98 = tail call double @llvm.nvvm.fma.rn.d(double %97, double %84, double 0x3F65555555555681) #145 %99 = tail call double @llvm.nvvm.fma.rn.d(double %98, double %84, double 0x3FAFFFFFFFFFFFF1) #145 %100 = tail call double @llvm.nvvm.mul.rn.d(double %99, double %84) #145 %101 = fmul double %__a, 5.000000e-01 %102 = tail call double @llvm.nvvm.fma.rn.d(double %__a, double %100, double %101) #145 br label %__nv_cyl_bessel_i1.exit __nv_cyl_bessel_i1.exit: ; preds = %__nv_exp.exit.i, %83 %p.0.i = phi double [ %82, %__nv_exp.exit.i ], [ %102, %83 ] ret double %p.0.i } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal noundef float @_ZL14cyl_bessel_i1ff(float noundef %__a) #3 { entry: %0 = tail call float @llvm.nvvm.fabs.f(float %__a) #145 %1 = fcmp oge float %0, 0x40202B8520000000 %2 = fcmp olt float %0, 0x7FF0000000000000 %or.cond = and i1 %1, %2 br i1 %or.cond, label %__nv_expm1f.exit.i, label %43 __nv_expm1f.exit.i: ; preds = %entry %3 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %0) #146, !srcloc !10 %4 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFE0179A80000000, float %3, float 0x3F9D27A5C0000000) #145 %5 = tail call float @llvm.nvvm.fma.rn.f(float %4, float %3, float 0xBFA8F404A0000000) #145 %6 = tail call float @llvm.nvvm.fma.rn.f(float %5, float %3, float 0xBFA7C3D520000000) #145 %7 = tail call float @llvm.nvvm.fma.rn.f(float %6, float %3, float 0xBFC3266960000000) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float %3, float 0x3FD9884560000000) #145 %9 = tail call float @llvm.nvvm.rsqrt.approx.ftz.f(float %0) #145 %10 = fmul float %9, %8 %11 = fmul float %0, 5.000000e-01 %12 = fmul float %11, 0x3FF7154760000000 %13 = tail call float @llvm.nvvm.round.f(float %12) #145 %14 = tail call float @llvm.nvvm.fabs.f(float %11) #145 %15 = fcmp olt float %14, 0x3FDA3D70A0000000 %t.i.0.i = select i1 %15, float 0.000000e+00, float %13 %16 = fneg float %t.i.0.i %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float 0x3FE62E4000000000, float %11) #145 %18 = tail call float @llvm.nvvm.fma.rn.f(float %16, float 0x3EB7F7D1C0000000, float %17) #145 %19 = fcmp oeq float %t.i.0.i, 1.280000e+02 %j.i.0.i = select i1 %19, float 1.270000e+02, float %t.i.0.i %20 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F56BD7CC0000000, float %18, float 0x3F812ACC60000000) #145 %21 = tail call float @llvm.nvvm.fma.rn.f(float %20, float %18, float 0x3FA5557C60000000) #145 %22 = tail call float @llvm.nvvm.fma.rn.f(float %21, float %18, float 0x3FC5553EC0000000) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %22, float %18, float 0x3FDFFFFFC0000000) #145 %24 = fmul float %18, %23 %25 = tail call float @llvm.nvvm.fma.rn.f(float %24, float %18, float %18) #145 %26 = tail call float @llvm.nvvm.ex2.approx.f(float %j.i.0.i) #145 %27 = fadd float %26, -1.000000e+00 %28 = tail call float @llvm.nvvm.fma.rn.f(float %25, float %26, float %27) #145 %29 = select i1 %19, float %28, float -0.000000e+00 %u.i.0.i = fadd float %28, %29 %30 = fcmp ogt float %j.i.0.i, 1.280000e+02 %u.i.1.i = select i1 %30, float 0x7FF0000000000000, float %u.i.0.i %31 = fcmp olt float %j.i.0.i, -2.500000e+01 %u.i.2.i = select i1 %31, float -1.000000e+00, float %u.i.1.i %32 = fcmp oeq float %11, 0.000000e+00 %33 = fadd float %11, %11 %u.i.3.i = select i1 %32, float %33, float %u.i.2.i %34 = tail call float @llvm.nvvm.mul.rn.f(float %10, float %u.i.3.i) #145 %35 = tail call float @llvm.nvvm.add.rn.f(float %u.i.3.i, float 2.000000e+00) #145 %36 = tail call float @llvm.nvvm.mul.rn.f(float %34, float %35) #145 %37 = tail call float @llvm.nvvm.add.rn.f(float %36, float %10) #145 %38 = bitcast float %37 to i32 %39 = bitcast float %__a to i32 %40 = and i32 %39, -2147483648 %41 = or i32 %40, %38 %42 = bitcast i32 %41 to float br label %__nv_cyl_bessel_i1f.exit 43: ; preds = %entry %44 = fmul float %__a, %__a %45 = tail call float @llvm.nvvm.fma.rn.f(float 0x3C49AF7BA0000000, float %44, float 0x3CB8A95820000000) #145 %46 = tail call float @llvm.nvvm.fma.rn.f(float %45, float %44, float 0x3D46E19000000000) #145 %47 = tail call float @llvm.nvvm.fma.rn.f(float %46, float %44, float 0x3DC23858A0000000) #145 %48 = tail call float @llvm.nvvm.fma.rn.f(float %47, float %44, float 0x3E3852D5C0000000) #145 %49 = tail call float @llvm.nvvm.fma.rn.f(float %48, float %44, float 0x3EA6BFFFC0000000) #145 %50 = tail call float @llvm.nvvm.fma.rn.f(float %49, float %44, float 0x3F0C71F2A0000000) #145 %51 = tail call float @llvm.nvvm.fma.rn.f(float %50, float %44, float 0x3F655552E0000000) #145 %52 = tail call float @llvm.nvvm.fma.rn.f(float %51, float %44, float 0x3FB0000020000000) #145 %53 = fmul float %44, %52 %54 = fmul float %__a, 5.000000e-01 %55 = tail call float @llvm.nvvm.fma.rn.f(float %__a, float %53, float %54) #145 br label %__nv_cyl_bessel_i1f.exit __nv_cyl_bessel_i1f.exit: ; preds = %__nv_expm1f.exit.i, %43 %p.0.i = phi float [ %42, %__nv_expm1f.exit.i ], [ %55, %43 ] ret float %p.0.i } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL3erfd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_erf(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4erfcd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_erfc(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5erfcff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_erfcf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL7erfcinvd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_erfcinv(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL8erfcinvff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_erfcinvf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5erfcxd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_erfcx(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6erfcxff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_erfcxf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL4erfff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_erff(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL6erfinvd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_erfinv(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL7erfinvff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_erfinvf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL3expd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_exp(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5exp10d(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_exp10(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6exp10ff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_exp10f(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4exp2d(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_exp2(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5exp2ff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_exp2f(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL4expff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_expf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5expm1d(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_expm1(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6expm1ff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_expm1f(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5fabsff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_fabsf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4fdimdd(double noundef %__a, double noundef %__b) #1 { entry: %call = tail call contract fastcc double @__nv_fdim(double noundef %__a, double noundef %__b) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5fdimfff(float noundef %__a, float noundef %__b) #1 { entry: %call = tail call contract fastcc float @__nv_fdimf(float noundef %__a, float noundef %__b) #145 ret float %call } ; Function Attrs: alwaysinline mustprogress nofree norecurse nosync nounwind readnone willreturn define internal noundef double @_ZL7fdividedd(double noundef %__a, double noundef %__b) #4 { entry: %div = fdiv contract double %__a, %__b ret double %div } ; Function Attrs: alwaysinline mustprogress nofree norecurse nosync nounwind readnone willreturn define internal noundef float @_ZL8fdividefff(float noundef %__a, float noundef %__b) #4 { entry: %div = fdiv contract float %__a, %__b ret float %div } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5floord(double noundef %__f) #0 { entry: %0 = tail call double @llvm.nvvm.floor.d(double %__f) ret double %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6floorff(float noundef %__f) #0 { entry: %0 = tail call float @llvm.nvvm.floor.f(float %__f) ret float %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL3fmaddd(double noundef %__a, double noundef %__b, double noundef %__c) #0 { entry: %0 = tail call double @llvm.nvvm.fma.rn.d(double %__a, double %__b, double %__c) #145 ret double %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL4fmaffff(float noundef %__a, float noundef %__b, float noundef %__c) #0 { entry: %0 = tail call float @llvm.nvvm.fma.rn.f(float %__a, float %__b, float %__c) #145 ret float %0 } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4fmaxdd(double noundef %__a, double noundef %__b) #1 { entry: %call = tail call contract fastcc double @__nv_fmax(double noundef %__a, double noundef %__b) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5fmaxfff(float noundef %__a, float noundef %__b) #1 { entry: %call = tail call contract fastcc float @__nv_fmaxf(float noundef %__a, float noundef %__b) #145 ret float %call } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4fmindd(double noundef %__a, double noundef %__b) #0 { entry: %0 = tail call double @llvm.nvvm.fmin.d(double %__a, double %__b) ret double %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5fminfff(float noundef %__a, float noundef %__b) #0 { entry: %0 = tail call float @llvm.nvvm.fmin.f(float %__a, float %__b) ret float %0 } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4fmoddd(double noundef %__a, double noundef %__b) #1 { entry: %call = tail call contract fastcc double @__nv_fmod(double noundef %__a, double noundef %__b) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5fmodfff(float noundef %__a, float noundef %__b) #1 { entry: %call = tail call contract fastcc float @__nv_fmodf(float noundef %__a, float noundef %__b) #145 ret float %call } ; Function Attrs: alwaysinline argmemonly convergent mustprogress nofree nosync nounwind willreturn writeonly define internal noundef double @_ZL5frexpdPi(double noundef %__a, ptr nocapture noundef writeonly %__b) #5 { entry: %call = tail call contract fastcc double @__nv_frexp(double noundef %__a, ptr noundef %__b) #145 ret double %call } ; Function Attrs: alwaysinline argmemonly convergent mustprogress nofree nosync nounwind willreturn writeonly define internal noundef float @_ZL6frexpffPi(float noundef %__a, ptr nocapture noundef writeonly %__b) #5 { entry: %call = tail call contract fastcc float @__nv_frexpf(float noundef %__a, ptr noundef %__b) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5hypotdd(double noundef %__a, double noundef %__b) #1 { entry: %call = tail call contract fastcc double @__nv_hypot(double noundef %__a, double noundef %__b) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6hypotfff(float noundef %__a, float noundef %__b) #1 { entry: %call = tail call contract fastcc float @__nv_hypotf(float noundef %__a, float noundef %__b) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef i32 @_ZL5ilogbd(double noundef %__a) #1 { entry: %call = tail call fastcc i32 @__nv_ilogb(double noundef %__a) #145 ret i32 %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef i32 @_ZL6ilogbff(float noundef %__a) #1 { entry: %call = tail call fastcc i32 @__nv_ilogbf(float noundef %__a) #145 ret i32 %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL2j0d(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_j0(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL3j0ff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_j0f(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL2j1d(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_j1(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL3j1ff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_j1f(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL2jnid(i32 noundef %__n, double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_jn(i32 noundef %__n, double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL3jnfif(i32 noundef %__n, float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_jnf(i32 noundef %__n, float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i64 @_ZL4labsl(i64 noundef %__a) #0 { entry: %0 = tail call i64 @llvm.abs.i64(i64 %__a, i1 false) ret i64 %0 } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5ldexpdi(double noundef %__a, i32 noundef %__b) #1 { entry: %call = tail call contract fastcc double @__nv_ldexp(double noundef %__a, i32 noundef %__b) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6ldexpffi(float noundef %__a, i32 noundef %__b) #1 { entry: %call = tail call contract fastcc float @__nv_ldexpf(float noundef %__a, i32 noundef %__b) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL6lgammad(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_lgamma(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL7lgammaff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_lgammaf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i64 @_ZL5llabsx(i64 noundef %__a) #0 { entry: %0 = tail call i64 @llvm.abs.i64(i64 %__a, i1 false) ret i64 %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i64 @_ZL5llmaxxx(i64 noundef %__a, i64 noundef %__b) #0 { entry: %0 = tail call i64 @llvm.smax.i64(i64 %__a, i64 %__b) ret i64 %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i64 @_ZL5llminxx(i64 noundef %__a, i64 noundef %__b) #0 { entry: %0 = tail call i64 @llvm.smin.i64(i64 %__a, i64 %__b) ret i64 %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i64 @_ZL6llrintd(double noundef %__a) #0 { entry: %0 = tail call i64 @llvm.nvvm.d2ll.rn(double %__a) #145 ret i64 %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i64 @_ZL7llrintff(float noundef %__a) #0 { entry: %0 = tail call i64 @llvm.nvvm.f2ll.rn(float %__a) #145 ret i64 %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i64 @_ZL7llroundd(double noundef %__a) #0 { entry: %0 = tail call i32 @llvm.nvvm.d2i.hi(double %__a) #145 %1 = tail call i32 @llvm.nvvm.d2i.lo(double 5.000000e-01) #145 %2 = tail call i32 @llvm.nvvm.d2i.hi(double 5.000000e-01) #145 %3 = and i32 %0, -2147483648 %4 = or i32 %3, %2 %5 = tail call double @llvm.nvvm.lohi.i2d(i32 %1, i32 %4) #145 %6 = tail call double @llvm.nvvm.add.rz.d(double %__a, double %5) #145 %7 = tail call double @llvm.nvvm.trunc.d(double %6) #145 %8 = fptosi double %7 to i64 ret i64 %8 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i64 @_ZL8llroundff(float noundef %__a) #0 { entry: %0 = bitcast float %__a to i32 %1 = tail call float @llvm.nvvm.fabs.f(float %__a) #145 %2 = fcmp ugt float %1, 0x7FF0000000000000 br i1 %2, label %__nv_llroundf.exit, label %3 3: ; preds = %entry %4 = fcmp ult float %__a, 0x43E0000000000000 br i1 %4, label %5, label %__nv_llroundf.exit 5: ; preds = %3 %6 = fcmp ugt float %__a, 0xC3E0000000000000 br i1 %6, label %7, label %__nv_llroundf.exit 7: ; preds = %5 %8 = lshr i32 %0, 23 %9 = and i32 %8, 255 %10 = sub nsw i32 189, %9 %11 = shl i32 %0, 7 %12 = and i32 %11, 1073741696 %13 = or i32 %12, 1073741824 %14 = zext i32 %13 to i64 %15 = shl nuw nsw i64 %14, 32 %16 = icmp ult i32 %9, 126 br i1 %16, label %24, label %17 17: ; preds = %7 %.not = icmp eq i32 %9, 189 br i1 %.not, label %24, label %18 18: ; preds = %17 %19 = add nsw i32 %9, -125 %20 = zext i32 %19 to i64 %21 = shl i64 %15, %20 %22 = zext i32 %10 to i64 %23 = lshr i64 %15, %22 br label %24 24: ; preds = %17, %18, %7 %res.i.1.i = phi i64 [ 0, %7 ], [ %23, %18 ], [ %15, %17 ] %t.i.1.i = phi i64 [ %15, %7 ], [ %21, %18 ], [ 0, %17 ] %t.i.1.i.lobit = lshr i64 %t.i.1.i, 63 %spec.select = add nuw nsw i64 %t.i.1.i.lobit, %res.i.1.i %25 = icmp slt i32 %0, 0 %26 = sub nsw i64 0, %spec.select %res.i.3.i = select i1 %25, i64 %26, i64 %spec.select br label %__nv_llroundf.exit __nv_llroundf.exit: ; preds = %5, %3, %entry, %24 %.01.i = phi i64 [ %res.i.3.i, %24 ], [ -9223372036854775808, %entry ], [ 9223372036854775807, %3 ], [ -9223372036854775808, %5 ] ret i64 %.01.i } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5roundd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_round(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6roundff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_roundf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL3logd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_log(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5log10d(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_log10(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6log10ff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_log10f(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5log1pd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_log1p(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6log1pff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_log1pf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4log2d(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_log2(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5log2ff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_log2f(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4logbd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_logb(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5logbff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_logbf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL4logff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_logf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i64 @_ZL5lrintd(double noundef %__a) #0 { entry: %0 = tail call i64 @llvm.nvvm.d2ll.rn(double %__a) #145 ret i64 %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i64 @_ZL6lrintff(float noundef %__a) #0 { entry: %0 = tail call i64 @llvm.nvvm.f2ll.rn(float %__a) ret i64 %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i64 @_ZL6lroundd(double noundef %__a) #0 { entry: %0 = tail call i32 @llvm.nvvm.d2i.hi(double %__a) #145 %1 = tail call i32 @llvm.nvvm.d2i.lo(double 5.000000e-01) #145 %2 = tail call i32 @llvm.nvvm.d2i.hi(double 5.000000e-01) #145 %3 = and i32 %0, -2147483648 %4 = or i32 %3, %2 %5 = tail call double @llvm.nvvm.lohi.i2d(i32 %1, i32 %4) #145 %6 = tail call double @llvm.nvvm.add.rz.d(double %__a, double %5) #145 %7 = tail call double @llvm.nvvm.trunc.d(double %6) #145 %8 = fptosi double %7 to i64 ret i64 %8 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i64 @_ZL7lroundff(float noundef %__a) #0 { entry: %0 = bitcast float %__a to i32 %1 = tail call float @llvm.nvvm.fabs.f(float %__a) #145 %2 = fcmp ugt float %1, 0x7FF0000000000000 br i1 %2, label %__nv_llroundf.exit, label %3 3: ; preds = %entry %4 = fcmp ult float %__a, 0x43E0000000000000 br i1 %4, label %5, label %__nv_llroundf.exit 5: ; preds = %3 %6 = fcmp ugt float %__a, 0xC3E0000000000000 br i1 %6, label %7, label %__nv_llroundf.exit 7: ; preds = %5 %8 = lshr i32 %0, 23 %9 = and i32 %8, 255 %10 = sub nsw i32 189, %9 %11 = shl i32 %0, 7 %12 = and i32 %11, 1073741696 %13 = or i32 %12, 1073741824 %14 = zext i32 %13 to i64 %15 = shl nuw nsw i64 %14, 32 %16 = icmp ult i32 %9, 126 br i1 %16, label %24, label %17 17: ; preds = %7 %.not = icmp eq i32 %9, 189 br i1 %.not, label %24, label %18 18: ; preds = %17 %19 = add nsw i32 %9, -125 %20 = zext i32 %19 to i64 %21 = shl i64 %15, %20 %22 = zext i32 %10 to i64 %23 = lshr i64 %15, %22 br label %24 24: ; preds = %17, %18, %7 %res.i.1.i = phi i64 [ 0, %7 ], [ %23, %18 ], [ %15, %17 ] %t.i.1.i = phi i64 [ %15, %7 ], [ %21, %18 ], [ 0, %17 ] %t.i.1.i.lobit = lshr i64 %t.i.1.i, 63 %spec.select = add nuw nsw i64 %t.i.1.i.lobit, %res.i.1.i %25 = icmp slt i32 %0, 0 %26 = sub nsw i64 0, %spec.select %res.i.3.i = select i1 %25, i64 %26, i64 %spec.select br label %__nv_llroundf.exit __nv_llroundf.exit: ; preds = %5, %3, %entry, %24 %.01.i = phi i64 [ %res.i.3.i, %24 ], [ -9223372036854775808, %entry ], [ 9223372036854775807, %3 ], [ -9223372036854775808, %5 ] ret i64 %.01.i } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i32 @_ZL3maxii(i32 noundef %__a, i32 noundef %__b) #0 { entry: %0 = tail call i32 @llvm.smax.i32(i32 %__a, i32 %__b) ret i32 %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i32 @_ZL3minii(i32 noundef %__a, i32 noundef %__b) #0 { entry: %0 = tail call i32 @llvm.smin.i32(i32 %__a, i32 %__b) ret i32 %0 } ; Function Attrs: alwaysinline argmemonly convergent mustprogress nofree nosync nounwind willreturn writeonly define internal noundef double @_ZL4modfdPd(double noundef %__a, ptr nocapture noundef writeonly %__b) #5 { entry: %call = tail call contract fastcc double @__nv_modf(double noundef %__a, ptr noundef %__b) #145 ret double %call } ; Function Attrs: alwaysinline argmemonly convergent mustprogress nofree nosync nounwind willreturn writeonly define internal noundef float @_ZL5modfffPf(float noundef %__a, ptr nocapture noundef writeonly %__b) #5 { entry: %call = tail call contract fastcc float @__nv_modff(float noundef %__a, ptr noundef %__b) #145 ret float %call } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL9nearbyintd(double noundef %__a) #6 { entry: %0 = tail call contract double @llvm.nearbyint.f64(double %__a) ret double %0 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nearbyint.f64(double %0) #7 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL10nearbyintff(float noundef %__a) #6 { entry: %0 = tail call contract float @llvm.nearbyint.f32(float %__a) ret float %0 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nearbyint.f32(float %0) #7 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL9nextafterdd(double noundef %__a, double noundef %__b) #0 { entry: %0 = bitcast double %__a to i64 %1 = tail call double @llvm.nvvm.fabs.d(double %__a) #145 %2 = fcmp ugt double %1, 0x7FF0000000000000 %3 = tail call double @llvm.nvvm.fabs.d(double %__b) #145 %4 = fcmp ugt double %3, 0x7FF0000000000000 %or.cond6 = select i1 %2, i1 true, i1 %4 br i1 %or.cond6, label %5, label %7 5: ; preds = %entry %6 = fadd double %__a, %__b br label %__nv_nextafter.exit 7: ; preds = %entry %8 = bitcast double %__b to i64 %9 = or i64 %8, %0 %.mask = and i64 %9, 9223372036854775807 %10 = icmp eq i64 %.mask, 0 br i1 %10, label %__nv_nextafter.exit, label %11 11: ; preds = %7 %.mask4 = and i64 %0, 9223372036854775807 %12 = icmp eq i64 %.mask4, 0 br i1 %12, label %13, label %20 13: ; preds = %11 %14 = tail call i32 @llvm.nvvm.d2i.hi(double %__b) #145 %15 = tail call i32 @llvm.nvvm.d2i.lo(double 4.940660e-324) #145 %16 = tail call i32 @llvm.nvvm.d2i.hi(double 4.940660e-324) #145 %17 = and i32 %14, -2147483648 %18 = or i32 %17, %16 %19 = tail call double @llvm.nvvm.lohi.i2d(i32 %15, i32 %18) #145 br label %__nv_nextafter.exit 20: ; preds = %11 %21 = fcmp olt double %__a, %__b %22 = fcmp olt double %__a, 0.000000e+00 %or.cond = and i1 %22, %21 %23 = sext i1 %or.cond to i64 %ia.0.i = add i64 %23, %0 %24 = fcmp ogt double %__a, 0.000000e+00 %or.cond1 = and i1 %24, %21 %25 = zext i1 %or.cond1 to i64 %ia.1.i = add i64 %ia.0.i, %25 %26 = fcmp ogt double %__a, %__b %or.cond2 = and i1 %22, %26 %27 = zext i1 %or.cond2 to i64 %ia.2.i = add i64 %ia.1.i, %27 %or.cond3 = and i1 %24, %26 %28 = sext i1 %or.cond3 to i64 %ia.3.i = add i64 %ia.2.i, %28 %29 = bitcast i64 %ia.3.i to double br label %__nv_nextafter.exit __nv_nextafter.exit: ; preds = %7, %5, %13, %20 %.0.i = phi double [ %6, %5 ], [ %19, %13 ], [ %29, %20 ], [ %__b, %7 ] ret double %.0.i } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL10nextafterfff(float noundef %__a, float noundef %__b) #0 { entry: %0 = bitcast float %__a to i32 %1 = bitcast float %__b to i32 %2 = tail call float @llvm.nvvm.fabs.f(float %__a) #145 %3 = fcmp ugt float %2, 0x7FF0000000000000 %4 = tail call float @llvm.nvvm.fabs.f(float %__b) #145 %5 = fcmp ugt float %4, 0x7FF0000000000000 %or.cond5 = select i1 %3, i1 true, i1 %5 br i1 %or.cond5, label %6, label %8 6: ; preds = %entry %7 = fadd float %__a, %__b br label %__nv_nextafterf.exit 8: ; preds = %entry %9 = or i32 %1, %0 %10 = bitcast i32 %9 to float %11 = fcmp oeq float %10, 0.000000e+00 br i1 %11, label %__nv_nextafterf.exit, label %12 12: ; preds = %8 %13 = fcmp oeq float %__a, 0.000000e+00 br i1 %13, label %14, label %18 14: ; preds = %12 %15 = and i32 %1, -2147483648 %16 = or i32 %15, 1 %17 = bitcast i32 %16 to float br label %__nv_nextafterf.exit 18: ; preds = %12 %19 = fcmp olt float %__a, %__b %20 = fcmp olt float %__a, 0.000000e+00 %or.cond = and i1 %20, %19 %21 = sext i1 %or.cond to i32 %ia.0.i = add i32 %21, %0 %22 = fcmp ogt float %__a, 0.000000e+00 %or.cond1 = and i1 %22, %19 %23 = zext i1 %or.cond1 to i32 %ia.1.i = add i32 %ia.0.i, %23 %24 = fcmp ogt float %__a, %__b %or.cond2 = and i1 %20, %24 %25 = zext i1 %or.cond2 to i32 %ia.2.i = add i32 %ia.1.i, %25 %or.cond3 = and i1 %22, %24 %26 = sext i1 %or.cond3 to i32 %ia.3.i = add i32 %ia.2.i, %26 %27 = bitcast i32 %ia.3.i to float br label %__nv_nextafterf.exit __nv_nextafterf.exit: ; preds = %8, %6, %14, %18 %.06.i = phi float [ %7, %6 ], [ %27, %18 ], [ %17, %14 ], [ %__b, %8 ] ret float %.06.i } ; Function Attrs: alwaysinline argmemonly convergent mustprogress nofree nounwind readonly willreturn define internal noundef double @_ZL4normiPKd(i32 noundef %__dim, ptr nocapture noundef readonly %__t) #8 { entry: %call = tail call contract fastcc double @__nv_norm(i32 noundef %__dim, ptr noundef %__t) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL6norm3dddd(double noundef %__a, double noundef %__b, double noundef %__c) #1 { entry: %call = tail call contract fastcc double @__nv_norm3d(double noundef %__a, double noundef %__b, double noundef %__c) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL7norm3dffff(float noundef %__a, float noundef %__b, float noundef %__c) #1 { entry: %call = tail call contract fastcc float @__nv_norm3df(float noundef %__a, float noundef %__b, float noundef %__c) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL6norm4ddddd(double noundef %__a, double noundef %__b, double noundef %__c, double noundef %__d) #1 { entry: %call = tail call contract fastcc double @__nv_norm4d(double noundef %__a, double noundef %__b, double noundef %__c, double noundef %__d) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL7norm4dfffff(float noundef %__a, float noundef %__b, float noundef %__c, float noundef %__d) #1 { entry: %call = tail call contract fastcc float @__nv_norm4df(float noundef %__a, float noundef %__b, float noundef %__c, float noundef %__d) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL7normcdfd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_normcdf(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL8normcdfff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_normcdff(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL10normcdfinvd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_normcdfinv(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL11normcdfinvff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_normcdfinvf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline argmemonly convergent mustprogress nofree nosync nounwind readonly willreturn define internal noundef float @_ZL5normfiPKf(i32 noundef %__dim, ptr nocapture noundef readonly %__t) #9 { entry: %call = tail call contract fastcc float @__nv_normf(i32 noundef %__dim, ptr noundef %__t) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL3powdd(double noundef %__a, double noundef %__b) #1 { entry: %call = tail call contract fastcc double @__nv_pow(double noundef %__a, double noundef %__b) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL4powfff(float noundef %__a, float noundef %__b) #1 { entry: %call = tail call contract fastcc float @__nv_powf(float noundef %__a, float noundef %__b) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4powidi(double noundef %__a, i32 noundef %__b) #1 { entry: %call = tail call contract fastcc double @__nv_powi(double noundef %__a, i32 noundef %__b) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5powiffi(float noundef %__a, i32 noundef %__b) #1 { entry: %call = tail call contract fastcc float @__nv_powif(float noundef %__a, i32 noundef %__b) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5rcbrtd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_rcbrt(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6rcbrtff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_rcbrtf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL9remainderdd(double noundef %__a, double noundef %__b) #1 { entry: %call = tail call contract fastcc double @__nv_remainder(double noundef %__a, double noundef %__b) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL10remainderfff(float noundef %__a, float noundef %__b) #1 { entry: %call = tail call contract fastcc float @__nv_remainderf(float noundef %__a, float noundef %__b) #145 ret float %call } ; Function Attrs: alwaysinline argmemonly convergent mustprogress nofree nosync nounwind writeonly define internal noundef double @_ZL6remquoddPi(double noundef %__a, double noundef %__b, ptr nocapture noundef writeonly %__c) #10 { entry: %call = tail call contract fastcc double @__nv_remquo(double noundef %__a, double noundef %__b, ptr noundef %__c) #145 ret double %call } ; Function Attrs: alwaysinline argmemonly convergent mustprogress nounwind writeonly define internal noundef float @_ZL7remquofffPi(float noundef %__a, float noundef %__b, ptr nocapture noundef writeonly %__c) #11 { entry: %call = tail call contract fastcc float @__nv_remquof(float noundef %__a, float noundef %__b, ptr noundef %__c) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL6rhypotdd(double noundef %__a, double noundef %__b) #1 { entry: %call = tail call contract fastcc double @__nv_rhypot(double noundef %__a, double noundef %__b) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL7rhypotfff(float noundef %__a, float noundef %__b) #1 { entry: %call = tail call contract fastcc float @__nv_rhypotf(float noundef %__a, float noundef %__b) #145 ret float %call } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4rintd(double noundef %__a) #6 { entry: %0 = tail call contract double @llvm.rint.f64(double %__a) ret double %0 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare double @llvm.rint.f64(double %0) #7 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5rintff(float noundef %__a) #6 { entry: %0 = tail call contract float @llvm.rint.f32(float %__a) ret float %0 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.rint.f32(float %0) #7 ; Function Attrs: alwaysinline argmemonly convergent mustprogress nofree nosync nounwind readonly willreturn define internal noundef double @_ZL5rnormiPKd(i32 noundef %__a, ptr nocapture noundef readonly %__b) #9 { entry: %call = tail call contract fastcc double @__nv_rnorm(i32 noundef %__a, ptr noundef %__b) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL7rnorm3dddd(double noundef %__a, double noundef %__b, double noundef %__c) #1 { entry: %call = tail call contract fastcc double @__nv_rnorm3d(double noundef %__a, double noundef %__b, double noundef %__c) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL8rnorm3dffff(float noundef %__a, float noundef %__b, float noundef %__c) #1 { entry: %call = tail call contract fastcc float @__nv_rnorm3df(float noundef %__a, float noundef %__b, float noundef %__c) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL7rnorm4ddddd(double noundef %__a, double noundef %__b, double noundef %__c, double noundef %__d) #1 { entry: %call = tail call contract fastcc double @__nv_rnorm4d(double noundef %__a, double noundef %__b, double noundef %__c, double noundef %__d) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL8rnorm4dfffff(float noundef %__a, float noundef %__b, float noundef %__c, float noundef %__d) #1 { entry: %call = tail call contract fastcc float @__nv_rnorm4df(float noundef %__a, float noundef %__b, float noundef %__c, float noundef %__d) #145 ret float %call } ; Function Attrs: alwaysinline argmemonly convergent mustprogress nofree nosync nounwind readonly willreturn define internal noundef float @_ZL6rnormfiPKf(i32 noundef %__dim, ptr nocapture noundef readonly %__t) #9 { entry: %call = tail call contract fastcc float @__nv_rnormf(i32 noundef %__dim, ptr noundef %__t) #145 ret float %call } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5rsqrtd(double noundef %__a) #0 { entry: %0 = tail call double @llvm.nvvm.rsqrt.approx.d(double %__a) ret double %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6rsqrtff(float noundef %__a) #0 { entry: %0 = tail call float @llvm.nvvm.rsqrt.approx.f(float %__a) ret float %0 } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL6scalbndi(double noundef %__a, i32 noundef %__b) #1 { entry: %call = tail call contract fastcc double @__nv_scalbn(double noundef %__a, i32 noundef %__b) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL7scalbnffi(float noundef %__a, i32 noundef %__b) #1 { entry: %call = tail call contract fastcc float @__nv_scalbnf(float noundef %__a, i32 noundef %__b) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL7scalblndl(double noundef %__a, i64 noundef %__b) #1 { entry: %cmp = icmp sgt i64 %__b, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %cmp1 = fcmp contract ogt double %__a, 0.000000e+00 %cond = select contract i1 %cmp1, double 0x7FF0000000000000, double 0xFFF0000000000000 br label %return if.end: ; preds = %entry %cmp2 = icmp slt i64 %__b, -2147483648 br i1 %cmp2, label %if.then3, label %if.end6 if.then3: ; preds = %if.end %cmp4 = fcmp contract ogt double %__a, 0.000000e+00 %cond5 = select contract i1 %cmp4, double 0.000000e+00, double -0.000000e+00 br label %return if.end6: ; preds = %if.end %conv = trunc i64 %__b to i32 %call.i = tail call contract fastcc double @__nv_scalbn(double noundef %__a, i32 noundef %conv) #145 br label %return return: ; preds = %if.end6, %if.then3, %if.then %0 = phi double [ %call.i, %if.end6 ], [ %cond5, %if.then3 ], [ %cond, %if.then ] ret double %0 } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL8scalblnffl(float noundef %__a, i64 noundef %__b) #1 { entry: %cmp = icmp sgt i64 %__b, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %cmp1 = fcmp contract ogt float %__a, 0.000000e+00 %cond = select contract i1 %cmp1, float 0x7FF0000000000000, float 0xFFF0000000000000 br label %return if.end: ; preds = %entry %cmp2 = icmp slt i64 %__b, -2147483648 br i1 %cmp2, label %if.then3, label %if.end6 if.then3: ; preds = %if.end %cmp4 = fcmp contract ogt float %__a, 0.000000e+00 %cond5 = select contract i1 %cmp4, float 0.000000e+00, float -0.000000e+00 br label %return if.end6: ; preds = %if.end %conv = trunc i64 %__b to i32 %call.i = tail call contract fastcc float @__nv_scalbnf(float noundef %__a, i32 noundef %conv) #145 br label %return return: ; preds = %if.end6, %if.then3, %if.then %0 = phi float [ %call.i, %if.end6 ], [ %cond5, %if.then3 ], [ %cond, %if.then ] ret float %0 } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL3sind(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_sin(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline argmemonly nounwind writeonly define internal void @_ZL6sincosdPdS_(double noundef %__a, ptr nocapture noundef writeonly %__s, ptr nocapture noundef writeonly %__c) #12 { entry: %q.i.i = alloca i32, align 4 %0 = tail call i32 @llvm.nvvm.d2i.lo(double %__a) #145 %1 = tail call i32 @llvm.nvvm.d2i.hi(double %__a) #145 %2 = and i32 %1, 2147483647 %3 = icmp eq i32 %2, 2146435072 %4 = icmp eq i32 %0, 0 %5 = select i1 %3, i1 %4, i1 false br i1 %5, label %6, label %8 6: ; preds = %entry %7 = tail call double @llvm.nvvm.mul.rn.d(double %__a, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i 8: ; preds = %entry %9 = fmul double %__a, 0x3FE45F306DC9C883 %10 = tail call i32 @llvm.nvvm.d2i.rn(double %9) #145 store i32 %10, ptr %q.i.i, align 4 %11 = sitofp i32 %10 to double %12 = fneg double %11 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double 0x3FF921FB54442D18, double %__a) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %12, double 0x3C91A62633145C00, double %13) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %12, double 0x397B839A252049C0, double %14) #145 %16 = tail call double @llvm.nvvm.fabs.d(double %__a) #145 %17 = fcmp ult double %16, 0x41E0000000000000 br i1 %17, label %__internal_trig_reduction_kerneld.exit.i, label %18 18: ; preds = %8 %19 = call fastcc double @__internal_trig_reduction_slowpathd(double %__a, ptr nonnull %q.i.i) #145 %.pre = load i32, ptr %q.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i __internal_trig_reduction_kerneld.exit.i: ; preds = %8, %18, %6 %i.0.i = phi i32 [ 0, %6 ], [ %.pre, %18 ], [ %10, %8 ] %.0.i = phi double [ %7, %6 ], [ %19, %18 ], [ %15, %8 ] %20 = tail call double @llvm.nvvm.mul.rn.d(double %.0.i, double %.0.i) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double 0xBDA8FF8320FD8164, double %20, double 0x3E21EEA7C1EF8528) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %20, double 0xBE927E4F8E06E6D9) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %20, double 0x3EFA01A019DDBCE9) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %20, double 0xBF56C16C16C15D47) #145 %25 = tail call double @llvm.nvvm.fma.rn.d(double %24, double %20, double 0x3FA5555555555551) #145 %26 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %20, double -5.000000e-01) #145 %27 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %20, double 1.000000e+00) #145 %28 = tail call double @llvm.nvvm.fma.rn.d(double 0x3DE5DB65F9785EBA, double %20, double 0xBE5AE5F12CB0D246) #145 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %20, double 0x3EC71DE369ACE392) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %20, double 0xBF2A01A019DB62A1) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %20, double 0x3F81111111110818) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %20, double 0xBFC5555555555554) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %20, double 0.000000e+00) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %.0.i, double %.0.i) #145 %35 = tail call i32 @llvm.nvvm.d2i.hi(double %34) #145 %36 = tail call i32 @llvm.nvvm.d2i.lo(double %34) #145 %37 = xor i32 %35, -2147483648 %38 = tail call double @llvm.nvvm.lohi.i2d(i32 %36, i32 %37) #145 %39 = and i32 %i.0.i, 1 %.not = icmp eq i32 %39, 0 %spec.select = select i1 %.not, double %34, double %27 %spec.select1 = select i1 %.not, double %27, double %38 %40 = and i32 %i.0.i, 2 %.not2 = icmp eq i32 %40, 0 br i1 %.not2, label %__nv_sincos.exit, label %41 41: ; preds = %__internal_trig_reduction_kerneld.exit.i %42 = tail call i32 @llvm.nvvm.d2i.hi(double %spec.select) #145 %43 = tail call i32 @llvm.nvvm.d2i.lo(double %spec.select) #145 %44 = xor i32 %42, -2147483648 %45 = tail call double @llvm.nvvm.lohi.i2d(i32 %43, i32 %44) #145 %46 = tail call i32 @llvm.nvvm.d2i.hi(double %spec.select1) #145 %47 = tail call i32 @llvm.nvvm.d2i.lo(double %spec.select1) #145 %48 = xor i32 %46, -2147483648 %49 = tail call double @llvm.nvvm.lohi.i2d(i32 %47, i32 %48) #145 br label %__nv_sincos.exit __nv_sincos.exit: ; preds = %__internal_trig_reduction_kerneld.exit.i, %41 %s.1.i = phi double [ %45, %41 ], [ %spec.select, %__internal_trig_reduction_kerneld.exit.i ] %c.1.i = phi double [ %49, %41 ], [ %spec.select1, %__internal_trig_reduction_kerneld.exit.i ] store double %s.1.i, ptr %__s, align 8 store double %c.1.i, ptr %__c, align 8 ret void } ; Function Attrs: alwaysinline argmemonly nounwind writeonly define internal void @_ZL7sincosffPfS_(float noundef %__a, ptr nocapture noundef writeonly %__s, ptr nocapture noundef writeonly %__c) #12 { entry: %result.i.i.i.i = alloca [7 x i32], align 4 %0 = fmul float %__a, 0x3FE45F3060000000 %1 = tail call i32 @llvm.nvvm.f2i.rn(float %0) #145 %2 = sitofp i32 %1 to float %3 = tail call float @llvm.nvvm.fma.rn.f(float %2, float 0xBFF921FB40000000, float %__a) #145 %4 = tail call float @llvm.nvvm.fma.rn.f(float %2, float 0xBE74442D00000000, float %3) #145 %5 = tail call float @llvm.nvvm.fma.rn.f(float %2, float 0xBCF84698A0000000, float %4) #145 %6 = tail call float @llvm.nvvm.fabs.f(float %__a) #145 %7 = fcmp ult float %6, 1.056150e+05 br i1 %7, label %__internal_trig_reduction_kernel.exit.i.i, label %8 8: ; preds = %entry %9 = fcmp oeq float %6, 0x7FF0000000000000 br i1 %9, label %10, label %12 10: ; preds = %8 %11 = tail call float @llvm.nvvm.mul.rn.f(float %__a, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i.i 12: ; preds = %8 %13 = bitcast float %__a to i32 %14 = lshr i32 %13, 23 %15 = and i32 %14, 255 %16 = add nsw i32 %15, -128 %17 = shl i32 %13, 8 %18 = or i32 %17, -2147483648 %19 = lshr i32 %16, 5 br label %20 20: ; preds = %12, %20 %indvars.iv = phi i64 [ 0, %12 ], [ %indvars.iv.next, %20 ] %hi.i.i.i.0.i11 = phi i32 [ 0, %12 ], [ %25, %20 ] %21 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv %22 = load i32, ptr addrspace(1) %21, align 4 %23 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %22, i32 %18, i32 %hi.i.i.i.0.i11) #146, !srcloc !11 %24 = extractvalue { i32, i32 } %23, 0 %25 = extractvalue { i32, i32 } %23, 1 %26 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %indvars.iv store i32 %24, ptr %26, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 6 br i1 %exitcond.not, label %27, label %20, !llvm.loop !12 27: ; preds = %20 %.lcssa = phi i32 [ %25, %20 ] %28 = and i32 %13, -2147483648 %29 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 6 store i32 %.lcssa, ptr %29, align 4 %30 = and i32 %14, 31 %31 = sub nsw i32 6, %19 %32 = sext i32 %31 to i64 %33 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %32 %34 = load i32, ptr %33, align 4 %35 = sub nsw i32 5, %19 %36 = sext i32 %35 to i64 %37 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %36 %38 = load i32, ptr %37, align 4 %.not6 = icmp eq i32 %30, 0 br i1 %.not6, label %__internal_trig_reduction_slowpath.exit.i.i.i, label %39 39: ; preds = %27 %40 = sub nsw i32 4, %19 %41 = sub nuw nsw i32 32, %30 %42 = shl i32 %34, %30 %43 = lshr i32 %38, %41 %44 = add i32 %43, %42 %45 = shl i32 %38, %30 %46 = sext i32 %40 to i64 %47 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %46 %48 = load i32, ptr %47, align 4 %49 = lshr i32 %48, %41 %50 = add i32 %49, %45 br label %__internal_trig_reduction_slowpath.exit.i.i.i __internal_trig_reduction_slowpath.exit.i.i.i: ; preds = %39, %27 %hi.i.i.i.1.i = phi i32 [ %44, %39 ], [ %34, %27 ] %lo.i.i.i.0.i = phi i32 [ %50, %39 ], [ %38, %27 ] %51 = lshr i32 %hi.i.i.i.1.i, 30 %52 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.1.i, i32 %lo.i.i.i.0.i, i32 2) %53 = shl i32 %lo.i.i.i.0.i, 2 %54 = lshr i32 %52, 31 %55 = add nuw nsw i32 %54, %51 %.not7 = icmp eq i32 %28, 0 %56 = sub nsw i32 0, %55 %spec.select = select i1 %.not7, i32 %55, i32 %56 %.not8 = icmp sgt i32 %52, -1 %57 = xor i32 %28, -2147483648 %s.i.i.i.0.i = select i1 %.not8, i32 %28, i32 %57 %not..not8 = xor i1 %.not8, true %58 = sext i1 %not..not8 to i32 %hi.i.i.i.2.i = xor i32 %52, %58 %lo.i.i.i.1.i = xor i32 %53, %58 %59 = zext i32 %hi.i.i.i.2.i to i64 %60 = shl nuw i64 %59, 32 %61 = zext i32 %lo.i.i.i.1.i to i64 %62 = or i64 %60, %61 %63 = sitofp i64 %62 to double %64 = fmul double %63, 0x3BF921FB54442D19 %65 = fptrunc double %64 to float %.not10 = icmp eq i32 %s.i.i.i.0.i, 0 %66 = fneg float %65 %r.i.i.i.0.i = select i1 %.not10, float %65, float %66 br label %__internal_trig_reduction_kernel.exit.i.i __internal_trig_reduction_kernel.exit.i.i: ; preds = %10, %__internal_trig_reduction_slowpath.exit.i.i.i, %entry %quadrant.i.1.i = phi i32 [ %1, %entry ], [ 0, %10 ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i.i ] %t.i.i.1.i = phi float [ %5, %entry ], [ %11, %10 ], [ %r.i.i.i.0.i, %__internal_trig_reduction_slowpath.exit.i.i.i ] %67 = fmul float %t.i.i.1.i, %t.i.i.1.i %68 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %67, float 0xBF56C0FDA0000000) #145 %69 = tail call float @llvm.nvvm.fma.rn.f(float %68, float %67, float 0x3FA5555760000000) #145 %70 = tail call float @llvm.nvvm.fma.rn.f(float %69, float %67, float 0xBFDFFFFFE0000000) #145 %71 = tail call float @llvm.nvvm.fma.rn.f(float %70, float %67, float 1.000000e+00) #145 %72 = tail call float @llvm.nvvm.fma.rn.f(float %67, float %t.i.i.1.i, float 0.000000e+00) #145 %73 = tail call float @llvm.nvvm.fma.rn.f(float 0xBF29A82A60000000, float %67, float 0x3F8110BC80000000) #145 %74 = tail call float @llvm.nvvm.fma.rn.f(float %73, float %67, float 0xBFC5555500000000) #145 %75 = tail call float @llvm.nvvm.fma.rn.f(float %74, float %72, float %t.i.i.1.i) #145 %76 = and i32 %quadrant.i.1.i, 1 %.not = icmp eq i32 %76, 0 %spec.select1 = select i1 %.not, float %75, float %71 %spec.select2 = select i1 %.not, float %71, float %75 %77 = and i32 %quadrant.i.1.i, 2 %.not4 = icmp eq i32 %77, 0 %78 = fneg float %spec.select1 %s.i.1.i = select i1 %.not4, float %spec.select1, float %78 %79 = add i32 %quadrant.i.1.i, 1 %80 = and i32 %79, 2 %.not5 = icmp eq i32 %80, 0 %81 = fneg float %spec.select2 %c.i.1.i = select i1 %.not5, float %spec.select2, float %81 store float %s.i.1.i, ptr %__s, align 4 store float %c.i.1.i, ptr %__c, align 4 ret void } ; Function Attrs: alwaysinline argmemonly mustprogress nofree nosync nounwind willreturn writeonly define internal void @_ZL8sincospidPdS_(double noundef %__a, ptr nocapture noundef writeonly %__s, ptr nocapture noundef writeonly %__c) #13 { entry: %0 = tail call i32 @llvm.nvvm.d2i.hi(double %__a) #145 %1 = shl i32 %0, 1 %2 = icmp ugt i32 %1, -2038431744 %3 = tail call double @llvm.nvvm.mul.rn.d(double %__a, double 0.000000e+00) #145 %.pre = tail call i32 @llvm.nvvm.d2i.hi(double %3) #145 %.pre-phi = select i1 %2, i32 %.pre, i32 %0 %.0.i = select i1 %2, double %3, double %__a %4 = tail call i32 @llvm.nvvm.d2i.lo(double %.0.i) #145 %5 = add i32 %.pre-phi, 1048576 %6 = tail call double @llvm.nvvm.lohi.i2d(i32 %4, i32 %5) #145 %7 = tail call double @llvm.nvvm.round.d(double %6) #145 %8 = fptosi double %7 to i64 %9 = trunc i64 %8 to i32 %10 = fneg double %7 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double 5.000000e-01, double %.0.i) #145 %12 = fmul double %11, 0x3CA1A62633145C07 %13 = tail call double @llvm.nvvm.fma.rn.d(double %11, double 0x400921FB54442D18, double %12) #145 %14 = tail call double @llvm.nvvm.mul.rn.d(double %13, double %13) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double 0xBDA8FF8320FD8164, double %14, double 0x3E21EEA7C1EF8528) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %14, double 0xBE927E4F8E06E6D9) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %14, double 0x3EFA01A019DDBCE9) #145 %18 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %14, double 0xBF56C16C16C15D47) #145 %19 = tail call double @llvm.nvvm.fma.rn.d(double %18, double %14, double 0x3FA5555555555551) #145 %20 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %14, double -5.000000e-01) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %14, double 1.000000e+00) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double 0x3DE5DB65F9785EBA, double %14, double 0xBE5AE5F12CB0D246) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %14, double 0x3EC71DE369ACE392) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %14, double 0xBF2A01A019DB62A1) #145 %25 = tail call double @llvm.nvvm.fma.rn.d(double %24, double %14, double 0x3F81111111110818) #145 %26 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %14, double 0xBFC5555555555554) #145 %27 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %14, double 0.000000e+00) #145 %28 = tail call double @llvm.nvvm.fma.rn.d(double %27, double %13, double %13) #145 %29 = tail call i32 @llvm.nvvm.d2i.hi(double %28) #145 %30 = tail call i32 @llvm.nvvm.d2i.lo(double %28) #145 %31 = xor i32 %29, -2147483648 %32 = tail call double @llvm.nvvm.lohi.i2d(i32 %30, i32 %31) #145 %33 = and i32 %9, 1 %.not = icmp eq i32 %33, 0 %s.0.i = select i1 %.not, double %28, double %21 %c.0.i = select i1 %.not, double %21, double %32 %34 = and i32 %9, 2 %.not1 = icmp eq i32 %34, 0 br i1 %.not1, label %__nv_sincospi.exit, label %35 35: ; preds = %entry %36 = tail call i32 @llvm.nvvm.d2i.hi(double %s.0.i) #145 %37 = tail call i32 @llvm.nvvm.d2i.lo(double %s.0.i) #145 %38 = xor i32 %36, -2147483648 %39 = tail call double @llvm.nvvm.lohi.i2d(i32 %37, i32 %38) #145 %40 = tail call i32 @llvm.nvvm.d2i.hi(double %c.0.i) #145 %41 = tail call i32 @llvm.nvvm.d2i.lo(double %c.0.i) #145 %42 = xor i32 %40, -2147483648 %43 = tail call double @llvm.nvvm.lohi.i2d(i32 %41, i32 %42) #145 br label %__nv_sincospi.exit __nv_sincospi.exit: ; preds = %35, %entry %s.1.i = phi double [ %39, %35 ], [ %s.0.i, %entry ] %c.1.i = phi double [ %43, %35 ], [ %c.0.i, %entry ] %44 = tail call double @llvm.nvvm.fma.rn.d(double %c.1.i, double 1.000000e+00, double 0.000000e+00) #145 %45 = tail call double @llvm.nvvm.trunc.d(double %.0.i) #145 %46 = fcmp oeq double %.0.i, %45 %47 = tail call double @llvm.nvvm.mul.rn.d(double %.0.i, double 0.000000e+00) #145 %s.2.i = select i1 %46, double %47, double %s.1.i store double %s.2.i, ptr %__s, align 8 store double %44, ptr %__c, align 8 ret void } ; Function Attrs: alwaysinline argmemonly mustprogress nofree nosync nounwind willreturn writeonly define internal void @_ZL9sincospiffPfS_(float noundef %__a, ptr nocapture noundef writeonly %__s, ptr nocapture noundef writeonly %__c) #13 { entry: %0 = fadd float %__a, %__a %1 = tail call float @llvm.nvvm.round.f(float %0) #145 %2 = tail call i32 @llvm.nvvm.f2i.rz(float %1) %3 = fneg float %1 %4 = tail call float @llvm.nvvm.fma.rn.f(float %3, float 5.000000e-01, float %__a) #145 %5 = and i32 %2, 1 %6 = tail call float @llvm.nvvm.mul.rn.f(float %4, float %4) #145 %7 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFE2F59920000000, float %6, float 0x400466B200000000) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FCD09C240000000, float %6, float 0xBFF55A5C00000000) #145 %9 = tail call float @llvm.nvvm.fma.rn.f(float %7, float %6, float 0xC014ABBEC0000000) #145 %10 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %6, float 0x40103C19E0000000) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float %6, float %4, float 0.000000e+00) #145 %12 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %6, float 0xC013BD3CC0000000) #145 %13 = tail call float @llvm.nvvm.fma.rn.f(float %9, float %11, float 0.000000e+00) #145 %14 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %6, float 1.000000e+00) #145 %15 = tail call float @llvm.nvvm.fma.rn.f(float 0x400921FB60000000, float %4, float %13) #145 %.not = icmp eq i32 %5, 0 %spec.select = select i1 %.not, float %15, float %14 %spec.select1 = select i1 %.not, float %14, float %15 %16 = and i32 %2, 2 %.not2 = icmp eq i32 %16, 0 %17 = fneg float %spec.select %s.1.i = select i1 %.not2, float %spec.select, float %17 %18 = add i32 %2, 1 %19 = and i32 %18, 2 %.not3 = icmp eq i32 %19, 0 %20 = tail call float @llvm.nvvm.fma.rn.f(float %spec.select1, float -1.000000e+00, float 0.000000e+00) #145 %c.1.i = select i1 %.not3, float %spec.select1, float %20 %21 = tail call float @llvm.nvvm.trunc.f(float %__a) #145 %22 = fcmp oeq float %21, %__a %23 = tail call float @llvm.nvvm.mul.rn.f(float %__a, float 0.000000e+00) #145 %s.2.i = select i1 %22, float %23, float %s.1.i %24 = tail call float @llvm.nvvm.fabs.f(float %__a) #145 %25 = fcmp ogt float %24, 0x4170000000000000 %26 = tail call float @llvm.nvvm.add.rn.f(float %s.2.i, float 1.000000e+00) #145 %c.2.i = select i1 %25, float %26, float %c.1.i store float %s.2.i, ptr %__s, align 4 store float %c.2.i, ptr %__c, align 4 ret void } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL4sinff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_sinf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4sinhd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_sinh(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5sinhff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_sinhf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5sinpid(double noundef %__a) #0 { entry: %0 = tail call i32 @llvm.nvvm.d2i.lo(double %__a) #145 %1 = tail call i32 @llvm.nvvm.d2i.hi(double %__a) #145 %2 = add i32 %1, 1048576 %3 = tail call double @llvm.nvvm.lohi.i2d(i32 %0, i32 %2) #145 %4 = tail call double @llvm.nvvm.round.d(double %3) #145 %5 = fptosi double %4 to i64 %6 = trunc i64 %5 to i32 %7 = fneg double %4 %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double 5.000000e-01, double %__a) #145 %9 = fmul double %8, 0x3CA1A62633145C07 %10 = tail call double @llvm.nvvm.fma.rn.d(double %8, double 0x400921FB54442D18, double %9) #145 %11 = and i32 %6, 1 %12 = shl nuw nsw i32 %11, 3 %13 = zext i32 %12 to i64 %14 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %13 %15 = tail call double @llvm.nvvm.mul.rn.d(double %10, double %10) #145 %.not = icmp eq i32 %11, 0 %16 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %17 = getelementptr inbounds double, ptr addrspace(1) %14, i64 1 %18 = load double, ptr addrspace(1) %17, align 8 %19 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %15, double %18) #145 %20 = getelementptr inbounds double, ptr addrspace(1) %14, i64 2 %21 = load double, ptr addrspace(1) %20, align 8 %22 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %15, double %21) #145 %23 = getelementptr inbounds double, ptr addrspace(1) %14, i64 3 %24 = load double, ptr addrspace(1) %23, align 8 %25 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %15, double %24) #145 %26 = getelementptr inbounds double, ptr addrspace(1) %14, i64 4 %27 = load double, ptr addrspace(1) %26, align 8 %28 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %15, double %27) #145 %29 = getelementptr inbounds double, ptr addrspace(1) %14, i64 5 %30 = load double, ptr addrspace(1) %29, align 8 %31 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %15, double %30) #145 %32 = getelementptr inbounds double, ptr addrspace(1) %14, i64 6 %33 = load double, ptr addrspace(1) %32, align 8 %34 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %15, double %33) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %10, double %10) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %15, double 1.000000e+00) #145 %spec.select = select i1 %.not, double %35, double %36 %37 = and i32 %6, 2 %.not1 = icmp eq i32 %37, 0 %38 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select, double -1.000000e+00, double 0.000000e+00) #145 %.1.i = select i1 %.not1, double %spec.select, double %38 %39 = tail call double @llvm.nvvm.trunc.d(double %__a) #145 %40 = fcmp oeq double %39, %__a %41 = tail call double @llvm.nvvm.mul.rn.d(double %__a, double 0.000000e+00) #145 %z.0.i = select i1 %40, double %41, double %.1.i ret double %z.0.i } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6sinpiff(float noundef %__a) #0 { entry: %0 = fadd float %__a, %__a %1 = tail call float @llvm.nvvm.round.f(float %0) #145 %2 = tail call i32 @llvm.nvvm.f2i.rz(float %1) %3 = fneg float %1 %4 = tail call float @llvm.nvvm.fma.rn.f(float %3, float 5.000000e-01, float %__a) #145 %5 = and i32 %2, 1 %6 = tail call float @llvm.nvvm.mul.rn.f(float %4, float %4) #145 %.not = icmp eq i32 %5, 0 %. = select i1 %.not, float %4, float 1.000000e+00 %7 = tail call float @llvm.nvvm.fma.rn.f(float %6, float %., float 0.000000e+00) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FCD09C240000000, float %6, float 0xBFF55A5C00000000) #145 %9 = select i1 %.not, float 0xBFE2F59920000000, float %8 %10 = select i1 %.not, float 0x400466B200000000, float 0x40103C19E0000000 %11 = tail call float @llvm.nvvm.fma.rn.f(float %9, float %6, float %10) #145 %12 = select i1 %.not, float 0xC014ABBEC0000000, float 0xC013BD3CC0000000 %13 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %6, float %12) #145 %14 = select i1 %.not, float 0.000000e+00, float 1.000000e+00 %15 = tail call float @llvm.nvvm.fma.rn.f(float %13, float %7, float %14) #145 %16 = tail call float @llvm.nvvm.fma.rn.f(float 0x400921FB60000000, float %4, float %15) #145 %17 = select i1 %.not, float %16, float %15 %18 = and i32 %2, 2 %.not1 = icmp eq i32 %18, 0 %19 = fsub float 0.000000e+00, %17 %20 = select i1 %.not1, float %17, float %19 %21 = tail call float @llvm.nvvm.trunc.f(float %__a) #145 %22 = fcmp oeq float %21, %__a %23 = tail call float @llvm.nvvm.mul.rn.f(float %__a, float 0.000000e+00) #145 %z.0.i = select i1 %22, float %23, float %20 ret float %z.0.i } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4sqrtd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_sqrt(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5sqrtff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_sqrtf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL3tand(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_tan(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL4tanff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_tanf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL4tanhd(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_tanh(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL5tanhff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_tanhf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL6tgammad(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_tgamma(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL7tgammaff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_tgammaf(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL5truncd(double noundef %__a) #0 { entry: %0 = tail call double @llvm.nvvm.trunc.d(double %__a) ret double %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL6truncff(float noundef %__a) #0 { entry: %0 = tail call float @llvm.nvvm.trunc.f(float %__a) ret float %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i64 @_ZL6ullmaxyy(i64 noundef %__a, i64 noundef %__b) #0 { entry: %0 = tail call i64 @llvm.umax.i64(i64 %__a, i64 %__b) ret i64 %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i64 @_ZL6ullminyy(i64 noundef %__a, i64 noundef %__b) #0 { entry: %0 = tail call i64 @llvm.umin.i64(i64 %__a, i64 %__b) ret i64 %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i32 @_ZL4umaxjj(i32 noundef %__a, i32 noundef %__b) #0 { entry: %0 = tail call i32 @llvm.umax.i32(i32 %__a, i32 %__b) ret i32 %0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal noundef i32 @_ZL4uminjj(i32 noundef %__a, i32 noundef %__b) #0 { entry: %0 = tail call i32 @llvm.umin.i32(i32 %__a, i32 %__b) ret i32 %0 } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL2y0d(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_y0(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL3y0ff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_y0f(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL2y1d(double noundef %__a) #1 { entry: %call = tail call contract fastcc double @__nv_y1(double noundef %__a) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL3y1ff(float noundef %__a) #1 { entry: %call = tail call contract fastcc float @__nv_y1f(float noundef %__a) #145 ret float %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef double @_ZL2ynid(i32 noundef %__a, double noundef %__b) #1 { entry: %call = tail call contract fastcc double @__nv_yn(i32 noundef %__a, double noundef %__b) #145 ret double %call } ; Function Attrs: alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn define internal noundef float @_ZL3ynfif(i32 noundef %__a, float noundef %__b) #1 { entry: %call = tail call contract fastcc float @__nv_ynf(i32 noundef %__a, float noundef %__b) #145 ret float %call } ; Function Attrs: convergent mustprogress noinline nounwind optnone define dso_local void @_Z11square_implPdS_(ptr noundef %x_in, ptr noundef %x_out) local_unnamed_addr #14 { entry: tail call fastcc void @_ZL9AtomicAddIdET_RS0_RKS0_(ptr noundef nonnull align 8 dereferenceable(8) %x_out, ptr noundef nonnull align 8 dereferenceable(8) %x_in) #147 ret void } ; Function Attrs: convergent mustprogress noinline nounwind optnone define internal fastcc void @_ZL9AtomicAddIdET_RS0_RKS0_(ptr noundef nonnull align 8 dereferenceable(8) %dest, ptr noundef nonnull align 8 dereferenceable(8) %val) unnamed_addr #14 { entry: %0 = load double, ptr %val, align 8 tail call fastcc void @_ZL9atomicAddPdd(ptr noundef nonnull %dest, double noundef %0) #147 ret void } ; Function Attrs: convergent mustprogress noinline norecurse nounwind optnone define dso_local void @_Z6squarePdS_(ptr noundef %x_in, ptr noundef %x_out) local_unnamed_addr #15 { entry: %x_out3 = addrspacecast ptr %x_out to ptr addrspace(1) %x_out4 = addrspacecast ptr addrspace(1) %x_out3 to ptr %x_in1 = addrspacecast ptr %x_in to ptr addrspace(1) %x_in2 = addrspacecast ptr addrspace(1) %x_in1 to ptr tail call void @_Z11square_implPdS_(ptr noundef %x_in2, ptr noundef %x_out4) #147 ret void } ; Function Attrs: convergent mustprogress noinline norecurse nounwind optnone define dso_local void @_Z11square_gradPdS_S_S_(ptr noundef %x, ptr noundef %d_x, ptr noundef %y, ptr noundef %d_y) local_unnamed_addr #15 { entry: %d_y7 = addrspacecast ptr %d_y to ptr addrspace(1) %d_y8 = addrspacecast ptr addrspace(1) %d_y7 to ptr %y5 = addrspacecast ptr %y to ptr addrspace(1) %y6 = addrspacecast ptr addrspace(1) %y5 to ptr %d_x3 = addrspacecast ptr %d_x to ptr addrspace(1) %d_x4 = addrspacecast ptr addrspace(1) %d_x3 to ptr %x1 = addrspacecast ptr %x to ptr addrspace(1) %x2 = addrspacecast ptr addrspace(1) %x1 to ptr tail call fastcc void @diffe_Z11square_implPdS_(ptr %x2, ptr %d_x4, ptr %y6, ptr %d_y8) ret void } ; Function Attrs: convergent mustprogress noinline nounwind optnone define internal fastcc void @_ZL9atomicAddPdd(ptr noundef %address, double noundef %val) unnamed_addr #14 { entry: %0 = atomicrmw fadd ptr %address, double %val seq_cst, align 8 ret void } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.floor.f(float %0) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.floor.d(double %0) #7 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_fabsf(float %f) unnamed_addr #16 { %1 = tail call float @llvm.nvvm.fabs.f(float %f) ret float %1 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fabs.f(float %0) #7 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_fabs(double %f) unnamed_addr #17 { %1 = tail call double @llvm.nvvm.fabs.d(double %f) ret double %1 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.fabs.d(double %0) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fmin.f(float %0, float %1) #7 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_fmaxf(float %x, float %y) unnamed_addr #18 { %1 = tail call float @llvm.nvvm.fmax.f(float %x, float %y) ret float %1 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fmax.f(float %0, float %1) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.rsqrt.approx.ftz.f(float %0) #19 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.rsqrt.approx.f(float %0) #19 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.fmin.d(double %0, double %1) #7 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_fmax(double %x, double %y) unnamed_addr #20 { %1 = tail call double @llvm.nvvm.fmax.d(double %x, double %y) ret double %1 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.fmax.d(double %0, double %1) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone willreturn declare double @llvm.nvvm.rsqrt.approx.d(double %0) #19 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.ceil.d(double %0) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.trunc.d(double %0) #7 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_exp2f(float %x) unnamed_addr #21 { __exp2f.exit: %0 = tail call float @llvm.nvvm.ex2.approx.f(float %x) #145 ret float %0 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.ex2.approx.ftz.f(float %0) #19 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.ex2.approx.f(float %0) #19 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.trunc.f(float %0) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.ceil.f(float %0) #7 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_sqrtf(float %x) unnamed_addr #22 { __nvvm_sqrt_f.exit: %0 = tail call float @llvm.nvvm.sqrt.approx.f(float %x) #145 ret float %0 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.sqrt.approx.f(float %0) #19 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_sqrt(double %x) unnamed_addr #23 { %1 = tail call double @llvm.nvvm.sqrt.rn.d(double %x) ret double %1 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone willreturn declare double @llvm.nvvm.sqrt.rn.d(double %0) #19 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare i64 @llvm.nvvm.f2ll.rn(float %0) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.nvvm.f2i.rz(float %0) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fma.rn.f(float %0, float %1, float %2) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.lohi.i2d(i32 %0, i32 %1) #7 ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_sinf(float %a) unnamed_addr #24 { __nv_float2int_rn.exit.i.i: %result.i.i.i = alloca [7 x i32], align 4 %0 = fmul float %a, 0x3FE45F3060000000 %1 = tail call i32 @llvm.nvvm.f2i.rn(float %0) #145 %2 = sitofp i32 %1 to float %3 = tail call float @llvm.nvvm.fma.rn.f(float %2, float 0xBFF921FB40000000, float %a) #145 %4 = tail call float @llvm.nvvm.fma.rn.f(float %2, float 0xBE74442D00000000, float %3) #145 %5 = tail call float @llvm.nvvm.fma.rn.f(float %2, float 0xBCF84698A0000000, float %4) #145 %6 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %7 = fcmp ult float %6, 1.056150e+05 br i1 %7, label %__internal_trig_reduction_kernel.exit.i, label %__nv_isinff.exit.i.i __nv_isinff.exit.i.i: ; preds = %__nv_float2int_rn.exit.i.i %8 = fcmp oeq float %6, 0x7FF0000000000000 br i1 %8, label %__nv_fmul_rn.exit.i.i, label %10 __nv_fmul_rn.exit.i.i: ; preds = %__nv_isinff.exit.i.i %9 = tail call float @llvm.nvvm.mul.rn.f(float %a, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i 10: ; preds = %__nv_isinff.exit.i.i %11 = bitcast float %a to i32 %12 = lshr i32 %11, 23 %13 = and i32 %12, 255 %14 = add nsw i32 %13, -128 %15 = shl i32 %11, 8 %16 = or i32 %15, -2147483648 %17 = lshr i32 %14, 5 br label %18 18: ; preds = %10, %18 %indvars.iv = phi i64 [ 0, %10 ], [ %indvars.iv.next, %18 ] %hi.i.i.i.08 = phi i32 [ 0, %10 ], [ %23, %18 ] %19 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv %20 = load i32, ptr addrspace(1) %19, align 4 %21 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %20, i32 %16, i32 %hi.i.i.i.08) #146, !srcloc !11 %22 = extractvalue { i32, i32 } %21, 0 %23 = extractvalue { i32, i32 } %21, 1 %24 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %indvars.iv store i32 %22, ptr %24, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 6 br i1 %exitcond.not, label %25, label %18, !llvm.loop !12 25: ; preds = %18 %.lcssa = phi i32 [ %23, %18 ] %26 = and i32 %11, -2147483648 %27 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 6 store i32 %.lcssa, ptr %27, align 4 %28 = and i32 %12, 31 %29 = sub nsw i32 6, %17 %30 = sext i32 %29 to i64 %31 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %30 %32 = load i32, ptr %31, align 4 %33 = sub nsw i32 5, %17 %34 = sext i32 %33 to i64 %35 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %34 %36 = load i32, ptr %35, align 4 %.not3 = icmp eq i32 %28, 0 br i1 %.not3, label %__internal_trig_reduction_slowpath.exit.i.i, label %37 37: ; preds = %25 %38 = sub nsw i32 4, %17 %39 = sub nuw nsw i32 32, %28 %40 = shl i32 %32, %28 %41 = lshr i32 %36, %39 %42 = add i32 %41, %40 %43 = shl i32 %36, %28 %44 = sext i32 %38 to i64 %45 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %44 %46 = load i32, ptr %45, align 4 %47 = lshr i32 %46, %39 %48 = add i32 %47, %43 br label %__internal_trig_reduction_slowpath.exit.i.i __internal_trig_reduction_slowpath.exit.i.i: ; preds = %37, %25 %hi.i.i.i.1 = phi i32 [ %42, %37 ], [ %32, %25 ] %lo.i.i.i.0 = phi i32 [ %48, %37 ], [ %36, %25 ] %49 = lshr i32 %hi.i.i.i.1, 30 %50 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.1, i32 %lo.i.i.i.0, i32 2) %51 = shl i32 %lo.i.i.i.0, 2 %52 = lshr i32 %50, 31 %53 = add nuw nsw i32 %52, %49 %.not4 = icmp eq i32 %26, 0 %54 = sub nsw i32 0, %53 %spec.select = select i1 %.not4, i32 %53, i32 %54 %.not5 = icmp sgt i32 %50, -1 %55 = xor i32 %26, -2147483648 %s.i.i.i.0 = select i1 %.not5, i32 %26, i32 %55 %not..not5 = xor i1 %.not5, true %56 = sext i1 %not..not5 to i32 %hi.i.i.i.2 = xor i32 %50, %56 %lo.i.i.i.1 = xor i32 %51, %56 %57 = zext i32 %hi.i.i.i.2 to i64 %58 = shl nuw i64 %57, 32 %59 = zext i32 %lo.i.i.i.1 to i64 %60 = or i64 %58, %59 %61 = sitofp i64 %60 to double %62 = fmul double %61, 0x3BF921FB54442D19 %63 = fptrunc double %62 to float %.not7 = icmp eq i32 %s.i.i.i.0, 0 %64 = fneg float %63 %r.i.i.i.0 = select i1 %.not7, float %63, float %64 br label %__internal_trig_reduction_kernel.exit.i __internal_trig_reduction_kernel.exit.i: ; preds = %__nv_float2int_rn.exit.i.i, %__internal_trig_reduction_slowpath.exit.i.i, %__nv_fmul_rn.exit.i.i %i.i.1 = phi i32 [ %1, %__nv_float2int_rn.exit.i.i ], [ 0, %__nv_fmul_rn.exit.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i ] %t.i.i.1 = phi float [ %5, %__nv_float2int_rn.exit.i.i ], [ %9, %__nv_fmul_rn.exit.i.i ], [ %r.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i ] %65 = tail call float @llvm.nvvm.mul.rn.f(float %t.i.i.1, float %t.i.i.1) #145 %66 = and i32 %i.i.1, 1 %.not = icmp eq i32 %66, 0 %67 = select i1 %.not, float %t.i.i.1, float 1.000000e+00 %68 = tail call float @llvm.nvvm.fma.rn.f(float %65, float %67, float 0.000000e+00) #145 %69 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %65, float 0xBF56C0FDA0000000) #145 %70 = select i1 %.not, float 0xBF29A82A60000000, float %69 %71 = select i1 %.not, float 0x3F8110BC80000000, float 0x3FA5555760000000 %72 = tail call float @llvm.nvvm.fma.rn.f(float %70, float %65, float %71) #145 %73 = select i1 %.not, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %74 = tail call float @llvm.nvvm.fma.rn.f(float %72, float %65, float %73) #145 %75 = tail call float @llvm.nvvm.fma.rn.f(float %74, float %68, float %67) #145 %76 = and i32 %i.i.1, 2 %.not2 = icmp eq i32 %76, 0 %77 = tail call float @llvm.nvvm.fma.rn.f(float %75, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i.0 = select i1 %.not2, float %75, float %77 ret float %z.i.i.0 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.nvvm.f2i.rn(float %0) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.mul.rn.f(float %0, float %1) #7 ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_cosf(float %a) unnamed_addr #25 { __nv_float2int_rn.exit.i.i: %result.i.i.i = alloca [7 x i32], align 4 %0 = fmul float %a, 0x3FE45F3060000000 %1 = tail call i32 @llvm.nvvm.f2i.rn(float %0) #145 %2 = sitofp i32 %1 to float %3 = tail call float @llvm.nvvm.fma.rn.f(float %2, float 0xBFF921FB40000000, float %a) #145 %4 = tail call float @llvm.nvvm.fma.rn.f(float %2, float 0xBE74442D00000000, float %3) #145 %5 = tail call float @llvm.nvvm.fma.rn.f(float %2, float 0xBCF84698A0000000, float %4) #145 %6 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %7 = fcmp ult float %6, 1.056150e+05 br i1 %7, label %__internal_trig_reduction_kernel.exit.i, label %__nv_isinff.exit.i.i __nv_isinff.exit.i.i: ; preds = %__nv_float2int_rn.exit.i.i %8 = fcmp oeq float %6, 0x7FF0000000000000 br i1 %8, label %__nv_fmul_rn.exit.i.i, label %10 __nv_fmul_rn.exit.i.i: ; preds = %__nv_isinff.exit.i.i %9 = tail call float @llvm.nvvm.mul.rn.f(float %a, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i 10: ; preds = %__nv_isinff.exit.i.i %11 = bitcast float %a to i32 %12 = lshr i32 %11, 23 %13 = and i32 %12, 255 %14 = add nsw i32 %13, -128 %15 = shl i32 %11, 8 %16 = or i32 %15, -2147483648 %17 = lshr i32 %14, 5 br label %18 18: ; preds = %10, %18 %indvars.iv = phi i64 [ 0, %10 ], [ %indvars.iv.next, %18 ] %hi.i.i.i.08 = phi i32 [ 0, %10 ], [ %23, %18 ] %19 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv %20 = load i32, ptr addrspace(1) %19, align 4 %21 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %20, i32 %16, i32 %hi.i.i.i.08) #146, !srcloc !11 %22 = extractvalue { i32, i32 } %21, 0 %23 = extractvalue { i32, i32 } %21, 1 %24 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %indvars.iv store i32 %22, ptr %24, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 6 br i1 %exitcond.not, label %25, label %18, !llvm.loop !12 25: ; preds = %18 %.lcssa = phi i32 [ %23, %18 ] %26 = and i32 %11, -2147483648 %27 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 6 store i32 %.lcssa, ptr %27, align 4 %28 = and i32 %12, 31 %29 = sub nsw i32 6, %17 %30 = sext i32 %29 to i64 %31 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %30 %32 = load i32, ptr %31, align 4 %33 = sub nsw i32 5, %17 %34 = sext i32 %33 to i64 %35 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %34 %36 = load i32, ptr %35, align 4 %.not3 = icmp eq i32 %28, 0 br i1 %.not3, label %__internal_trig_reduction_slowpath.exit.i.i, label %37 37: ; preds = %25 %38 = sub nsw i32 4, %17 %39 = sub nuw nsw i32 32, %28 %40 = shl i32 %32, %28 %41 = lshr i32 %36, %39 %42 = add i32 %41, %40 %43 = shl i32 %36, %28 %44 = sext i32 %38 to i64 %45 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %44 %46 = load i32, ptr %45, align 4 %47 = lshr i32 %46, %39 %48 = add i32 %47, %43 br label %__internal_trig_reduction_slowpath.exit.i.i __internal_trig_reduction_slowpath.exit.i.i: ; preds = %37, %25 %hi.i.i.i.1 = phi i32 [ %42, %37 ], [ %32, %25 ] %lo.i.i.i.0 = phi i32 [ %48, %37 ], [ %36, %25 ] %49 = lshr i32 %hi.i.i.i.1, 30 %50 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.1, i32 %lo.i.i.i.0, i32 2) %51 = shl i32 %lo.i.i.i.0, 2 %52 = lshr i32 %50, 31 %53 = add nuw nsw i32 %52, %49 %.not4 = icmp eq i32 %26, 0 %54 = sub nsw i32 0, %53 %spec.select = select i1 %.not4, i32 %53, i32 %54 %.not5 = icmp sgt i32 %50, -1 %55 = xor i32 %26, -2147483648 %s.i.i.i.0 = select i1 %.not5, i32 %26, i32 %55 %not..not5 = xor i1 %.not5, true %56 = sext i1 %not..not5 to i32 %hi.i.i.i.2 = xor i32 %50, %56 %lo.i.i.i.1 = xor i32 %51, %56 %57 = zext i32 %hi.i.i.i.2 to i64 %58 = shl nuw i64 %57, 32 %59 = zext i32 %lo.i.i.i.1 to i64 %60 = or i64 %58, %59 %61 = sitofp i64 %60 to double %62 = fmul double %61, 0x3BF921FB54442D19 %63 = fptrunc double %62 to float %.not7 = icmp eq i32 %s.i.i.i.0, 0 %64 = fneg float %63 %r.i.i.i.0 = select i1 %.not7, float %63, float %64 br label %__internal_trig_reduction_kernel.exit.i __internal_trig_reduction_kernel.exit.i: ; preds = %__nv_fmul_rn.exit.i.i, %__internal_trig_reduction_slowpath.exit.i.i, %__nv_float2int_rn.exit.i.i %i.i.1 = phi i32 [ %1, %__nv_float2int_rn.exit.i.i ], [ 0, %__nv_fmul_rn.exit.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i ] %t.i.i.1 = phi float [ %5, %__nv_float2int_rn.exit.i.i ], [ %9, %__nv_fmul_rn.exit.i.i ], [ %r.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i ] %65 = add i32 %i.i.1, 1 %66 = tail call float @llvm.nvvm.mul.rn.f(float %t.i.i.1, float %t.i.i.1) #145 %67 = and i32 %65, 1 %.not = icmp eq i32 %67, 0 %68 = select i1 %.not, float %t.i.i.1, float 1.000000e+00 %69 = tail call float @llvm.nvvm.fma.rn.f(float %66, float %68, float 0.000000e+00) #145 %70 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %66, float 0xBF56C0FDA0000000) #145 %71 = select i1 %.not, float 0xBF29A82A60000000, float %70 %72 = select i1 %.not, float 0x3F8110BC80000000, float 0x3FA5555760000000 %73 = tail call float @llvm.nvvm.fma.rn.f(float %71, float %66, float %72) #145 %74 = select i1 %.not, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %75 = tail call float @llvm.nvvm.fma.rn.f(float %73, float %66, float %74) #145 %76 = tail call float @llvm.nvvm.fma.rn.f(float %75, float %69, float %68) #145 %77 = and i32 %65, 2 %.not2 = icmp eq i32 %77, 0 %78 = tail call float @llvm.nvvm.fma.rn.f(float %76, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i.0 = select i1 %.not2, float %76, float %78 ret float %z.i.i.0 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.round.f(float %0) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.add.rn.f(float %0, float %1) #7 ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_tanf(float %a) unnamed_addr #26 { __nv_float2int_rn.exit.i: %result.i.i = alloca [7 x i32], align 4 %0 = fmul float %a, 0x3FE45F3060000000 %1 = tail call i32 @llvm.nvvm.f2i.rn(float %0) #145 %2 = sitofp i32 %1 to float %3 = tail call float @llvm.nvvm.fma.rn.f(float %2, float 0xBFF921FB40000000, float %a) #145 %4 = tail call float @llvm.nvvm.fma.rn.f(float %2, float 0xBE74442D00000000, float %3) #145 %5 = tail call float @llvm.nvvm.fma.rn.f(float %2, float 0xBCF84698A0000000, float %4) #145 %6 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %7 = fcmp ult float %6, 1.056150e+05 br i1 %7, label %__internal_trig_reduction_kernel.exit, label %__nv_isinff.exit.i __nv_isinff.exit.i: ; preds = %__nv_float2int_rn.exit.i %8 = fcmp oeq float %6, 0x7FF0000000000000 br i1 %8, label %__nv_fmul_rn.exit.i, label %10 __nv_fmul_rn.exit.i: ; preds = %__nv_isinff.exit.i %9 = tail call float @llvm.nvvm.mul.rn.f(float %a, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit 10: ; preds = %__nv_isinff.exit.i %11 = bitcast float %a to i32 %12 = lshr i32 %11, 23 %13 = and i32 %12, 255 %14 = add nsw i32 %13, -128 %15 = shl i32 %11, 8 %16 = or i32 %15, -2147483648 %17 = lshr i32 %14, 5 br label %18 18: ; preds = %10, %18 %indvars.iv = phi i64 [ 0, %10 ], [ %indvars.iv.next, %18 ] %hi.i.i.07 = phi i32 [ 0, %10 ], [ %23, %18 ] %19 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv %20 = load i32, ptr addrspace(1) %19, align 4 %21 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %20, i32 %16, i32 %hi.i.i.07) #146, !srcloc !11 %22 = extractvalue { i32, i32 } %21, 0 %23 = extractvalue { i32, i32 } %21, 1 %24 = getelementptr inbounds [7 x i32], ptr %result.i.i, i64 0, i64 %indvars.iv store i32 %22, ptr %24, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 6 br i1 %exitcond.not, label %25, label %18, !llvm.loop !12 25: ; preds = %18 %.lcssa = phi i32 [ %23, %18 ] %26 = and i32 %11, -2147483648 %27 = getelementptr inbounds [7 x i32], ptr %result.i.i, i64 0, i64 6 store i32 %.lcssa, ptr %27, align 4 %28 = and i32 %12, 31 %29 = sub nsw i32 6, %17 %30 = sext i32 %29 to i64 %31 = getelementptr inbounds [7 x i32], ptr %result.i.i, i64 0, i64 %30 %32 = load i32, ptr %31, align 4 %33 = sub nsw i32 5, %17 %34 = sext i32 %33 to i64 %35 = getelementptr inbounds [7 x i32], ptr %result.i.i, i64 0, i64 %34 %36 = load i32, ptr %35, align 4 %.not2 = icmp eq i32 %28, 0 br i1 %.not2, label %__internal_trig_reduction_slowpath.exit.i, label %37 37: ; preds = %25 %38 = sub nsw i32 4, %17 %39 = sub nuw nsw i32 32, %28 %40 = shl i32 %32, %28 %41 = lshr i32 %36, %39 %42 = add i32 %41, %40 %43 = shl i32 %36, %28 %44 = sext i32 %38 to i64 %45 = getelementptr inbounds [7 x i32], ptr %result.i.i, i64 0, i64 %44 %46 = load i32, ptr %45, align 4 %47 = lshr i32 %46, %39 %48 = add i32 %47, %43 br label %__internal_trig_reduction_slowpath.exit.i __internal_trig_reduction_slowpath.exit.i: ; preds = %37, %25 %hi.i.i.1 = phi i32 [ %42, %37 ], [ %32, %25 ] %lo.i.i.0 = phi i32 [ %48, %37 ], [ %36, %25 ] %49 = lshr i32 %hi.i.i.1, 30 %50 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.1, i32 %lo.i.i.0, i32 2) %51 = shl i32 %lo.i.i.0, 2 %52 = lshr i32 %50, 31 %53 = add nuw nsw i32 %52, %49 %.not3 = icmp eq i32 %26, 0 %54 = sub nsw i32 0, %53 %spec.select = select i1 %.not3, i32 %53, i32 %54 %.not4 = icmp sgt i32 %50, -1 %55 = xor i32 %26, -2147483648 %s.i.i.0 = select i1 %.not4, i32 %26, i32 %55 %not..not4 = xor i1 %.not4, true %56 = sext i1 %not..not4 to i32 %hi.i.i.2 = xor i32 %50, %56 %lo.i.i.1 = xor i32 %51, %56 %57 = zext i32 %hi.i.i.2 to i64 %58 = shl nuw i64 %57, 32 %59 = zext i32 %lo.i.i.1 to i64 %60 = or i64 %58, %59 %61 = sitofp i64 %60 to double %62 = fmul double %61, 0x3BF921FB54442D19 %63 = fptrunc double %62 to float %.not6 = icmp eq i32 %s.i.i.0, 0 %64 = fneg float %63 %r.i.i.0 = select i1 %.not6, float %63, float %64 br label %__internal_trig_reduction_kernel.exit __internal_trig_reduction_kernel.exit: ; preds = %__nv_fmul_rn.exit.i, %__internal_trig_reduction_slowpath.exit.i, %__nv_float2int_rn.exit.i %i.1 = phi i32 [ %1, %__nv_float2int_rn.exit.i ], [ 0, %__nv_fmul_rn.exit.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i ] %t.i.1 = phi float [ %5, %__nv_float2int_rn.exit.i ], [ %9, %__nv_fmul_rn.exit.i ], [ %r.i.i.0, %__internal_trig_reduction_slowpath.exit.i ] %65 = fmul float %t.i.1, %t.i.1 %66 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F83200000000000, float %65, float 0x3F6AC00000000000) #145 %67 = tail call float @llvm.nvvm.fma.rn.f(float %66, float %65, float 0x3F98E00000000000) #145 %68 = tail call float @llvm.nvvm.fma.rn.f(float %67, float %65, float 0x3FAB600000000000) #145 %69 = tail call float @llvm.nvvm.fma.rn.f(float %68, float %65, float 0x3FC1128700000000) #145 %70 = tail call float @llvm.nvvm.fma.rn.f(float %69, float %65, float 0x3FD5555100000000) #145 %71 = tail call float @llvm.nvvm.mul.rn.f(float %65, float %t.i.1) #145 %72 = tail call float @llvm.nvvm.fma.rn.f(float %70, float %71, float %t.i.1) #145 %73 = tail call float @llvm.nvvm.fabs.f(float %t.i.1) #145 %74 = fcmp oeq float %73, 0x3F40168780000000 %t.i1.0 = select i1 %74, float %t.i.1, float %72 %75 = and i32 %i.1, 1 %.not = icmp eq i32 %75, 0 br i1 %.not, label %79, label %76 76: ; preds = %__internal_trig_reduction_kernel.exit %77 = fneg float %t.i1.0 %78 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %77) #146, !srcloc !10 br label %79 79: ; preds = %76, %__internal_trig_reduction_kernel.exit %z.0 = phi float [ %78, %76 ], [ %t.i1.0, %__internal_trig_reduction_kernel.exit ] ret float %z.0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_log2f(float %a) unnamed_addr #27 { __nv_fmaf_rn.exit10.i: %0 = fcmp olt float %a, 0x3810000000000000 %1 = fmul float %a, 0x4160000000000000 %.02 = select i1 %0, float %1, float %a %i.i.0 = select i1 %0, float -2.300000e+01, float 0.000000e+00 %2 = bitcast float %.02 to i32 %3 = add i32 %2, -1060439283 %4 = and i32 %3, -8388608 %5 = sub i32 %2, %4 %6 = bitcast i32 %5 to float %7 = sitofp i32 %4 to float %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float 0x3E80000000000000, float %i.i.0) #145 %9 = fadd float %6, -1.000000e+00 %10 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FB8D64FE0000000, float %9, float 0xBFC58FE600000000) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %9, float 0x3FC5F9E540000000) #145 %12 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %9, float 0xBFC6E9C860000000) #145 %13 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %9, float 0x3FCA417E80000000) #145 %14 = tail call float @llvm.nvvm.fma.rn.f(float %13, float %9, float 0xBFCEC79160000000) #145 %15 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %9, float 0x3FD277F320000000) #145 %16 = tail call float @llvm.nvvm.fma.rn.f(float %15, float %9, float 0xBFD7154920000000) #145 %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %9, float 0x3FDEC70940000000) #145 %18 = tail call float @llvm.nvvm.fma.rn.f(float %17, float %9, float 0xBFE7154760000000) #145 %19 = fmul float %9, %18 %20 = fmul float %9, %19 %21 = tail call float @llvm.nvvm.fma.rn.f(float %9, float 0x3FF7154760000000, float %20) #145 %22 = fadd float %8, %21 %23 = icmp ugt i32 %2, 2139095039 %24 = tail call float @llvm.nvvm.fma.rn.f(float %.02, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i.0 = select i1 %23, float %24, float %22 %25 = fcmp oeq float %.02, 0.000000e+00 %r.i.1 = select i1 %25, float 0xFFF0000000000000, float %r.i.0 ret float %r.i.1 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_expf(float %a) unnamed_addr #28 { __nv_fmaf_rn.exit.i.i: %0 = tail call float @llvm.nvvm.fma.rn.f(float %a, float 0x3F777313A0000000, float 5.000000e-01) #145 %1 = tail call float @llvm.nvvm.saturate.f(float %0) #145 %2 = tail call float @llvm.nvvm.fma.rm.f(float %1, float 2.520000e+02, float 0x4168000020000000) #145 %3 = fadd float %2, 0xC168000FE0000000 %4 = fneg float %3 %5 = tail call float @llvm.nvvm.fma.rn.f(float %a, float 0x3FF7154760000000, float %4) #145 %6 = tail call float @llvm.nvvm.fma.rn.f(float %a, float 0x3E54AE0C00000000, float %5) #145 %7 = bitcast float %2 to i32 %8 = shl i32 %7, 23 %9 = bitcast i32 %8 to float %10 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %6) #145 %11 = fmul float %10, %9 ret float %11 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.saturate.f(float %0) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fma.rm.f(float %0, float %1, float %2) #7 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_exp10f(float %a) unnamed_addr #29 { __nv_fmaf_rn.exit.i.i: %0 = tail call float @llvm.nvvm.fma.rn.f(float %a, float 0x3F8AFF4C40000000, float 5.000000e-01) #145 %1 = tail call float @llvm.nvvm.saturate.f(float %0) #145 %2 = tail call float @llvm.nvvm.fma.rm.f(float %1, float 2.520000e+02, float 0x4168000020000000) #145 %3 = fadd float %2, 0xC168000FE0000000 %4 = fneg float %3 %5 = tail call float @llvm.nvvm.fma.rn.f(float %a, float 0x400A934F00000000, float %4) #145 %6 = tail call float @llvm.nvvm.fma.rn.f(float %a, float 0x3E72F346E0000000, float %5) #145 %7 = bitcast float %2 to i32 %8 = shl i32 %7, 23 %9 = bitcast i32 %8 to float %10 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %6) #145 %11 = fmul float %10, %9 ret float %11 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_coshf(float %a) unnamed_addr #30 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = tail call float @llvm.nvvm.mul.rn.f(float %0, float 0x3FF7154760000000) #145 %2 = tail call float @llvm.nvvm.trunc.f(float %1) #145 %3 = tail call float @llvm.nvvm.fabs.f(float %2) #145 %4 = fcmp ogt float %3, 1.260000e+02 %5 = bitcast float %2 to i32 %6 = and i32 %5, -2147483648 %7 = or i32 %6, 1123811328 %8 = bitcast i32 %7 to float %j.i.0 = select i1 %4, float %8, float %2 %9 = tail call float @llvm.nvvm.fma.rn.f(float %j.i.0, float 0xBFE62E4300000000, float %0) #145 %10 = tail call float @llvm.nvvm.fma.rn.f(float %j.i.0, float 0x3E205C6100000000, float %9) #145 %11 = fmul float %10, 0x3FF7154760000000 %12 = fadd float %j.i.0, 0x4168000FA0000000 %13 = bitcast float %12 to i32 %14 = shl i32 %13, 23 %15 = bitcast i32 %14 to float %16 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %11) #145 %17 = fmul float %16, %15 %18 = tail call float @llvm.nvvm.div.approx.f(float 1.250000e-01, float %17) #145 %19 = tail call float @llvm.nvvm.fma.rn.f(float 2.000000e+00, float %17, float %18) #145 %20 = fcmp oge float %0, 9.000000e+01 %z.0 = select i1 %20, float 0x7FF0000000000000, float %19 ret float %z.0 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.div.approx.f(float %0, float %1) #19 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_sinhf(float %a) unnamed_addr #31 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp ult float %0, 1.000000e+00 br i1 %1, label %__internal_fmad.exit4, label %__nv_fmul_rn.exit.i __nv_fmul_rn.exit.i: ; preds = %__nv_fabsf.exit %2 = tail call float @llvm.nvvm.mul.rn.f(float %0, float 0x3FF7154760000000) #145 %3 = tail call float @llvm.nvvm.trunc.f(float %2) #145 %4 = tail call float @llvm.nvvm.fabs.f(float %3) #145 %5 = fcmp ogt float %4, 1.260000e+02 %6 = bitcast float %3 to i32 %7 = and i32 %6, -2147483648 %8 = or i32 %7, 1123811328 %9 = bitcast i32 %8 to float %j.i.0 = select i1 %5, float %9, float %3 %10 = tail call float @llvm.nvvm.fma.rn.f(float %j.i.0, float 0xBFE62E4300000000, float %0) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float %j.i.0, float 0x3E205C6100000000, float %10) #145 %12 = fmul float %11, 0x3FF7154760000000 %13 = fadd float %j.i.0, 0x4168000FA0000000 %14 = bitcast float %13 to i32 %15 = shl i32 %14, 23 %16 = bitcast i32 %15 to float %17 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %12) #145 %18 = fmul float %17, %16 %19 = tail call float @llvm.nvvm.div.approx.f(float 1.250000e-01, float %18) #145 %20 = fneg float %19 %21 = tail call float @llvm.nvvm.fma.rn.f(float 2.000000e+00, float %18, float %20) #145 %22 = fcmp oge float %0, 9.000000e+01 %z.0 = select i1 %22, float 0x7FF0000000000000, float %21 %23 = bitcast float %z.0 to i32 %24 = bitcast float %a to i32 %25 = and i32 %24, -2147483648 %26 = or i32 %25, %23 %27 = bitcast i32 %26 to float br label %34 __internal_fmad.exit4: ; preds = %__nv_fabsf.exit %28 = fmul float %a, %a %29 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EC7A15B40000000, float %28, float 0x3F29FFE920000000) #145 %30 = tail call float @llvm.nvvm.fma.rn.f(float %29, float %28, float 0x3F81111340000000) #145 %31 = tail call float @llvm.nvvm.fma.rn.f(float %30, float %28, float 0x3FC5555560000000) #145 %32 = fmul float %28, %31 %33 = tail call float @llvm.nvvm.fma.rn.f(float %32, float %a, float %a) #145 br label %34 34: ; preds = %__internal_fmad.exit4, %__nv_fmul_rn.exit.i %z.1 = phi float [ %27, %__nv_fmul_rn.exit.i ], [ %33, %__internal_fmad.exit4 ] ret float %z.1 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_tanhf(float %a) unnamed_addr #32 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp ult float %0, 0x3FE3333340000000 br i1 %1, label %__internal_fmad.exit3, label %__internal_fmad.exit1 __internal_fmad.exit1: ; preds = %__nv_fabsf.exit %2 = fmul float %0, 0x4007154760000000 %3 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %2) #145 %4 = fadd float %3, 1.000000e+00 %5 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %4) #146, !srcloc !10 %6 = tail call float @llvm.nvvm.fma.rn.f(float %5, float -2.000000e+00, float 1.000000e+00) #145 %7 = fcmp oge float %0, 0x4022059680000000 %s.0 = select i1 %7, float 1.000000e+00, float %6 %8 = bitcast float %s.0 to i32 %9 = bitcast float %a to i32 %10 = and i32 %9, -2147483648 %11 = or i32 %10, %8 %12 = bitcast i32 %11 to float br label %19 __internal_fmad.exit3: ; preds = %__nv_fabsf.exit %13 = fmul float %a, %a %14 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F901E1040000000, float %13, float 0xBFAAC795C0000000) #145 %15 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %13, float 0x3FC10B2820000000) #145 %16 = tail call float @llvm.nvvm.fma.rn.f(float %15, float %13, float 0xBFD5553DA0000000) #145 %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %13, float 0.000000e+00) #145 %18 = tail call float @llvm.nvvm.fma.rn.f(float %17, float %a, float %a) #145 br label %19 19: ; preds = %__internal_fmad.exit3, %__internal_fmad.exit1 %s.1 = phi float [ %12, %__internal_fmad.exit1 ], [ %18, %__internal_fmad.exit3 ] ret float %s.1 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_atan2f(float %a, float %b) unnamed_addr #33 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %b) #145 %1 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %2 = fcmp oeq float %0, 0.000000e+00 %3 = fcmp oeq float %1, 0.000000e+00 %or.cond = select i1 %2, i1 %3, i1 false br i1 %or.cond, label %4, label %12 4: ; preds = %__nv_fabsf.exit %5 = bitcast float %b to i32 %6 = icmp slt i32 %5, 0 %7 = select i1 %6, i32 1078530011, i32 0 %8 = bitcast float %a to i32 %9 = and i32 %8, -2147483648 %10 = or i32 %7, %9 %11 = bitcast i32 %10 to float br label %48 12: ; preds = %__nv_fabsf.exit %13 = fcmp oeq float %0, 0x7FF0000000000000 %14 = fcmp oeq float %1, 0x7FF0000000000000 %or.cond1 = select i1 %13, i1 %14, i1 false br i1 %or.cond1, label %15, label %__nv_fmaxf.exit 15: ; preds = %12 %16 = bitcast float %b to i32 %17 = icmp slt i32 %16, 0 %18 = select i1 %17, i32 1075235812, i32 1061752795 %19 = bitcast float %a to i32 %20 = and i32 %19, -2147483648 %21 = or i32 %18, %20 %22 = bitcast i32 %21 to float br label %48 __nv_fmaxf.exit: ; preds = %12 %23 = tail call float @llvm.nvvm.fmax.f(float %1, float %0) #145 %24 = tail call float @llvm.nvvm.fmin.f(float %1, float %0) #145 %25 = fdiv float %24, %23 %26 = tail call float @llvm.nvvm.mul.rn.f(float %25, float %25) #145 %27 = tail call float @llvm.nvvm.fma.rn.f(float %26, float 0xBFEA58FD40000000, float 0xC016B31060000000) #145 %28 = tail call float @llvm.nvvm.fma.rn.f(float %27, float %26, float 0xC01A4320E0000000) #145 %29 = fmul float %26, %28 %30 = fmul float %25, %29 %31 = fadd float %26, 0x4026ABB800000000 %32 = tail call float @llvm.nvvm.fma.rn.f(float %31, float %26, float 0x403CD7AC00000000) #145 %33 = tail call float @llvm.nvvm.fma.rn.f(float %32, float %26, float 0x4033B25900000000) #145 %34 = fdiv float 1.000000e+00, %33 %35 = tail call float @llvm.nvvm.fma.rn.f(float %30, float %34, float %25) #145 %36 = fcmp ogt float %1, %0 %37 = fsub float 0x3FF921FB60000000, %35 %t0.0 = select i1 %36, float %37, float %35 %38 = bitcast float %b to i32 %39 = icmp slt i32 %38, 0 %40 = fsub float 0x400921FB60000000, %t0.0 %t0.1 = select i1 %39, float %40, float %t0.0 %41 = bitcast float %t0.1 to i32 %42 = bitcast float %a to i32 %43 = and i32 %42, -2147483648 %44 = or i32 %43, %41 %45 = bitcast i32 %44 to float %46 = fadd float %1, %0 %47 = fcmp ole float %46, 0x7FF0000000000000 %t0.2 = select i1 %47, float %45, float %46 br label %48 48: ; preds = %15, %__nv_fmaxf.exit, %4 %t0.4 = phi float [ %11, %4 ], [ %22, %15 ], [ %t0.2, %__nv_fmaxf.exit ] ret float %t0.4 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_atanf(float %a) unnamed_addr #34 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp ogt float %0, 1.000000e+00 br i1 %1, label %2, label %__internal_fmad.exit.i 2: ; preds = %__nv_fabsf.exit %3 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %0) #146, !srcloc !10 br label %__internal_fmad.exit.i __internal_fmad.exit.i: ; preds = %2, %__nv_fabsf.exit %t1.0 = phi float [ %3, %2 ], [ %0, %__nv_fabsf.exit ] %4 = fmul float %t1.0, %t1.0 %5 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F64121540000000, float %4, float 0xBF8D7C29E0000000) #145 %6 = tail call float @llvm.nvvm.fma.rn.f(float %5, float %4, float 0x3FA4672FC0000000) #145 %7 = tail call float @llvm.nvvm.fma.rn.f(float %6, float %4, float 0xBFB2914F40000000) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float %4, float 0x3FBAED6420000000) #145 %9 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %4, float 0xBFC223D100000000) #145 %10 = tail call float @llvm.nvvm.fma.rn.f(float %9, float %4, float 0x3FC995EC00000000) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %4, float 0xBFD55544E0000000) #145 %12 = fmul float %4, %11 %13 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %t1.0, float %t1.0) #145 %14 = fneg float %13 %15 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FEDDCB020000000, float 0x3FFAEE9D60000000, float %14) #145 %t1.1 = select i1 %1, float %15, float %13 %16 = fcmp ugt float %0, 0x7FF0000000000000 br i1 %16, label %23, label %17 17: ; preds = %__internal_fmad.exit.i %18 = bitcast float %t1.1 to i32 %19 = bitcast float %a to i32 %20 = and i32 %19, -2147483648 %21 = or i32 %20, %18 %22 = bitcast i32 %21 to float br label %23 23: ; preds = %17, %__internal_fmad.exit.i %t1.2 = phi float [ %22, %17 ], [ %t1.1, %__internal_fmad.exit.i ] ret float %t1.2 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_asinf(float %a) unnamed_addr #35 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fneg float %0 %2 = tail call float @llvm.nvvm.fma.rn.f(float 5.000000e-01, float %1, float 5.000000e-01) #145 %3 = tail call float @llvm.nvvm.rsqrt.approx.ftz.f(float %2) #145 %4 = fmul float %2, %3 %5 = fmul float %3, 5.000000e-01 %6 = fneg float %4 %7 = tail call float @llvm.nvvm.fma.rn.f(float %6, float %5, float 5.000000e-01) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float %4, float %7, float %4) #145 %9 = fcmp oeq float %0, 1.000000e+00 %10 = select i1 %9, float 0.000000e+00, float %8 %11 = fcmp ogt float %0, 0x3FE1EB8520000000 %12 = select i1 %11, float %10, float %0 %13 = fmul float %12, %12 %14 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FA9BA5EE0000000, float %13, float 0x3F933952E0000000) #145 %15 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %13, float 0x3FA7F21D00000000) #145 %16 = tail call float @llvm.nvvm.fma.rn.f(float %15, float %13, float 0x3FB32799E0000000) #145 %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %13, float 0x3FC5558080000000) #145 %18 = fmul float %13, %17 %19 = tail call float @llvm.nvvm.fma.rn.f(float %18, float %12, float %12) #145 %20 = fmul float %19, -2.000000e+00 %21 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FEDDCB020000000, float 0x3FFAEE9D60000000, float %20) #145 %z.0 = select i1 %11, float %21, float %19 %22 = fcmp ugt float %z.0, 0x7FF0000000000000 br i1 %22, label %29, label %23 23: ; preds = %__nv_fabsf.exit %24 = bitcast float %z.0 to i32 %25 = bitcast float %a to i32 %26 = and i32 %25, -2147483648 %27 = or i32 %26, %24 %28 = bitcast i32 %27 to float br label %29 29: ; preds = %23, %__nv_fabsf.exit %z.1 = phi float [ %28, %23 ], [ %z.0, %__nv_fabsf.exit ] ret float %z.1 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_acosf(float %a) unnamed_addr #36 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fneg float %0 %2 = tail call float @llvm.nvvm.fma.rn.f(float 5.000000e-01, float %1, float 5.000000e-01) #145 %3 = tail call float @llvm.nvvm.rsqrt.approx.ftz.f(float %2) #145 %4 = fmul float %2, %3 %5 = fmul float %3, 5.000000e-01 %6 = fneg float %4 %7 = tail call float @llvm.nvvm.fma.rn.f(float %6, float %5, float 5.000000e-01) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float %4, float %7, float %4) #145 %9 = fcmp oeq float %0, 1.000000e+00 %10 = select i1 %9, float 0.000000e+00, float %8 %11 = fcmp ogt float %0, 0x3FE1EB8520000000 %12 = select i1 %11, float %10, float %0 %13 = bitcast float %12 to i32 %14 = bitcast float %a to i32 %15 = and i32 %14, -2147483648 %16 = or i32 %15, %13 %17 = bitcast i32 %16 to float %18 = fmul float %17, %17 %19 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FA21D9DE0000000, float %18, float 0x3F91635760000000) #145 %20 = tail call float @llvm.nvvm.fma.rn.f(float %19, float %18, float 0x3F9F805180000000) #145 %21 = tail call float @llvm.nvvm.fma.rn.f(float %20, float %18, float 0x3FA6E42720000000) #145 %22 = tail call float @llvm.nvvm.fma.rn.f(float %21, float %18, float 0x3FB3327B60000000) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %22, float %18, float 0x3FC55558C0000000) #145 %24 = fmul float %18, %23 %25 = tail call float @llvm.nvvm.fma.rn.f(float %24, float %17, float %17) #145 %26 = fneg float %25 %27 = select i1 %11, float %25, float %26 %28 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FEDDCB020000000, float 0x3FFAEE9D60000000, float %27) #145 %29 = fcmp ogt float %a, 0x3FE1EB8520000000 %30 = select i1 %29, float %25, float %28 %31 = fmul float %30, 2.000000e+00 %z.0 = select i1 %11, float %31, float %30 ret float %z.0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_logf(float %a) unnamed_addr #37 { __nv_fmaf_rn.exit10.i: %0 = fcmp olt float %a, 0x3810000000000000 %1 = fmul float %a, 0x4160000000000000 %.02 = select i1 %0, float %1, float %a %i.i.0 = select i1 %0, float -2.300000e+01, float 0.000000e+00 %2 = bitcast float %.02 to i32 %3 = add i32 %2, -1059760811 %4 = and i32 %3, -8388608 %5 = sub i32 %2, %4 %6 = bitcast i32 %5 to float %7 = sitofp i32 %4 to float %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float 0x3E80000000000000, float %i.i.0) #145 %9 = fadd float %6, -1.000000e+00 %10 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFC0AA04E0000000, float %9, float 0x3FC2073EC0000000) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %9, float 0xBFBF19B980000000) #145 %12 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %9, float 0x3FC1E52AA0000000) #145 %13 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %9, float 0xBFC55B1720000000) #145 %14 = tail call float @llvm.nvvm.fma.rn.f(float %13, float %9, float 0x3FC99DA160000000) #145 %15 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %9, float 0xBFCFFFE440000000) #145 %16 = tail call float @llvm.nvvm.fma.rn.f(float %15, float %9, float 0x3FD5554F00000000) #145 %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %9, float -5.000000e-01) #145 %18 = fmul float %9, %17 %19 = tail call float @llvm.nvvm.fma.rn.f(float %18, float %9, float %9) #145 %20 = tail call float @llvm.nvvm.fma.rn.f(float %8, float 0x3FE62E4300000000, float %19) #145 %21 = icmp ugt i32 %2, 2139095039 %22 = tail call float @llvm.nvvm.fma.rn.f(float %.02, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i.0 = select i1 %21, float %22, float %20 %23 = fcmp oeq float %.02, 0.000000e+00 %r.i.1 = select i1 %23, float 0xFFF0000000000000, float %r.i.0 ret float %r.i.1 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_log10f(float %a) unnamed_addr #38 { __nv_fmaf_rn.exit10.i: %0 = fcmp olt float %a, 0x3810000000000000 %1 = fmul float %a, 0x4160000000000000 %.02 = select i1 %0, float %1, float %a %i.i.0 = select i1 %0, float -2.300000e+01, float 0.000000e+00 %2 = bitcast float %.02 to i32 %3 = add i32 %2, -1059760811 %4 = and i32 %3, -8388608 %5 = sub i32 %2, %4 %6 = bitcast i32 %5 to float %7 = sitofp i32 %4 to float %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float 0x3E80000000000000, float %i.i.0) #145 %9 = fadd float %6, -1.000000e+00 %10 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFC0AA04E0000000, float %9, float 0x3FC2073EC0000000) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %9, float 0xBFBF19B980000000) #145 %12 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %9, float 0x3FC1E52AA0000000) #145 %13 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %9, float 0xBFC55B1720000000) #145 %14 = tail call float @llvm.nvvm.fma.rn.f(float %13, float %9, float 0x3FC99DA160000000) #145 %15 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %9, float 0xBFCFFFE440000000) #145 %16 = tail call float @llvm.nvvm.fma.rn.f(float %15, float %9, float 0x3FD5554F00000000) #145 %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %9, float -5.000000e-01) #145 %18 = fmul float %9, %17 %19 = tail call float @llvm.nvvm.fma.rn.f(float %18, float %9, float %9) #145 %20 = tail call float @llvm.nvvm.fma.rn.f(float %8, float 0x3FE62E4300000000, float %19) #145 %21 = icmp ugt i32 %2, 2139095039 %22 = tail call float @llvm.nvvm.fma.rn.f(float %.02, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i.0 = select i1 %21, float %22, float %20 %23 = fcmp oeq float %.02, 0.000000e+00 %r.i.0.op = fmul float %r.i.0, 0x3FDBCB7B20000000 %24 = select i1 %23, float 0xFFF0000000000000, float %r.i.0.op ret float %24 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_log1pf(float %a) unnamed_addr #39 { __nv_fadd_rz.exit: %0 = tail call float @llvm.nvvm.add.rz.f(float %a, float 1.000000e+00) #145 %1 = bitcast float %0 to i32 %2 = add i32 %1, -1061158912 %3 = and i32 %2, -8388608 %4 = bitcast float %a to i32 %5 = sub i32 %4, %3 %6 = bitcast i32 %5 to float %7 = sub i32 1082130432, %3 %8 = bitcast i32 %7 to float %9 = tail call float @llvm.nvvm.fma.rn.f(float 2.500000e-01, float %8, float -1.000000e+00) #145 %10 = fadd float %9, %6 %11 = sitofp i32 %3 to float %12 = fmul float %11, 0x3E80000000000000 %13 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFA737EF00000000, float %10, float 0x3FBB000240000000) #145 %14 = tail call float @llvm.nvvm.fma.rn.f(float %13, float %10, float 0xBFC0EF1C00000000) #145 %15 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %10, float 0x3FC28C8EA0000000) #145 %16 = tail call float @llvm.nvvm.fma.rn.f(float %15, float %10, float 0xBFC54D1BA0000000) #145 %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %10, float 0x3FC995F3C0000000) #145 %18 = tail call float @llvm.nvvm.fma.rn.f(float %17, float %10, float 0xBFD0000840000000) #145 %19 = tail call float @llvm.nvvm.fma.rn.f(float %18, float %10, float 0x3FD5555CC0000000) #145 %20 = tail call float @llvm.nvvm.fma.rn.f(float %19, float %10, float -5.000000e-01) #145 %21 = fmul float %10, %20 %22 = tail call float @llvm.nvvm.fma.rn.f(float %21, float %10, float %10) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %12, float 0x3FE62E4300000000, float %22) #145 %24 = icmp ugt i32 %4, 2139095039 br i1 %24, label %25, label %29 25: ; preds = %__nv_fadd_rz.exit %26 = icmp sgt i32 %4, -1082130432 %27 = tail call float @llvm.nvvm.fma.rn.f(float %a, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.0 = select i1 %26, float %27, float %23 %28 = fcmp oeq float %a, 0.000000e+00 %r.1 = select i1 %28, float -0.000000e+00, float %r.0 br label %29 29: ; preds = %25, %__nv_fadd_rz.exit %r.2 = phi float [ %r.1, %25 ], [ %23, %__nv_fadd_rz.exit ] ret float %r.2 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.add.rz.f(float %0, float %1) #7 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_acoshf(float %a) unnamed_addr #40 { %1 = fadd float %a, -1.000000e+00 %2 = bitcast float %1 to i32 %3 = icmp ugt i32 %2, 1258291200 br i1 %3, label %__nv_fmaf_rn.exit10.i13, label %__nv_fmul_rz.exit __nv_fmaf_rn.exit10.i13: ; preds = %0 %4 = fcmp olt float %1, 0x3810000000000000 %5 = fmul float %1, 0x4160000000000000 %.pre = bitcast float %5 to i32 %.pre-phi = select i1 %4, i32 %.pre, i32 %2 %.021 = select i1 %4, float %5, float %1 %i.i11.0 = select i1 %4, float -2.300000e+01, float 0.000000e+00 %6 = add i32 %.pre-phi, -1059760811 %7 = and i32 %6, -8388608 %8 = sub i32 %.pre-phi, %7 %9 = bitcast i32 %8 to float %10 = sitofp i32 %7 to float %11 = tail call float @llvm.nvvm.fma.rn.f(float %10, float 0x3E80000000000000, float %i.i11.0) #145 %12 = fadd float %9, -1.000000e+00 %13 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFC0AA04E0000000, float %12, float 0x3FC2073EC0000000) #145 %14 = tail call float @llvm.nvvm.fma.rn.f(float %13, float %12, float 0xBFBF19B980000000) #145 %15 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %12, float 0x3FC1E52AA0000000) #145 %16 = tail call float @llvm.nvvm.fma.rn.f(float %15, float %12, float 0xBFC55B1720000000) #145 %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %12, float 0x3FC99DA160000000) #145 %18 = tail call float @llvm.nvvm.fma.rn.f(float %17, float %12, float 0xBFCFFFE440000000) #145 %19 = tail call float @llvm.nvvm.fma.rn.f(float %18, float %12, float 0x3FD5554F00000000) #145 %20 = tail call float @llvm.nvvm.fma.rn.f(float %19, float %12, float -5.000000e-01) #145 %21 = fmul float %12, %20 %22 = tail call float @llvm.nvvm.fma.rn.f(float %21, float %12, float %12) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %11, float 0x3FE62E4300000000, float %22) #145 %24 = icmp ugt i32 %.pre-phi, 2139095039 %25 = tail call float @llvm.nvvm.fma.rn.f(float %.021, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i10.0 = select i1 %24, float %25, float %23 %26 = fcmp oeq float %.021, 0.000000e+00 %r.i10.0.op = fadd float %r.i10.0, 0x3FE62E4300000000 %27 = select i1 %26, float 0xFFF0000000000000, float %r.i10.0.op br label %__nv_log1pf.exit __nv_fmul_rz.exit: ; preds = %0 %28 = tail call float @llvm.nvvm.mul.rz.f(float %a, float %1) #145 %29 = tail call float @llvm.nvvm.add.rn.f(float %28, float %1) #145 %30 = tail call float @llvm.nvvm.sqrt.approx.f(float %29) #145 %31 = fadd float %1, %30 %32 = tail call float @llvm.nvvm.add.rz.f(float %31, float 1.000000e+00) #145 %33 = bitcast float %32 to i32 %34 = add i32 %33, -1061158912 %35 = and i32 %34, -8388608 %36 = bitcast float %31 to i32 %37 = sub i32 %36, %35 %38 = bitcast i32 %37 to float %39 = sub i32 1082130432, %35 %40 = bitcast i32 %39 to float %41 = tail call float @llvm.nvvm.fma.rn.f(float 2.500000e-01, float %40, float -1.000000e+00) #145 %42 = fadd float %41, %38 %43 = sitofp i32 %35 to float %44 = fmul float %43, 0x3E80000000000000 %45 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFA737EF00000000, float %42, float 0x3FBB000240000000) #145 %46 = tail call float @llvm.nvvm.fma.rn.f(float %45, float %42, float 0xBFC0EF1C00000000) #145 %47 = tail call float @llvm.nvvm.fma.rn.f(float %46, float %42, float 0x3FC28C8EA0000000) #145 %48 = tail call float @llvm.nvvm.fma.rn.f(float %47, float %42, float 0xBFC54D1BA0000000) #145 %49 = tail call float @llvm.nvvm.fma.rn.f(float %48, float %42, float 0x3FC995F3C0000000) #145 %50 = tail call float @llvm.nvvm.fma.rn.f(float %49, float %42, float 0xBFD0000840000000) #145 %51 = tail call float @llvm.nvvm.fma.rn.f(float %50, float %42, float 0x3FD5555CC0000000) #145 %52 = tail call float @llvm.nvvm.fma.rn.f(float %51, float %42, float -5.000000e-01) #145 %53 = fmul float %42, %52 %54 = tail call float @llvm.nvvm.fma.rn.f(float %53, float %42, float %42) #145 %55 = tail call float @llvm.nvvm.fma.rn.f(float %44, float 0x3FE62E4300000000, float %54) #145 %56 = icmp ugt i32 %36, 2139095039 br i1 %56, label %57, label %__nv_log1pf.exit 57: ; preds = %__nv_fmul_rz.exit %58 = icmp sgt i32 %36, -1082130432 %59 = tail call float @llvm.nvvm.fma.rn.f(float %31, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i.0 = select i1 %58, float %59, float %55 %60 = fcmp oeq float %31, 0.000000e+00 %r.i.1 = select i1 %60, float -0.000000e+00, float %r.i.0 br label %__nv_log1pf.exit __nv_log1pf.exit: ; preds = %57, %__nv_fmul_rz.exit, %__nv_fmaf_rn.exit10.i13 %t.0 = phi float [ %27, %__nv_fmaf_rn.exit10.i13 ], [ %r.i.1, %57 ], [ %55, %__nv_fmul_rz.exit ] ret float %t.0 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.mul.rz.f(float %0, float %1) #7 ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_asinhf(float %a) unnamed_addr #41 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp ogt float %0, 0x47D0000000000000 br i1 %1, label %__nv_fast_logf.exit, label %__internal_fmad.exit __nv_fast_logf.exit: ; preds = %__nv_fabsf.exit %2 = tail call float @llvm.nvvm.lg2.approx.f(float %0) #145 %3 = fmul float %2, 0x3FE62E4300000000 %4 = tail call float @llvm.nvvm.add.rn.f(float 0x3FE62E4300000000, float %3) #145 br label %__nv_log1pf.exit __internal_fmad.exit: ; preds = %__nv_fabsf.exit %5 = fdiv float 1.000000e+00, %0 %6 = tail call float @llvm.nvvm.fma.rn.f(float %5, float %5, float 1.000000e+00) #145 %7 = tail call float @llvm.nvvm.sqrt.approx.f(float %6) #145 %8 = fadd float %5, %7 %9 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %8) #146, !srcloc !10 %10 = tail call float @llvm.nvvm.fma.rn.f(float %0, float %9, float %0) #145 %11 = tail call float @llvm.nvvm.add.rz.f(float %10, float 1.000000e+00) #145 %12 = bitcast float %11 to i32 %13 = add i32 %12, -1061158912 %14 = and i32 %13, -8388608 %15 = bitcast float %10 to i32 %16 = sub i32 %15, %14 %17 = bitcast i32 %16 to float %18 = sub i32 1082130432, %14 %19 = bitcast i32 %18 to float %20 = tail call float @llvm.nvvm.fma.rn.f(float 2.500000e-01, float %19, float -1.000000e+00) #145 %21 = fadd float %20, %17 %22 = sitofp i32 %14 to float %23 = fmul float %22, 0x3E80000000000000 %24 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFA737EF00000000, float %21, float 0x3FBB000240000000) #145 %25 = tail call float @llvm.nvvm.fma.rn.f(float %24, float %21, float 0xBFC0EF1C00000000) #145 %26 = tail call float @llvm.nvvm.fma.rn.f(float %25, float %21, float 0x3FC28C8EA0000000) #145 %27 = tail call float @llvm.nvvm.fma.rn.f(float %26, float %21, float 0xBFC54D1BA0000000) #145 %28 = tail call float @llvm.nvvm.fma.rn.f(float %27, float %21, float 0x3FC995F3C0000000) #145 %29 = tail call float @llvm.nvvm.fma.rn.f(float %28, float %21, float 0xBFD0000840000000) #145 %30 = tail call float @llvm.nvvm.fma.rn.f(float %29, float %21, float 0x3FD5555CC0000000) #145 %31 = tail call float @llvm.nvvm.fma.rn.f(float %30, float %21, float -5.000000e-01) #145 %32 = fmul float %21, %31 %33 = tail call float @llvm.nvvm.fma.rn.f(float %32, float %21, float %21) #145 %34 = tail call float @llvm.nvvm.fma.rn.f(float %23, float 0x3FE62E4300000000, float %33) #145 %35 = icmp ugt i32 %15, 2139095039 br i1 %35, label %36, label %__nv_log1pf.exit 36: ; preds = %__internal_fmad.exit %37 = icmp sgt i32 %15, -1082130432 %38 = tail call float @llvm.nvvm.fma.rn.f(float %10, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i2.0 = select i1 %37, float %38, float %34 %39 = fcmp oeq float %10, 0.000000e+00 %r.i2.1 = select i1 %39, float -0.000000e+00, float %r.i2.0 br label %__nv_log1pf.exit __nv_log1pf.exit: ; preds = %36, %__internal_fmad.exit, %__nv_fast_logf.exit %t.0 = phi float [ %4, %__nv_fast_logf.exit ], [ %r.i2.1, %36 ], [ %34, %__internal_fmad.exit ] %40 = fcmp ugt float %0, 0x7FF0000000000000 br i1 %40, label %47, label %41 41: ; preds = %__nv_log1pf.exit %42 = bitcast float %t.0 to i32 %43 = bitcast float %a to i32 %44 = and i32 %43, -2147483648 %45 = or i32 %44, %42 %46 = bitcast i32 %45 to float br label %47 47: ; preds = %41, %__nv_log1pf.exit %t.1 = phi float [ %46, %41 ], [ %t.0, %__nv_log1pf.exit ] ret float %t.1 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.lg2.approx.ftz.f(float %0) #19 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone willreturn declare float @llvm.nvvm.lg2.approx.f(float %0) #19 ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_atanhf(float %a) unnamed_addr #42 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fsub float 1.000000e+00, %0 %2 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %1) #146, !srcloc !10 %3 = fmul float %2, 2.000000e+00 %4 = fmul float %0, %3 %5 = fcmp ogt float %0, 0x47D0000000000000 %t.0 = select i1 %5, float -2.000000e+00, float %4 %6 = tail call float @llvm.nvvm.add.rz.f(float %t.0, float 1.000000e+00) #145 %7 = bitcast float %6 to i32 %8 = add i32 %7, -1061158912 %9 = and i32 %8, -8388608 %10 = bitcast float %t.0 to i32 %11 = sub i32 %10, %9 %12 = bitcast i32 %11 to float %13 = sub i32 1082130432, %9 %14 = bitcast i32 %13 to float %15 = tail call float @llvm.nvvm.fma.rn.f(float 2.500000e-01, float %14, float -1.000000e+00) #145 %16 = fadd float %15, %12 %17 = sitofp i32 %9 to float %18 = fmul float %17, 0x3E80000000000000 %19 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFA737EF00000000, float %16, float 0x3FBB000240000000) #145 %20 = tail call float @llvm.nvvm.fma.rn.f(float %19, float %16, float 0xBFC0EF1C00000000) #145 %21 = tail call float @llvm.nvvm.fma.rn.f(float %20, float %16, float 0x3FC28C8EA0000000) #145 %22 = tail call float @llvm.nvvm.fma.rn.f(float %21, float %16, float 0xBFC54D1BA0000000) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %22, float %16, float 0x3FC995F3C0000000) #145 %24 = tail call float @llvm.nvvm.fma.rn.f(float %23, float %16, float 0xBFD0000840000000) #145 %25 = tail call float @llvm.nvvm.fma.rn.f(float %24, float %16, float 0x3FD5555CC0000000) #145 %26 = tail call float @llvm.nvvm.fma.rn.f(float %25, float %16, float -5.000000e-01) #145 %27 = fmul float %16, %26 %28 = tail call float @llvm.nvvm.fma.rn.f(float %27, float %16, float %16) #145 %29 = tail call float @llvm.nvvm.fma.rn.f(float %18, float 0x3FE62E4300000000, float %28) #145 %30 = icmp ugt i32 %10, 2139095039 br i1 %30, label %31, label %__nv_log1pf.exit 31: ; preds = %__nv_fabsf.exit %32 = icmp sgt i32 %10, -1082130432 %33 = tail call float @llvm.nvvm.fma.rn.f(float %t.0, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i1.0 = select i1 %32, float %33, float %29 %34 = fcmp oeq float %t.0, 0.000000e+00 %r.i1.1 = select i1 %34, float -0.000000e+00, float %r.i1.0 br label %__nv_log1pf.exit __nv_log1pf.exit: ; preds = %__nv_fabsf.exit, %31 %r.i1.2 = phi float [ %r.i1.1, %31 ], [ %29, %__nv_fabsf.exit ] %35 = fmul float %r.i1.2, 5.000000e-01 %36 = tail call float @llvm.nvvm.fabs.f(float %35) #145 %37 = fcmp ugt float %36, 0x7FF0000000000000 br i1 %37, label %44, label %38 38: ; preds = %__nv_log1pf.exit %39 = bitcast float %35 to i32 %40 = bitcast float %a to i32 %41 = and i32 %40, -2147483648 %42 = or i32 %41, %39 %43 = bitcast i32 %42 to float br label %44 44: ; preds = %38, %__nv_log1pf.exit %t.1 = phi float [ %43, %38 ], [ %35, %__nv_log1pf.exit ] ret float %t.1 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_expm1f(float %a) unnamed_addr #43 { __nv_fabsf.exit: %0 = fmul float %a, 0x3FF7154760000000 %1 = tail call float @llvm.nvvm.round.f(float %0) #145 %2 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %3 = fcmp olt float %2, 0x3FDA3D70A0000000 %t.0 = select i1 %3, float 0.000000e+00, float %1 %4 = fneg float %t.0 %5 = tail call float @llvm.nvvm.fma.rn.f(float %4, float 0x3FE62E4000000000, float %a) #145 %6 = tail call float @llvm.nvvm.fma.rn.f(float %4, float 0x3EB7F7D1C0000000, float %5) #145 %7 = fcmp oeq float %t.0, 1.280000e+02 %j.0 = select i1 %7, float 1.270000e+02, float %t.0 %8 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F56BD7CC0000000, float %6, float 0x3F812ACC60000000) #145 %9 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %6, float 0x3FA5557C60000000) #145 %10 = tail call float @llvm.nvvm.fma.rn.f(float %9, float %6, float 0x3FC5553EC0000000) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %6, float 0x3FDFFFFFC0000000) #145 %12 = fmul float %6, %11 %13 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %6, float %6) #145 %14 = tail call float @llvm.nvvm.ex2.approx.f(float %j.0) #145 %15 = fadd float %14, -1.000000e+00 %16 = tail call float @llvm.nvvm.fma.rn.f(float %13, float %14, float %15) #145 %17 = select i1 %7, float %16, float -0.000000e+00 %u.0 = fadd float %16, %17 %18 = fcmp ogt float %j.0, 1.280000e+02 %u.1 = select i1 %18, float 0x7FF0000000000000, float %u.0 %19 = fcmp olt float %j.0, -2.500000e+01 %u.2 = select i1 %19, float -1.000000e+00, float %u.1 %20 = fcmp oeq float %a, 0.000000e+00 %21 = fadd float %a, %a %u.3 = select i1 %20, float %21, float %u.2 ret float %u.3 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_hypotf(float %a, float %b) unnamed_addr #44 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = tail call float @llvm.nvvm.fabs.f(float %b) #145 %2 = bitcast float %1 to i32 %3 = bitcast float %0 to i32 %4 = tail call i32 @llvm.smin.i32(i32 %2, i32 %3) %5 = bitcast i32 %4 to float %6 = tail call i32 @llvm.smax.i32(i32 %2, i32 %3) %7 = bitcast i32 %6 to float %8 = and i32 %6, -33554432 %9 = sub i32 2122317824, %8 %10 = bitcast i32 %9 to float %11 = fmul float %5, %10 %12 = fmul float %7, %10 %13 = fmul float %11, %11 %14 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %12, float %13) #145 %15 = tail call float @llvm.nvvm.sqrt.approx.f(float %14) #145 %16 = or i32 %8, 8388608 %17 = bitcast i32 %16 to float %18 = fmul float %15, %17 %19 = fcmp oeq float %5, 0.000000e+00 %res.0 = select i1 %19, float %7, float %18 %20 = fcmp oeq float %5, 0x7FF0000000000000 %res.1 = select i1 %20, float 0x7FF0000000000000, float %res.0 ret float %res.1 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_rhypotf(float %a, float %b) unnamed_addr #45 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = tail call float @llvm.nvvm.fabs.f(float %b) #145 %2 = bitcast float %1 to i32 %3 = bitcast float %0 to i32 %4 = tail call i32 @llvm.smin.i32(i32 %2, i32 %3) %5 = bitcast i32 %4 to float %6 = tail call i32 @llvm.smax.i32(i32 %2, i32 %3) %7 = bitcast i32 %6 to float %8 = and i32 %6, -33554432 %9 = sub i32 2122317824, %8 %10 = bitcast i32 %9 to float %11 = fmul float %5, %10 %12 = fmul float %7, %10 %13 = fmul float %11, %11 %14 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %12, float %13) #145 %15 = tail call float @llvm.nvvm.rsqrt.approx.f(float %14) #145 %16 = fmul float %15, %10 %17 = fcmp oeq float %5, 0x7FF0000000000000 %res.0 = select i1 %17, float 0.000000e+00, float %16 ret float %res.0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_norm3df(float %a, float %b, float %c) unnamed_addr #46 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = tail call float @llvm.nvvm.fabs.f(float %b) #145 %2 = tail call float @llvm.nvvm.fabs.f(float %c) #145 %3 = fadd float %0, %1 %4 = fadd float %3, %2 %5 = tail call float @llvm.nvvm.fmin.f(float %0, float %1) #145 %6 = tail call float @llvm.nvvm.fmax.f(float %0, float %1) #145 %7 = tail call float @llvm.nvvm.fmin.f(float %6, float %2) #145 %8 = tail call float @llvm.nvvm.fmax.f(float %6, float %2) #145 %9 = bitcast float %8 to i32 %10 = and i32 %9, -33554432 %11 = sub i32 2122317824, %10 %12 = bitcast i32 %11 to float %13 = fmul float %7, %12 %14 = fmul float %5, %12 %15 = fmul float %8, %12 %16 = fmul float %13, %13 %17 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %14, float %16) #145 %18 = tail call float @llvm.nvvm.fma.rn.f(float %15, float %15, float %17) #145 %19 = tail call float @llvm.nvvm.sqrt.approx.f(float %18) #145 %20 = or i32 %10, 8388608 %21 = bitcast i32 %20 to float %22 = fmul float %19, %21 %23 = fcmp ogt float %4, %8 %res.0 = select i1 %23, float %22, float %4 %24 = fcmp oeq float %8, 0x7FF0000000000000 %res.1 = select i1 %24, float 0x7FF0000000000000, float %res.0 ret float %res.1 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_rnorm3df(float %a, float %b, float %c) unnamed_addr #47 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = tail call float @llvm.nvvm.fabs.f(float %b) #145 %2 = tail call float @llvm.nvvm.fabs.f(float %c) #145 %3 = fadd float %0, %1 %4 = fadd float %3, %2 %5 = tail call float @llvm.nvvm.fmin.f(float %0, float %1) #145 %6 = tail call float @llvm.nvvm.fmax.f(float %0, float %1) #145 %7 = tail call float @llvm.nvvm.fmin.f(float %6, float %2) #145 %8 = tail call float @llvm.nvvm.fmax.f(float %6, float %2) #145 %9 = bitcast float %8 to i32 %10 = and i32 %9, -33554432 %11 = sub i32 2122317824, %10 %12 = bitcast i32 %11 to float %13 = fmul float %7, %12 %14 = fmul float %5, %12 %15 = fmul float %8, %12 %16 = fmul float %13, %13 %17 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %14, float %16) #145 %18 = tail call float @llvm.nvvm.fma.rn.f(float %15, float %15, float %17) #145 %19 = tail call float @llvm.nvvm.rsqrt.approx.f(float %18) #145 %20 = fmul float %19, %12 %21 = tail call float @llvm.nvvm.fabs.f(float %4) #145 %22 = fcmp ugt float %21, 0x7FF0000000000000 %res.0 = select i1 %22, float %4, float %20 %23 = fcmp oeq float %8, 0x7FF0000000000000 %res.1 = select i1 %23, float 0.000000e+00, float %res.0 ret float %res.1 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_norm4df(float %a, float %b, float %c, float %d) unnamed_addr #48 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = tail call float @llvm.nvvm.fabs.f(float %b) #145 %2 = tail call float @llvm.nvvm.fabs.f(float %c) #145 %3 = tail call float @llvm.nvvm.fabs.f(float %d) #145 %4 = fadd float %0, %1 %5 = fadd float %4, %3 %6 = fadd float %2, %5 %7 = tail call float @llvm.nvvm.fmin.f(float %0, float %1) #145 %8 = tail call float @llvm.nvvm.fmax.f(float %0, float %1) #145 %9 = tail call float @llvm.nvvm.fmin.f(float %8, float %2) #145 %10 = tail call float @llvm.nvvm.fmax.f(float %8, float %2) #145 %11 = tail call float @llvm.nvvm.fmin.f(float %10, float %3) #145 %12 = tail call float @llvm.nvvm.fmax.f(float %10, float %3) #145 %13 = bitcast float %12 to i32 %14 = and i32 %13, -33554432 %15 = sub i32 2122317824, %14 %16 = bitcast i32 %15 to float %17 = fmul float %11, %16 %18 = fmul float %9, %16 %19 = fmul float %7, %16 %20 = fmul float %12, %16 %21 = fmul float %17, %17 %22 = tail call float @llvm.nvvm.fma.rn.f(float %18, float %18, float %21) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %19, float %19, float %22) #145 %24 = tail call float @llvm.nvvm.fma.rn.f(float %20, float %20, float %23) #145 %25 = tail call float @llvm.nvvm.sqrt.approx.f(float %24) #145 %26 = or i32 %14, 8388608 %27 = bitcast i32 %26 to float %28 = fmul float %25, %27 %29 = fcmp ogt float %6, %12 %res.0 = select i1 %29, float %28, float %6 %30 = fcmp oeq float %12, 0x7FF0000000000000 %res.1 = select i1 %30, float 0x7FF0000000000000, float %res.0 ret float %res.1 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_rnorm4df(float %a, float %b, float %c, float %d) unnamed_addr #49 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = tail call float @llvm.nvvm.fabs.f(float %b) #145 %2 = tail call float @llvm.nvvm.fabs.f(float %c) #145 %3 = tail call float @llvm.nvvm.fabs.f(float %d) #145 %4 = fadd float %0, %1 %5 = fadd float %4, %3 %6 = fadd float %2, %5 %7 = tail call float @llvm.nvvm.fmin.f(float %0, float %1) #145 %8 = tail call float @llvm.nvvm.fmax.f(float %0, float %1) #145 %9 = tail call float @llvm.nvvm.fmin.f(float %8, float %2) #145 %10 = tail call float @llvm.nvvm.fmax.f(float %8, float %2) #145 %11 = tail call float @llvm.nvvm.fmin.f(float %10, float %3) #145 %12 = tail call float @llvm.nvvm.fmax.f(float %10, float %3) #145 %13 = bitcast float %12 to i32 %14 = and i32 %13, -33554432 %15 = sub i32 2122317824, %14 %16 = bitcast i32 %15 to float %17 = fmul float %11, %16 %18 = fmul float %9, %16 %19 = fmul float %7, %16 %20 = fmul float %12, %16 %21 = fmul float %17, %17 %22 = tail call float @llvm.nvvm.fma.rn.f(float %18, float %18, float %21) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %19, float %19, float %22) #145 %24 = tail call float @llvm.nvvm.fma.rn.f(float %20, float %20, float %23) #145 %25 = tail call float @llvm.nvvm.rsqrt.approx.f(float %24) #145 %26 = fmul float %25, %16 %27 = tail call float @llvm.nvvm.fabs.f(float %6) #145 %28 = fcmp ugt float %27, 0x7FF0000000000000 %res.0 = select i1 %28, float %6, float %26 %29 = fcmp oeq float %12, 0x7FF0000000000000 %res.1 = select i1 %29, float 0.000000e+00, float %res.0 ret float %res.1 } ; Function Attrs: alwaysinline argmemonly nofree nosync nounwind readonly define internal fastcc float @__nv_normf(i32 %dim, ptr nocapture readonly %t) unnamed_addr #50 { __nv_fabsf.exit: %0 = load float, ptr %t, align 4 %1 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %2 = icmp sgt i32 %dim, 1 br i1 %2, label %__nv_fabsf.exit1.preheader, label %._crit_edge __nv_fabsf.exit1.preheader: ; preds = %__nv_fabsf.exit %wide.trip.count = zext i32 %dim to i64 br label %__nv_fabsf.exit1 __nv_fabsf.exit1: ; preds = %__nv_fabsf.exit1.preheader, %__nv_fabsf.exit1 %indvars.iv = phi i64 [ 1, %__nv_fabsf.exit1.preheader ], [ %indvars.iv.next, %__nv_fabsf.exit1 ] %largest.02 = phi float [ %1, %__nv_fabsf.exit1.preheader ], [ %6, %__nv_fabsf.exit1 ] %3 = getelementptr inbounds float, ptr %t, i64 %indvars.iv %4 = load float, ptr %3, align 4 %5 = tail call float @llvm.nvvm.fabs.f(float %4) #145 %6 = tail call float @llvm.nvvm.fmax.f(float %5, float %largest.02) #145 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge.loopexit, label %__nv_fabsf.exit1 ._crit_edge.loopexit: ; preds = %__nv_fabsf.exit1 %.lcssa = phi float [ %6, %__nv_fabsf.exit1 ] br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %__nv_fabsf.exit %largest.0.lcssa = phi float [ %1, %__nv_fabsf.exit ], [ %.lcssa, %._crit_edge.loopexit ] %7 = bitcast float %largest.0.lcssa to i32 %8 = and i32 %7, -33554432 %9 = sub i32 2122317824, %8 %10 = bitcast i32 %9 to float %11 = fmul float %largest.0.lcssa, %10 %12 = icmp sgt i32 %dim, 0 br i1 %12, label %__nv_fabsf.exit5.preheader, label %__nv_fmaf_rn.exit6 __nv_fabsf.exit5.preheader: ; preds = %._crit_edge %wide.trip.count10 = zext i32 %dim to i64 br label %__nv_fabsf.exit5 __nv_fabsf.exit5: ; preds = %__nv_fabsf.exit5.preheader, %__nv_fabsf.exit5 %indvars.iv8 = phi i64 [ 0, %__nv_fabsf.exit5.preheader ], [ %indvars.iv.next9, %__nv_fabsf.exit5 ] %j.06 = phi i32 [ 0, %__nv_fabsf.exit5.preheader ], [ %j.1, %__nv_fabsf.exit5 ] %res0.04 = phi float [ 0.000000e+00, %__nv_fabsf.exit5.preheader ], [ %res0.1, %__nv_fabsf.exit5 ] %13 = getelementptr inbounds float, ptr %t, i64 %indvars.iv8 %14 = load float, ptr %13, align 4 %15 = tail call float @llvm.nvvm.fabs.f(float %14) #145 %16 = fmul float %15, %10 %17 = fcmp une float %16, %11 %18 = zext i32 %j.06 to i64 %19 = icmp ne i64 %indvars.iv8, %18 %or.cond = select i1 %17, i1 true, i1 %19 %20 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %16, float %res0.04) #145 %21 = add nsw i32 %j.06, 1 %res0.1 = select i1 %or.cond, float %20, float %res0.04 %22 = trunc i64 %indvars.iv8 to i32 %j.1 = select i1 %or.cond, i32 %21, i32 %22 %indvars.iv.next9 = add nuw nsw i64 %indvars.iv8, 1 %exitcond11.not = icmp eq i64 %indvars.iv.next9, %wide.trip.count10 br i1 %exitcond11.not, label %__nv_fmaf_rn.exit6.loopexit, label %__nv_fabsf.exit5 __nv_fmaf_rn.exit6.loopexit: ; preds = %__nv_fabsf.exit5 %res0.1.lcssa = phi float [ %res0.1, %__nv_fabsf.exit5 ] br label %__nv_fmaf_rn.exit6 __nv_fmaf_rn.exit6: ; preds = %__nv_fmaf_rn.exit6.loopexit, %._crit_edge %res0.0.lcssa = phi float [ 0.000000e+00, %._crit_edge ], [ %res0.1.lcssa, %__nv_fmaf_rn.exit6.loopexit ] %23 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %11, float %res0.0.lcssa) #145 %24 = tail call float @llvm.nvvm.sqrt.approx.f(float %23) #145 %25 = or i32 %8, 8388608 %26 = bitcast i32 %25 to float %27 = fmul float %24, %26 %28 = fcmp oeq float %res0.0.lcssa, 0.000000e+00 %29 = fcmp oeq float %largest.0.lcssa, 0x7FF0000000000000 %or.cond1 = select i1 %28, i1 true, i1 %29 %res.0 = select i1 %or.cond1, float %largest.0.lcssa, float %27 ret float %res.0 } ; Function Attrs: alwaysinline argmemonly nofree nosync nounwind readonly define internal fastcc float @__nv_rnormf(i32 %dim, ptr nocapture readonly %t) unnamed_addr #51 { __nv_fabsf.exit: %0 = load float, ptr %t, align 4 %1 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %2 = icmp sgt i32 %dim, 1 br i1 %2, label %__nv_fabsf.exit1.preheader, label %._crit_edge __nv_fabsf.exit1.preheader: ; preds = %__nv_fabsf.exit %wide.trip.count = zext i32 %dim to i64 br label %__nv_fabsf.exit1 __nv_fabsf.exit1: ; preds = %__nv_fabsf.exit1.preheader, %__nv_fabsf.exit1 %indvars.iv = phi i64 [ 1, %__nv_fabsf.exit1.preheader ], [ %indvars.iv.next, %__nv_fabsf.exit1 ] %largest.01 = phi float [ %1, %__nv_fabsf.exit1.preheader ], [ %6, %__nv_fabsf.exit1 ] %3 = getelementptr inbounds float, ptr %t, i64 %indvars.iv %4 = load float, ptr %3, align 4 %5 = tail call float @llvm.nvvm.fabs.f(float %4) #145 %6 = tail call float @llvm.nvvm.fmax.f(float %5, float %largest.01) #145 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge.loopexit, label %__nv_fabsf.exit1 ._crit_edge.loopexit: ; preds = %__nv_fabsf.exit1 %.lcssa = phi float [ %6, %__nv_fabsf.exit1 ] br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %__nv_fabsf.exit %largest.0.lcssa = phi float [ %1, %__nv_fabsf.exit ], [ %.lcssa, %._crit_edge.loopexit ] %7 = bitcast float %largest.0.lcssa to i32 %8 = and i32 %7, -33554432 %9 = sub i32 2122317824, %8 %10 = bitcast i32 %9 to float %11 = fmul float %largest.0.lcssa, %10 %12 = icmp sgt i32 %dim, 0 br i1 %12, label %__nv_fabsf.exit4.preheader, label %__nv_fmaf_rn.exit __nv_fabsf.exit4.preheader: ; preds = %._crit_edge %wide.trip.count9 = zext i32 %dim to i64 br label %__nv_fabsf.exit4 __nv_fabsf.exit4: ; preds = %__nv_fabsf.exit4.preheader, %__nv_fabsf.exit4 %indvars.iv7 = phi i64 [ 0, %__nv_fabsf.exit4.preheader ], [ %indvars.iv.next8, %__nv_fabsf.exit4 ] %j.05 = phi i32 [ 0, %__nv_fabsf.exit4.preheader ], [ %j.1, %__nv_fabsf.exit4 ] %res0.03 = phi float [ 0.000000e+00, %__nv_fabsf.exit4.preheader ], [ %res0.1, %__nv_fabsf.exit4 ] %13 = getelementptr inbounds float, ptr %t, i64 %indvars.iv7 %14 = load float, ptr %13, align 4 %15 = tail call float @llvm.nvvm.fabs.f(float %14) #145 %16 = fmul float %15, %10 %17 = fcmp une float %16, %11 %18 = zext i32 %j.05 to i64 %19 = icmp ne i64 %indvars.iv7, %18 %or.cond = select i1 %17, i1 true, i1 %19 %20 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %16, float %res0.03) #145 %21 = add nsw i32 %j.05, 1 %res0.1 = select i1 %or.cond, float %20, float %res0.03 %22 = trunc i64 %indvars.iv7 to i32 %j.1 = select i1 %or.cond, i32 %21, i32 %22 %indvars.iv.next8 = add nuw nsw i64 %indvars.iv7, 1 %exitcond10.not = icmp eq i64 %indvars.iv.next8, %wide.trip.count9 br i1 %exitcond10.not, label %__nv_fmaf_rn.exit.loopexit, label %__nv_fabsf.exit4 __nv_fmaf_rn.exit.loopexit: ; preds = %__nv_fabsf.exit4 %res0.1.lcssa = phi float [ %res0.1, %__nv_fabsf.exit4 ] br label %__nv_fmaf_rn.exit __nv_fmaf_rn.exit: ; preds = %__nv_fmaf_rn.exit.loopexit, %._crit_edge %res0.0.lcssa = phi float [ 0.000000e+00, %._crit_edge ], [ %res0.1.lcssa, %__nv_fmaf_rn.exit.loopexit ] %23 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %11, float %res0.0.lcssa) #145 %24 = tail call float @llvm.nvvm.rsqrt.approx.f(float %23) #145 %25 = fmul float %24, %10 %26 = fcmp oeq float %largest.0.lcssa, 0x7FF0000000000000 %res.0 = select i1 %26, float 0.000000e+00, float %25 ret float %res.0 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_cbrtf(float %a) unnamed_addr #52 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = tail call float @llvm.nvvm.lg2.approx.f(float %0) #145 %2 = fmul float %1, 0x3FD5555560000000 %3 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %2) #145 %4 = fmul float %3, %3 %5 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %4) #146, !srcloc !10 %6 = fneg float %0 %7 = tail call float @llvm.nvvm.fma.rn.f(float %5, float %6, float %3) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float 0xBFD5555560000000, float %3) #145 %9 = fcmp olt float %a, 0.000000e+00 %10 = fneg float %8 %t.0 = select i1 %9, float %10, float %8 %11 = fadd float %a, %a %12 = fcmp oeq float %11, %a %t.1 = select i1 %12, float %11, float %t.0 ret float %t.1 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_rcbrtf(float %a) unnamed_addr #53 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = tail call float @llvm.nvvm.lg2.approx.f(float %0) #145 %2 = fmul float %1, 0xBFD5555560000000 %3 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %2) #145 %4 = fmul float %3, %3 %5 = fneg float %0 %6 = fmul float %3, %5 %7 = tail call float @llvm.nvvm.fma.rn.f(float %4, float %6, float 1.000000e+00) #145 %8 = fmul float %3, 0x3FD5555560000000 %9 = tail call float @llvm.nvvm.fma.rn.f(float %7, float %8, float %3) #145 %10 = fcmp olt float %a, 0.000000e+00 %11 = fneg float %9 %t.0 = select i1 %10, float %11, float %9 %12 = fadd float %a, %a %13 = fcmp oeq float %12, %a br i1 %13, label %14, label %16 14: ; preds = %__nv_fabsf.exit %15 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %a) #146, !srcloc !10 br label %16 16: ; preds = %14, %__nv_fabsf.exit %t.1 = phi float [ %15, %14 ], [ %t.0, %__nv_fabsf.exit ] ret float %t.1 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_j0f(float %a) unnamed_addr #54 { __nv_fabsf.exit: %result.i.i.i = alloca [7 x i32], align 4 %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp ugt float %0, 8.000000e+00 br i1 %1, label %__nv_isinff.exit, label %__internal_fmad.exit __internal_fmad.exit: ; preds = %__nv_fabsf.exit %2 = fadd float %0, 0xC0033D1520000000 %3 = fadd float %2, 0xBE7D2E3660000000 %4 = tail call float @llvm.nvvm.fma.rn.f(float 0xBCD6771CE0000000, float %3, float 0xBD35953660000000) #145 %5 = tail call float @llvm.nvvm.fma.rn.f(float %4, float %3, float 0x3D87E1C300000000) #145 %6 = tail call float @llvm.nvvm.fma.rn.f(float %5, float %3, float 0xBD9A82F020000000) #145 %7 = tail call float @llvm.nvvm.fma.rn.f(float %6, float %3, float 0xBDFD21E700000000) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float %3, float 0x3E04060B60000000) #145 %9 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %3, float 0x3E6F2E2860000000) #145 %10 = tail call float @llvm.nvvm.fma.rn.f(float %9, float %3, float 0x3E1EEDF0A0000000) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %3, float 0xBED6DBF8C0000000) #145 %12 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %3, float 0xBEDECCB920000000) #145 %13 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %3, float 0x3F33C5BD60000000) #145 %14 = tail call float @llvm.nvvm.fma.rn.f(float %13, float %3, float 0x3F495C6680000000) #145 %15 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %3, float 0xBF7DD54360000000) #145 %16 = tail call float @llvm.nvvm.fma.rn.f(float %15, float %3, float 0xBF9B4EE8E0000000) #145 %17 = fmul float %3, %16 %18 = fadd float %0, 0xC016148F60000000 %19 = fadd float %18, 0x3E734F46E0000000 %20 = fmul float %19, %17 %21 = fadd float %0, 0xC0214EB560000000 %22 = fadd float %21, 0xBE9999BDA0000000 %23 = fmul float %22, %20 br label %128 __nv_isinff.exit: ; preds = %__nv_fabsf.exit %24 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %25 = fcmp oeq float %24, 0x7FF0000000000000 br i1 %25, label %128, label %__internal_fmad.exit13 __internal_fmad.exit13: ; preds = %__nv_isinff.exit %26 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %0) #146, !srcloc !10 %27 = fmul float %26, %26 %28 = tail call float @llvm.nvvm.fma.rn.f(float 0x400ADFD260000000, float %27, float 0xBFE076F840000000) #145 %29 = tail call float @llvm.nvvm.fma.rn.f(float %28, float %27, float 0x3FBA767E60000000) #145 %30 = tail call float @llvm.nvvm.fma.rn.f(float %29, float %27, float 0xBFAFFFF6C0000000) #145 %31 = tail call float @llvm.nvvm.fma.rn.f(float %30, float %27, float 1.000000e+00) #145 %32 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FF23C0120000000, float %27, float 0xBFCA4825A0000000) #145 %33 = tail call float @llvm.nvvm.fma.rn.f(float %32, float %27, float 0x3FB0A9DA20000000) #145 %34 = tail call float @llvm.nvvm.fma.rn.f(float %33, float %27, float 0xBFBFFFFFE0000000) #145 %35 = tail call float @llvm.nvvm.fma.rn.f(float %34, float %26, float %0) #145 %36 = tail call float @llvm.nvvm.rsqrt.approx.f(float %0) #145 %37 = fmul float %36, 0x3FE9884540000000 %38 = fmul float %37, %31 %39 = fmul float %35, 0x3FE45F3060000000 %40 = tail call i32 @llvm.nvvm.f2i.rn(float %39) #145 %41 = sitofp i32 %40 to float %42 = tail call float @llvm.nvvm.fma.rn.f(float %41, float 0xBFF921FB40000000, float %35) #145 %43 = tail call float @llvm.nvvm.fma.rn.f(float %41, float 0xBE74442D00000000, float %42) #145 %44 = tail call float @llvm.nvvm.fma.rn.f(float %41, float 0xBCF84698A0000000, float %43) #145 %45 = tail call float @llvm.nvvm.fabs.f(float %35) #145 %46 = fcmp ult float %45, 1.056150e+05 br i1 %46, label %__internal_trig_reduction_kernel.exit.i, label %__nv_isinff.exit.i.i __nv_isinff.exit.i.i: ; preds = %__internal_fmad.exit13 %47 = fcmp oeq float %45, 0x7FF0000000000000 br i1 %47, label %__nv_fmul_rn.exit.i.i, label %49 __nv_fmul_rn.exit.i.i: ; preds = %__nv_isinff.exit.i.i %48 = tail call float @llvm.nvvm.mul.rn.f(float %35, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i 49: ; preds = %__nv_isinff.exit.i.i %50 = bitcast float %35 to i32 %51 = lshr i32 %50, 23 %52 = and i32 %51, 255 %53 = add nsw i32 %52, -128 %54 = shl i32 %50, 8 %55 = or i32 %54, -2147483648 %56 = lshr i32 %53, 5 br label %57 57: ; preds = %49, %57 %indvars.iv = phi i64 [ 0, %49 ], [ %indvars.iv.next, %57 ] %hi.i.i.i.09 = phi i32 [ 0, %49 ], [ %62, %57 ] %58 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv %59 = load i32, ptr addrspace(1) %58, align 4 %60 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %59, i32 %55, i32 %hi.i.i.i.09) #146, !srcloc !11 %61 = extractvalue { i32, i32 } %60, 0 %62 = extractvalue { i32, i32 } %60, 1 %63 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %indvars.iv store i32 %61, ptr %63, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 6 br i1 %exitcond.not, label %64, label %57, !llvm.loop !12 64: ; preds = %57 %.lcssa = phi i32 [ %62, %57 ] %65 = and i32 %50, -2147483648 %66 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 6 store i32 %.lcssa, ptr %66, align 4 %67 = and i32 %51, 31 %68 = sub nsw i32 6, %56 %69 = sext i32 %68 to i64 %70 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %69 %71 = load i32, ptr %70, align 4 %72 = sub nsw i32 5, %56 %73 = sext i32 %72 to i64 %74 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %73 %75 = load i32, ptr %74, align 4 %.not4 = icmp eq i32 %67, 0 br i1 %.not4, label %__internal_trig_reduction_slowpath.exit.i.i, label %76 76: ; preds = %64 %77 = sub nsw i32 4, %56 %78 = sub nuw nsw i32 32, %67 %79 = shl i32 %71, %67 %80 = lshr i32 %75, %78 %81 = add i32 %80, %79 %82 = shl i32 %75, %67 %83 = sext i32 %77 to i64 %84 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %83 %85 = load i32, ptr %84, align 4 %86 = lshr i32 %85, %78 %87 = add i32 %86, %82 br label %__internal_trig_reduction_slowpath.exit.i.i __internal_trig_reduction_slowpath.exit.i.i: ; preds = %76, %64 %hi.i.i.i.1 = phi i32 [ %81, %76 ], [ %71, %64 ] %lo.i.i.i.0 = phi i32 [ %87, %76 ], [ %75, %64 ] %88 = lshr i32 %hi.i.i.i.1, 30 %89 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.1, i32 %lo.i.i.i.0, i32 2) %90 = shl i32 %lo.i.i.i.0, 2 %91 = lshr i32 %89, 31 %92 = add nuw nsw i32 %91, %88 %.not5 = icmp eq i32 %65, 0 %93 = sub nsw i32 0, %92 %spec.select = select i1 %.not5, i32 %92, i32 %93 %.not6 = icmp sgt i32 %89, -1 %94 = xor i32 %65, -2147483648 %s.i.i.i.0 = select i1 %.not6, i32 %65, i32 %94 %not..not6 = xor i1 %.not6, true %95 = sext i1 %not..not6 to i32 %hi.i.i.i.2 = xor i32 %89, %95 %lo.i.i.i.1 = xor i32 %90, %95 %96 = zext i32 %hi.i.i.i.2 to i64 %97 = shl nuw i64 %96, 32 %98 = zext i32 %lo.i.i.i.1 to i64 %99 = or i64 %97, %98 %100 = sitofp i64 %99 to double %101 = fmul double %100, 0x3BF921FB54442D19 %102 = fptrunc double %101 to float %.not8 = icmp eq i32 %s.i.i.i.0, 0 %103 = fneg float %102 %r.i.i.i.0 = select i1 %.not8, float %102, float %103 br label %__internal_trig_reduction_kernel.exit.i __internal_trig_reduction_kernel.exit.i: ; preds = %__nv_fmul_rn.exit.i.i, %__internal_trig_reduction_slowpath.exit.i.i, %__internal_fmad.exit13 %i.i.1 = phi i32 [ %40, %__internal_fmad.exit13 ], [ 0, %__nv_fmul_rn.exit.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i ] %t.i.i.1 = phi float [ %44, %__internal_fmad.exit13 ], [ %48, %__nv_fmul_rn.exit.i.i ], [ %r.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i ] %104 = and i32 %i.i.1, 3 %105 = uitofp i32 %104 to float %106 = tail call float @llvm.nvvm.fma.rn.f(float %105, float 0x3FF921FB60000000, float 0xBFE921FB60000000) #145 %107 = fadd float %t.i.i.1, %106 %108 = fmul float %107, 0x3FE45F3060000000 %109 = tail call i32 @llvm.nvvm.f2i.rn(float %108) #145 %110 = sitofp i32 %109 to float %111 = tail call float @llvm.nvvm.fma.rn.f(float %110, float 0xBFF921FB40000000, float %107) #145 %112 = tail call float @llvm.nvvm.fma.rn.f(float %110, float 0xBE74442D00000000, float %111) #145 %113 = add i32 %109, 1 %114 = tail call float @llvm.nvvm.mul.rn.f(float %112, float %112) #145 %115 = and i32 %113, 1 %.not = icmp eq i32 %115, 0 %116 = select i1 %.not, float %112, float 1.000000e+00 %117 = tail call float @llvm.nvvm.fma.rn.f(float %114, float %116, float 0.000000e+00) #145 %118 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %114, float 0xBF56C0FDA0000000) #145 %119 = select i1 %.not, float 0xBF29A82A60000000, float %118 %120 = select i1 %.not, float 0x3F8110BC80000000, float 0x3FA5555760000000 %121 = tail call float @llvm.nvvm.fma.rn.f(float %119, float %114, float %120) #145 %122 = select i1 %.not, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %123 = tail call float @llvm.nvvm.fma.rn.f(float %121, float %114, float %122) #145 %124 = tail call float @llvm.nvvm.fma.rn.f(float %123, float %117, float %116) #145 %125 = and i32 %113, 2 %.not3 = icmp eq i32 %125, 0 %126 = tail call float @llvm.nvvm.fma.rn.f(float %124, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i.0 = select i1 %.not3, float %124, float %126 %127 = fmul float %38, %z.i.i.0 br label %128 128: ; preds = %__internal_trig_reduction_kernel.exit.i, %__nv_isinff.exit, %__internal_fmad.exit %r.1 = phi float [ %23, %__internal_fmad.exit ], [ %127, %__internal_trig_reduction_kernel.exit.i ], [ 0.000000e+00, %__nv_isinff.exit ] ret float %r.1 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_j1f(float %a) unnamed_addr #55 { __nv_fabsf.exit: %result.i.i.i = alloca [7 x i32], align 4 %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp ugt float %0, 8.000000e+00 br i1 %1, label %__nv_isinff.exit, label %__internal_fmad.exit __internal_fmad.exit: ; preds = %__nv_fabsf.exit %2 = fadd float %0, 0xC00EA75580000000 %3 = fadd float %2, 0x3E74A121E0000000 %4 = tail call float @llvm.nvvm.fma.rn.f(float 0x3D35E68C60000000, float %3, float 0x3D7037E840000000) #145 %5 = tail call float @llvm.nvvm.fma.rn.f(float %4, float %3, float 0xBDBC43D820000000) #145 %6 = tail call float @llvm.nvvm.fma.rn.f(float %5, float %3, float 0xBDEBBBDFE0000000) #145 %7 = tail call float @llvm.nvvm.fma.rn.f(float %6, float %3, float 0x3E336193A0000000) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float %3, float 0x3E5D022E60000000) #145 %9 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %3, float 0xBEA1F1B900000000) #145 %10 = tail call float @llvm.nvvm.fma.rn.f(float %9, float %3, float 0xBEC3CCA7A0000000) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %3, float 0x3F059B38A0000000) #145 %12 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %3, float 0x3F1F3D6200000000) #145 %13 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %3, float 0xBF5D9D7380000000) #145 %14 = tail call float @llvm.nvvm.fma.rn.f(float %13, float %3, float 0xBF64EDFFA0000000) #145 %15 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %3, float 0x3FA0E73260000000) #145 %16 = fadd float %0, 0xC01C0FF600000000 %17 = fadd float %16, 0x3E88971B60000000 %18 = fmul float %17, %15 %19 = fmul float %3, %18 %20 = fmul float %0, %19 br label %125 __nv_isinff.exit: ; preds = %__nv_fabsf.exit %21 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %22 = fcmp oeq float %21, 0x7FF0000000000000 br i1 %22, label %125, label %__internal_fmad.exit12 __internal_fmad.exit12: ; preds = %__nv_isinff.exit %23 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %0) #146, !srcloc !10 %24 = fmul float %23, %23 %25 = tail call float @llvm.nvvm.fma.rn.f(float 0xC0105966E0000000, float %24, float 0x3FE7FEFD20000000) #145 %26 = tail call float @llvm.nvvm.fma.rn.f(float %25, float %24, float 0xBFC8B175C0000000) #145 %27 = tail call float @llvm.nvvm.fma.rn.f(float %26, float %24, float 0x3FC7FFF160000000) #145 %28 = tail call float @llvm.nvvm.fma.rn.f(float %27, float %24, float 1.000000e+00) #145 %29 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFF9477440000000, float %24, float 0x3FD72295A0000000) #145 %30 = tail call float @llvm.nvvm.fma.rn.f(float %29, float %24, float 0xBFC4FE5D80000000) #145 %31 = tail call float @llvm.nvvm.fma.rn.f(float %30, float %24, float 0x3FD7FFFFA0000000) #145 %32 = tail call float @llvm.nvvm.fma.rn.f(float %31, float %23, float %0) #145 %33 = tail call float @llvm.nvvm.rsqrt.approx.f(float %0) #145 %34 = fmul float %33, 0x3FE9884540000000 %35 = fmul float %34, %28 %36 = fmul float %32, 0x3FE45F3060000000 %37 = tail call i32 @llvm.nvvm.f2i.rn(float %36) #145 %38 = sitofp i32 %37 to float %39 = tail call float @llvm.nvvm.fma.rn.f(float %38, float 0xBFF921FB40000000, float %32) #145 %40 = tail call float @llvm.nvvm.fma.rn.f(float %38, float 0xBE74442D00000000, float %39) #145 %41 = tail call float @llvm.nvvm.fma.rn.f(float %38, float 0xBCF84698A0000000, float %40) #145 %42 = tail call float @llvm.nvvm.fabs.f(float %32) #145 %43 = fcmp ult float %42, 1.056150e+05 br i1 %43, label %__internal_trig_reduction_kernel.exit.i, label %__nv_isinff.exit.i.i __nv_isinff.exit.i.i: ; preds = %__internal_fmad.exit12 %44 = fcmp oeq float %42, 0x7FF0000000000000 br i1 %44, label %__nv_fmul_rn.exit.i.i, label %46 __nv_fmul_rn.exit.i.i: ; preds = %__nv_isinff.exit.i.i %45 = tail call float @llvm.nvvm.mul.rn.f(float %32, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i 46: ; preds = %__nv_isinff.exit.i.i %47 = bitcast float %32 to i32 %48 = lshr i32 %47, 23 %49 = and i32 %48, 255 %50 = add nsw i32 %49, -128 %51 = shl i32 %47, 8 %52 = or i32 %51, -2147483648 %53 = lshr i32 %50, 5 br label %54 54: ; preds = %46, %54 %indvars.iv = phi i64 [ 0, %46 ], [ %indvars.iv.next, %54 ] %hi.i.i.i.09 = phi i32 [ 0, %46 ], [ %59, %54 ] %55 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv %56 = load i32, ptr addrspace(1) %55, align 4 %57 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %56, i32 %52, i32 %hi.i.i.i.09) #146, !srcloc !11 %58 = extractvalue { i32, i32 } %57, 0 %59 = extractvalue { i32, i32 } %57, 1 %60 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %indvars.iv store i32 %58, ptr %60, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 6 br i1 %exitcond.not, label %61, label %54, !llvm.loop !12 61: ; preds = %54 %.lcssa = phi i32 [ %59, %54 ] %62 = and i32 %47, -2147483648 %63 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 6 store i32 %.lcssa, ptr %63, align 4 %64 = and i32 %48, 31 %65 = sub nsw i32 6, %53 %66 = sext i32 %65 to i64 %67 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %66 %68 = load i32, ptr %67, align 4 %69 = sub nsw i32 5, %53 %70 = sext i32 %69 to i64 %71 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %70 %72 = load i32, ptr %71, align 4 %.not4 = icmp eq i32 %64, 0 br i1 %.not4, label %__internal_trig_reduction_slowpath.exit.i.i, label %73 73: ; preds = %61 %74 = sub nsw i32 4, %53 %75 = sub nuw nsw i32 32, %64 %76 = shl i32 %68, %64 %77 = lshr i32 %72, %75 %78 = add i32 %77, %76 %79 = shl i32 %72, %64 %80 = sext i32 %74 to i64 %81 = getelementptr inbounds [7 x i32], ptr %result.i.i.i, i64 0, i64 %80 %82 = load i32, ptr %81, align 4 %83 = lshr i32 %82, %75 %84 = add i32 %83, %79 br label %__internal_trig_reduction_slowpath.exit.i.i __internal_trig_reduction_slowpath.exit.i.i: ; preds = %73, %61 %hi.i.i.i.1 = phi i32 [ %78, %73 ], [ %68, %61 ] %lo.i.i.i.0 = phi i32 [ %84, %73 ], [ %72, %61 ] %85 = lshr i32 %hi.i.i.i.1, 30 %86 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.1, i32 %lo.i.i.i.0, i32 2) %87 = shl i32 %lo.i.i.i.0, 2 %88 = lshr i32 %86, 31 %89 = add nuw nsw i32 %88, %85 %.not5 = icmp eq i32 %62, 0 %90 = sub nsw i32 0, %89 %spec.select = select i1 %.not5, i32 %89, i32 %90 %.not6 = icmp sgt i32 %86, -1 %91 = xor i32 %62, -2147483648 %s.i.i.i.0 = select i1 %.not6, i32 %62, i32 %91 %not..not6 = xor i1 %.not6, true %92 = sext i1 %not..not6 to i32 %hi.i.i.i.2 = xor i32 %86, %92 %lo.i.i.i.1 = xor i32 %87, %92 %93 = zext i32 %hi.i.i.i.2 to i64 %94 = shl nuw i64 %93, 32 %95 = zext i32 %lo.i.i.i.1 to i64 %96 = or i64 %94, %95 %97 = sitofp i64 %96 to double %98 = fmul double %97, 0x3BF921FB54442D19 %99 = fptrunc double %98 to float %.not8 = icmp eq i32 %s.i.i.i.0, 0 %100 = fneg float %99 %r.i.i.i.0 = select i1 %.not8, float %99, float %100 br label %__internal_trig_reduction_kernel.exit.i __internal_trig_reduction_kernel.exit.i: ; preds = %__nv_fmul_rn.exit.i.i, %__internal_trig_reduction_slowpath.exit.i.i, %__internal_fmad.exit12 %i.i.1 = phi i32 [ %37, %__internal_fmad.exit12 ], [ 0, %__nv_fmul_rn.exit.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i ] %t.i.i.1 = phi float [ %41, %__internal_fmad.exit12 ], [ %45, %__nv_fmul_rn.exit.i.i ], [ %r.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i ] %101 = and i32 %i.i.1, 3 %102 = uitofp i32 %101 to float %103 = tail call float @llvm.nvvm.fma.rn.f(float %102, float 0x3FF921FB60000000, float 0xC002D97C80000000) #145 %104 = fadd float %t.i.i.1, %103 %105 = fmul float %104, 0x3FE45F3060000000 %106 = tail call i32 @llvm.nvvm.f2i.rn(float %105) #145 %107 = sitofp i32 %106 to float %108 = tail call float @llvm.nvvm.fma.rn.f(float %107, float 0xBFF921FB40000000, float %104) #145 %109 = tail call float @llvm.nvvm.fma.rn.f(float %107, float 0xBE74442D00000000, float %108) #145 %110 = add i32 %106, 1 %111 = tail call float @llvm.nvvm.mul.rn.f(float %109, float %109) #145 %112 = and i32 %110, 1 %.not = icmp eq i32 %112, 0 %113 = select i1 %.not, float %109, float 1.000000e+00 %114 = tail call float @llvm.nvvm.fma.rn.f(float %111, float %113, float 0.000000e+00) #145 %115 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %111, float 0xBF56C0FDA0000000) #145 %116 = select i1 %.not, float 0xBF29A82A60000000, float %115 %117 = select i1 %.not, float 0x3F8110BC80000000, float 0x3FA5555760000000 %118 = tail call float @llvm.nvvm.fma.rn.f(float %116, float %111, float %117) #145 %119 = select i1 %.not, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %120 = tail call float @llvm.nvvm.fma.rn.f(float %118, float %111, float %119) #145 %121 = tail call float @llvm.nvvm.fma.rn.f(float %120, float %114, float %113) #145 %122 = and i32 %110, 2 %.not3 = icmp eq i32 %122, 0 %123 = tail call float @llvm.nvvm.fma.rn.f(float %121, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i.0 = select i1 %.not3, float %121, float %123 %124 = fmul float %35, %z.i.i.0 br label %125 125: ; preds = %__internal_trig_reduction_kernel.exit.i, %__nv_isinff.exit, %__internal_fmad.exit %r.1 = phi float [ %20, %__internal_fmad.exit ], [ %124, %__internal_trig_reduction_kernel.exit.i ], [ 0.000000e+00, %__nv_isinff.exit ] %126 = fcmp olt float %a, 0.000000e+00 %127 = fneg float %r.1 %r.2 = select i1 %126, float %127, float %r.1 %128 = fcmp olt float %0, 0x39B4484C00000000 br i1 %128, label %129, label %136 129: ; preds = %125 %130 = bitcast float %a to i32 %131 = and i32 %130, -2147483648 %132 = bitcast float %r.2 to i32 %133 = and i32 %132, 2147483647 %134 = or i32 %133, %131 %135 = bitcast i32 %134 to float br label %136 136: ; preds = %129, %125 %r.3 = phi float [ %135, %129 ], [ %r.2, %125 ] ret float %r.3 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_y0f(float %a) unnamed_addr #56 { __nv_fabsf.exit: %result.i.i.i.i = alloca [7 x i32], align 4 %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp ugt float %0, 0x3FDC982EC0000000 br i1 %1, label %162, label %__internal_fmad.exit __internal_fmad.exit: ; preds = %__nv_fabsf.exit %2 = fmul float %0, %0 %3 = tail call float @llvm.nvvm.fma.rn.f(float 0x3E7B7CB580000000, float %2, float 0xBEE3E936C0000000) #145 %4 = tail call float @llvm.nvvm.fma.rn.f(float %3, float %2, float 0x3F41A62000000000) #145 %5 = tail call float @llvm.nvvm.fma.rn.f(float %4, float %2, float 0xBF9075B1C0000000) #145 %6 = tail call float @llvm.nvvm.fma.rn.f(float %5, float %2, float 0x3FC6BBCB40000000) #145 %7 = tail call float @llvm.nvvm.fma.rn.f(float %6, float %2, float 0xBFB2E4D6A0000000) #145 %8 = fcmp olt float %0, 0x3810000000000000 %9 = fmul float %0, 0x4160000000000000 %.09 = select i1 %8, float %9, float %0 %i.i.0 = select i1 %8, float -2.300000e+01, float 0.000000e+00 %10 = bitcast float %.09 to i32 %11 = add i32 %10, -1059760811 %12 = and i32 %11, -8388608 %13 = sub i32 %10, %12 %14 = bitcast i32 %13 to float %15 = sitofp i32 %12 to float %16 = tail call float @llvm.nvvm.fma.rn.f(float %15, float 0x3E80000000000000, float %i.i.0) #145 %17 = fadd float %14, -1.000000e+00 %18 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFC0AA04E0000000, float %17, float 0x3FC2073EC0000000) #145 %19 = tail call float @llvm.nvvm.fma.rn.f(float %18, float %17, float 0xBFBF19B980000000) #145 %20 = tail call float @llvm.nvvm.fma.rn.f(float %19, float %17, float 0x3FC1E52AA0000000) #145 %21 = tail call float @llvm.nvvm.fma.rn.f(float %20, float %17, float 0xBFC55B1720000000) #145 %22 = tail call float @llvm.nvvm.fma.rn.f(float %21, float %17, float 0x3FC99DA160000000) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %22, float %17, float 0xBFCFFFE440000000) #145 %24 = tail call float @llvm.nvvm.fma.rn.f(float %23, float %17, float 0x3FD5554F00000000) #145 %25 = tail call float @llvm.nvvm.fma.rn.f(float %24, float %17, float -5.000000e-01) #145 %26 = fmul float %17, %25 %27 = tail call float @llvm.nvvm.fma.rn.f(float %26, float %17, float %17) #145 %28 = tail call float @llvm.nvvm.fma.rn.f(float %16, float 0x3FE62E4300000000, float %27) #145 %29 = icmp ugt i32 %10, 2139095039 %30 = tail call float @llvm.nvvm.fma.rn.f(float %.09, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i.0 = select i1 %29, float %30, float %28 %31 = fcmp oeq float %.09, 0.000000e+00 %r.i.0.op = fmul float %r.i.0, 0x3FE45F3060000000 %32 = select i1 %31, float 0xFFF0000000000000, float %r.i.0.op %33 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %34 = fcmp ugt float %33, 8.000000e+00 br i1 %34, label %__nv_isinff.exit.i, label %__internal_fmad.exit.i __internal_fmad.exit.i: ; preds = %__internal_fmad.exit %35 = fadd float %33, 0xC0033D1520000000 %36 = fadd float %35, 0xBE7D2E3660000000 %37 = tail call float @llvm.nvvm.fma.rn.f(float 0xBCD6771CE0000000, float %36, float 0xBD35953660000000) #145 %38 = tail call float @llvm.nvvm.fma.rn.f(float %37, float %36, float 0x3D87E1C300000000) #145 %39 = tail call float @llvm.nvvm.fma.rn.f(float %38, float %36, float 0xBD9A82F020000000) #145 %40 = tail call float @llvm.nvvm.fma.rn.f(float %39, float %36, float 0xBDFD21E700000000) #145 %41 = tail call float @llvm.nvvm.fma.rn.f(float %40, float %36, float 0x3E04060B60000000) #145 %42 = tail call float @llvm.nvvm.fma.rn.f(float %41, float %36, float 0x3E6F2E2860000000) #145 %43 = tail call float @llvm.nvvm.fma.rn.f(float %42, float %36, float 0x3E1EEDF0A0000000) #145 %44 = tail call float @llvm.nvvm.fma.rn.f(float %43, float %36, float 0xBED6DBF8C0000000) #145 %45 = tail call float @llvm.nvvm.fma.rn.f(float %44, float %36, float 0xBEDECCB920000000) #145 %46 = tail call float @llvm.nvvm.fma.rn.f(float %45, float %36, float 0x3F33C5BD60000000) #145 %47 = tail call float @llvm.nvvm.fma.rn.f(float %46, float %36, float 0x3F495C6680000000) #145 %48 = tail call float @llvm.nvvm.fma.rn.f(float %47, float %36, float 0xBF7DD54360000000) #145 %49 = tail call float @llvm.nvvm.fma.rn.f(float %48, float %36, float 0xBF9B4EE8E0000000) #145 %50 = fmul float %36, %49 %51 = fadd float %33, 0xC016148F60000000 %52 = fadd float %51, 0x3E734F46E0000000 %53 = fmul float %52, %50 %54 = fadd float %33, 0xC0214EB560000000 %55 = fadd float %54, 0xBE9999BDA0000000 %56 = fmul float %55, %53 br label %__nv_j0f.exit __nv_isinff.exit.i: ; preds = %__internal_fmad.exit %57 = tail call float @llvm.nvvm.fabs.f(float %33) #145 %58 = fcmp oeq float %57, 0x7FF0000000000000 br i1 %58, label %__nv_j0f.exit, label %__internal_fmad.exit13.i __internal_fmad.exit13.i: ; preds = %__nv_isinff.exit.i %59 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %33) #146, !srcloc !10 %60 = fmul float %59, %59 %61 = tail call float @llvm.nvvm.fma.rn.f(float 0x400ADFD260000000, float %60, float 0xBFE076F840000000) #145 %62 = tail call float @llvm.nvvm.fma.rn.f(float %61, float %60, float 0x3FBA767E60000000) #145 %63 = tail call float @llvm.nvvm.fma.rn.f(float %62, float %60, float 0xBFAFFFF6C0000000) #145 %64 = tail call float @llvm.nvvm.fma.rn.f(float %63, float %60, float 1.000000e+00) #145 %65 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FF23C0120000000, float %60, float 0xBFCA4825A0000000) #145 %66 = tail call float @llvm.nvvm.fma.rn.f(float %65, float %60, float 0x3FB0A9DA20000000) #145 %67 = tail call float @llvm.nvvm.fma.rn.f(float %66, float %60, float 0xBFBFFFFFE0000000) #145 %68 = tail call float @llvm.nvvm.fma.rn.f(float %67, float %59, float %33) #145 %69 = tail call float @llvm.nvvm.rsqrt.approx.f(float %33) #145 %70 = fmul float %69, 0x3FE9884540000000 %71 = fmul float %70, %64 %72 = fmul float %68, 0x3FE45F3060000000 %73 = tail call i32 @llvm.nvvm.f2i.rn(float %72) #145 %74 = sitofp i32 %73 to float %75 = tail call float @llvm.nvvm.fma.rn.f(float %74, float 0xBFF921FB40000000, float %68) #145 %76 = tail call float @llvm.nvvm.fma.rn.f(float %74, float 0xBE74442D00000000, float %75) #145 %77 = tail call float @llvm.nvvm.fma.rn.f(float %74, float 0xBCF84698A0000000, float %76) #145 %78 = tail call float @llvm.nvvm.fabs.f(float %68) #145 %79 = fcmp ult float %78, 1.056150e+05 br i1 %79, label %__internal_trig_reduction_kernel.exit.i.i, label %__nv_isinff.exit.i.i.i __nv_isinff.exit.i.i.i: ; preds = %__internal_fmad.exit13.i %80 = fcmp oeq float %78, 0x7FF0000000000000 br i1 %80, label %__nv_fmul_rn.exit.i.i.i, label %82 __nv_fmul_rn.exit.i.i.i: ; preds = %__nv_isinff.exit.i.i.i %81 = tail call float @llvm.nvvm.mul.rn.f(float %68, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i.i 82: ; preds = %__nv_isinff.exit.i.i.i %83 = bitcast float %68 to i32 %84 = lshr i32 %83, 23 %85 = and i32 %84, 255 %86 = add nsw i32 %85, -128 %87 = shl i32 %83, 8 %88 = or i32 %87, -2147483648 %89 = lshr i32 %86, 5 br label %90 90: ; preds = %82, %90 %indvars.iv = phi i64 [ 0, %82 ], [ %indvars.iv.next, %90 ] %hi.i.i.i.i.021 = phi i32 [ 0, %82 ], [ %95, %90 ] %91 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv %92 = load i32, ptr addrspace(1) %91, align 4 %93 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %92, i32 %88, i32 %hi.i.i.i.i.021) #146, !srcloc !11 %94 = extractvalue { i32, i32 } %93, 0 %95 = extractvalue { i32, i32 } %93, 1 %96 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %indvars.iv store i32 %94, ptr %96, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 6 br i1 %exitcond.not, label %97, label %90, !llvm.loop !12 97: ; preds = %90 %.lcssa35 = phi i32 [ %95, %90 ] %98 = and i32 %83, -2147483648 %99 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 6 store i32 %.lcssa35, ptr %99, align 4 %100 = and i32 %84, 31 %101 = sub nsw i32 6, %89 %102 = sext i32 %101 to i64 %103 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %102 %104 = load i32, ptr %103, align 4 %105 = sub nsw i32 5, %89 %106 = sext i32 %105 to i64 %107 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %106 %108 = load i32, ptr %107, align 4 %.not16 = icmp eq i32 %100, 0 br i1 %.not16, label %__internal_trig_reduction_slowpath.exit.i.i.i, label %109 109: ; preds = %97 %110 = sub nsw i32 4, %89 %111 = sub nuw nsw i32 32, %100 %112 = shl i32 %104, %100 %113 = lshr i32 %108, %111 %114 = add i32 %113, %112 %115 = shl i32 %108, %100 %116 = sext i32 %110 to i64 %117 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %116 %118 = load i32, ptr %117, align 4 %119 = lshr i32 %118, %111 %120 = add i32 %119, %115 br label %__internal_trig_reduction_slowpath.exit.i.i.i __internal_trig_reduction_slowpath.exit.i.i.i: ; preds = %109, %97 %hi.i.i.i.i.1 = phi i32 [ %114, %109 ], [ %104, %97 ] %lo.i.i.i.i.0 = phi i32 [ %120, %109 ], [ %108, %97 ] %121 = lshr i32 %hi.i.i.i.i.1, 30 %122 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.1, i32 %lo.i.i.i.i.0, i32 2) %123 = shl i32 %lo.i.i.i.i.0, 2 %124 = lshr i32 %122, 31 %125 = add nuw nsw i32 %124, %121 %.not17 = icmp eq i32 %98, 0 %126 = sub nsw i32 0, %125 %spec.select = select i1 %.not17, i32 %125, i32 %126 %.not18 = icmp sgt i32 %122, -1 %127 = xor i32 %98, -2147483648 %s.i.i.i.i.0 = select i1 %.not18, i32 %98, i32 %127 %not..not18 = xor i1 %.not18, true %128 = sext i1 %not..not18 to i32 %hi.i.i.i.i.2 = xor i32 %122, %128 %lo.i.i.i.i.1 = xor i32 %123, %128 %129 = zext i32 %hi.i.i.i.i.2 to i64 %130 = shl nuw i64 %129, 32 %131 = zext i32 %lo.i.i.i.i.1 to i64 %132 = or i64 %130, %131 %133 = sitofp i64 %132 to double %134 = fmul double %133, 0x3BF921FB54442D19 %135 = fptrunc double %134 to float %.not20 = icmp eq i32 %s.i.i.i.i.0, 0 %136 = fneg float %135 %r.i.i.i.i.0 = select i1 %.not20, float %135, float %136 br label %__internal_trig_reduction_kernel.exit.i.i __internal_trig_reduction_kernel.exit.i.i: ; preds = %__nv_fmul_rn.exit.i.i.i, %__internal_trig_reduction_slowpath.exit.i.i.i, %__internal_fmad.exit13.i %i.i.i.1 = phi i32 [ %73, %__internal_fmad.exit13.i ], [ 0, %__nv_fmul_rn.exit.i.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i.i ] %t.i.i.i.1 = phi float [ %77, %__internal_fmad.exit13.i ], [ %81, %__nv_fmul_rn.exit.i.i.i ], [ %r.i.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i.i ] %137 = and i32 %i.i.i.1, 3 %138 = uitofp i32 %137 to float %139 = tail call float @llvm.nvvm.fma.rn.f(float %138, float 0x3FF921FB60000000, float 0xBFE921FB60000000) #145 %140 = fadd float %t.i.i.i.1, %139 %141 = fmul float %140, 0x3FE45F3060000000 %142 = tail call i32 @llvm.nvvm.f2i.rn(float %141) #145 %143 = sitofp i32 %142 to float %144 = tail call float @llvm.nvvm.fma.rn.f(float %143, float 0xBFF921FB40000000, float %140) #145 %145 = tail call float @llvm.nvvm.fma.rn.f(float %143, float 0xBE74442D00000000, float %144) #145 %146 = add i32 %142, 1 %147 = tail call float @llvm.nvvm.mul.rn.f(float %145, float %145) #145 %148 = and i32 %146, 1 %.not14 = icmp eq i32 %148, 0 %149 = select i1 %.not14, float %145, float 1.000000e+00 %150 = tail call float @llvm.nvvm.fma.rn.f(float %147, float %149, float 0.000000e+00) #145 %151 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %147, float 0xBF56C0FDA0000000) #145 %152 = select i1 %.not14, float 0xBF29A82A60000000, float %151 %153 = select i1 %.not14, float 0x3F8110BC80000000, float 0x3FA5555760000000 %154 = tail call float @llvm.nvvm.fma.rn.f(float %152, float %147, float %153) #145 %155 = select i1 %.not14, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %156 = tail call float @llvm.nvvm.fma.rn.f(float %154, float %147, float %155) #145 %157 = tail call float @llvm.nvvm.fma.rn.f(float %156, float %150, float %149) #145 %158 = and i32 %146, 2 %.not15 = icmp eq i32 %158, 0 %159 = tail call float @llvm.nvvm.fma.rn.f(float %157, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i.i.0 = select i1 %.not15, float %157, float %159 %160 = fmul float %71, %z.i.i.i.0 br label %__nv_j0f.exit __nv_j0f.exit: ; preds = %__internal_fmad.exit.i, %__nv_isinff.exit.i, %__internal_trig_reduction_kernel.exit.i.i %r.i5.1 = phi float [ %56, %__internal_fmad.exit.i ], [ %160, %__internal_trig_reduction_kernel.exit.i.i ], [ 0.000000e+00, %__nv_isinff.exit.i ] %161 = tail call float @llvm.nvvm.fma.rn.f(float %32, float %r.i5.1, float %7) #145 br label %309 162: ; preds = %__nv_fabsf.exit %163 = fcmp ugt float %0, 0x3FFECF5F00000000 br i1 %163, label %179, label %__internal_fmad.exit9 __internal_fmad.exit9: ; preds = %162 %164 = fadd float %0, 0xBFEC982EC0000000 %165 = fadd float %164, 0x3E4CAFA060000000 %166 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F9BB91660000000, float %165, float 0xBFC04AE980000000) #145 %167 = tail call float @llvm.nvvm.fma.rn.f(float %166, float %165, float 0x3FCFE59920000000) #145 %168 = tail call float @llvm.nvvm.fma.rn.f(float %167, float %165, float 0xBFD17E5360000000) #145 %169 = tail call float @llvm.nvvm.fma.rn.f(float %168, float %165, float 0x3FCB79D260000000) #145 %170 = tail call float @llvm.nvvm.fma.rn.f(float %169, float %165, float 0xBFC7189FE0000000) #145 %171 = tail call float @llvm.nvvm.fma.rn.f(float %170, float %165, float 0x3FC84EE9A0000000) #145 %172 = tail call float @llvm.nvvm.fma.rn.f(float %171, float %165, float 0xBFCA4B9640000000) #145 %173 = tail call float @llvm.nvvm.fma.rn.f(float %172, float %165, float 0x3FCC1E87A0000000) #145 %174 = tail call float @llvm.nvvm.fma.rn.f(float %173, float %165, float 0xBFCCF228A0000000) #145 %175 = tail call float @llvm.nvvm.fma.rn.f(float %174, float %165, float 0x3FCC3A4940000000) #145 %176 = tail call float @llvm.nvvm.fma.rn.f(float %175, float %165, float 0xBFDF7E35A0000000) #145 %177 = tail call float @llvm.nvvm.fma.rn.f(float %176, float %165, float 0x3FEC243760000000) #145 %178 = fmul float %165, %177 br label %309 179: ; preds = %162 %180 = fcmp ugt float %0, 0x40161663C0000000 br i1 %180, label %193, label %__internal_fmad.exit33 __internal_fmad.exit33: ; preds = %179 %181 = fadd float %0, 0xC00FA95340000000 %182 = fadd float %181, 0xBE7B30AD40000000 %183 = tail call float @llvm.nvvm.fma.rn.f(float 0xBE893BA7E0000000, float %182, float 0xBE8BC4C0E0000000) #145 %184 = tail call float @llvm.nvvm.fma.rn.f(float %183, float %182, float 0xBED0AE0C80000000) #145 %185 = tail call float @llvm.nvvm.fma.rn.f(float %184, float %182, float 0x3F0AA8C200000000) #145 %186 = tail call float @llvm.nvvm.fma.rn.f(float %185, float %182, float 0x3F2959DAE0000000) #145 %187 = tail call float @llvm.nvvm.fma.rn.f(float %186, float %182, float 0xBF61E34180000000) #145 %188 = tail call float @llvm.nvvm.fma.rn.f(float %187, float %182, float 0xBF7C0FE5C0000000) #145 %189 = tail call float @llvm.nvvm.fma.rn.f(float %188, float %182, float 0x3FADF6D6A0000000) #145 %190 = tail call float @llvm.nvvm.fma.rn.f(float %189, float %182, float 0x3FAA09BE20000000) #145 %191 = tail call float @llvm.nvvm.fma.rn.f(float %190, float %182, float 0xBFD9C34260000000) #145 %192 = fmul float %182, %191 br label %309 193: ; preds = %179 %194 = fcmp ugt float %0, 0x40214EF300000000 br i1 %194, label %__nv_isinff.exit, label %__internal_fmad.exit51 __internal_fmad.exit51: ; preds = %193 %195 = fadd float %0, 0xC01C581DC0000000 %196 = fadd float %195, 0xBE739C8400000000 %197 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EA219D7C0000000, float %196, float 0x3EC53B4D80000000) #145 %198 = tail call float @llvm.nvvm.fma.rn.f(float %197, float %196, float 0xBF080A9800000000) #145 %199 = tail call float @llvm.nvvm.fma.rn.f(float %198, float %196, float 0xBF22631560000000) #145 %200 = tail call float @llvm.nvvm.fma.rn.f(float %199, float %196, float 0x3F61D32420000000) #145 %201 = tail call float @llvm.nvvm.fma.rn.f(float %200, float %196, float 0x3F6B2E9AA0000000) #145 %202 = tail call float @llvm.nvvm.fma.rn.f(float %201, float %196, float 0xBFA8969AE0000000) #145 %203 = tail call float @llvm.nvvm.fma.rn.f(float %202, float %196, float 0xBF95AEF320000000) #145 %204 = tail call float @llvm.nvvm.fma.rn.f(float %203, float %196, float 0x3FD334CCA0000000) #145 %205 = fmul float %196, %204 br label %309 __nv_isinff.exit: ; preds = %193 %206 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %207 = fcmp oeq float %206, 0x7FF0000000000000 br i1 %207, label %309, label %__internal_fmad.exit70 __internal_fmad.exit70: ; preds = %__nv_isinff.exit %208 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %0) #146, !srcloc !10 %209 = fmul float %208, %208 %210 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFD98D3E60000000, float %209, float 0x3FBA1ABE00000000) #145 %211 = tail call float @llvm.nvvm.fma.rn.f(float %210, float %209, float 0xBFAFFF0AA0000000) #145 %212 = tail call float @llvm.nvvm.fma.rn.f(float %211, float %209, float 1.000000e+00) #145 %213 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FF199AC20000000, float %209, float 0xBFCA1A6380000000) #145 %214 = tail call float @llvm.nvvm.fma.rn.f(float %213, float %209, float 0x3FB0A8F060000000) #145 %215 = tail call float @llvm.nvvm.fma.rn.f(float %214, float %209, float 0xBFBFFFFF60000000) #145 %216 = tail call float @llvm.nvvm.fma.rn.f(float %215, float %208, float %0) #145 %217 = tail call float @llvm.nvvm.rsqrt.approx.f(float %0) #145 %218 = fmul float %217, 0x3FE9884540000000 %219 = fmul float %218, %212 %220 = fmul float %216, 0x3FE45F3060000000 %221 = tail call i32 @llvm.nvvm.f2i.rn(float %220) #145 %222 = sitofp i32 %221 to float %223 = tail call float @llvm.nvvm.fma.rn.f(float %222, float 0xBFF921FB40000000, float %216) #145 %224 = tail call float @llvm.nvvm.fma.rn.f(float %222, float 0xBE74442D00000000, float %223) #145 %225 = tail call float @llvm.nvvm.fma.rn.f(float %222, float 0xBCF84698A0000000, float %224) #145 %226 = tail call float @llvm.nvvm.fabs.f(float %216) #145 %227 = fcmp ult float %226, 1.056150e+05 br i1 %227, label %__internal_trig_reduction_kernel.exit.i, label %__nv_isinff.exit.i.i __nv_isinff.exit.i.i: ; preds = %__internal_fmad.exit70 %228 = fcmp oeq float %226, 0x7FF0000000000000 br i1 %228, label %__nv_fmul_rn.exit.i.i, label %230 __nv_fmul_rn.exit.i.i: ; preds = %__nv_isinff.exit.i.i %229 = tail call float @llvm.nvvm.mul.rn.f(float %216, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i 230: ; preds = %__nv_isinff.exit.i.i %231 = bitcast float %216 to i32 %232 = lshr i32 %231, 23 %233 = and i32 %232, 255 %234 = add nsw i32 %233, -128 %235 = shl i32 %231, 8 %236 = or i32 %235, -2147483648 %237 = lshr i32 %234, 5 br label %238 238: ; preds = %230, %238 %indvars.iv29 = phi i64 [ 0, %230 ], [ %indvars.iv.next30, %238 ] %hi.i.i.i.024 = phi i32 [ 0, %230 ], [ %243, %238 ] %239 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv29 %240 = load i32, ptr addrspace(1) %239, align 4 %241 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %240, i32 %236, i32 %hi.i.i.i.024) #146, !srcloc !11 %242 = extractvalue { i32, i32 } %241, 0 %243 = extractvalue { i32, i32 } %241, 1 %244 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %indvars.iv29 store i32 %242, ptr %244, align 4 %indvars.iv.next30 = add nuw nsw i64 %indvars.iv29, 1 %exitcond31.not = icmp eq i64 %indvars.iv.next30, 6 br i1 %exitcond31.not, label %245, label %238, !llvm.loop !12 245: ; preds = %238 %.lcssa = phi i32 [ %243, %238 ] %246 = and i32 %231, -2147483648 %247 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 6 store i32 %.lcssa, ptr %247, align 4 %248 = and i32 %232, 31 %249 = sub nsw i32 6, %237 %250 = sext i32 %249 to i64 %251 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %250 %252 = load i32, ptr %251, align 4 %253 = sub nsw i32 5, %237 %254 = sext i32 %253 to i64 %255 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %254 %256 = load i32, ptr %255, align 4 %.not9 = icmp eq i32 %248, 0 br i1 %.not9, label %__internal_trig_reduction_slowpath.exit.i.i, label %257 257: ; preds = %245 %258 = sub nsw i32 4, %237 %259 = sub nuw nsw i32 32, %248 %260 = shl i32 %252, %248 %261 = lshr i32 %256, %259 %262 = add i32 %261, %260 %263 = shl i32 %256, %248 %264 = sext i32 %258 to i64 %265 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %264 %266 = load i32, ptr %265, align 4 %267 = lshr i32 %266, %259 %268 = add i32 %267, %263 br label %__internal_trig_reduction_slowpath.exit.i.i __internal_trig_reduction_slowpath.exit.i.i: ; preds = %257, %245 %lo.i.i.i.0 = phi i32 [ %268, %257 ], [ %256, %245 ] %hi.i.i.i.1 = phi i32 [ %262, %257 ], [ %252, %245 ] %269 = lshr i32 %hi.i.i.i.1, 30 %270 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.1, i32 %lo.i.i.i.0, i32 2) %271 = shl i32 %lo.i.i.i.0, 2 %272 = lshr i32 %270, 31 %273 = add nuw nsw i32 %272, %269 %.not10 = icmp eq i32 %246, 0 %274 = sub nsw i32 0, %273 %spec.select1 = select i1 %.not10, i32 %273, i32 %274 %.not11 = icmp sgt i32 %270, -1 %275 = xor i32 %246, -2147483648 %not..not11 = xor i1 %.not11, true %276 = sext i1 %not..not11 to i32 %lo.i.i.i.1 = xor i32 %271, %276 %hi.i.i.i.2 = xor i32 %270, %276 %s.i.i.i.0 = select i1 %.not11, i32 %246, i32 %275 %277 = zext i32 %hi.i.i.i.2 to i64 %278 = shl nuw i64 %277, 32 %279 = zext i32 %lo.i.i.i.1 to i64 %280 = or i64 %278, %279 %281 = sitofp i64 %280 to double %282 = fmul double %281, 0x3BF921FB54442D19 %283 = fptrunc double %282 to float %.not13 = icmp eq i32 %s.i.i.i.0, 0 %284 = fneg float %283 %r.i.i.i.0 = select i1 %.not13, float %283, float %284 br label %__internal_trig_reduction_kernel.exit.i __internal_trig_reduction_kernel.exit.i: ; preds = %__nv_fmul_rn.exit.i.i, %__internal_trig_reduction_slowpath.exit.i.i, %__internal_fmad.exit70 %i.i85.1 = phi i32 [ %221, %__internal_fmad.exit70 ], [ 0, %__nv_fmul_rn.exit.i.i ], [ %spec.select1, %__internal_trig_reduction_slowpath.exit.i.i ] %t.i.i.1 = phi float [ %225, %__internal_fmad.exit70 ], [ %229, %__nv_fmul_rn.exit.i.i ], [ %r.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i ] %285 = and i32 %i.i85.1, 3 %286 = uitofp i32 %285 to float %287 = tail call float @llvm.nvvm.fma.rn.f(float %286, float 0x3FF921FB60000000, float 0xC002D97C80000000) #145 %288 = fadd float %t.i.i.1, %287 %289 = fmul float %288, 0x3FE45F3060000000 %290 = tail call i32 @llvm.nvvm.f2i.rn(float %289) #145 %291 = sitofp i32 %290 to float %292 = tail call float @llvm.nvvm.fma.rn.f(float %291, float 0xBFF921FB40000000, float %288) #145 %293 = tail call float @llvm.nvvm.fma.rn.f(float %291, float 0xBE74442D00000000, float %292) #145 %294 = add i32 %290, 1 %295 = tail call float @llvm.nvvm.mul.rn.f(float %293, float %293) #145 %296 = and i32 %294, 1 %.not = icmp eq i32 %296, 0 %297 = select i1 %.not, float %293, float 1.000000e+00 %298 = tail call float @llvm.nvvm.fma.rn.f(float %295, float %297, float 0.000000e+00) #145 %299 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %295, float 0xBF56C0FDA0000000) #145 %300 = select i1 %.not, float 0xBF29A82A60000000, float %299 %301 = select i1 %.not, float 0x3F8110BC80000000, float 0x3FA5555760000000 %302 = tail call float @llvm.nvvm.fma.rn.f(float %300, float %295, float %301) #145 %303 = select i1 %.not, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %304 = tail call float @llvm.nvvm.fma.rn.f(float %302, float %295, float %303) #145 %305 = tail call float @llvm.nvvm.fma.rn.f(float %304, float %298, float %297) #145 %306 = and i32 %294, 2 %.not8 = icmp eq i32 %306, 0 %307 = tail call float @llvm.nvvm.fma.rn.f(float %305, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i83.0 = select i1 %.not8, float %305, float %307 %308 = fmul float %219, %z.i.i83.0 br label %309 309: ; preds = %__internal_fmad.exit9, %__internal_fmad.exit51, %__nv_isinff.exit, %__internal_trig_reduction_kernel.exit.i, %__internal_fmad.exit33, %__nv_j0f.exit %r.4 = phi float [ %161, %__nv_j0f.exit ], [ %178, %__internal_fmad.exit9 ], [ %192, %__internal_fmad.exit33 ], [ %205, %__internal_fmad.exit51 ], [ %308, %__internal_trig_reduction_kernel.exit.i ], [ 0.000000e+00, %__nv_isinff.exit ] %310 = fcmp olt float %a, 0.000000e+00 %r.5 = select i1 %310, float 0x7FFFFFFFE0000000, float %r.4 ret float %r.5 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_y1f(float %a) unnamed_addr #57 { __nv_fabsf.exit: %result.i.i.i.i = alloca [7 x i32], align 4 %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp olt float %0, 0x3810000000000000 br i1 %1, label %2, label %4 2: ; preds = %__nv_fabsf.exit %3 = fdiv float 0xBFE45F3060000000, %0 br label %317 4: ; preds = %__nv_fabsf.exit %5 = fcmp ugt float %0, 0x3FFB2D5880000000 br i1 %5, label %173, label %__internal_fmad.exit __internal_fmad.exit: ; preds = %4 %6 = fmul float %0, %0 %7 = tail call float @llvm.nvvm.fma.rn.f(float 0x3E428C5980000000, float %6, float 0xBEB0A4FB40000000) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float %6, float 0x3F12C7D2A0000000) #145 %9 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %6, float 0xBF6835B960000000) #145 %10 = tail call float @llvm.nvvm.fma.rn.f(float %9, float %6, float 0x3FABD39760000000) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %6, float 0xBFC9186620000000) #145 %12 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %13 = fcmp ugt float %12, 8.000000e+00 br i1 %13, label %__nv_isinff.exit.i, label %__internal_fmad.exit.i __internal_fmad.exit.i: ; preds = %__internal_fmad.exit %14 = fadd float %12, 0xC00EA75580000000 %15 = fadd float %14, 0x3E74A121E0000000 %16 = tail call float @llvm.nvvm.fma.rn.f(float 0x3D35E68C60000000, float %15, float 0x3D7037E840000000) #145 %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %15, float 0xBDBC43D820000000) #145 %18 = tail call float @llvm.nvvm.fma.rn.f(float %17, float %15, float 0xBDEBBBDFE0000000) #145 %19 = tail call float @llvm.nvvm.fma.rn.f(float %18, float %15, float 0x3E336193A0000000) #145 %20 = tail call float @llvm.nvvm.fma.rn.f(float %19, float %15, float 0x3E5D022E60000000) #145 %21 = tail call float @llvm.nvvm.fma.rn.f(float %20, float %15, float 0xBEA1F1B900000000) #145 %22 = tail call float @llvm.nvvm.fma.rn.f(float %21, float %15, float 0xBEC3CCA7A0000000) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %22, float %15, float 0x3F059B38A0000000) #145 %24 = tail call float @llvm.nvvm.fma.rn.f(float %23, float %15, float 0x3F1F3D6200000000) #145 %25 = tail call float @llvm.nvvm.fma.rn.f(float %24, float %15, float 0xBF5D9D7380000000) #145 %26 = tail call float @llvm.nvvm.fma.rn.f(float %25, float %15, float 0xBF64EDFFA0000000) #145 %27 = tail call float @llvm.nvvm.fma.rn.f(float %26, float %15, float 0x3FA0E73260000000) #145 %28 = fadd float %12, 0xC01C0FF600000000 %29 = fadd float %28, 0x3E88971B60000000 %30 = fmul float %29, %27 %31 = fmul float %15, %30 %32 = fmul float %12, %31 br label %137 __nv_isinff.exit.i: ; preds = %__internal_fmad.exit %33 = tail call float @llvm.nvvm.fabs.f(float %12) #145 %34 = fcmp oeq float %33, 0x7FF0000000000000 br i1 %34, label %137, label %__internal_fmad.exit12.i __internal_fmad.exit12.i: ; preds = %__nv_isinff.exit.i %35 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %12) #146, !srcloc !10 %36 = fmul float %35, %35 %37 = tail call float @llvm.nvvm.fma.rn.f(float 0xC0105966E0000000, float %36, float 0x3FE7FEFD20000000) #145 %38 = tail call float @llvm.nvvm.fma.rn.f(float %37, float %36, float 0xBFC8B175C0000000) #145 %39 = tail call float @llvm.nvvm.fma.rn.f(float %38, float %36, float 0x3FC7FFF160000000) #145 %40 = tail call float @llvm.nvvm.fma.rn.f(float %39, float %36, float 1.000000e+00) #145 %41 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFF9477440000000, float %36, float 0x3FD72295A0000000) #145 %42 = tail call float @llvm.nvvm.fma.rn.f(float %41, float %36, float 0xBFC4FE5D80000000) #145 %43 = tail call float @llvm.nvvm.fma.rn.f(float %42, float %36, float 0x3FD7FFFFA0000000) #145 %44 = tail call float @llvm.nvvm.fma.rn.f(float %43, float %35, float %12) #145 %45 = tail call float @llvm.nvvm.rsqrt.approx.f(float %12) #145 %46 = fmul float %45, 0x3FE9884540000000 %47 = fmul float %46, %40 %48 = fmul float %44, 0x3FE45F3060000000 %49 = tail call i32 @llvm.nvvm.f2i.rn(float %48) #145 %50 = sitofp i32 %49 to float %51 = tail call float @llvm.nvvm.fma.rn.f(float %50, float 0xBFF921FB40000000, float %44) #145 %52 = tail call float @llvm.nvvm.fma.rn.f(float %50, float 0xBE74442D00000000, float %51) #145 %53 = tail call float @llvm.nvvm.fma.rn.f(float %50, float 0xBCF84698A0000000, float %52) #145 %54 = tail call float @llvm.nvvm.fabs.f(float %44) #145 %55 = fcmp ult float %54, 1.056150e+05 br i1 %55, label %__internal_trig_reduction_kernel.exit.i.i, label %__nv_isinff.exit.i.i.i __nv_isinff.exit.i.i.i: ; preds = %__internal_fmad.exit12.i %56 = fcmp oeq float %54, 0x7FF0000000000000 br i1 %56, label %__nv_fmul_rn.exit.i.i.i, label %58 __nv_fmul_rn.exit.i.i.i: ; preds = %__nv_isinff.exit.i.i.i %57 = tail call float @llvm.nvvm.mul.rn.f(float %44, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i.i 58: ; preds = %__nv_isinff.exit.i.i.i %59 = bitcast float %44 to i32 %60 = lshr i32 %59, 23 %61 = and i32 %60, 255 %62 = add nsw i32 %61, -128 %63 = shl i32 %59, 8 %64 = or i32 %63, -2147483648 %65 = lshr i32 %62, 5 br label %66 66: ; preds = %58, %66 %indvars.iv = phi i64 [ 0, %58 ], [ %indvars.iv.next, %66 ] %hi.i.i.i.i.021 = phi i32 [ 0, %58 ], [ %71, %66 ] %67 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv %68 = load i32, ptr addrspace(1) %67, align 4 %69 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %68, i32 %64, i32 %hi.i.i.i.i.021) #146, !srcloc !11 %70 = extractvalue { i32, i32 } %69, 0 %71 = extractvalue { i32, i32 } %69, 1 %72 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %indvars.iv store i32 %70, ptr %72, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 6 br i1 %exitcond.not, label %73, label %66, !llvm.loop !12 73: ; preds = %66 %.lcssa35 = phi i32 [ %71, %66 ] %74 = and i32 %59, -2147483648 %75 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 6 store i32 %.lcssa35, ptr %75, align 4 %76 = and i32 %60, 31 %77 = sub nsw i32 6, %65 %78 = sext i32 %77 to i64 %79 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %78 %80 = load i32, ptr %79, align 4 %81 = sub nsw i32 5, %65 %82 = sext i32 %81 to i64 %83 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %82 %84 = load i32, ptr %83, align 4 %.not16 = icmp eq i32 %76, 0 br i1 %.not16, label %__internal_trig_reduction_slowpath.exit.i.i.i, label %85 85: ; preds = %73 %86 = sub nsw i32 4, %65 %87 = sub nuw nsw i32 32, %76 %88 = shl i32 %80, %76 %89 = lshr i32 %84, %87 %90 = add i32 %89, %88 %91 = shl i32 %84, %76 %92 = sext i32 %86 to i64 %93 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %92 %94 = load i32, ptr %93, align 4 %95 = lshr i32 %94, %87 %96 = add i32 %95, %91 br label %__internal_trig_reduction_slowpath.exit.i.i.i __internal_trig_reduction_slowpath.exit.i.i.i: ; preds = %85, %73 %hi.i.i.i.i.1 = phi i32 [ %90, %85 ], [ %80, %73 ] %lo.i.i.i.i.0 = phi i32 [ %96, %85 ], [ %84, %73 ] %97 = lshr i32 %hi.i.i.i.i.1, 30 %98 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.1, i32 %lo.i.i.i.i.0, i32 2) %99 = shl i32 %lo.i.i.i.i.0, 2 %100 = lshr i32 %98, 31 %101 = add nuw nsw i32 %100, %97 %.not17 = icmp eq i32 %74, 0 %102 = sub nsw i32 0, %101 %spec.select = select i1 %.not17, i32 %101, i32 %102 %.not18 = icmp sgt i32 %98, -1 %103 = xor i32 %74, -2147483648 %s.i.i.i.i.0 = select i1 %.not18, i32 %74, i32 %103 %not..not18 = xor i1 %.not18, true %104 = sext i1 %not..not18 to i32 %hi.i.i.i.i.2 = xor i32 %98, %104 %lo.i.i.i.i.1 = xor i32 %99, %104 %105 = zext i32 %hi.i.i.i.i.2 to i64 %106 = shl nuw i64 %105, 32 %107 = zext i32 %lo.i.i.i.i.1 to i64 %108 = or i64 %106, %107 %109 = sitofp i64 %108 to double %110 = fmul double %109, 0x3BF921FB54442D19 %111 = fptrunc double %110 to float %.not20 = icmp eq i32 %s.i.i.i.i.0, 0 %112 = fneg float %111 %r.i.i.i.i.0 = select i1 %.not20, float %111, float %112 br label %__internal_trig_reduction_kernel.exit.i.i __internal_trig_reduction_kernel.exit.i.i: ; preds = %__nv_fmul_rn.exit.i.i.i, %__internal_trig_reduction_slowpath.exit.i.i.i, %__internal_fmad.exit12.i %i.i.i.1 = phi i32 [ %49, %__internal_fmad.exit12.i ], [ 0, %__nv_fmul_rn.exit.i.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i.i ] %t.i.i.i.1 = phi float [ %53, %__internal_fmad.exit12.i ], [ %57, %__nv_fmul_rn.exit.i.i.i ], [ %r.i.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i.i ] %113 = and i32 %i.i.i.1, 3 %114 = uitofp i32 %113 to float %115 = tail call float @llvm.nvvm.fma.rn.f(float %114, float 0x3FF921FB60000000, float 0xC002D97C80000000) #145 %116 = fadd float %t.i.i.i.1, %115 %117 = fmul float %116, 0x3FE45F3060000000 %118 = tail call i32 @llvm.nvvm.f2i.rn(float %117) #145 %119 = sitofp i32 %118 to float %120 = tail call float @llvm.nvvm.fma.rn.f(float %119, float 0xBFF921FB40000000, float %116) #145 %121 = tail call float @llvm.nvvm.fma.rn.f(float %119, float 0xBE74442D00000000, float %120) #145 %122 = add i32 %118, 1 %123 = tail call float @llvm.nvvm.mul.rn.f(float %121, float %121) #145 %124 = and i32 %122, 1 %.not14 = icmp eq i32 %124, 0 %125 = select i1 %.not14, float %121, float 1.000000e+00 %126 = tail call float @llvm.nvvm.fma.rn.f(float %123, float %125, float 0.000000e+00) #145 %127 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %123, float 0xBF56C0FDA0000000) #145 %128 = select i1 %.not14, float 0xBF29A82A60000000, float %127 %129 = select i1 %.not14, float 0x3F8110BC80000000, float 0x3FA5555760000000 %130 = tail call float @llvm.nvvm.fma.rn.f(float %128, float %123, float %129) #145 %131 = select i1 %.not14, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %132 = tail call float @llvm.nvvm.fma.rn.f(float %130, float %123, float %131) #145 %133 = tail call float @llvm.nvvm.fma.rn.f(float %132, float %126, float %125) #145 %134 = and i32 %122, 2 %.not15 = icmp eq i32 %134, 0 %135 = tail call float @llvm.nvvm.fma.rn.f(float %133, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i.i.0 = select i1 %.not15, float %133, float %135 %136 = fmul float %47, %z.i.i.i.0 br label %137 137: ; preds = %__internal_trig_reduction_kernel.exit.i.i, %__nv_isinff.exit.i, %__internal_fmad.exit.i %r.i.1 = phi float [ %32, %__internal_fmad.exit.i ], [ %136, %__internal_trig_reduction_kernel.exit.i.i ], [ 0.000000e+00, %__nv_isinff.exit.i ] %138 = fcmp olt float %0, 0.000000e+00 %139 = fneg float %r.i.1 %r.i.2 = select i1 %138, float %139, float %r.i.1 %140 = fcmp olt float %12, 0x39B4484C00000000 %141 = bitcast float %0 to i32 br i1 %140, label %142, label %__nv_j1f.exit 142: ; preds = %137 %143 = and i32 %141, -2147483648 %144 = bitcast float %r.i.2 to i32 %145 = and i32 %144, 2147483647 %146 = or i32 %145, %143 %147 = bitcast i32 %146 to float br label %__nv_j1f.exit __nv_j1f.exit: ; preds = %137, %142 %r.i.3 = phi float [ %147, %142 ], [ %r.i.2, %137 ] %148 = add i32 %141, -1059760811 %149 = and i32 %148, -8388608 %150 = sub i32 %141, %149 %151 = bitcast i32 %150 to float %152 = sitofp i32 %149 to float %153 = tail call float @llvm.nvvm.fma.rn.f(float %152, float 0x3E80000000000000, float 0.000000e+00) #145 %154 = fadd float %151, -1.000000e+00 %155 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFC0AA04E0000000, float %154, float 0x3FC2073EC0000000) #145 %156 = tail call float @llvm.nvvm.fma.rn.f(float %155, float %154, float 0xBFBF19B980000000) #145 %157 = tail call float @llvm.nvvm.fma.rn.f(float %156, float %154, float 0x3FC1E52AA0000000) #145 %158 = tail call float @llvm.nvvm.fma.rn.f(float %157, float %154, float 0xBFC55B1720000000) #145 %159 = tail call float @llvm.nvvm.fma.rn.f(float %158, float %154, float 0x3FC99DA160000000) #145 %160 = tail call float @llvm.nvvm.fma.rn.f(float %159, float %154, float 0xBFCFFFE440000000) #145 %161 = tail call float @llvm.nvvm.fma.rn.f(float %160, float %154, float 0x3FD5554F00000000) #145 %162 = tail call float @llvm.nvvm.fma.rn.f(float %161, float %154, float -5.000000e-01) #145 %163 = fmul float %154, %162 %164 = tail call float @llvm.nvvm.fma.rn.f(float %163, float %154, float %154) #145 %165 = tail call float @llvm.nvvm.fma.rn.f(float %153, float 0x3FE62E4300000000, float %164) #145 %166 = icmp ugt i32 %141, 2139095039 %167 = tail call float @llvm.nvvm.fma.rn.f(float %0, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i5.0 = select i1 %166, float %167, float %165 %168 = fcmp oeq float %0, 0.000000e+00 %r.i5.1 = select i1 %168, float 0xFFF0000000000000, float %r.i5.0 %169 = fdiv float -1.000000e+00, %0 %170 = tail call float @llvm.nvvm.fma.rn.f(float %r.i.3, float %r.i5.1, float %169) #145 %171 = fmul float %170, 0x3FE45F3060000000 %172 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %0, float %171) #145 br label %317 173: ; preds = %4 %174 = fcmp ugt float %0, 0x400E81DDC0000000 br i1 %174, label %187, label %__internal_fmad.exit11 __internal_fmad.exit11: ; preds = %173 %175 = fadd float %0, 0xC00193BEE0000000 %176 = fadd float %175, 0x3E76401B80000000 %177 = tail call float @llvm.nvvm.fma.rn.f(float 0xBEF13C53A0000000, float %176, float 0x3F20C95100000000) #145 %178 = tail call float @llvm.nvvm.fma.rn.f(float %177, float %176, float 0xBF3E1561A0000000) #145 %179 = tail call float @llvm.nvvm.fma.rn.f(float %178, float %176, float 0x3F51EC2040000000) #145 %180 = tail call float @llvm.nvvm.fma.rn.f(float %179, float %176, float 0xBF658E08A0000000) #145 %181 = tail call float @llvm.nvvm.fma.rn.f(float %180, float %176, float 0x3F7E6BBEE0000000) #145 %182 = tail call float @llvm.nvvm.fma.rn.f(float %181, float %176, float 0xBF73A12F80000000) #145 %183 = tail call float @llvm.nvvm.fma.rn.f(float %182, float %176, float 0xBFA0D2D140000000) #145 %184 = tail call float @llvm.nvvm.fma.rn.f(float %183, float %176, float 0xBFBE56FBE0000000) #145 %185 = tail call float @llvm.nvvm.fma.rn.f(float %184, float %176, float 0x3FE0AA4840000000) #145 %186 = fmul float %176, %185 br label %317 187: ; preds = %173 %188 = fcmp ugt float %0, 0x401C0D26E0000000 br i1 %188, label %201, label %__internal_fmad.exit29 __internal_fmad.exit29: ; preds = %187 %189 = fadd float %0, 0xC015B7FE40000000 %190 = fadd float %189, 0xBE8D0F6060000000 %191 = tail call float @llvm.nvvm.fma.rn.f(float 0x3E57CAFA00000000, float %190, float 0xBEA11482C0000000) #145 %192 = tail call float @llvm.nvvm.fma.rn.f(float %191, float %190, float 0xBEC7F14280000000) #145 %193 = tail call float @llvm.nvvm.fma.rn.f(float %192, float %190, float 0x3F084FC040000000) #145 %194 = tail call float @llvm.nvvm.fma.rn.f(float %193, float %190, float 0x3F23376380000000) #145 %195 = tail call float @llvm.nvvm.fma.rn.f(float %194, float %190, float 0xBF61BE3FA0000000) #145 %196 = tail call float @llvm.nvvm.fma.rn.f(float %195, float %190, float 0xBF710A3120000000) #145 %197 = tail call float @llvm.nvvm.fma.rn.f(float %196, float %190, float 0x3FAA15D820000000) #145 %198 = tail call float @llvm.nvvm.fma.rn.f(float %197, float %190, float 0x3FA00B9F80000000) #145 %199 = tail call float @llvm.nvvm.fma.rn.f(float %198, float %190, float 0xBFD5C7C560000000) #145 %200 = fmul float %190, %199 br label %317 201: ; preds = %187 %202 = fcmp ugt float %0, 0x4024585C60000000 br i1 %202, label %__nv_isinff.exit, label %__internal_fmad.exit47 __internal_fmad.exit47: ; preds = %201 %203 = fadd float %0, 0xC0213127A0000000 %204 = fadd float %203, 0xBE9CC2D360000000 %205 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EA19E7060000000, float %204, float 0x3EC05205C0000000) #145 %206 = tail call float @llvm.nvvm.fma.rn.f(float %205, float %204, float 0xBF06EBEE20000000) #145 %207 = tail call float @llvm.nvvm.fma.rn.f(float %206, float %204, float 0xBF1B3F5500000000) #145 %208 = tail call float @llvm.nvvm.fma.rn.f(float %207, float %204, float 0x3F607A3340000000) #145 %209 = tail call float @llvm.nvvm.fma.rn.f(float %208, float %204, float 0x3F63CE6DA0000000) #145 %210 = tail call float @llvm.nvvm.fma.rn.f(float %209, float %204, float 0xBFA6395CA0000000) #145 %211 = tail call float @llvm.nvvm.fma.rn.f(float %210, float %204, float 0xBF902B36C0000000) #145 %212 = tail call float @llvm.nvvm.fma.rn.f(float %211, float %204, float 0x3FD15F9940000000) #145 %213 = fmul float %204, %212 br label %317 __nv_isinff.exit: ; preds = %201 %214 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %215 = fcmp oeq float %214, 0x7FF0000000000000 br i1 %215, label %317, label %__internal_fmad.exit66 __internal_fmad.exit66: ; preds = %__nv_isinff.exit %216 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %0) #146, !srcloc !10 %217 = fmul float %216, %216 %218 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FE4CFEC00000000, float %217, float 0xBFC8957200000000) #145 %219 = tail call float @llvm.nvvm.fma.rn.f(float %218, float %217, float 0x3FC7FFD7E0000000) #145 %220 = tail call float @llvm.nvvm.fma.rn.f(float %219, float %217, float 1.000000e+00) #145 %221 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFFC9C3560000000, float %217, float 0x3FD76E7560000000) #145 %222 = tail call float @llvm.nvvm.fma.rn.f(float %221, float %217, float 0xBFC4FF6DC0000000) #145 %223 = tail call float @llvm.nvvm.fma.rn.f(float %222, float %217, float 0x3FD7FFFFE0000000) #145 %224 = tail call float @llvm.nvvm.fma.rn.f(float %223, float %216, float %0) #145 %225 = tail call float @llvm.nvvm.rsqrt.approx.f(float %0) #145 %226 = fmul float %225, 0x3FE9884540000000 %227 = fmul float %226, %220 %228 = fmul float %224, 0x3FE45F3060000000 %229 = tail call i32 @llvm.nvvm.f2i.rn(float %228) #145 %230 = sitofp i32 %229 to float %231 = tail call float @llvm.nvvm.fma.rn.f(float %230, float 0xBFF921FB40000000, float %224) #145 %232 = tail call float @llvm.nvvm.fma.rn.f(float %230, float 0xBE74442D00000000, float %231) #145 %233 = tail call float @llvm.nvvm.fma.rn.f(float %230, float 0xBCF84698A0000000, float %232) #145 %234 = tail call float @llvm.nvvm.fabs.f(float %224) #145 %235 = fcmp ult float %234, 1.056150e+05 br i1 %235, label %__internal_trig_reduction_kernel.exit.i, label %__nv_isinff.exit.i.i __nv_isinff.exit.i.i: ; preds = %__internal_fmad.exit66 %236 = fcmp oeq float %234, 0x7FF0000000000000 br i1 %236, label %__nv_fmul_rn.exit.i.i, label %238 __nv_fmul_rn.exit.i.i: ; preds = %__nv_isinff.exit.i.i %237 = tail call float @llvm.nvvm.mul.rn.f(float %224, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i 238: ; preds = %__nv_isinff.exit.i.i %239 = bitcast float %224 to i32 %240 = lshr i32 %239, 23 %241 = and i32 %240, 255 %242 = add nsw i32 %241, -128 %243 = shl i32 %239, 8 %244 = or i32 %243, -2147483648 %245 = lshr i32 %242, 5 br label %246 246: ; preds = %238, %246 %indvars.iv29 = phi i64 [ 0, %238 ], [ %indvars.iv.next30, %246 ] %hi.i.i.i.024 = phi i32 [ 0, %238 ], [ %251, %246 ] %247 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv29 %248 = load i32, ptr addrspace(1) %247, align 4 %249 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %248, i32 %244, i32 %hi.i.i.i.024) #146, !srcloc !11 %250 = extractvalue { i32, i32 } %249, 0 %251 = extractvalue { i32, i32 } %249, 1 %252 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %indvars.iv29 store i32 %250, ptr %252, align 4 %indvars.iv.next30 = add nuw nsw i64 %indvars.iv29, 1 %exitcond31.not = icmp eq i64 %indvars.iv.next30, 6 br i1 %exitcond31.not, label %253, label %246, !llvm.loop !12 253: ; preds = %246 %.lcssa = phi i32 [ %251, %246 ] %254 = and i32 %239, -2147483648 %255 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 6 store i32 %.lcssa, ptr %255, align 4 %256 = and i32 %240, 31 %257 = sub nsw i32 6, %245 %258 = sext i32 %257 to i64 %259 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %258 %260 = load i32, ptr %259, align 4 %261 = sub nsw i32 5, %245 %262 = sext i32 %261 to i64 %263 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %262 %264 = load i32, ptr %263, align 4 %.not9 = icmp eq i32 %256, 0 br i1 %.not9, label %__internal_trig_reduction_slowpath.exit.i.i, label %265 265: ; preds = %253 %266 = sub nsw i32 4, %245 %267 = sub nuw nsw i32 32, %256 %268 = shl i32 %260, %256 %269 = lshr i32 %264, %267 %270 = add i32 %269, %268 %271 = shl i32 %264, %256 %272 = sext i32 %266 to i64 %273 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %272 %274 = load i32, ptr %273, align 4 %275 = lshr i32 %274, %267 %276 = add i32 %275, %271 br label %__internal_trig_reduction_slowpath.exit.i.i __internal_trig_reduction_slowpath.exit.i.i: ; preds = %265, %253 %lo.i.i.i.0 = phi i32 [ %276, %265 ], [ %264, %253 ] %hi.i.i.i.1 = phi i32 [ %270, %265 ], [ %260, %253 ] %277 = lshr i32 %hi.i.i.i.1, 30 %278 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.1, i32 %lo.i.i.i.0, i32 2) %279 = shl i32 %lo.i.i.i.0, 2 %280 = lshr i32 %278, 31 %281 = add nuw nsw i32 %280, %277 %.not10 = icmp eq i32 %254, 0 %282 = sub nsw i32 0, %281 %spec.select1 = select i1 %.not10, i32 %281, i32 %282 %.not11 = icmp sgt i32 %278, -1 %283 = xor i32 %254, -2147483648 %not..not11 = xor i1 %.not11, true %284 = sext i1 %not..not11 to i32 %lo.i.i.i.1 = xor i32 %279, %284 %hi.i.i.i.2 = xor i32 %278, %284 %s.i.i.i.0 = select i1 %.not11, i32 %254, i32 %283 %285 = zext i32 %hi.i.i.i.2 to i64 %286 = shl nuw i64 %285, 32 %287 = zext i32 %lo.i.i.i.1 to i64 %288 = or i64 %286, %287 %289 = sitofp i64 %288 to double %290 = fmul double %289, 0x3BF921FB54442D19 %291 = fptrunc double %290 to float %.not13 = icmp eq i32 %s.i.i.i.0, 0 %292 = fneg float %291 %r.i.i.i.0 = select i1 %.not13, float %291, float %292 br label %__internal_trig_reduction_kernel.exit.i __internal_trig_reduction_kernel.exit.i: ; preds = %__nv_fmul_rn.exit.i.i, %__internal_trig_reduction_slowpath.exit.i.i, %__internal_fmad.exit66 %i.i81.1 = phi i32 [ %229, %__internal_fmad.exit66 ], [ 0, %__nv_fmul_rn.exit.i.i ], [ %spec.select1, %__internal_trig_reduction_slowpath.exit.i.i ] %t.i.i.1 = phi float [ %233, %__internal_fmad.exit66 ], [ %237, %__nv_fmul_rn.exit.i.i ], [ %r.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i ] %293 = and i32 %i.i81.1, 3 %294 = uitofp i32 %293 to float %295 = tail call float @llvm.nvvm.fma.rn.f(float %294, float 0x3FF921FB60000000, float 0xC00F6A7A20000000) #145 %296 = fadd float %t.i.i.1, %295 %297 = fmul float %296, 0x3FE45F3060000000 %298 = tail call i32 @llvm.nvvm.f2i.rn(float %297) #145 %299 = sitofp i32 %298 to float %300 = tail call float @llvm.nvvm.fma.rn.f(float %299, float 0xBFF921FB40000000, float %296) #145 %301 = tail call float @llvm.nvvm.fma.rn.f(float %299, float 0xBE74442D00000000, float %300) #145 %302 = add i32 %298, 1 %303 = tail call float @llvm.nvvm.mul.rn.f(float %301, float %301) #145 %304 = and i32 %302, 1 %.not = icmp eq i32 %304, 0 %305 = select i1 %.not, float %301, float 1.000000e+00 %306 = tail call float @llvm.nvvm.fma.rn.f(float %303, float %305, float 0.000000e+00) #145 %307 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %303, float 0xBF56C0FDA0000000) #145 %308 = select i1 %.not, float 0xBF29A82A60000000, float %307 %309 = select i1 %.not, float 0x3F8110BC80000000, float 0x3FA5555760000000 %310 = tail call float @llvm.nvvm.fma.rn.f(float %308, float %303, float %309) #145 %311 = select i1 %.not, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %312 = tail call float @llvm.nvvm.fma.rn.f(float %310, float %303, float %311) #145 %313 = tail call float @llvm.nvvm.fma.rn.f(float %312, float %306, float %305) #145 %314 = and i32 %302, 2 %.not8 = icmp eq i32 %314, 0 %315 = tail call float @llvm.nvvm.fma.rn.f(float %313, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i79.0 = select i1 %.not8, float %313, float %315 %316 = fmul float %227, %z.i.i79.0 br label %317 317: ; preds = %__nv_j1f.exit, %__internal_fmad.exit29, %__internal_trig_reduction_kernel.exit.i, %__nv_isinff.exit, %__internal_fmad.exit47, %__internal_fmad.exit11, %2 %r.5 = phi float [ %3, %2 ], [ %172, %__nv_j1f.exit ], [ %186, %__internal_fmad.exit11 ], [ %200, %__internal_fmad.exit29 ], [ %213, %__internal_fmad.exit47 ], [ %316, %__internal_trig_reduction_kernel.exit.i ], [ 0.000000e+00, %__nv_isinff.exit ] %318 = fcmp olt float %a, 0.000000e+00 %r.6 = select i1 %318, float 0x7FFFFFFFE0000000, float %r.5 ret float %r.6 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_ynf(i32 "enzyme_inactive" %n, float %a) unnamed_addr #58 { __nv_fabsf.exit.i: %result.i.i.i.i.i = alloca [7 x i32], align 4 %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp olt float %0, 0x3810000000000000 br i1 %1, label %2, label %4 2: ; preds = %__nv_fabsf.exit.i %3 = fdiv float 0xBFE45F3060000000, %0 br label %__nv_y1f.exit 4: ; preds = %__nv_fabsf.exit.i %5 = fcmp ugt float %0, 0x3FFB2D5880000000 br i1 %5, label %173, label %__internal_fmad.exit.i __internal_fmad.exit.i: ; preds = %4 %6 = fmul float %0, %0 %7 = tail call float @llvm.nvvm.fma.rn.f(float 0x3E428C5980000000, float %6, float 0xBEB0A4FB40000000) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float %6, float 0x3F12C7D2A0000000) #145 %9 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %6, float 0xBF6835B960000000) #145 %10 = tail call float @llvm.nvvm.fma.rn.f(float %9, float %6, float 0x3FABD39760000000) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %6, float 0xBFC9186620000000) #145 %12 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %13 = fcmp ugt float %12, 8.000000e+00 br i1 %13, label %__nv_isinff.exit.i.i, label %__internal_fmad.exit.i.i __internal_fmad.exit.i.i: ; preds = %__internal_fmad.exit.i %14 = fadd float %12, 0xC00EA75580000000 %15 = fadd float %14, 0x3E74A121E0000000 %16 = tail call float @llvm.nvvm.fma.rn.f(float 0x3D35E68C60000000, float %15, float 0x3D7037E840000000) #145 %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %15, float 0xBDBC43D820000000) #145 %18 = tail call float @llvm.nvvm.fma.rn.f(float %17, float %15, float 0xBDEBBBDFE0000000) #145 %19 = tail call float @llvm.nvvm.fma.rn.f(float %18, float %15, float 0x3E336193A0000000) #145 %20 = tail call float @llvm.nvvm.fma.rn.f(float %19, float %15, float 0x3E5D022E60000000) #145 %21 = tail call float @llvm.nvvm.fma.rn.f(float %20, float %15, float 0xBEA1F1B900000000) #145 %22 = tail call float @llvm.nvvm.fma.rn.f(float %21, float %15, float 0xBEC3CCA7A0000000) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %22, float %15, float 0x3F059B38A0000000) #145 %24 = tail call float @llvm.nvvm.fma.rn.f(float %23, float %15, float 0x3F1F3D6200000000) #145 %25 = tail call float @llvm.nvvm.fma.rn.f(float %24, float %15, float 0xBF5D9D7380000000) #145 %26 = tail call float @llvm.nvvm.fma.rn.f(float %25, float %15, float 0xBF64EDFFA0000000) #145 %27 = tail call float @llvm.nvvm.fma.rn.f(float %26, float %15, float 0x3FA0E73260000000) #145 %28 = fadd float %12, 0xC01C0FF600000000 %29 = fadd float %28, 0x3E88971B60000000 %30 = fmul float %29, %27 %31 = fmul float %15, %30 %32 = fmul float %12, %31 br label %137 __nv_isinff.exit.i.i: ; preds = %__internal_fmad.exit.i %33 = tail call float @llvm.nvvm.fabs.f(float %12) #145 %34 = fcmp oeq float %33, 0x7FF0000000000000 br i1 %34, label %137, label %__internal_fmad.exit12.i.i __internal_fmad.exit12.i.i: ; preds = %__nv_isinff.exit.i.i %35 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %12) #146, !srcloc !10 %36 = fmul float %35, %35 %37 = tail call float @llvm.nvvm.fma.rn.f(float 0xC0105966E0000000, float %36, float 0x3FE7FEFD20000000) #145 %38 = tail call float @llvm.nvvm.fma.rn.f(float %37, float %36, float 0xBFC8B175C0000000) #145 %39 = tail call float @llvm.nvvm.fma.rn.f(float %38, float %36, float 0x3FC7FFF160000000) #145 %40 = tail call float @llvm.nvvm.fma.rn.f(float %39, float %36, float 1.000000e+00) #145 %41 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFF9477440000000, float %36, float 0x3FD72295A0000000) #145 %42 = tail call float @llvm.nvvm.fma.rn.f(float %41, float %36, float 0xBFC4FE5D80000000) #145 %43 = tail call float @llvm.nvvm.fma.rn.f(float %42, float %36, float 0x3FD7FFFFA0000000) #145 %44 = tail call float @llvm.nvvm.fma.rn.f(float %43, float %35, float %12) #145 %45 = tail call float @llvm.nvvm.rsqrt.approx.f(float %12) #145 %46 = fmul float %45, 0x3FE9884540000000 %47 = fmul float %46, %40 %48 = fmul float %44, 0x3FE45F3060000000 %49 = tail call i32 @llvm.nvvm.f2i.rn(float %48) #145 %50 = sitofp i32 %49 to float %51 = tail call float @llvm.nvvm.fma.rn.f(float %50, float 0xBFF921FB40000000, float %44) #145 %52 = tail call float @llvm.nvvm.fma.rn.f(float %50, float 0xBE74442D00000000, float %51) #145 %53 = tail call float @llvm.nvvm.fma.rn.f(float %50, float 0xBCF84698A0000000, float %52) #145 %54 = tail call float @llvm.nvvm.fabs.f(float %44) #145 %55 = fcmp ult float %54, 1.056150e+05 br i1 %55, label %__internal_trig_reduction_kernel.exit.i.i.i, label %__nv_isinff.exit.i.i.i.i __nv_isinff.exit.i.i.i.i: ; preds = %__internal_fmad.exit12.i.i %56 = fcmp oeq float %54, 0x7FF0000000000000 br i1 %56, label %__nv_fmul_rn.exit.i.i.i.i, label %58 __nv_fmul_rn.exit.i.i.i.i: ; preds = %__nv_isinff.exit.i.i.i.i %57 = tail call float @llvm.nvvm.mul.rn.f(float %44, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i.i.i 58: ; preds = %__nv_isinff.exit.i.i.i.i %59 = bitcast float %44 to i32 %60 = lshr i32 %59, 23 %61 = and i32 %60, 255 %62 = add nsw i32 %61, -128 %63 = shl i32 %59, 8 %64 = or i32 %63, -2147483648 %65 = lshr i32 %62, 5 br label %66 66: ; preds = %58, %66 %indvars.iv = phi i64 [ 0, %58 ], [ %indvars.iv.next, %66 ] %hi.i.i.i.i.i.088 = phi i32 [ 0, %58 ], [ %71, %66 ] %67 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv %68 = load i32, ptr addrspace(1) %67, align 4 %69 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %68, i32 %64, i32 %hi.i.i.i.i.i.088) #146, !srcloc !11 %70 = extractvalue { i32, i32 } %69, 0 %71 = extractvalue { i32, i32 } %69, 1 %72 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %indvars.iv store i32 %70, ptr %72, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 6 br i1 %exitcond.not, label %73, label %66, !llvm.loop !12 73: ; preds = %66 %.lcssa177 = phi i32 [ %71, %66 ] %74 = and i32 %59, -2147483648 %75 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 6 store i32 %.lcssa177, ptr %75, align 4 %76 = and i32 %60, 31 %77 = sub nsw i32 6, %65 %78 = sext i32 %77 to i64 %79 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %78 %80 = load i32, ptr %79, align 4 %81 = sub nsw i32 5, %65 %82 = sext i32 %81 to i64 %83 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %82 %84 = load i32, ptr %83, align 4 %.not83 = icmp eq i32 %76, 0 br i1 %.not83, label %__internal_trig_reduction_slowpath.exit.i.i.i.i, label %85 85: ; preds = %73 %86 = sub nsw i32 4, %65 %87 = sub nuw nsw i32 32, %76 %88 = shl i32 %80, %76 %89 = lshr i32 %84, %87 %90 = add i32 %89, %88 %91 = shl i32 %84, %76 %92 = sext i32 %86 to i64 %93 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %92 %94 = load i32, ptr %93, align 4 %95 = lshr i32 %94, %87 %96 = add i32 %95, %91 br label %__internal_trig_reduction_slowpath.exit.i.i.i.i __internal_trig_reduction_slowpath.exit.i.i.i.i: ; preds = %85, %73 %hi.i.i.i.i.i.1 = phi i32 [ %90, %85 ], [ %80, %73 ] %lo.i.i.i.i.i.0 = phi i32 [ %96, %85 ], [ %84, %73 ] %97 = lshr i32 %hi.i.i.i.i.i.1, 30 %98 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.i.1, i32 %lo.i.i.i.i.i.0, i32 2) %99 = shl i32 %lo.i.i.i.i.i.0, 2 %100 = lshr i32 %98, 31 %101 = add nuw nsw i32 %100, %97 %.not84 = icmp eq i32 %74, 0 %102 = sub nsw i32 0, %101 %spec.select = select i1 %.not84, i32 %101, i32 %102 %.not85 = icmp sgt i32 %98, -1 %103 = xor i32 %74, -2147483648 %s.i.i.i.i.i.0 = select i1 %.not85, i32 %74, i32 %103 %not..not85 = xor i1 %.not85, true %104 = sext i1 %not..not85 to i32 %hi.i.i.i.i.i.2 = xor i32 %98, %104 %lo.i.i.i.i.i.1 = xor i32 %99, %104 %105 = zext i32 %hi.i.i.i.i.i.2 to i64 %106 = shl nuw i64 %105, 32 %107 = zext i32 %lo.i.i.i.i.i.1 to i64 %108 = or i64 %106, %107 %109 = sitofp i64 %108 to double %110 = fmul double %109, 0x3BF921FB54442D19 %111 = fptrunc double %110 to float %.not87 = icmp eq i32 %s.i.i.i.i.i.0, 0 %112 = fneg float %111 %r.i.i.i.i.i.0 = select i1 %.not87, float %111, float %112 br label %__internal_trig_reduction_kernel.exit.i.i.i __internal_trig_reduction_kernel.exit.i.i.i: ; preds = %__nv_fmul_rn.exit.i.i.i.i, %__internal_trig_reduction_slowpath.exit.i.i.i.i, %__internal_fmad.exit12.i.i %i.i.i.i.1 = phi i32 [ %49, %__internal_fmad.exit12.i.i ], [ 0, %__nv_fmul_rn.exit.i.i.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i.i.i ] %t.i.i.i.i.1 = phi float [ %53, %__internal_fmad.exit12.i.i ], [ %57, %__nv_fmul_rn.exit.i.i.i.i ], [ %r.i.i.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i.i.i ] %113 = and i32 %i.i.i.i.1, 3 %114 = uitofp i32 %113 to float %115 = tail call float @llvm.nvvm.fma.rn.f(float %114, float 0x3FF921FB60000000, float 0xC002D97C80000000) #145 %116 = fadd float %t.i.i.i.i.1, %115 %117 = fmul float %116, 0x3FE45F3060000000 %118 = tail call i32 @llvm.nvvm.f2i.rn(float %117) #145 %119 = sitofp i32 %118 to float %120 = tail call float @llvm.nvvm.fma.rn.f(float %119, float 0xBFF921FB40000000, float %116) #145 %121 = tail call float @llvm.nvvm.fma.rn.f(float %119, float 0xBE74442D00000000, float %120) #145 %122 = add i32 %118, 1 %123 = tail call float @llvm.nvvm.mul.rn.f(float %121, float %121) #145 %124 = and i32 %122, 1 %.not81 = icmp eq i32 %124, 0 %125 = select i1 %.not81, float %121, float 1.000000e+00 %126 = tail call float @llvm.nvvm.fma.rn.f(float %123, float %125, float 0.000000e+00) #145 %127 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %123, float 0xBF56C0FDA0000000) #145 %128 = select i1 %.not81, float 0xBF29A82A60000000, float %127 %129 = select i1 %.not81, float 0x3F8110BC80000000, float 0x3FA5555760000000 %130 = tail call float @llvm.nvvm.fma.rn.f(float %128, float %123, float %129) #145 %131 = select i1 %.not81, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %132 = tail call float @llvm.nvvm.fma.rn.f(float %130, float %123, float %131) #145 %133 = tail call float @llvm.nvvm.fma.rn.f(float %132, float %126, float %125) #145 %134 = and i32 %122, 2 %.not82 = icmp eq i32 %134, 0 %135 = tail call float @llvm.nvvm.fma.rn.f(float %133, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i.i.i.0 = select i1 %.not82, float %133, float %135 %136 = fmul float %47, %z.i.i.i.i.0 br label %137 137: ; preds = %__internal_trig_reduction_kernel.exit.i.i.i, %__nv_isinff.exit.i.i, %__internal_fmad.exit.i.i %r.i.i.1 = phi float [ %32, %__internal_fmad.exit.i.i ], [ %136, %__internal_trig_reduction_kernel.exit.i.i.i ], [ 0.000000e+00, %__nv_isinff.exit.i.i ] %138 = fcmp olt float %0, 0.000000e+00 %139 = fneg float %r.i.i.1 %r.i.i.2 = select i1 %138, float %139, float %r.i.i.1 %140 = fcmp olt float %12, 0x39B4484C00000000 %141 = bitcast float %0 to i32 br i1 %140, label %142, label %__nv_j1f.exit.i 142: ; preds = %137 %143 = and i32 %141, -2147483648 %144 = bitcast float %r.i.i.2 to i32 %145 = and i32 %144, 2147483647 %146 = or i32 %145, %143 %147 = bitcast i32 %146 to float br label %__nv_j1f.exit.i __nv_j1f.exit.i: ; preds = %137, %142 %r.i.i.3 = phi float [ %147, %142 ], [ %r.i.i.2, %137 ] %148 = add i32 %141, -1059760811 %149 = and i32 %148, -8388608 %150 = sub i32 %141, %149 %151 = bitcast i32 %150 to float %152 = sitofp i32 %149 to float %153 = tail call float @llvm.nvvm.fma.rn.f(float %152, float 0x3E80000000000000, float 0.000000e+00) #145 %154 = fadd float %151, -1.000000e+00 %155 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFC0AA04E0000000, float %154, float 0x3FC2073EC0000000) #145 %156 = tail call float @llvm.nvvm.fma.rn.f(float %155, float %154, float 0xBFBF19B980000000) #145 %157 = tail call float @llvm.nvvm.fma.rn.f(float %156, float %154, float 0x3FC1E52AA0000000) #145 %158 = tail call float @llvm.nvvm.fma.rn.f(float %157, float %154, float 0xBFC55B1720000000) #145 %159 = tail call float @llvm.nvvm.fma.rn.f(float %158, float %154, float 0x3FC99DA160000000) #145 %160 = tail call float @llvm.nvvm.fma.rn.f(float %159, float %154, float 0xBFCFFFE440000000) #145 %161 = tail call float @llvm.nvvm.fma.rn.f(float %160, float %154, float 0x3FD5554F00000000) #145 %162 = tail call float @llvm.nvvm.fma.rn.f(float %161, float %154, float -5.000000e-01) #145 %163 = fmul float %154, %162 %164 = tail call float @llvm.nvvm.fma.rn.f(float %163, float %154, float %154) #145 %165 = tail call float @llvm.nvvm.fma.rn.f(float %153, float 0x3FE62E4300000000, float %164) #145 %166 = icmp ugt i32 %141, 2139095039 %167 = tail call float @llvm.nvvm.fma.rn.f(float %0, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i5.i.0 = select i1 %166, float %167, float %165 %168 = fcmp oeq float %0, 0.000000e+00 %r.i5.i.1 = select i1 %168, float 0xFFF0000000000000, float %r.i5.i.0 %169 = fdiv float -1.000000e+00, %0 %170 = tail call float @llvm.nvvm.fma.rn.f(float %r.i.i.3, float %r.i5.i.1, float %169) #145 %171 = fmul float %170, 0x3FE45F3060000000 %172 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %0, float %171) #145 br label %__nv_y1f.exit 173: ; preds = %4 %174 = fcmp ugt float %0, 0x400E81DDC0000000 br i1 %174, label %187, label %__internal_fmad.exit11.i __internal_fmad.exit11.i: ; preds = %173 %175 = fadd float %0, 0xC00193BEE0000000 %176 = fadd float %175, 0x3E76401B80000000 %177 = tail call float @llvm.nvvm.fma.rn.f(float 0xBEF13C53A0000000, float %176, float 0x3F20C95100000000) #145 %178 = tail call float @llvm.nvvm.fma.rn.f(float %177, float %176, float 0xBF3E1561A0000000) #145 %179 = tail call float @llvm.nvvm.fma.rn.f(float %178, float %176, float 0x3F51EC2040000000) #145 %180 = tail call float @llvm.nvvm.fma.rn.f(float %179, float %176, float 0xBF658E08A0000000) #145 %181 = tail call float @llvm.nvvm.fma.rn.f(float %180, float %176, float 0x3F7E6BBEE0000000) #145 %182 = tail call float @llvm.nvvm.fma.rn.f(float %181, float %176, float 0xBF73A12F80000000) #145 %183 = tail call float @llvm.nvvm.fma.rn.f(float %182, float %176, float 0xBFA0D2D140000000) #145 %184 = tail call float @llvm.nvvm.fma.rn.f(float %183, float %176, float 0xBFBE56FBE0000000) #145 %185 = tail call float @llvm.nvvm.fma.rn.f(float %184, float %176, float 0x3FE0AA4840000000) #145 %186 = fmul float %176, %185 br label %__nv_y1f.exit 187: ; preds = %173 %188 = fcmp ugt float %0, 0x401C0D26E0000000 br i1 %188, label %201, label %__internal_fmad.exit29.i __internal_fmad.exit29.i: ; preds = %187 %189 = fadd float %0, 0xC015B7FE40000000 %190 = fadd float %189, 0xBE8D0F6060000000 %191 = tail call float @llvm.nvvm.fma.rn.f(float 0x3E57CAFA00000000, float %190, float 0xBEA11482C0000000) #145 %192 = tail call float @llvm.nvvm.fma.rn.f(float %191, float %190, float 0xBEC7F14280000000) #145 %193 = tail call float @llvm.nvvm.fma.rn.f(float %192, float %190, float 0x3F084FC040000000) #145 %194 = tail call float @llvm.nvvm.fma.rn.f(float %193, float %190, float 0x3F23376380000000) #145 %195 = tail call float @llvm.nvvm.fma.rn.f(float %194, float %190, float 0xBF61BE3FA0000000) #145 %196 = tail call float @llvm.nvvm.fma.rn.f(float %195, float %190, float 0xBF710A3120000000) #145 %197 = tail call float @llvm.nvvm.fma.rn.f(float %196, float %190, float 0x3FAA15D820000000) #145 %198 = tail call float @llvm.nvvm.fma.rn.f(float %197, float %190, float 0x3FA00B9F80000000) #145 %199 = tail call float @llvm.nvvm.fma.rn.f(float %198, float %190, float 0xBFD5C7C560000000) #145 %200 = fmul float %190, %199 br label %__nv_y1f.exit 201: ; preds = %187 %202 = fcmp ugt float %0, 0x4024585C60000000 br i1 %202, label %__nv_isinff.exit.i, label %__internal_fmad.exit47.i __internal_fmad.exit47.i: ; preds = %201 %203 = fadd float %0, 0xC0213127A0000000 %204 = fadd float %203, 0xBE9CC2D360000000 %205 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EA19E7060000000, float %204, float 0x3EC05205C0000000) #145 %206 = tail call float @llvm.nvvm.fma.rn.f(float %205, float %204, float 0xBF06EBEE20000000) #145 %207 = tail call float @llvm.nvvm.fma.rn.f(float %206, float %204, float 0xBF1B3F5500000000) #145 %208 = tail call float @llvm.nvvm.fma.rn.f(float %207, float %204, float 0x3F607A3340000000) #145 %209 = tail call float @llvm.nvvm.fma.rn.f(float %208, float %204, float 0x3F63CE6DA0000000) #145 %210 = tail call float @llvm.nvvm.fma.rn.f(float %209, float %204, float 0xBFA6395CA0000000) #145 %211 = tail call float @llvm.nvvm.fma.rn.f(float %210, float %204, float 0xBF902B36C0000000) #145 %212 = tail call float @llvm.nvvm.fma.rn.f(float %211, float %204, float 0x3FD15F9940000000) #145 %213 = fmul float %204, %212 br label %__nv_y1f.exit __nv_isinff.exit.i: ; preds = %201 %214 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %215 = fcmp oeq float %214, 0x7FF0000000000000 br i1 %215, label %__nv_y1f.exit, label %__internal_fmad.exit66.i __internal_fmad.exit66.i: ; preds = %__nv_isinff.exit.i %216 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %0) #146, !srcloc !10 %217 = fmul float %216, %216 %218 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FE4CFEC00000000, float %217, float 0xBFC8957200000000) #145 %219 = tail call float @llvm.nvvm.fma.rn.f(float %218, float %217, float 0x3FC7FFD7E0000000) #145 %220 = tail call float @llvm.nvvm.fma.rn.f(float %219, float %217, float 1.000000e+00) #145 %221 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFFC9C3560000000, float %217, float 0x3FD76E7560000000) #145 %222 = tail call float @llvm.nvvm.fma.rn.f(float %221, float %217, float 0xBFC4FF6DC0000000) #145 %223 = tail call float @llvm.nvvm.fma.rn.f(float %222, float %217, float 0x3FD7FFFFE0000000) #145 %224 = tail call float @llvm.nvvm.fma.rn.f(float %223, float %216, float %0) #145 %225 = tail call float @llvm.nvvm.rsqrt.approx.f(float %0) #145 %226 = fmul float %225, 0x3FE9884540000000 %227 = fmul float %226, %220 %228 = fmul float %224, 0x3FE45F3060000000 %229 = tail call i32 @llvm.nvvm.f2i.rn(float %228) #145 %230 = sitofp i32 %229 to float %231 = tail call float @llvm.nvvm.fma.rn.f(float %230, float 0xBFF921FB40000000, float %224) #145 %232 = tail call float @llvm.nvvm.fma.rn.f(float %230, float 0xBE74442D00000000, float %231) #145 %233 = tail call float @llvm.nvvm.fma.rn.f(float %230, float 0xBCF84698A0000000, float %232) #145 %234 = tail call float @llvm.nvvm.fabs.f(float %224) #145 %235 = fcmp ult float %234, 1.056150e+05 br i1 %235, label %__internal_trig_reduction_kernel.exit.i.i, label %__nv_isinff.exit.i.i.i __nv_isinff.exit.i.i.i: ; preds = %__internal_fmad.exit66.i %236 = fcmp oeq float %234, 0x7FF0000000000000 br i1 %236, label %__nv_fmul_rn.exit.i.i.i, label %238 __nv_fmul_rn.exit.i.i.i: ; preds = %__nv_isinff.exit.i.i.i %237 = tail call float @llvm.nvvm.mul.rn.f(float %224, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i.i 238: ; preds = %__nv_isinff.exit.i.i.i %239 = bitcast float %224 to i32 %240 = lshr i32 %239, 23 %241 = and i32 %240, 255 %242 = add nsw i32 %241, -128 %243 = shl i32 %239, 8 %244 = or i32 %243, -2147483648 %245 = lshr i32 %242, 5 br label %246 246: ; preds = %238, %246 %indvars.iv130 = phi i64 [ 0, %238 ], [ %indvars.iv.next131, %246 ] %hi.i.i.i.i.090 = phi i32 [ 0, %238 ], [ %251, %246 ] %247 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv130 %248 = load i32, ptr addrspace(1) %247, align 4 %249 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %248, i32 %244, i32 %hi.i.i.i.i.090) #146, !srcloc !11 %250 = extractvalue { i32, i32 } %249, 0 %251 = extractvalue { i32, i32 } %249, 1 %252 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %indvars.iv130 store i32 %250, ptr %252, align 4 %indvars.iv.next131 = add nuw nsw i64 %indvars.iv130, 1 %exitcond132.not = icmp eq i64 %indvars.iv.next131, 6 br i1 %exitcond132.not, label %253, label %246, !llvm.loop !12 253: ; preds = %246 %.lcssa176 = phi i32 [ %251, %246 ] %254 = and i32 %239, -2147483648 %255 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 6 store i32 %.lcssa176, ptr %255, align 4 %256 = and i32 %240, 31 %257 = sub nsw i32 6, %245 %258 = sext i32 %257 to i64 %259 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %258 %260 = load i32, ptr %259, align 4 %261 = sub nsw i32 5, %245 %262 = sext i32 %261 to i64 %263 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %262 %264 = load i32, ptr %263, align 4 %.not76 = icmp eq i32 %256, 0 br i1 %.not76, label %__internal_trig_reduction_slowpath.exit.i.i.i, label %265 265: ; preds = %253 %266 = sub nsw i32 4, %245 %267 = sub nuw nsw i32 32, %256 %268 = shl i32 %260, %256 %269 = lshr i32 %264, %267 %270 = add i32 %269, %268 %271 = shl i32 %264, %256 %272 = sext i32 %266 to i64 %273 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %272 %274 = load i32, ptr %273, align 4 %275 = lshr i32 %274, %267 %276 = add i32 %275, %271 br label %__internal_trig_reduction_slowpath.exit.i.i.i __internal_trig_reduction_slowpath.exit.i.i.i: ; preds = %265, %253 %hi.i.i.i.i.1 = phi i32 [ %270, %265 ], [ %260, %253 ] %lo.i.i.i.i.0 = phi i32 [ %276, %265 ], [ %264, %253 ] %277 = lshr i32 %hi.i.i.i.i.1, 30 %278 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.1, i32 %lo.i.i.i.i.0, i32 2) %279 = shl i32 %lo.i.i.i.i.0, 2 %280 = lshr i32 %278, 31 %281 = add nuw nsw i32 %280, %277 %.not77 = icmp eq i32 %254, 0 %282 = sub nsw i32 0, %281 %spec.select1 = select i1 %.not77, i32 %281, i32 %282 %.not78 = icmp sgt i32 %278, -1 %283 = xor i32 %254, -2147483648 %s.i.i.i.i.0 = select i1 %.not78, i32 %254, i32 %283 %not..not78 = xor i1 %.not78, true %284 = sext i1 %not..not78 to i32 %hi.i.i.i.i.2 = xor i32 %278, %284 %lo.i.i.i.i.1 = xor i32 %279, %284 %285 = zext i32 %hi.i.i.i.i.2 to i64 %286 = shl nuw i64 %285, 32 %287 = zext i32 %lo.i.i.i.i.1 to i64 %288 = or i64 %286, %287 %289 = sitofp i64 %288 to double %290 = fmul double %289, 0x3BF921FB54442D19 %291 = fptrunc double %290 to float %.not80 = icmp eq i32 %s.i.i.i.i.0, 0 %292 = fneg float %291 %r.i.i.i.i.0 = select i1 %.not80, float %291, float %292 br label %__internal_trig_reduction_kernel.exit.i.i __internal_trig_reduction_kernel.exit.i.i: ; preds = %__nv_fmul_rn.exit.i.i.i, %__internal_trig_reduction_slowpath.exit.i.i.i, %__internal_fmad.exit66.i %i.i81.i.1 = phi i32 [ %229, %__internal_fmad.exit66.i ], [ 0, %__nv_fmul_rn.exit.i.i.i ], [ %spec.select1, %__internal_trig_reduction_slowpath.exit.i.i.i ] %t.i.i.i.1 = phi float [ %233, %__internal_fmad.exit66.i ], [ %237, %__nv_fmul_rn.exit.i.i.i ], [ %r.i.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i.i ] %293 = and i32 %i.i81.i.1, 3 %294 = uitofp i32 %293 to float %295 = tail call float @llvm.nvvm.fma.rn.f(float %294, float 0x3FF921FB60000000, float 0xC00F6A7A20000000) #145 %296 = fadd float %t.i.i.i.1, %295 %297 = fmul float %296, 0x3FE45F3060000000 %298 = tail call i32 @llvm.nvvm.f2i.rn(float %297) #145 %299 = sitofp i32 %298 to float %300 = tail call float @llvm.nvvm.fma.rn.f(float %299, float 0xBFF921FB40000000, float %296) #145 %301 = tail call float @llvm.nvvm.fma.rn.f(float %299, float 0xBE74442D00000000, float %300) #145 %302 = add i32 %298, 1 %303 = tail call float @llvm.nvvm.mul.rn.f(float %301, float %301) #145 %304 = and i32 %302, 1 %.not = icmp eq i32 %304, 0 %305 = select i1 %.not, float %301, float 1.000000e+00 %306 = tail call float @llvm.nvvm.fma.rn.f(float %303, float %305, float 0.000000e+00) #145 %307 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %303, float 0xBF56C0FDA0000000) #145 %308 = select i1 %.not, float 0xBF29A82A60000000, float %307 %309 = select i1 %.not, float 0x3F8110BC80000000, float 0x3FA5555760000000 %310 = tail call float @llvm.nvvm.fma.rn.f(float %308, float %303, float %309) #145 %311 = select i1 %.not, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %312 = tail call float @llvm.nvvm.fma.rn.f(float %310, float %303, float %311) #145 %313 = tail call float @llvm.nvvm.fma.rn.f(float %312, float %306, float %305) #145 %314 = and i32 %302, 2 %.not33 = icmp eq i32 %314, 0 %315 = tail call float @llvm.nvvm.fma.rn.f(float %313, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i79.i.0 = select i1 %.not33, float %313, float %315 %316 = fmul float %227, %z.i.i79.i.0 br label %__nv_y1f.exit __nv_y1f.exit: ; preds = %__nv_j1f.exit.i, %__internal_fmad.exit29.i, %__internal_trig_reduction_kernel.exit.i.i, %__nv_isinff.exit.i, %__internal_fmad.exit47.i, %__internal_fmad.exit11.i, %2 %r.i.5 = phi float [ %3, %2 ], [ %172, %__nv_j1f.exit.i ], [ %186, %__internal_fmad.exit11.i ], [ %200, %__internal_fmad.exit29.i ], [ %213, %__internal_fmad.exit47.i ], [ %316, %__internal_trig_reduction_kernel.exit.i.i ], [ 0.000000e+00, %__nv_isinff.exit.i ] %317 = fcmp olt float %a, 0.000000e+00 %r.i.6 = select i1 %317, float 0x7FFFFFFFE0000000, float %r.i.5 %318 = fcmp ole float %0, 0x3FDC982EC0000000 br i1 %318, label %__internal_fmad.exit.i83, label %478 __internal_fmad.exit.i83: ; preds = %__nv_y1f.exit %319 = fmul float %0, %0 %320 = tail call float @llvm.nvvm.fma.rn.f(float 0x3E7B7CB580000000, float %319, float 0xBEE3E936C0000000) #145 %321 = tail call float @llvm.nvvm.fma.rn.f(float %320, float %319, float 0x3F41A62000000000) #145 %322 = tail call float @llvm.nvvm.fma.rn.f(float %321, float %319, float 0xBF9075B1C0000000) #145 %323 = tail call float @llvm.nvvm.fma.rn.f(float %322, float %319, float 0x3FC6BBCB40000000) #145 %324 = tail call float @llvm.nvvm.fma.rn.f(float %323, float %319, float 0xBFB2E4D6A0000000) #145 %325 = fmul float %0, 0x4160000000000000 %.0155 = select i1 %1, float %325, float %0 %i.i.i72.0 = select i1 %1, float -2.300000e+01, float 0.000000e+00 %326 = bitcast float %.0155 to i32 %327 = add i32 %326, -1059760811 %328 = and i32 %327, -8388608 %329 = sub i32 %326, %328 %330 = bitcast i32 %329 to float %331 = sitofp i32 %328 to float %332 = tail call float @llvm.nvvm.fma.rn.f(float %331, float 0x3E80000000000000, float %i.i.i72.0) #145 %333 = fadd float %330, -1.000000e+00 %334 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFC0AA04E0000000, float %333, float 0x3FC2073EC0000000) #145 %335 = tail call float @llvm.nvvm.fma.rn.f(float %334, float %333, float 0xBFBF19B980000000) #145 %336 = tail call float @llvm.nvvm.fma.rn.f(float %335, float %333, float 0x3FC1E52AA0000000) #145 %337 = tail call float @llvm.nvvm.fma.rn.f(float %336, float %333, float 0xBFC55B1720000000) #145 %338 = tail call float @llvm.nvvm.fma.rn.f(float %337, float %333, float 0x3FC99DA160000000) #145 %339 = tail call float @llvm.nvvm.fma.rn.f(float %338, float %333, float 0xBFCFFFE440000000) #145 %340 = tail call float @llvm.nvvm.fma.rn.f(float %339, float %333, float 0x3FD5554F00000000) #145 %341 = tail call float @llvm.nvvm.fma.rn.f(float %340, float %333, float -5.000000e-01) #145 %342 = fmul float %333, %341 %343 = tail call float @llvm.nvvm.fma.rn.f(float %342, float %333, float %333) #145 %344 = tail call float @llvm.nvvm.fma.rn.f(float %332, float 0x3FE62E4300000000, float %343) #145 %345 = icmp ugt i32 %326, 2139095039 %346 = tail call float @llvm.nvvm.fma.rn.f(float %.0155, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i.i71.0 = select i1 %345, float %346, float %344 %347 = fcmp oeq float %.0155, 0.000000e+00 %r.i.i71.0.op = fmul float %r.i.i71.0, 0x3FE45F3060000000 %348 = select i1 %347, float 0xFFF0000000000000, float %r.i.i71.0.op %349 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %350 = fcmp ugt float %349, 8.000000e+00 br i1 %350, label %__nv_isinff.exit.i.i115, label %__internal_fmad.exit.i.i102 __internal_fmad.exit.i.i102: ; preds = %__internal_fmad.exit.i83 %351 = fadd float %349, 0xC0033D1520000000 %352 = fadd float %351, 0xBE7D2E3660000000 %353 = tail call float @llvm.nvvm.fma.rn.f(float 0xBCD6771CE0000000, float %352, float 0xBD35953660000000) #145 %354 = tail call float @llvm.nvvm.fma.rn.f(float %353, float %352, float 0x3D87E1C300000000) #145 %355 = tail call float @llvm.nvvm.fma.rn.f(float %354, float %352, float 0xBD9A82F020000000) #145 %356 = tail call float @llvm.nvvm.fma.rn.f(float %355, float %352, float 0xBDFD21E700000000) #145 %357 = tail call float @llvm.nvvm.fma.rn.f(float %356, float %352, float 0x3E04060B60000000) #145 %358 = tail call float @llvm.nvvm.fma.rn.f(float %357, float %352, float 0x3E6F2E2860000000) #145 %359 = tail call float @llvm.nvvm.fma.rn.f(float %358, float %352, float 0x3E1EEDF0A0000000) #145 %360 = tail call float @llvm.nvvm.fma.rn.f(float %359, float %352, float 0xBED6DBF8C0000000) #145 %361 = tail call float @llvm.nvvm.fma.rn.f(float %360, float %352, float 0xBEDECCB920000000) #145 %362 = tail call float @llvm.nvvm.fma.rn.f(float %361, float %352, float 0x3F33C5BD60000000) #145 %363 = tail call float @llvm.nvvm.fma.rn.f(float %362, float %352, float 0x3F495C6680000000) #145 %364 = tail call float @llvm.nvvm.fma.rn.f(float %363, float %352, float 0xBF7DD54360000000) #145 %365 = tail call float @llvm.nvvm.fma.rn.f(float %364, float %352, float 0xBF9B4EE8E0000000) #145 %366 = fmul float %352, %365 %367 = fadd float %349, 0xC016148F60000000 %368 = fadd float %367, 0x3E734F46E0000000 %369 = fmul float %368, %366 %370 = fadd float %349, 0xC0214EB560000000 %371 = fadd float %370, 0xBE9999BDA0000000 %372 = fmul float %371, %369 br label %__nv_j0f.exit.i __nv_isinff.exit.i.i115: ; preds = %__internal_fmad.exit.i83 %373 = tail call float @llvm.nvvm.fabs.f(float %349) #145 %374 = fcmp oeq float %373, 0x7FF0000000000000 br i1 %374, label %__nv_j0f.exit.i, label %__internal_fmad.exit13.i.i116 __internal_fmad.exit13.i.i116: ; preds = %__nv_isinff.exit.i.i115 %375 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %349) #146, !srcloc !10 %376 = fmul float %375, %375 %377 = tail call float @llvm.nvvm.fma.rn.f(float 0x400ADFD260000000, float %376, float 0xBFE076F840000000) #145 %378 = tail call float @llvm.nvvm.fma.rn.f(float %377, float %376, float 0x3FBA767E60000000) #145 %379 = tail call float @llvm.nvvm.fma.rn.f(float %378, float %376, float 0xBFAFFFF6C0000000) #145 %380 = tail call float @llvm.nvvm.fma.rn.f(float %379, float %376, float 1.000000e+00) #145 %381 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FF23C0120000000, float %376, float 0xBFCA4825A0000000) #145 %382 = tail call float @llvm.nvvm.fma.rn.f(float %381, float %376, float 0x3FB0A9DA20000000) #145 %383 = tail call float @llvm.nvvm.fma.rn.f(float %382, float %376, float 0xBFBFFFFFE0000000) #145 %384 = tail call float @llvm.nvvm.fma.rn.f(float %383, float %375, float %349) #145 %385 = tail call float @llvm.nvvm.rsqrt.approx.f(float %349) #145 %386 = fmul float %385, 0x3FE9884540000000 %387 = fmul float %386, %380 %388 = fmul float %384, 0x3FE45F3060000000 %389 = tail call i32 @llvm.nvvm.f2i.rn(float %388) #145 %390 = sitofp i32 %389 to float %391 = tail call float @llvm.nvvm.fma.rn.f(float %390, float 0xBFF921FB40000000, float %384) #145 %392 = tail call float @llvm.nvvm.fma.rn.f(float %390, float 0xBE74442D00000000, float %391) #145 %393 = tail call float @llvm.nvvm.fma.rn.f(float %390, float 0xBCF84698A0000000, float %392) #145 %394 = tail call float @llvm.nvvm.fabs.f(float %384) #145 %395 = fcmp ult float %394, 1.056150e+05 br i1 %395, label %__internal_trig_reduction_kernel.exit.i.i.i132, label %__nv_isinff.exit.i.i.i.i129 __nv_isinff.exit.i.i.i.i129: ; preds = %__internal_fmad.exit13.i.i116 %396 = fcmp oeq float %394, 0x7FF0000000000000 br i1 %396, label %__nv_fmul_rn.exit.i.i.i.i130, label %398 __nv_fmul_rn.exit.i.i.i.i130: ; preds = %__nv_isinff.exit.i.i.i.i129 %397 = tail call float @llvm.nvvm.mul.rn.f(float %384, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i.i.i132 398: ; preds = %__nv_isinff.exit.i.i.i.i129 %399 = bitcast float %384 to i32 %400 = lshr i32 %399, 23 %401 = and i32 %400, 255 %402 = add nsw i32 %401, -128 %403 = shl i32 %399, 8 %404 = or i32 %403, -2147483648 %405 = lshr i32 %402, 5 br label %406 406: ; preds = %398, %406 %indvars.iv136 = phi i64 [ 0, %398 ], [ %indvars.iv.next137, %406 ] %hi.i.i.i.i.i36.096 = phi i32 [ 0, %398 ], [ %411, %406 ] %407 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv136 %408 = load i32, ptr addrspace(1) %407, align 4 %409 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %408, i32 %404, i32 %hi.i.i.i.i.i36.096) #146, !srcloc !11 %410 = extractvalue { i32, i32 } %409, 0 %411 = extractvalue { i32, i32 } %409, 1 %412 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %indvars.iv136 store i32 %410, ptr %412, align 4 %indvars.iv.next137 = add nuw nsw i64 %indvars.iv136, 1 %exitcond138.not = icmp eq i64 %indvars.iv.next137, 6 br i1 %exitcond138.not, label %413, label %406, !llvm.loop !12 413: ; preds = %406 %.lcssa174 = phi i32 [ %411, %406 ] %414 = and i32 %399, -2147483648 %415 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 6 store i32 %.lcssa174, ptr %415, align 4 %416 = and i32 %400, 31 %417 = sub nsw i32 6, %405 %418 = sext i32 %417 to i64 %419 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %418 %420 = load i32, ptr %419, align 4 %421 = sub nsw i32 5, %405 %422 = sext i32 %421 to i64 %423 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %422 %424 = load i32, ptr %423, align 4 %.not71 = icmp eq i32 %416, 0 br i1 %.not71, label %__internal_trig_reduction_slowpath.exit.i.i.i.i131, label %425 425: ; preds = %413 %426 = sub nsw i32 4, %405 %427 = sub nuw nsw i32 32, %416 %428 = shl i32 %420, %416 %429 = lshr i32 %424, %427 %430 = add i32 %429, %428 %431 = shl i32 %424, %416 %432 = sext i32 %426 to i64 %433 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %432 %434 = load i32, ptr %433, align 4 %435 = lshr i32 %434, %427 %436 = add i32 %435, %431 br label %__internal_trig_reduction_slowpath.exit.i.i.i.i131 __internal_trig_reduction_slowpath.exit.i.i.i.i131: ; preds = %425, %413 %hi.i.i.i.i.i36.1 = phi i32 [ %430, %425 ], [ %420, %413 ] %lo.i.i.i.i.i37.0 = phi i32 [ %436, %425 ], [ %424, %413 ] %437 = lshr i32 %hi.i.i.i.i.i36.1, 30 %438 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.i36.1, i32 %lo.i.i.i.i.i37.0, i32 2) %439 = shl i32 %lo.i.i.i.i.i37.0, 2 %440 = lshr i32 %438, 31 %441 = add nuw nsw i32 %440, %437 %.not72 = icmp eq i32 %414, 0 %442 = sub nsw i32 0, %441 %spec.select2 = select i1 %.not72, i32 %441, i32 %442 %.not73 = icmp sgt i32 %438, -1 %443 = xor i32 %414, -2147483648 %s.i.i.i.i.i34.0 = select i1 %.not73, i32 %414, i32 %443 %not..not73 = xor i1 %.not73, true %444 = sext i1 %not..not73 to i32 %hi.i.i.i.i.i36.2 = xor i32 %438, %444 %lo.i.i.i.i.i37.1 = xor i32 %439, %444 %445 = zext i32 %hi.i.i.i.i.i36.2 to i64 %446 = shl nuw i64 %445, 32 %447 = zext i32 %lo.i.i.i.i.i37.1 to i64 %448 = or i64 %446, %447 %449 = sitofp i64 %448 to double %450 = fmul double %449, 0x3BF921FB54442D19 %451 = fptrunc double %450 to float %.not75 = icmp eq i32 %s.i.i.i.i.i34.0, 0 %452 = fneg float %451 %r.i.i.i.i.i45.0 = select i1 %.not75, float %451, float %452 br label %__internal_trig_reduction_kernel.exit.i.i.i132 __internal_trig_reduction_kernel.exit.i.i.i132: ; preds = %__nv_fmul_rn.exit.i.i.i.i130, %__internal_trig_reduction_slowpath.exit.i.i.i.i131, %__internal_fmad.exit13.i.i116 %i.i.i.i51.1 = phi i32 [ %389, %__internal_fmad.exit13.i.i116 ], [ 0, %__nv_fmul_rn.exit.i.i.i.i130 ], [ %spec.select2, %__internal_trig_reduction_slowpath.exit.i.i.i.i131 ] %t.i.i.i.i48.1 = phi float [ %393, %__internal_fmad.exit13.i.i116 ], [ %397, %__nv_fmul_rn.exit.i.i.i.i130 ], [ %r.i.i.i.i.i45.0, %__internal_trig_reduction_slowpath.exit.i.i.i.i131 ] %453 = and i32 %i.i.i.i51.1, 3 %454 = uitofp i32 %453 to float %455 = tail call float @llvm.nvvm.fma.rn.f(float %454, float 0x3FF921FB60000000, float 0xBFE921FB60000000) #145 %456 = fadd float %t.i.i.i.i48.1, %455 %457 = fmul float %456, 0x3FE45F3060000000 %458 = tail call i32 @llvm.nvvm.f2i.rn(float %457) #145 %459 = sitofp i32 %458 to float %460 = tail call float @llvm.nvvm.fma.rn.f(float %459, float 0xBFF921FB40000000, float %456) #145 %461 = tail call float @llvm.nvvm.fma.rn.f(float %459, float 0xBE74442D00000000, float %460) #145 %462 = add i32 %458, 1 %463 = tail call float @llvm.nvvm.mul.rn.f(float %461, float %461) #145 %464 = and i32 %462, 1 %.not69 = icmp eq i32 %464, 0 %465 = select i1 %.not69, float %461, float 1.000000e+00 %466 = tail call float @llvm.nvvm.fma.rn.f(float %463, float %465, float 0.000000e+00) #145 %467 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %463, float 0xBF56C0FDA0000000) #145 %468 = select i1 %.not69, float 0xBF29A82A60000000, float %467 %469 = select i1 %.not69, float 0x3F8110BC80000000, float 0x3FA5555760000000 %470 = tail call float @llvm.nvvm.fma.rn.f(float %468, float %463, float %469) #145 %471 = select i1 %.not69, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %472 = tail call float @llvm.nvvm.fma.rn.f(float %470, float %463, float %471) #145 %473 = tail call float @llvm.nvvm.fma.rn.f(float %472, float %466, float %465) #145 %474 = and i32 %462, 2 %.not70 = icmp eq i32 %474, 0 %475 = tail call float @llvm.nvvm.fma.rn.f(float %473, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i.i.i27.0 = select i1 %.not70, float %473, float %475 %476 = fmul float %387, %z.i.i.i.i27.0 br label %__nv_j0f.exit.i __nv_j0f.exit.i: ; preds = %__internal_fmad.exit.i.i102, %__nv_isinff.exit.i.i115, %__internal_trig_reduction_kernel.exit.i.i.i132 %r.i5.i57.1 = phi float [ %372, %__internal_fmad.exit.i.i102 ], [ %476, %__internal_trig_reduction_kernel.exit.i.i.i132 ], [ 0.000000e+00, %__nv_isinff.exit.i.i115 ] %477 = tail call float @llvm.nvvm.fma.rn.f(float %348, float %r.i5.i57.1, float %324) #145 br label %__nv_y0f.exit 478: ; preds = %__nv_y1f.exit %479 = fcmp ugt float %0, 0x3FFECF5F00000000 br i1 %479, label %495, label %__internal_fmad.exit9.i146 __internal_fmad.exit9.i146: ; preds = %478 %480 = fadd float %0, 0xBFEC982EC0000000 %481 = fadd float %480, 0x3E4CAFA060000000 %482 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F9BB91660000000, float %481, float 0xBFC04AE980000000) #145 %483 = tail call float @llvm.nvvm.fma.rn.f(float %482, float %481, float 0x3FCFE59920000000) #145 %484 = tail call float @llvm.nvvm.fma.rn.f(float %483, float %481, float 0xBFD17E5360000000) #145 %485 = tail call float @llvm.nvvm.fma.rn.f(float %484, float %481, float 0x3FCB79D260000000) #145 %486 = tail call float @llvm.nvvm.fma.rn.f(float %485, float %481, float 0xBFC7189FE0000000) #145 %487 = tail call float @llvm.nvvm.fma.rn.f(float %486, float %481, float 0x3FC84EE9A0000000) #145 %488 = tail call float @llvm.nvvm.fma.rn.f(float %487, float %481, float 0xBFCA4B9640000000) #145 %489 = tail call float @llvm.nvvm.fma.rn.f(float %488, float %481, float 0x3FCC1E87A0000000) #145 %490 = tail call float @llvm.nvvm.fma.rn.f(float %489, float %481, float 0xBFCCF228A0000000) #145 %491 = tail call float @llvm.nvvm.fma.rn.f(float %490, float %481, float 0x3FCC3A4940000000) #145 %492 = tail call float @llvm.nvvm.fma.rn.f(float %491, float %481, float 0xBFDF7E35A0000000) #145 %493 = tail call float @llvm.nvvm.fma.rn.f(float %492, float %481, float 0x3FEC243760000000) #145 %494 = fmul float %481, %493 br label %__nv_y0f.exit 495: ; preds = %478 %496 = fcmp ugt float %0, 0x40161663C0000000 br i1 %496, label %509, label %__internal_fmad.exit33.i158 __internal_fmad.exit33.i158: ; preds = %495 %497 = fadd float %0, 0xC00FA95340000000 %498 = fadd float %497, 0xBE7B30AD40000000 %499 = tail call float @llvm.nvvm.fma.rn.f(float 0xBE893BA7E0000000, float %498, float 0xBE8BC4C0E0000000) #145 %500 = tail call float @llvm.nvvm.fma.rn.f(float %499, float %498, float 0xBED0AE0C80000000) #145 %501 = tail call float @llvm.nvvm.fma.rn.f(float %500, float %498, float 0x3F0AA8C200000000) #145 %502 = tail call float @llvm.nvvm.fma.rn.f(float %501, float %498, float 0x3F2959DAE0000000) #145 %503 = tail call float @llvm.nvvm.fma.rn.f(float %502, float %498, float 0xBF61E34180000000) #145 %504 = tail call float @llvm.nvvm.fma.rn.f(float %503, float %498, float 0xBF7C0FE5C0000000) #145 %505 = tail call float @llvm.nvvm.fma.rn.f(float %504, float %498, float 0x3FADF6D6A0000000) #145 %506 = tail call float @llvm.nvvm.fma.rn.f(float %505, float %498, float 0x3FAA09BE20000000) #145 %507 = tail call float @llvm.nvvm.fma.rn.f(float %506, float %498, float 0xBFD9C34260000000) #145 %508 = fmul float %498, %507 br label %__nv_y0f.exit 509: ; preds = %495 %510 = fcmp ugt float %0, 0x40214EF300000000 br i1 %510, label %__nv_isinff.exit.i173, label %__internal_fmad.exit51.i167 __internal_fmad.exit51.i167: ; preds = %509 %511 = fadd float %0, 0xC01C581DC0000000 %512 = fadd float %511, 0xBE739C8400000000 %513 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EA219D7C0000000, float %512, float 0x3EC53B4D80000000) #145 %514 = tail call float @llvm.nvvm.fma.rn.f(float %513, float %512, float 0xBF080A9800000000) #145 %515 = tail call float @llvm.nvvm.fma.rn.f(float %514, float %512, float 0xBF22631560000000) #145 %516 = tail call float @llvm.nvvm.fma.rn.f(float %515, float %512, float 0x3F61D32420000000) #145 %517 = tail call float @llvm.nvvm.fma.rn.f(float %516, float %512, float 0x3F6B2E9AA0000000) #145 %518 = tail call float @llvm.nvvm.fma.rn.f(float %517, float %512, float 0xBFA8969AE0000000) #145 %519 = tail call float @llvm.nvvm.fma.rn.f(float %518, float %512, float 0xBF95AEF320000000) #145 %520 = tail call float @llvm.nvvm.fma.rn.f(float %519, float %512, float 0x3FD334CCA0000000) #145 %521 = fmul float %512, %520 br label %__nv_y0f.exit __nv_isinff.exit.i173: ; preds = %509 %522 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %523 = fcmp oeq float %522, 0x7FF0000000000000 br i1 %523, label %__nv_y0f.exit, label %__internal_fmad.exit70.i174 __internal_fmad.exit70.i174: ; preds = %__nv_isinff.exit.i173 %524 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %0) #146, !srcloc !10 %525 = fmul float %524, %524 %526 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFD98D3E60000000, float %525, float 0x3FBA1ABE00000000) #145 %527 = tail call float @llvm.nvvm.fma.rn.f(float %526, float %525, float 0xBFAFFF0AA0000000) #145 %528 = tail call float @llvm.nvvm.fma.rn.f(float %527, float %525, float 1.000000e+00) #145 %529 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FF199AC20000000, float %525, float 0xBFCA1A6380000000) #145 %530 = tail call float @llvm.nvvm.fma.rn.f(float %529, float %525, float 0x3FB0A8F060000000) #145 %531 = tail call float @llvm.nvvm.fma.rn.f(float %530, float %525, float 0xBFBFFFFF60000000) #145 %532 = tail call float @llvm.nvvm.fma.rn.f(float %531, float %524, float %0) #145 %533 = tail call float @llvm.nvvm.rsqrt.approx.f(float %0) #145 %534 = fmul float %533, 0x3FE9884540000000 %535 = fmul float %534, %528 %536 = fmul float %532, 0x3FE45F3060000000 %537 = tail call i32 @llvm.nvvm.f2i.rn(float %536) #145 %538 = sitofp i32 %537 to float %539 = tail call float @llvm.nvvm.fma.rn.f(float %538, float 0xBFF921FB40000000, float %532) #145 %540 = tail call float @llvm.nvvm.fma.rn.f(float %538, float 0xBE74442D00000000, float %539) #145 %541 = tail call float @llvm.nvvm.fma.rn.f(float %538, float 0xBCF84698A0000000, float %540) #145 %542 = tail call float @llvm.nvvm.fabs.f(float %532) #145 %543 = fcmp ult float %542, 1.056150e+05 br i1 %543, label %__internal_trig_reduction_kernel.exit.i.i185, label %__nv_isinff.exit.i.i.i182 __nv_isinff.exit.i.i.i182: ; preds = %__internal_fmad.exit70.i174 %544 = fcmp oeq float %542, 0x7FF0000000000000 br i1 %544, label %__nv_fmul_rn.exit.i.i.i183, label %546 __nv_fmul_rn.exit.i.i.i183: ; preds = %__nv_isinff.exit.i.i.i182 %545 = tail call float @llvm.nvvm.mul.rn.f(float %532, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i.i185 546: ; preds = %__nv_isinff.exit.i.i.i182 %547 = bitcast float %532 to i32 %548 = lshr i32 %547, 23 %549 = and i32 %548, 255 %550 = add nsw i32 %549, -128 %551 = shl i32 %547, 8 %552 = or i32 %551, -2147483648 %553 = lshr i32 %550, 5 br label %554 554: ; preds = %546, %554 %indvars.iv133 = phi i64 [ 0, %546 ], [ %indvars.iv.next134, %554 ] %hi.i.i.i.i10.093 = phi i32 [ 0, %546 ], [ %559, %554 ] %555 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv133 %556 = load i32, ptr addrspace(1) %555, align 4 %557 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %556, i32 %552, i32 %hi.i.i.i.i10.093) #146, !srcloc !11 %558 = extractvalue { i32, i32 } %557, 0 %559 = extractvalue { i32, i32 } %557, 1 %560 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %indvars.iv133 store i32 %558, ptr %560, align 4 %indvars.iv.next134 = add nuw nsw i64 %indvars.iv133, 1 %exitcond135.not = icmp eq i64 %indvars.iv.next134, 6 br i1 %exitcond135.not, label %561, label %554, !llvm.loop !12 561: ; preds = %554 %.lcssa175 = phi i32 [ %559, %554 ] %562 = and i32 %547, -2147483648 %563 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 6 store i32 %.lcssa175, ptr %563, align 4 %564 = and i32 %548, 31 %565 = sub nsw i32 6, %553 %566 = sext i32 %565 to i64 %567 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %566 %568 = load i32, ptr %567, align 4 %569 = sub nsw i32 5, %553 %570 = sext i32 %569 to i64 %571 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %570 %572 = load i32, ptr %571, align 4 %.not64 = icmp eq i32 %564, 0 br i1 %.not64, label %__internal_trig_reduction_slowpath.exit.i.i.i184, label %573 573: ; preds = %561 %574 = sub nsw i32 4, %553 %575 = sub nuw nsw i32 32, %564 %576 = shl i32 %568, %564 %577 = lshr i32 %572, %575 %578 = add i32 %577, %576 %579 = shl i32 %572, %564 %580 = sext i32 %574 to i64 %581 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %580 %582 = load i32, ptr %581, align 4 %583 = lshr i32 %582, %575 %584 = add i32 %583, %579 br label %__internal_trig_reduction_slowpath.exit.i.i.i184 __internal_trig_reduction_slowpath.exit.i.i.i184: ; preds = %573, %561 %hi.i.i.i.i10.1 = phi i32 [ %578, %573 ], [ %568, %561 ] %lo.i.i.i.i11.0 = phi i32 [ %584, %573 ], [ %572, %561 ] %585 = lshr i32 %hi.i.i.i.i10.1, 30 %586 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i10.1, i32 %lo.i.i.i.i11.0, i32 2) %587 = shl i32 %lo.i.i.i.i11.0, 2 %588 = lshr i32 %586, 31 %589 = add nuw nsw i32 %588, %585 %.not65 = icmp eq i32 %562, 0 %590 = sub nsw i32 0, %589 %spec.select3 = select i1 %.not65, i32 %589, i32 %590 %.not66 = icmp sgt i32 %586, -1 %591 = xor i32 %562, -2147483648 %s.i.i.i.i9.0 = select i1 %.not66, i32 %562, i32 %591 %not..not66 = xor i1 %.not66, true %592 = sext i1 %not..not66 to i32 %hi.i.i.i.i10.2 = xor i32 %586, %592 %lo.i.i.i.i11.1 = xor i32 %587, %592 %593 = zext i32 %hi.i.i.i.i10.2 to i64 %594 = shl nuw i64 %593, 32 %595 = zext i32 %lo.i.i.i.i11.1 to i64 %596 = or i64 %594, %595 %597 = sitofp i64 %596 to double %598 = fmul double %597, 0x3BF921FB54442D19 %599 = fptrunc double %598 to float %.not68 = icmp eq i32 %s.i.i.i.i9.0, 0 %600 = fneg float %599 %r.i.i.i.i19.0 = select i1 %.not68, float %599, float %600 br label %__internal_trig_reduction_kernel.exit.i.i185 __internal_trig_reduction_kernel.exit.i.i185: ; preds = %__nv_fmul_rn.exit.i.i.i183, %__internal_trig_reduction_slowpath.exit.i.i.i184, %__internal_fmad.exit70.i174 %i.i85.i.1 = phi i32 [ %537, %__internal_fmad.exit70.i174 ], [ 0, %__nv_fmul_rn.exit.i.i.i183 ], [ %spec.select3, %__internal_trig_reduction_slowpath.exit.i.i.i184 ] %t.i.i.i22.1 = phi float [ %541, %__internal_fmad.exit70.i174 ], [ %545, %__nv_fmul_rn.exit.i.i.i183 ], [ %r.i.i.i.i19.0, %__internal_trig_reduction_slowpath.exit.i.i.i184 ] %601 = and i32 %i.i85.i.1, 3 %602 = uitofp i32 %601 to float %603 = tail call float @llvm.nvvm.fma.rn.f(float %602, float 0x3FF921FB60000000, float 0xC002D97C80000000) #145 %604 = fadd float %t.i.i.i22.1, %603 %605 = fmul float %604, 0x3FE45F3060000000 %606 = tail call i32 @llvm.nvvm.f2i.rn(float %605) #145 %607 = sitofp i32 %606 to float %608 = tail call float @llvm.nvvm.fma.rn.f(float %607, float 0xBFF921FB40000000, float %604) #145 %609 = tail call float @llvm.nvvm.fma.rn.f(float %607, float 0xBE74442D00000000, float %608) #145 %610 = add i32 %606, 1 %611 = tail call float @llvm.nvvm.mul.rn.f(float %609, float %609) #145 %612 = and i32 %610, 1 %.not34 = icmp eq i32 %612, 0 %613 = select i1 %.not34, float %609, float 1.000000e+00 %614 = tail call float @llvm.nvvm.fma.rn.f(float %611, float %613, float 0.000000e+00) #145 %615 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %611, float 0xBF56C0FDA0000000) #145 %616 = select i1 %.not34, float 0xBF29A82A60000000, float %615 %617 = select i1 %.not34, float 0x3F8110BC80000000, float 0x3FA5555760000000 %618 = tail call float @llvm.nvvm.fma.rn.f(float %616, float %611, float %617) #145 %619 = select i1 %.not34, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %620 = tail call float @llvm.nvvm.fma.rn.f(float %618, float %611, float %619) #145 %621 = tail call float @llvm.nvvm.fma.rn.f(float %620, float %614, float %613) #145 %622 = and i32 %610, 2 %.not35 = icmp eq i32 %622, 0 %623 = tail call float @llvm.nvvm.fma.rn.f(float %621, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i83.i.0 = select i1 %.not35, float %621, float %623 %624 = fmul float %535, %z.i.i83.i.0 br label %__nv_y0f.exit __nv_y0f.exit: ; preds = %__internal_fmad.exit9.i146, %__internal_fmad.exit51.i167, %__nv_isinff.exit.i173, %__internal_trig_reduction_kernel.exit.i.i185, %__internal_fmad.exit33.i158, %__nv_j0f.exit.i %r.i75.4 = phi float [ %477, %__nv_j0f.exit.i ], [ %494, %__internal_fmad.exit9.i146 ], [ %508, %__internal_fmad.exit33.i158 ], [ %521, %__internal_fmad.exit51.i167 ], [ %624, %__internal_trig_reduction_kernel.exit.i.i185 ], [ 0.000000e+00, %__nv_isinff.exit.i173 ] %r.i75.5 = select i1 %317, float 0x7FFFFFFFE0000000, float %r.i75.4 switch i32 %n, label %1246 [ i32 0, label %__nv_fabsf.exit.i281 i32 1, label %__nv_fabsf.exit.i496 ] __nv_fabsf.exit.i281: ; preds = %__nv_y0f.exit br i1 %318, label %__internal_fmad.exit.i282, label %784 __internal_fmad.exit.i282: ; preds = %__nv_fabsf.exit.i281 %625 = fmul float %0, %0 %626 = tail call float @llvm.nvvm.fma.rn.f(float 0x3E7B7CB580000000, float %625, float 0xBEE3E936C0000000) #145 %627 = tail call float @llvm.nvvm.fma.rn.f(float %626, float %625, float 0x3F41A62000000000) #145 %628 = tail call float @llvm.nvvm.fma.rn.f(float %627, float %625, float 0xBF9075B1C0000000) #145 %629 = tail call float @llvm.nvvm.fma.rn.f(float %628, float %625, float 0x3FC6BBCB40000000) #145 %630 = tail call float @llvm.nvvm.fma.rn.f(float %629, float %625, float 0xBFB2E4D6A0000000) #145 %631 = fmul float %0, 0x4160000000000000 %.0299 = select i1 %1, float %631, float %0 %i.i.i271.0 = select i1 %1, float -2.300000e+01, float 0.000000e+00 %632 = bitcast float %.0299 to i32 %633 = add i32 %632, -1059760811 %634 = and i32 %633, -8388608 %635 = sub i32 %632, %634 %636 = bitcast i32 %635 to float %637 = sitofp i32 %634 to float %638 = tail call float @llvm.nvvm.fma.rn.f(float %637, float 0x3E80000000000000, float %i.i.i271.0) #145 %639 = fadd float %636, -1.000000e+00 %640 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFC0AA04E0000000, float %639, float 0x3FC2073EC0000000) #145 %641 = tail call float @llvm.nvvm.fma.rn.f(float %640, float %639, float 0xBFBF19B980000000) #145 %642 = tail call float @llvm.nvvm.fma.rn.f(float %641, float %639, float 0x3FC1E52AA0000000) #145 %643 = tail call float @llvm.nvvm.fma.rn.f(float %642, float %639, float 0xBFC55B1720000000) #145 %644 = tail call float @llvm.nvvm.fma.rn.f(float %643, float %639, float 0x3FC99DA160000000) #145 %645 = tail call float @llvm.nvvm.fma.rn.f(float %644, float %639, float 0xBFCFFFE440000000) #145 %646 = tail call float @llvm.nvvm.fma.rn.f(float %645, float %639, float 0x3FD5554F00000000) #145 %647 = tail call float @llvm.nvvm.fma.rn.f(float %646, float %639, float -5.000000e-01) #145 %648 = fmul float %639, %647 %649 = tail call float @llvm.nvvm.fma.rn.f(float %648, float %639, float %639) #145 %650 = tail call float @llvm.nvvm.fma.rn.f(float %638, float 0x3FE62E4300000000, float %649) #145 %651 = icmp ugt i32 %632, 2139095039 %652 = tail call float @llvm.nvvm.fma.rn.f(float %.0299, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i.i270.0 = select i1 %651, float %652, float %650 %653 = fcmp oeq float %.0299, 0.000000e+00 %r.i.i270.0.op = fmul float %r.i.i270.0, 0x3FE45F3060000000 %654 = select i1 %653, float 0xFFF0000000000000, float %r.i.i270.0.op %655 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %656 = fcmp ugt float %655, 8.000000e+00 br i1 %656, label %__nv_isinff.exit.i.i314, label %__internal_fmad.exit.i.i301 __internal_fmad.exit.i.i301: ; preds = %__internal_fmad.exit.i282 %657 = fadd float %655, 0xC0033D1520000000 %658 = fadd float %657, 0xBE7D2E3660000000 %659 = tail call float @llvm.nvvm.fma.rn.f(float 0xBCD6771CE0000000, float %658, float 0xBD35953660000000) #145 %660 = tail call float @llvm.nvvm.fma.rn.f(float %659, float %658, float 0x3D87E1C300000000) #145 %661 = tail call float @llvm.nvvm.fma.rn.f(float %660, float %658, float 0xBD9A82F020000000) #145 %662 = tail call float @llvm.nvvm.fma.rn.f(float %661, float %658, float 0xBDFD21E700000000) #145 %663 = tail call float @llvm.nvvm.fma.rn.f(float %662, float %658, float 0x3E04060B60000000) #145 %664 = tail call float @llvm.nvvm.fma.rn.f(float %663, float %658, float 0x3E6F2E2860000000) #145 %665 = tail call float @llvm.nvvm.fma.rn.f(float %664, float %658, float 0x3E1EEDF0A0000000) #145 %666 = tail call float @llvm.nvvm.fma.rn.f(float %665, float %658, float 0xBED6DBF8C0000000) #145 %667 = tail call float @llvm.nvvm.fma.rn.f(float %666, float %658, float 0xBEDECCB920000000) #145 %668 = tail call float @llvm.nvvm.fma.rn.f(float %667, float %658, float 0x3F33C5BD60000000) #145 %669 = tail call float @llvm.nvvm.fma.rn.f(float %668, float %658, float 0x3F495C6680000000) #145 %670 = tail call float @llvm.nvvm.fma.rn.f(float %669, float %658, float 0xBF7DD54360000000) #145 %671 = tail call float @llvm.nvvm.fma.rn.f(float %670, float %658, float 0xBF9B4EE8E0000000) #145 %672 = fmul float %658, %671 %673 = fadd float %655, 0xC016148F60000000 %674 = fadd float %673, 0x3E734F46E0000000 %675 = fmul float %674, %672 %676 = fadd float %655, 0xC0214EB560000000 %677 = fadd float %676, 0xBE9999BDA0000000 %678 = fmul float %677, %675 br label %__nv_j0f.exit.i345 __nv_isinff.exit.i.i314: ; preds = %__internal_fmad.exit.i282 %679 = tail call float @llvm.nvvm.fabs.f(float %655) #145 %680 = fcmp oeq float %679, 0x7FF0000000000000 br i1 %680, label %__nv_j0f.exit.i345, label %__internal_fmad.exit13.i.i315 __internal_fmad.exit13.i.i315: ; preds = %__nv_isinff.exit.i.i314 %681 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %655) #146, !srcloc !10 %682 = fmul float %681, %681 %683 = tail call float @llvm.nvvm.fma.rn.f(float 0x400ADFD260000000, float %682, float 0xBFE076F840000000) #145 %684 = tail call float @llvm.nvvm.fma.rn.f(float %683, float %682, float 0x3FBA767E60000000) #145 %685 = tail call float @llvm.nvvm.fma.rn.f(float %684, float %682, float 0xBFAFFFF6C0000000) #145 %686 = tail call float @llvm.nvvm.fma.rn.f(float %685, float %682, float 1.000000e+00) #145 %687 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FF23C0120000000, float %682, float 0xBFCA4825A0000000) #145 %688 = tail call float @llvm.nvvm.fma.rn.f(float %687, float %682, float 0x3FB0A9DA20000000) #145 %689 = tail call float @llvm.nvvm.fma.rn.f(float %688, float %682, float 0xBFBFFFFFE0000000) #145 %690 = tail call float @llvm.nvvm.fma.rn.f(float %689, float %681, float %655) #145 %691 = tail call float @llvm.nvvm.rsqrt.approx.f(float %655) #145 %692 = fmul float %691, 0x3FE9884540000000 %693 = fmul float %692, %686 %694 = fmul float %690, 0x3FE45F3060000000 %695 = tail call i32 @llvm.nvvm.f2i.rn(float %694) #145 %696 = sitofp i32 %695 to float %697 = tail call float @llvm.nvvm.fma.rn.f(float %696, float 0xBFF921FB40000000, float %690) #145 %698 = tail call float @llvm.nvvm.fma.rn.f(float %696, float 0xBE74442D00000000, float %697) #145 %699 = tail call float @llvm.nvvm.fma.rn.f(float %696, float 0xBCF84698A0000000, float %698) #145 %700 = tail call float @llvm.nvvm.fabs.f(float %690) #145 %701 = fcmp ult float %700, 1.056150e+05 br i1 %701, label %__internal_trig_reduction_kernel.exit.i.i.i332, label %__nv_isinff.exit.i.i.i.i329 __nv_isinff.exit.i.i.i.i329: ; preds = %__internal_fmad.exit13.i.i315 %702 = fcmp oeq float %700, 0x7FF0000000000000 br i1 %702, label %__nv_fmul_rn.exit.i.i.i.i330, label %704 __nv_fmul_rn.exit.i.i.i.i330: ; preds = %__nv_isinff.exit.i.i.i.i329 %703 = tail call float @llvm.nvvm.mul.rn.f(float %690, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i.i.i332 704: ; preds = %__nv_isinff.exit.i.i.i.i329 %705 = bitcast float %690 to i32 %706 = lshr i32 %705, 23 %707 = and i32 %706, 255 %708 = add nsw i32 %707, -128 %709 = shl i32 %705, 8 %710 = or i32 %709, -2147483648 %711 = lshr i32 %708, 5 br label %712 712: ; preds = %704, %712 %indvars.iv148 = phi i64 [ 0, %704 ], [ %indvars.iv.next149, %712 ] %hi.i.i.i.i.i235.0108 = phi i32 [ 0, %704 ], [ %717, %712 ] %713 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv148 %714 = load i32, ptr addrspace(1) %713, align 4 %715 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %714, i32 %710, i32 %hi.i.i.i.i.i235.0108) #146, !srcloc !11 %716 = extractvalue { i32, i32 } %715, 0 %717 = extractvalue { i32, i32 } %715, 1 %718 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %indvars.iv148 store i32 %716, ptr %718, align 4 %indvars.iv.next149 = add nuw nsw i64 %indvars.iv148, 1 %exitcond150.not = icmp eq i64 %indvars.iv.next149, 6 br i1 %exitcond150.not, label %719, label %712, !llvm.loop !12 719: ; preds = %712 %.lcssa170 = phi i32 [ %717, %712 ] %720 = and i32 %705, -2147483648 %721 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 6 store i32 %.lcssa170, ptr %721, align 4 %722 = and i32 %706, 31 %723 = sub nsw i32 6, %711 %724 = sext i32 %723 to i64 %725 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %724 %726 = load i32, ptr %725, align 4 %727 = sub nsw i32 5, %711 %728 = sext i32 %727 to i64 %729 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %728 %730 = load i32, ptr %729, align 4 %.not59 = icmp eq i32 %722, 0 br i1 %.not59, label %__internal_trig_reduction_slowpath.exit.i.i.i.i331, label %731 731: ; preds = %719 %732 = sub nsw i32 4, %711 %733 = sub nuw nsw i32 32, %722 %734 = shl i32 %726, %722 %735 = lshr i32 %730, %733 %736 = add i32 %735, %734 %737 = shl i32 %730, %722 %738 = sext i32 %732 to i64 %739 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %738 %740 = load i32, ptr %739, align 4 %741 = lshr i32 %740, %733 %742 = add i32 %741, %737 br label %__internal_trig_reduction_slowpath.exit.i.i.i.i331 __internal_trig_reduction_slowpath.exit.i.i.i.i331: ; preds = %731, %719 %hi.i.i.i.i.i235.1 = phi i32 [ %736, %731 ], [ %726, %719 ] %lo.i.i.i.i.i236.0 = phi i32 [ %742, %731 ], [ %730, %719 ] %743 = lshr i32 %hi.i.i.i.i.i235.1, 30 %744 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.i235.1, i32 %lo.i.i.i.i.i236.0, i32 2) %745 = shl i32 %lo.i.i.i.i.i236.0, 2 %746 = lshr i32 %744, 31 %747 = add nuw nsw i32 %746, %743 %.not60 = icmp eq i32 %720, 0 %748 = sub nsw i32 0, %747 %spec.select4 = select i1 %.not60, i32 %747, i32 %748 %.not61 = icmp sgt i32 %744, -1 %749 = xor i32 %720, -2147483648 %s.i.i.i.i.i233.0 = select i1 %.not61, i32 %720, i32 %749 %not..not61 = xor i1 %.not61, true %750 = sext i1 %not..not61 to i32 %hi.i.i.i.i.i235.2 = xor i32 %744, %750 %lo.i.i.i.i.i236.1 = xor i32 %745, %750 %751 = zext i32 %hi.i.i.i.i.i235.2 to i64 %752 = shl nuw i64 %751, 32 %753 = zext i32 %lo.i.i.i.i.i236.1 to i64 %754 = or i64 %752, %753 %755 = sitofp i64 %754 to double %756 = fmul double %755, 0x3BF921FB54442D19 %757 = fptrunc double %756 to float %.not63 = icmp eq i32 %s.i.i.i.i.i233.0, 0 %758 = fneg float %757 %r.i.i.i.i.i244.0 = select i1 %.not63, float %757, float %758 br label %__internal_trig_reduction_kernel.exit.i.i.i332 __internal_trig_reduction_kernel.exit.i.i.i332: ; preds = %__nv_fmul_rn.exit.i.i.i.i330, %__internal_trig_reduction_slowpath.exit.i.i.i.i331, %__internal_fmad.exit13.i.i315 %i.i.i.i250.1 = phi i32 [ %695, %__internal_fmad.exit13.i.i315 ], [ 0, %__nv_fmul_rn.exit.i.i.i.i330 ], [ %spec.select4, %__internal_trig_reduction_slowpath.exit.i.i.i.i331 ] %t.i.i.i.i247.1 = phi float [ %699, %__internal_fmad.exit13.i.i315 ], [ %703, %__nv_fmul_rn.exit.i.i.i.i330 ], [ %r.i.i.i.i.i244.0, %__internal_trig_reduction_slowpath.exit.i.i.i.i331 ] %759 = and i32 %i.i.i.i250.1, 3 %760 = uitofp i32 %759 to float %761 = tail call float @llvm.nvvm.fma.rn.f(float %760, float 0x3FF921FB60000000, float 0xBFE921FB60000000) #145 %762 = fadd float %t.i.i.i.i247.1, %761 %763 = fmul float %762, 0x3FE45F3060000000 %764 = tail call i32 @llvm.nvvm.f2i.rn(float %763) #145 %765 = sitofp i32 %764 to float %766 = tail call float @llvm.nvvm.fma.rn.f(float %765, float 0xBFF921FB40000000, float %762) #145 %767 = tail call float @llvm.nvvm.fma.rn.f(float %765, float 0xBE74442D00000000, float %766) #145 %768 = add i32 %764, 1 %769 = tail call float @llvm.nvvm.mul.rn.f(float %767, float %767) #145 %770 = and i32 %768, 1 %.not57 = icmp eq i32 %770, 0 %771 = select i1 %.not57, float %767, float 1.000000e+00 %772 = tail call float @llvm.nvvm.fma.rn.f(float %769, float %771, float 0.000000e+00) #145 %773 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %769, float 0xBF56C0FDA0000000) #145 %774 = select i1 %.not57, float 0xBF29A82A60000000, float %773 %775 = select i1 %.not57, float 0x3F8110BC80000000, float 0x3FA5555760000000 %776 = tail call float @llvm.nvvm.fma.rn.f(float %774, float %769, float %775) #145 %777 = select i1 %.not57, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %778 = tail call float @llvm.nvvm.fma.rn.f(float %776, float %769, float %777) #145 %779 = tail call float @llvm.nvvm.fma.rn.f(float %778, float %772, float %771) #145 %780 = and i32 %768, 2 %.not58 = icmp eq i32 %780, 0 %781 = tail call float @llvm.nvvm.fma.rn.f(float %779, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i.i.i226.0 = select i1 %.not58, float %779, float %781 %782 = fmul float %693, %z.i.i.i.i226.0 br label %__nv_j0f.exit.i345 __nv_j0f.exit.i345: ; preds = %__internal_fmad.exit.i.i301, %__nv_isinff.exit.i.i314, %__internal_trig_reduction_kernel.exit.i.i.i332 %r.i5.i256.1 = phi float [ %678, %__internal_fmad.exit.i.i301 ], [ %782, %__internal_trig_reduction_kernel.exit.i.i.i332 ], [ 0.000000e+00, %__nv_isinff.exit.i.i314 ] %783 = tail call float @llvm.nvvm.fma.rn.f(float %654, float %r.i5.i256.1, float %630) #145 br label %__nv_y0f.exit406 784: ; preds = %__nv_fabsf.exit.i281 %785 = fcmp ugt float %0, 0x3FFECF5F00000000 br i1 %785, label %801, label %__internal_fmad.exit9.i347 __internal_fmad.exit9.i347: ; preds = %784 %786 = fadd float %0, 0xBFEC982EC0000000 %787 = fadd float %786, 0x3E4CAFA060000000 %788 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F9BB91660000000, float %787, float 0xBFC04AE980000000) #145 %789 = tail call float @llvm.nvvm.fma.rn.f(float %788, float %787, float 0x3FCFE59920000000) #145 %790 = tail call float @llvm.nvvm.fma.rn.f(float %789, float %787, float 0xBFD17E5360000000) #145 %791 = tail call float @llvm.nvvm.fma.rn.f(float %790, float %787, float 0x3FCB79D260000000) #145 %792 = tail call float @llvm.nvvm.fma.rn.f(float %791, float %787, float 0xBFC7189FE0000000) #145 %793 = tail call float @llvm.nvvm.fma.rn.f(float %792, float %787, float 0x3FC84EE9A0000000) #145 %794 = tail call float @llvm.nvvm.fma.rn.f(float %793, float %787, float 0xBFCA4B9640000000) #145 %795 = tail call float @llvm.nvvm.fma.rn.f(float %794, float %787, float 0x3FCC1E87A0000000) #145 %796 = tail call float @llvm.nvvm.fma.rn.f(float %795, float %787, float 0xBFCCF228A0000000) #145 %797 = tail call float @llvm.nvvm.fma.rn.f(float %796, float %787, float 0x3FCC3A4940000000) #145 %798 = tail call float @llvm.nvvm.fma.rn.f(float %797, float %787, float 0xBFDF7E35A0000000) #145 %799 = tail call float @llvm.nvvm.fma.rn.f(float %798, float %787, float 0x3FEC243760000000) #145 %800 = fmul float %787, %799 br label %__nv_y0f.exit406 801: ; preds = %784 %802 = fcmp ugt float %0, 0x40161663C0000000 br i1 %802, label %815, label %__internal_fmad.exit33.i359 __internal_fmad.exit33.i359: ; preds = %801 %803 = fadd float %0, 0xC00FA95340000000 %804 = fadd float %803, 0xBE7B30AD40000000 %805 = tail call float @llvm.nvvm.fma.rn.f(float 0xBE893BA7E0000000, float %804, float 0xBE8BC4C0E0000000) #145 %806 = tail call float @llvm.nvvm.fma.rn.f(float %805, float %804, float 0xBED0AE0C80000000) #145 %807 = tail call float @llvm.nvvm.fma.rn.f(float %806, float %804, float 0x3F0AA8C200000000) #145 %808 = tail call float @llvm.nvvm.fma.rn.f(float %807, float %804, float 0x3F2959DAE0000000) #145 %809 = tail call float @llvm.nvvm.fma.rn.f(float %808, float %804, float 0xBF61E34180000000) #145 %810 = tail call float @llvm.nvvm.fma.rn.f(float %809, float %804, float 0xBF7C0FE5C0000000) #145 %811 = tail call float @llvm.nvvm.fma.rn.f(float %810, float %804, float 0x3FADF6D6A0000000) #145 %812 = tail call float @llvm.nvvm.fma.rn.f(float %811, float %804, float 0x3FAA09BE20000000) #145 %813 = tail call float @llvm.nvvm.fma.rn.f(float %812, float %804, float 0xBFD9C34260000000) #145 %814 = fmul float %804, %813 br label %__nv_y0f.exit406 815: ; preds = %801 %816 = fcmp ugt float %0, 0x40214EF300000000 br i1 %816, label %__nv_isinff.exit.i376, label %__internal_fmad.exit51.i368 __internal_fmad.exit51.i368: ; preds = %815 %817 = fadd float %0, 0xC01C581DC0000000 %818 = fadd float %817, 0xBE739C8400000000 %819 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EA219D7C0000000, float %818, float 0x3EC53B4D80000000) #145 %820 = tail call float @llvm.nvvm.fma.rn.f(float %819, float %818, float 0xBF080A9800000000) #145 %821 = tail call float @llvm.nvvm.fma.rn.f(float %820, float %818, float 0xBF22631560000000) #145 %822 = tail call float @llvm.nvvm.fma.rn.f(float %821, float %818, float 0x3F61D32420000000) #145 %823 = tail call float @llvm.nvvm.fma.rn.f(float %822, float %818, float 0x3F6B2E9AA0000000) #145 %824 = tail call float @llvm.nvvm.fma.rn.f(float %823, float %818, float 0xBFA8969AE0000000) #145 %825 = tail call float @llvm.nvvm.fma.rn.f(float %824, float %818, float 0xBF95AEF320000000) #145 %826 = tail call float @llvm.nvvm.fma.rn.f(float %825, float %818, float 0x3FD334CCA0000000) #145 %827 = fmul float %818, %826 br label %__nv_y0f.exit406 __nv_isinff.exit.i376: ; preds = %815 %828 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %829 = fcmp oeq float %828, 0x7FF0000000000000 br i1 %829, label %__nv_y0f.exit406, label %__internal_fmad.exit70.i377 __internal_fmad.exit70.i377: ; preds = %__nv_isinff.exit.i376 %830 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %0) #146, !srcloc !10 %831 = fmul float %830, %830 %832 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFD98D3E60000000, float %831, float 0x3FBA1ABE00000000) #145 %833 = tail call float @llvm.nvvm.fma.rn.f(float %832, float %831, float 0xBFAFFF0AA0000000) #145 %834 = tail call float @llvm.nvvm.fma.rn.f(float %833, float %831, float 1.000000e+00) #145 %835 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FF199AC20000000, float %831, float 0xBFCA1A6380000000) #145 %836 = tail call float @llvm.nvvm.fma.rn.f(float %835, float %831, float 0x3FB0A8F060000000) #145 %837 = tail call float @llvm.nvvm.fma.rn.f(float %836, float %831, float 0xBFBFFFFF60000000) #145 %838 = tail call float @llvm.nvvm.fma.rn.f(float %837, float %830, float %0) #145 %839 = tail call float @llvm.nvvm.rsqrt.approx.f(float %0) #145 %840 = fmul float %839, 0x3FE9884540000000 %841 = fmul float %840, %834 %842 = fmul float %838, 0x3FE45F3060000000 %843 = tail call i32 @llvm.nvvm.f2i.rn(float %842) #145 %844 = sitofp i32 %843 to float %845 = tail call float @llvm.nvvm.fma.rn.f(float %844, float 0xBFF921FB40000000, float %838) #145 %846 = tail call float @llvm.nvvm.fma.rn.f(float %844, float 0xBE74442D00000000, float %845) #145 %847 = tail call float @llvm.nvvm.fma.rn.f(float %844, float 0xBCF84698A0000000, float %846) #145 %848 = tail call float @llvm.nvvm.fabs.f(float %838) #145 %849 = fcmp ult float %848, 1.056150e+05 br i1 %849, label %__internal_trig_reduction_kernel.exit.i.i393, label %__nv_isinff.exit.i.i.i390 __nv_isinff.exit.i.i.i390: ; preds = %__internal_fmad.exit70.i377 %850 = fcmp oeq float %848, 0x7FF0000000000000 br i1 %850, label %__nv_fmul_rn.exit.i.i.i391, label %852 __nv_fmul_rn.exit.i.i.i391: ; preds = %__nv_isinff.exit.i.i.i390 %851 = tail call float @llvm.nvvm.mul.rn.f(float %838, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i.i393 852: ; preds = %__nv_isinff.exit.i.i.i390 %853 = bitcast float %838 to i32 %854 = lshr i32 %853, 23 %855 = and i32 %854, 255 %856 = add nsw i32 %855, -128 %857 = shl i32 %853, 8 %858 = or i32 %857, -2147483648 %859 = lshr i32 %856, 5 br label %860 860: ; preds = %852, %860 %indvars.iv145 = phi i64 [ 0, %852 ], [ %indvars.iv.next146, %860 ] %hi.i.i.i.i205.0105 = phi i32 [ 0, %852 ], [ %865, %860 ] %861 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv145 %862 = load i32, ptr addrspace(1) %861, align 4 %863 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %862, i32 %858, i32 %hi.i.i.i.i205.0105) #146, !srcloc !11 %864 = extractvalue { i32, i32 } %863, 0 %865 = extractvalue { i32, i32 } %863, 1 %866 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %indvars.iv145 store i32 %864, ptr %866, align 4 %indvars.iv.next146 = add nuw nsw i64 %indvars.iv145, 1 %exitcond147.not = icmp eq i64 %indvars.iv.next146, 6 br i1 %exitcond147.not, label %867, label %860, !llvm.loop !12 867: ; preds = %860 %.lcssa171 = phi i32 [ %865, %860 ] %868 = and i32 %853, -2147483648 %869 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 6 store i32 %.lcssa171, ptr %869, align 4 %870 = and i32 %854, 31 %871 = sub nsw i32 6, %859 %872 = sext i32 %871 to i64 %873 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %872 %874 = load i32, ptr %873, align 4 %875 = sub nsw i32 5, %859 %876 = sext i32 %875 to i64 %877 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %876 %878 = load i32, ptr %877, align 4 %.not52 = icmp eq i32 %870, 0 br i1 %.not52, label %__internal_trig_reduction_slowpath.exit.i.i.i392, label %879 879: ; preds = %867 %880 = sub nsw i32 4, %859 %881 = sub nuw nsw i32 32, %870 %882 = shl i32 %874, %870 %883 = lshr i32 %878, %881 %884 = add i32 %883, %882 %885 = shl i32 %878, %870 %886 = sext i32 %880 to i64 %887 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %886 %888 = load i32, ptr %887, align 4 %889 = lshr i32 %888, %881 %890 = add i32 %889, %885 br label %__internal_trig_reduction_slowpath.exit.i.i.i392 __internal_trig_reduction_slowpath.exit.i.i.i392: ; preds = %879, %867 %hi.i.i.i.i205.1 = phi i32 [ %884, %879 ], [ %874, %867 ] %lo.i.i.i.i206.0 = phi i32 [ %890, %879 ], [ %878, %867 ] %891 = lshr i32 %hi.i.i.i.i205.1, 30 %892 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i205.1, i32 %lo.i.i.i.i206.0, i32 2) %893 = shl i32 %lo.i.i.i.i206.0, 2 %894 = lshr i32 %892, 31 %895 = add nuw nsw i32 %894, %891 %.not53 = icmp eq i32 %868, 0 %896 = sub nsw i32 0, %895 %spec.select5 = select i1 %.not53, i32 %895, i32 %896 %.not54 = icmp sgt i32 %892, -1 %897 = xor i32 %868, -2147483648 %s.i.i.i.i204.0 = select i1 %.not54, i32 %868, i32 %897 %not..not54 = xor i1 %.not54, true %898 = sext i1 %not..not54 to i32 %hi.i.i.i.i205.2 = xor i32 %892, %898 %lo.i.i.i.i206.1 = xor i32 %893, %898 %899 = zext i32 %hi.i.i.i.i205.2 to i64 %900 = shl nuw i64 %899, 32 %901 = zext i32 %lo.i.i.i.i206.1 to i64 %902 = or i64 %900, %901 %903 = sitofp i64 %902 to double %904 = fmul double %903, 0x3BF921FB54442D19 %905 = fptrunc double %904 to float %.not56 = icmp eq i32 %s.i.i.i.i204.0, 0 %906 = fneg float %905 %r.i.i.i.i214.0 = select i1 %.not56, float %905, float %906 br label %__internal_trig_reduction_kernel.exit.i.i393 __internal_trig_reduction_kernel.exit.i.i393: ; preds = %__nv_fmul_rn.exit.i.i.i391, %__internal_trig_reduction_slowpath.exit.i.i.i392, %__internal_fmad.exit70.i377 %i.i85.i220.1 = phi i32 [ %843, %__internal_fmad.exit70.i377 ], [ 0, %__nv_fmul_rn.exit.i.i.i391 ], [ %spec.select5, %__internal_trig_reduction_slowpath.exit.i.i.i392 ] %t.i.i.i217.1 = phi float [ %847, %__internal_fmad.exit70.i377 ], [ %851, %__nv_fmul_rn.exit.i.i.i391 ], [ %r.i.i.i.i214.0, %__internal_trig_reduction_slowpath.exit.i.i.i392 ] %907 = and i32 %i.i85.i220.1, 3 %908 = uitofp i32 %907 to float %909 = tail call float @llvm.nvvm.fma.rn.f(float %908, float 0x3FF921FB60000000, float 0xC002D97C80000000) #145 %910 = fadd float %t.i.i.i217.1, %909 %911 = fmul float %910, 0x3FE45F3060000000 %912 = tail call i32 @llvm.nvvm.f2i.rn(float %911) #145 %913 = sitofp i32 %912 to float %914 = tail call float @llvm.nvvm.fma.rn.f(float %913, float 0xBFF921FB40000000, float %910) #145 %915 = tail call float @llvm.nvvm.fma.rn.f(float %913, float 0xBE74442D00000000, float %914) #145 %916 = add i32 %912, 1 %917 = tail call float @llvm.nvvm.mul.rn.f(float %915, float %915) #145 %918 = and i32 %916, 1 %.not50 = icmp eq i32 %918, 0 %919 = select i1 %.not50, float %915, float 1.000000e+00 %920 = tail call float @llvm.nvvm.fma.rn.f(float %917, float %919, float 0.000000e+00) #145 %921 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %917, float 0xBF56C0FDA0000000) #145 %922 = select i1 %.not50, float 0xBF29A82A60000000, float %921 %923 = select i1 %.not50, float 0x3F8110BC80000000, float 0x3FA5555760000000 %924 = tail call float @llvm.nvvm.fma.rn.f(float %922, float %917, float %923) #145 %925 = select i1 %.not50, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %926 = tail call float @llvm.nvvm.fma.rn.f(float %924, float %917, float %925) #145 %927 = tail call float @llvm.nvvm.fma.rn.f(float %926, float %920, float %919) #145 %928 = and i32 %916, 2 %.not51 = icmp eq i32 %928, 0 %929 = tail call float @llvm.nvvm.fma.rn.f(float %927, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i83.i197.0 = select i1 %.not51, float %927, float %929 %930 = fmul float %841, %z.i.i83.i197.0 br label %__nv_y0f.exit406 __nv_y0f.exit406: ; preds = %__internal_fmad.exit9.i347, %__internal_fmad.exit51.i368, %__nv_isinff.exit.i376, %__internal_trig_reduction_kernel.exit.i.i393, %__internal_fmad.exit33.i359, %__nv_j0f.exit.i345 %r.i274.4 = phi float [ %783, %__nv_j0f.exit.i345 ], [ %800, %__internal_fmad.exit9.i347 ], [ %814, %__internal_fmad.exit33.i359 ], [ %827, %__internal_fmad.exit51.i368 ], [ %930, %__internal_trig_reduction_kernel.exit.i.i393 ], [ 0.000000e+00, %__nv_isinff.exit.i376 ] %r.i274.5 = select i1 %317, float 0x7FFFFFFFE0000000, float %r.i274.4 br label %1258 __nv_fabsf.exit.i496: ; preds = %__nv_y0f.exit br i1 %1, label %931, label %933 931: ; preds = %__nv_fabsf.exit.i496 %932 = fdiv float 0xBFE45F3060000000, %0 br label %__nv_y1f.exit618 933: ; preds = %__nv_fabsf.exit.i496 %934 = fcmp ugt float %0, 0x3FFB2D5880000000 br i1 %934, label %1102, label %__internal_fmad.exit.i497 __internal_fmad.exit.i497: ; preds = %933 %935 = fmul float %0, %0 %936 = tail call float @llvm.nvvm.fma.rn.f(float 0x3E428C5980000000, float %935, float 0xBEB0A4FB40000000) #145 %937 = tail call float @llvm.nvvm.fma.rn.f(float %936, float %935, float 0x3F12C7D2A0000000) #145 %938 = tail call float @llvm.nvvm.fma.rn.f(float %937, float %935, float 0xBF6835B960000000) #145 %939 = tail call float @llvm.nvvm.fma.rn.f(float %938, float %935, float 0x3FABD39760000000) #145 %940 = tail call float @llvm.nvvm.fma.rn.f(float %939, float %935, float 0xBFC9186620000000) #145 %941 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %942 = fcmp ugt float %941, 8.000000e+00 br i1 %942, label %__nv_isinff.exit.i.i515, label %__internal_fmad.exit.i.i503 __internal_fmad.exit.i.i503: ; preds = %__internal_fmad.exit.i497 %943 = fadd float %941, 0xC00EA75580000000 %944 = fadd float %943, 0x3E74A121E0000000 %945 = tail call float @llvm.nvvm.fma.rn.f(float 0x3D35E68C60000000, float %944, float 0x3D7037E840000000) #145 %946 = tail call float @llvm.nvvm.fma.rn.f(float %945, float %944, float 0xBDBC43D820000000) #145 %947 = tail call float @llvm.nvvm.fma.rn.f(float %946, float %944, float 0xBDEBBBDFE0000000) #145 %948 = tail call float @llvm.nvvm.fma.rn.f(float %947, float %944, float 0x3E336193A0000000) #145 %949 = tail call float @llvm.nvvm.fma.rn.f(float %948, float %944, float 0x3E5D022E60000000) #145 %950 = tail call float @llvm.nvvm.fma.rn.f(float %949, float %944, float 0xBEA1F1B900000000) #145 %951 = tail call float @llvm.nvvm.fma.rn.f(float %950, float %944, float 0xBEC3CCA7A0000000) #145 %952 = tail call float @llvm.nvvm.fma.rn.f(float %951, float %944, float 0x3F059B38A0000000) #145 %953 = tail call float @llvm.nvvm.fma.rn.f(float %952, float %944, float 0x3F1F3D6200000000) #145 %954 = tail call float @llvm.nvvm.fma.rn.f(float %953, float %944, float 0xBF5D9D7380000000) #145 %955 = tail call float @llvm.nvvm.fma.rn.f(float %954, float %944, float 0xBF64EDFFA0000000) #145 %956 = tail call float @llvm.nvvm.fma.rn.f(float %955, float %944, float 0x3FA0E73260000000) #145 %957 = fadd float %941, 0xC01C0FF600000000 %958 = fadd float %957, 0x3E88971B60000000 %959 = fmul float %958, %956 %960 = fmul float %944, %959 %961 = fmul float %941, %960 br label %1066 __nv_isinff.exit.i.i515: ; preds = %__internal_fmad.exit.i497 %962 = tail call float @llvm.nvvm.fabs.f(float %941) #145 %963 = fcmp oeq float %962, 0x7FF0000000000000 br i1 %963, label %1066, label %__internal_fmad.exit12.i.i516 __internal_fmad.exit12.i.i516: ; preds = %__nv_isinff.exit.i.i515 %964 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %941) #146, !srcloc !10 %965 = fmul float %964, %964 %966 = tail call float @llvm.nvvm.fma.rn.f(float 0xC0105966E0000000, float %965, float 0x3FE7FEFD20000000) #145 %967 = tail call float @llvm.nvvm.fma.rn.f(float %966, float %965, float 0xBFC8B175C0000000) #145 %968 = tail call float @llvm.nvvm.fma.rn.f(float %967, float %965, float 0x3FC7FFF160000000) #145 %969 = tail call float @llvm.nvvm.fma.rn.f(float %968, float %965, float 1.000000e+00) #145 %970 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFF9477440000000, float %965, float 0x3FD72295A0000000) #145 %971 = tail call float @llvm.nvvm.fma.rn.f(float %970, float %965, float 0xBFC4FE5D80000000) #145 %972 = tail call float @llvm.nvvm.fma.rn.f(float %971, float %965, float 0x3FD7FFFFA0000000) #145 %973 = tail call float @llvm.nvvm.fma.rn.f(float %972, float %964, float %941) #145 %974 = tail call float @llvm.nvvm.rsqrt.approx.f(float %941) #145 %975 = fmul float %974, 0x3FE9884540000000 %976 = fmul float %975, %969 %977 = fmul float %973, 0x3FE45F3060000000 %978 = tail call i32 @llvm.nvvm.f2i.rn(float %977) #145 %979 = sitofp i32 %978 to float %980 = tail call float @llvm.nvvm.fma.rn.f(float %979, float 0xBFF921FB40000000, float %973) #145 %981 = tail call float @llvm.nvvm.fma.rn.f(float %979, float 0xBE74442D00000000, float %980) #145 %982 = tail call float @llvm.nvvm.fma.rn.f(float %979, float 0xBCF84698A0000000, float %981) #145 %983 = tail call float @llvm.nvvm.fabs.f(float %973) #145 %984 = fcmp ult float %983, 1.056150e+05 br i1 %984, label %__internal_trig_reduction_kernel.exit.i.i.i533, label %__nv_isinff.exit.i.i.i.i530 __nv_isinff.exit.i.i.i.i530: ; preds = %__internal_fmad.exit12.i.i516 %985 = fcmp oeq float %983, 0x7FF0000000000000 br i1 %985, label %__nv_fmul_rn.exit.i.i.i.i531, label %987 __nv_fmul_rn.exit.i.i.i.i531: ; preds = %__nv_isinff.exit.i.i.i.i530 %986 = tail call float @llvm.nvvm.mul.rn.f(float %973, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i.i.i533 987: ; preds = %__nv_isinff.exit.i.i.i.i530 %988 = bitcast float %973 to i32 %989 = lshr i32 %988, 23 %990 = and i32 %989, 255 %991 = add nsw i32 %990, -128 %992 = shl i32 %988, 8 %993 = or i32 %992, -2147483648 %994 = lshr i32 %991, 5 br label %995 995: ; preds = %987, %995 %indvars.iv139 = phi i64 [ 0, %987 ], [ %indvars.iv.next140, %995 ] %hi.i.i.i.i.i461.0100 = phi i32 [ 0, %987 ], [ %1000, %995 ] %996 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv139 %997 = load i32, ptr addrspace(1) %996, align 4 %998 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %997, i32 %993, i32 %hi.i.i.i.i.i461.0100) #146, !srcloc !11 %999 = extractvalue { i32, i32 } %998, 0 %1000 = extractvalue { i32, i32 } %998, 1 %1001 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %indvars.iv139 store i32 %999, ptr %1001, align 4 %indvars.iv.next140 = add nuw nsw i64 %indvars.iv139, 1 %exitcond141.not = icmp eq i64 %indvars.iv.next140, 6 br i1 %exitcond141.not, label %1002, label %995, !llvm.loop !12 1002: ; preds = %995 %.lcssa173 = phi i32 [ %1000, %995 ] %1003 = and i32 %988, -2147483648 %1004 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 6 store i32 %.lcssa173, ptr %1004, align 4 %1005 = and i32 %989, 31 %1006 = sub nsw i32 6, %994 %1007 = sext i32 %1006 to i64 %1008 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %1007 %1009 = load i32, ptr %1008, align 4 %1010 = sub nsw i32 5, %994 %1011 = sext i32 %1010 to i64 %1012 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %1011 %1013 = load i32, ptr %1012, align 4 %.not45 = icmp eq i32 %1005, 0 br i1 %.not45, label %__internal_trig_reduction_slowpath.exit.i.i.i.i532, label %1014 1014: ; preds = %1002 %1015 = sub nsw i32 4, %994 %1016 = sub nuw nsw i32 32, %1005 %1017 = shl i32 %1009, %1005 %1018 = lshr i32 %1013, %1016 %1019 = add i32 %1018, %1017 %1020 = shl i32 %1013, %1005 %1021 = sext i32 %1015 to i64 %1022 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %1021 %1023 = load i32, ptr %1022, align 4 %1024 = lshr i32 %1023, %1016 %1025 = add i32 %1024, %1020 br label %__internal_trig_reduction_slowpath.exit.i.i.i.i532 __internal_trig_reduction_slowpath.exit.i.i.i.i532: ; preds = %1014, %1002 %lo.i.i.i.i.i462.0 = phi i32 [ %1025, %1014 ], [ %1013, %1002 ] %hi.i.i.i.i.i461.1 = phi i32 [ %1019, %1014 ], [ %1009, %1002 ] %1026 = lshr i32 %hi.i.i.i.i.i461.1, 30 %1027 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.i461.1, i32 %lo.i.i.i.i.i462.0, i32 2) %1028 = shl i32 %lo.i.i.i.i.i462.0, 2 %1029 = lshr i32 %1027, 31 %1030 = add nuw nsw i32 %1029, %1026 %.not46 = icmp eq i32 %1003, 0 %1031 = sub nsw i32 0, %1030 %spec.select6 = select i1 %.not46, i32 %1030, i32 %1031 %.not47 = icmp sgt i32 %1027, -1 %1032 = xor i32 %1003, -2147483648 %not..not47 = xor i1 %.not47, true %1033 = sext i1 %not..not47 to i32 %lo.i.i.i.i.i462.1 = xor i32 %1028, %1033 %hi.i.i.i.i.i461.2 = xor i32 %1027, %1033 %s.i.i.i.i.i459.0 = select i1 %.not47, i32 %1003, i32 %1032 %1034 = zext i32 %hi.i.i.i.i.i461.2 to i64 %1035 = shl nuw i64 %1034, 32 %1036 = zext i32 %lo.i.i.i.i.i462.1 to i64 %1037 = or i64 %1035, %1036 %1038 = sitofp i64 %1037 to double %1039 = fmul double %1038, 0x3BF921FB54442D19 %1040 = fptrunc double %1039 to float %.not49 = icmp eq i32 %s.i.i.i.i.i459.0, 0 %1041 = fneg float %1040 %r.i.i.i.i.i470.0 = select i1 %.not49, float %1040, float %1041 br label %__internal_trig_reduction_kernel.exit.i.i.i533 __internal_trig_reduction_kernel.exit.i.i.i533: ; preds = %__nv_fmul_rn.exit.i.i.i.i531, %__internal_trig_reduction_slowpath.exit.i.i.i.i532, %__internal_fmad.exit12.i.i516 %i.i.i.i476.1 = phi i32 [ %978, %__internal_fmad.exit12.i.i516 ], [ 0, %__nv_fmul_rn.exit.i.i.i.i531 ], [ %spec.select6, %__internal_trig_reduction_slowpath.exit.i.i.i.i532 ] %t.i.i.i.i473.1 = phi float [ %982, %__internal_fmad.exit12.i.i516 ], [ %986, %__nv_fmul_rn.exit.i.i.i.i531 ], [ %r.i.i.i.i.i470.0, %__internal_trig_reduction_slowpath.exit.i.i.i.i532 ] %1042 = and i32 %i.i.i.i476.1, 3 %1043 = uitofp i32 %1042 to float %1044 = tail call float @llvm.nvvm.fma.rn.f(float %1043, float 0x3FF921FB60000000, float 0xC002D97C80000000) #145 %1045 = fadd float %t.i.i.i.i473.1, %1044 %1046 = fmul float %1045, 0x3FE45F3060000000 %1047 = tail call i32 @llvm.nvvm.f2i.rn(float %1046) #145 %1048 = sitofp i32 %1047 to float %1049 = tail call float @llvm.nvvm.fma.rn.f(float %1048, float 0xBFF921FB40000000, float %1045) #145 %1050 = tail call float @llvm.nvvm.fma.rn.f(float %1048, float 0xBE74442D00000000, float %1049) #145 %1051 = add i32 %1047, 1 %1052 = tail call float @llvm.nvvm.mul.rn.f(float %1050, float %1050) #145 %1053 = and i32 %1051, 1 %.not43 = icmp eq i32 %1053, 0 %1054 = select i1 %.not43, float %1050, float 1.000000e+00 %1055 = tail call float @llvm.nvvm.fma.rn.f(float %1052, float %1054, float 0.000000e+00) #145 %1056 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %1052, float 0xBF56C0FDA0000000) #145 %1057 = select i1 %.not43, float 0xBF29A82A60000000, float %1056 %1058 = select i1 %.not43, float 0x3F8110BC80000000, float 0x3FA5555760000000 %1059 = tail call float @llvm.nvvm.fma.rn.f(float %1057, float %1052, float %1058) #145 %1060 = select i1 %.not43, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %1061 = tail call float @llvm.nvvm.fma.rn.f(float %1059, float %1052, float %1060) #145 %1062 = tail call float @llvm.nvvm.fma.rn.f(float %1061, float %1055, float %1054) #145 %1063 = and i32 %1051, 2 %.not44 = icmp eq i32 %1063, 0 %1064 = tail call float @llvm.nvvm.fma.rn.f(float %1062, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i.i.i452.0 = select i1 %.not44, float %1062, float %1064 %1065 = fmul float %976, %z.i.i.i.i452.0 br label %1066 1066: ; preds = %__internal_trig_reduction_kernel.exit.i.i.i533, %__nv_isinff.exit.i.i515, %__internal_fmad.exit.i.i503 %r.i.i482.1 = phi float [ %961, %__internal_fmad.exit.i.i503 ], [ %1065, %__internal_trig_reduction_kernel.exit.i.i.i533 ], [ 0.000000e+00, %__nv_isinff.exit.i.i515 ] %1067 = fcmp olt float %0, 0.000000e+00 %1068 = fneg float %r.i.i482.1 %r.i.i482.2 = select i1 %1067, float %1068, float %r.i.i482.1 %1069 = fcmp olt float %941, 0x39B4484C00000000 %1070 = bitcast float %0 to i32 br i1 %1069, label %1071, label %__nv_j1f.exit.i546 1071: ; preds = %1066 %1072 = and i32 %1070, -2147483648 %1073 = bitcast float %r.i.i482.2 to i32 %1074 = and i32 %1073, 2147483647 %1075 = or i32 %1074, %1072 %1076 = bitcast i32 %1075 to float br label %__nv_j1f.exit.i546 __nv_j1f.exit.i546: ; preds = %1066, %1071 %r.i.i482.3 = phi float [ %1076, %1071 ], [ %r.i.i482.2, %1066 ] %1077 = add i32 %1070, -1059760811 %1078 = and i32 %1077, -8388608 %1079 = sub i32 %1070, %1078 %1080 = bitcast i32 %1079 to float %1081 = sitofp i32 %1078 to float %1082 = tail call float @llvm.nvvm.fma.rn.f(float %1081, float 0x3E80000000000000, float 0.000000e+00) #145 %1083 = fadd float %1080, -1.000000e+00 %1084 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFC0AA04E0000000, float %1083, float 0x3FC2073EC0000000) #145 %1085 = tail call float @llvm.nvvm.fma.rn.f(float %1084, float %1083, float 0xBFBF19B980000000) #145 %1086 = tail call float @llvm.nvvm.fma.rn.f(float %1085, float %1083, float 0x3FC1E52AA0000000) #145 %1087 = tail call float @llvm.nvvm.fma.rn.f(float %1086, float %1083, float 0xBFC55B1720000000) #145 %1088 = tail call float @llvm.nvvm.fma.rn.f(float %1087, float %1083, float 0x3FC99DA160000000) #145 %1089 = tail call float @llvm.nvvm.fma.rn.f(float %1088, float %1083, float 0xBFCFFFE440000000) #145 %1090 = tail call float @llvm.nvvm.fma.rn.f(float %1089, float %1083, float 0x3FD5554F00000000) #145 %1091 = tail call float @llvm.nvvm.fma.rn.f(float %1090, float %1083, float -5.000000e-01) #145 %1092 = fmul float %1083, %1091 %1093 = tail call float @llvm.nvvm.fma.rn.f(float %1092, float %1083, float %1083) #145 %1094 = tail call float @llvm.nvvm.fma.rn.f(float %1082, float 0x3FE62E4300000000, float %1093) #145 %1095 = icmp ugt i32 %1070, 2139095039 %1096 = tail call float @llvm.nvvm.fma.rn.f(float %0, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i5.i445.0 = select i1 %1095, float %1096, float %1094 %1097 = fcmp oeq float %0, 0.000000e+00 %r.i5.i445.1 = select i1 %1097, float 0xFFF0000000000000, float %r.i5.i445.0 %1098 = fdiv float -1.000000e+00, %0 %1099 = tail call float @llvm.nvvm.fma.rn.f(float %r.i.i482.3, float %r.i5.i445.1, float %1098) #145 %1100 = fmul float %1099, 0x3FE45F3060000000 %1101 = tail call float @llvm.nvvm.fma.rn.f(float %940, float %0, float %1100) #145 br label %__nv_y1f.exit618 1102: ; preds = %933 %1103 = fcmp ugt float %0, 0x400E81DDC0000000 br i1 %1103, label %1116, label %__internal_fmad.exit11.i562 __internal_fmad.exit11.i562: ; preds = %1102 %1104 = fadd float %0, 0xC00193BEE0000000 %1105 = fadd float %1104, 0x3E76401B80000000 %1106 = tail call float @llvm.nvvm.fma.rn.f(float 0xBEF13C53A0000000, float %1105, float 0x3F20C95100000000) #145 %1107 = tail call float @llvm.nvvm.fma.rn.f(float %1106, float %1105, float 0xBF3E1561A0000000) #145 %1108 = tail call float @llvm.nvvm.fma.rn.f(float %1107, float %1105, float 0x3F51EC2040000000) #145 %1109 = tail call float @llvm.nvvm.fma.rn.f(float %1108, float %1105, float 0xBF658E08A0000000) #145 %1110 = tail call float @llvm.nvvm.fma.rn.f(float %1109, float %1105, float 0x3F7E6BBEE0000000) #145 %1111 = tail call float @llvm.nvvm.fma.rn.f(float %1110, float %1105, float 0xBF73A12F80000000) #145 %1112 = tail call float @llvm.nvvm.fma.rn.f(float %1111, float %1105, float 0xBFA0D2D140000000) #145 %1113 = tail call float @llvm.nvvm.fma.rn.f(float %1112, float %1105, float 0xBFBE56FBE0000000) #145 %1114 = tail call float @llvm.nvvm.fma.rn.f(float %1113, float %1105, float 0x3FE0AA4840000000) #145 %1115 = fmul float %1105, %1114 br label %__nv_y1f.exit618 1116: ; preds = %1102 %1117 = fcmp ugt float %0, 0x401C0D26E0000000 br i1 %1117, label %1130, label %__internal_fmad.exit29.i571 __internal_fmad.exit29.i571: ; preds = %1116 %1118 = fadd float %0, 0xC015B7FE40000000 %1119 = fadd float %1118, 0xBE8D0F6060000000 %1120 = tail call float @llvm.nvvm.fma.rn.f(float 0x3E57CAFA00000000, float %1119, float 0xBEA11482C0000000) #145 %1121 = tail call float @llvm.nvvm.fma.rn.f(float %1120, float %1119, float 0xBEC7F14280000000) #145 %1122 = tail call float @llvm.nvvm.fma.rn.f(float %1121, float %1119, float 0x3F084FC040000000) #145 %1123 = tail call float @llvm.nvvm.fma.rn.f(float %1122, float %1119, float 0x3F23376380000000) #145 %1124 = tail call float @llvm.nvvm.fma.rn.f(float %1123, float %1119, float 0xBF61BE3FA0000000) #145 %1125 = tail call float @llvm.nvvm.fma.rn.f(float %1124, float %1119, float 0xBF710A3120000000) #145 %1126 = tail call float @llvm.nvvm.fma.rn.f(float %1125, float %1119, float 0x3FAA15D820000000) #145 %1127 = tail call float @llvm.nvvm.fma.rn.f(float %1126, float %1119, float 0x3FA00B9F80000000) #145 %1128 = tail call float @llvm.nvvm.fma.rn.f(float %1127, float %1119, float 0xBFD5C7C560000000) #145 %1129 = fmul float %1119, %1128 br label %__nv_y1f.exit618 1130: ; preds = %1116 %1131 = fcmp ugt float %0, 0x4024585C60000000 br i1 %1131, label %__nv_isinff.exit.i588, label %__internal_fmad.exit47.i580 __internal_fmad.exit47.i580: ; preds = %1130 %1132 = fadd float %0, 0xC0213127A0000000 %1133 = fadd float %1132, 0xBE9CC2D360000000 %1134 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EA19E7060000000, float %1133, float 0x3EC05205C0000000) #145 %1135 = tail call float @llvm.nvvm.fma.rn.f(float %1134, float %1133, float 0xBF06EBEE20000000) #145 %1136 = tail call float @llvm.nvvm.fma.rn.f(float %1135, float %1133, float 0xBF1B3F5500000000) #145 %1137 = tail call float @llvm.nvvm.fma.rn.f(float %1136, float %1133, float 0x3F607A3340000000) #145 %1138 = tail call float @llvm.nvvm.fma.rn.f(float %1137, float %1133, float 0x3F63CE6DA0000000) #145 %1139 = tail call float @llvm.nvvm.fma.rn.f(float %1138, float %1133, float 0xBFA6395CA0000000) #145 %1140 = tail call float @llvm.nvvm.fma.rn.f(float %1139, float %1133, float 0xBF902B36C0000000) #145 %1141 = tail call float @llvm.nvvm.fma.rn.f(float %1140, float %1133, float 0x3FD15F9940000000) #145 %1142 = fmul float %1133, %1141 br label %__nv_y1f.exit618 __nv_isinff.exit.i588: ; preds = %1130 %1143 = tail call float @llvm.nvvm.fabs.f(float %0) #145 %1144 = fcmp oeq float %1143, 0x7FF0000000000000 br i1 %1144, label %__nv_y1f.exit618, label %__internal_fmad.exit66.i589 __internal_fmad.exit66.i589: ; preds = %__nv_isinff.exit.i588 %1145 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %0) #146, !srcloc !10 %1146 = fmul float %1145, %1145 %1147 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FE4CFEC00000000, float %1146, float 0xBFC8957200000000) #145 %1148 = tail call float @llvm.nvvm.fma.rn.f(float %1147, float %1146, float 0x3FC7FFD7E0000000) #145 %1149 = tail call float @llvm.nvvm.fma.rn.f(float %1148, float %1146, float 1.000000e+00) #145 %1150 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFFC9C3560000000, float %1146, float 0x3FD76E7560000000) #145 %1151 = tail call float @llvm.nvvm.fma.rn.f(float %1150, float %1146, float 0xBFC4FF6DC0000000) #145 %1152 = tail call float @llvm.nvvm.fma.rn.f(float %1151, float %1146, float 0x3FD7FFFFE0000000) #145 %1153 = tail call float @llvm.nvvm.fma.rn.f(float %1152, float %1145, float %0) #145 %1154 = tail call float @llvm.nvvm.rsqrt.approx.f(float %0) #145 %1155 = fmul float %1154, 0x3FE9884540000000 %1156 = fmul float %1155, %1149 %1157 = fmul float %1153, 0x3FE45F3060000000 %1158 = tail call i32 @llvm.nvvm.f2i.rn(float %1157) #145 %1159 = sitofp i32 %1158 to float %1160 = tail call float @llvm.nvvm.fma.rn.f(float %1159, float 0xBFF921FB40000000, float %1153) #145 %1161 = tail call float @llvm.nvvm.fma.rn.f(float %1159, float 0xBE74442D00000000, float %1160) #145 %1162 = tail call float @llvm.nvvm.fma.rn.f(float %1159, float 0xBCF84698A0000000, float %1161) #145 %1163 = tail call float @llvm.nvvm.fabs.f(float %1153) #145 %1164 = fcmp ult float %1163, 1.056150e+05 br i1 %1164, label %__internal_trig_reduction_kernel.exit.i.i605, label %__nv_isinff.exit.i.i.i602 __nv_isinff.exit.i.i.i602: ; preds = %__internal_fmad.exit66.i589 %1165 = fcmp oeq float %1163, 0x7FF0000000000000 br i1 %1165, label %__nv_fmul_rn.exit.i.i.i603, label %1167 __nv_fmul_rn.exit.i.i.i603: ; preds = %__nv_isinff.exit.i.i.i602 %1166 = tail call float @llvm.nvvm.mul.rn.f(float %1153, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i.i605 1167: ; preds = %__nv_isinff.exit.i.i.i602 %1168 = bitcast float %1153 to i32 %1169 = lshr i32 %1168, 23 %1170 = and i32 %1169, 255 %1171 = add nsw i32 %1170, -128 %1172 = shl i32 %1168, 8 %1173 = or i32 %1172, -2147483648 %1174 = lshr i32 %1171, 5 br label %1175 1175: ; preds = %1167, %1175 %indvars.iv142 = phi i64 [ 0, %1167 ], [ %indvars.iv.next143, %1175 ] %hi.i.i.i.i417.0103 = phi i32 [ 0, %1167 ], [ %1180, %1175 ] %1176 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv142 %1177 = load i32, ptr addrspace(1) %1176, align 4 %1178 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %1177, i32 %1173, i32 %hi.i.i.i.i417.0103) #146, !srcloc !11 %1179 = extractvalue { i32, i32 } %1178, 0 %1180 = extractvalue { i32, i32 } %1178, 1 %1181 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %indvars.iv142 store i32 %1179, ptr %1181, align 4 %indvars.iv.next143 = add nuw nsw i64 %indvars.iv142, 1 %exitcond144.not = icmp eq i64 %indvars.iv.next143, 6 br i1 %exitcond144.not, label %1182, label %1175, !llvm.loop !12 1182: ; preds = %1175 %.lcssa172 = phi i32 [ %1180, %1175 ] %1183 = and i32 %1168, -2147483648 %1184 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 6 store i32 %.lcssa172, ptr %1184, align 4 %1185 = and i32 %1169, 31 %1186 = sub nsw i32 6, %1174 %1187 = sext i32 %1186 to i64 %1188 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %1187 %1189 = load i32, ptr %1188, align 4 %1190 = sub nsw i32 5, %1174 %1191 = sext i32 %1190 to i64 %1192 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %1191 %1193 = load i32, ptr %1192, align 4 %.not38 = icmp eq i32 %1185, 0 br i1 %.not38, label %__internal_trig_reduction_slowpath.exit.i.i.i604, label %1194 1194: ; preds = %1182 %1195 = sub nsw i32 4, %1174 %1196 = sub nuw nsw i32 32, %1185 %1197 = shl i32 %1189, %1185 %1198 = lshr i32 %1193, %1196 %1199 = add i32 %1198, %1197 %1200 = shl i32 %1193, %1185 %1201 = sext i32 %1195 to i64 %1202 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i.i, i64 0, i64 %1201 %1203 = load i32, ptr %1202, align 4 %1204 = lshr i32 %1203, %1196 %1205 = add i32 %1204, %1200 br label %__internal_trig_reduction_slowpath.exit.i.i.i604 __internal_trig_reduction_slowpath.exit.i.i.i604: ; preds = %1194, %1182 %lo.i.i.i.i418.0 = phi i32 [ %1205, %1194 ], [ %1193, %1182 ] %hi.i.i.i.i417.1 = phi i32 [ %1199, %1194 ], [ %1189, %1182 ] %1206 = lshr i32 %hi.i.i.i.i417.1, 30 %1207 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i417.1, i32 %lo.i.i.i.i418.0, i32 2) %1208 = shl i32 %lo.i.i.i.i418.0, 2 %1209 = lshr i32 %1207, 31 %1210 = add nuw nsw i32 %1209, %1206 %.not39 = icmp eq i32 %1183, 0 %1211 = sub nsw i32 0, %1210 %spec.select7 = select i1 %.not39, i32 %1210, i32 %1211 %.not40 = icmp sgt i32 %1207, -1 %1212 = xor i32 %1183, -2147483648 %not..not40 = xor i1 %.not40, true %1213 = sext i1 %not..not40 to i32 %lo.i.i.i.i418.1 = xor i32 %1208, %1213 %hi.i.i.i.i417.2 = xor i32 %1207, %1213 %s.i.i.i.i416.0 = select i1 %.not40, i32 %1183, i32 %1212 %1214 = zext i32 %hi.i.i.i.i417.2 to i64 %1215 = shl nuw i64 %1214, 32 %1216 = zext i32 %lo.i.i.i.i418.1 to i64 %1217 = or i64 %1215, %1216 %1218 = sitofp i64 %1217 to double %1219 = fmul double %1218, 0x3BF921FB54442D19 %1220 = fptrunc double %1219 to float %.not42 = icmp eq i32 %s.i.i.i.i416.0, 0 %1221 = fneg float %1220 %r.i.i.i.i426.0 = select i1 %.not42, float %1220, float %1221 br label %__internal_trig_reduction_kernel.exit.i.i605 __internal_trig_reduction_kernel.exit.i.i605: ; preds = %__nv_fmul_rn.exit.i.i.i603, %__internal_trig_reduction_slowpath.exit.i.i.i604, %__internal_fmad.exit66.i589 %i.i81.i432.1 = phi i32 [ %1158, %__internal_fmad.exit66.i589 ], [ 0, %__nv_fmul_rn.exit.i.i.i603 ], [ %spec.select7, %__internal_trig_reduction_slowpath.exit.i.i.i604 ] %t.i.i.i429.1 = phi float [ %1162, %__internal_fmad.exit66.i589 ], [ %1166, %__nv_fmul_rn.exit.i.i.i603 ], [ %r.i.i.i.i426.0, %__internal_trig_reduction_slowpath.exit.i.i.i604 ] %1222 = and i32 %i.i81.i432.1, 3 %1223 = uitofp i32 %1222 to float %1224 = tail call float @llvm.nvvm.fma.rn.f(float %1223, float 0x3FF921FB60000000, float 0xC00F6A7A20000000) #145 %1225 = fadd float %t.i.i.i429.1, %1224 %1226 = fmul float %1225, 0x3FE45F3060000000 %1227 = tail call i32 @llvm.nvvm.f2i.rn(float %1226) #145 %1228 = sitofp i32 %1227 to float %1229 = tail call float @llvm.nvvm.fma.rn.f(float %1228, float 0xBFF921FB40000000, float %1225) #145 %1230 = tail call float @llvm.nvvm.fma.rn.f(float %1228, float 0xBE74442D00000000, float %1229) #145 %1231 = add i32 %1227, 1 %1232 = tail call float @llvm.nvvm.mul.rn.f(float %1230, float %1230) #145 %1233 = and i32 %1231, 1 %.not36 = icmp eq i32 %1233, 0 %1234 = select i1 %.not36, float %1230, float 1.000000e+00 %1235 = tail call float @llvm.nvvm.fma.rn.f(float %1232, float %1234, float 0.000000e+00) #145 %1236 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %1232, float 0xBF56C0FDA0000000) #145 %1237 = select i1 %.not36, float 0xBF29A82A60000000, float %1236 %1238 = select i1 %.not36, float 0x3F8110BC80000000, float 0x3FA5555760000000 %1239 = tail call float @llvm.nvvm.fma.rn.f(float %1237, float %1232, float %1238) #145 %1240 = select i1 %.not36, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %1241 = tail call float @llvm.nvvm.fma.rn.f(float %1239, float %1232, float %1240) #145 %1242 = tail call float @llvm.nvvm.fma.rn.f(float %1241, float %1235, float %1234) #145 %1243 = and i32 %1231, 2 %.not37 = icmp eq i32 %1243, 0 %1244 = tail call float @llvm.nvvm.fma.rn.f(float %1242, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i79.i409.0 = select i1 %.not37, float %1242, float %1244 %1245 = fmul float %1156, %z.i.i79.i409.0 br label %__nv_y1f.exit618 __nv_y1f.exit618: ; preds = %__nv_j1f.exit.i546, %__internal_fmad.exit29.i571, %__internal_trig_reduction_kernel.exit.i.i605, %__nv_isinff.exit.i588, %__internal_fmad.exit47.i580, %__internal_fmad.exit11.i562, %931 %r.i489.5 = phi float [ %932, %931 ], [ %1101, %__nv_j1f.exit.i546 ], [ %1115, %__internal_fmad.exit11.i562 ], [ %1129, %__internal_fmad.exit29.i571 ], [ %1142, %__internal_fmad.exit47.i580 ], [ %1245, %__internal_trig_reduction_kernel.exit.i.i605 ], [ 0.000000e+00, %__nv_isinff.exit.i588 ] %r.i489.6 = select i1 %317, float 0x7FFFFFFFE0000000, float %r.i489.5 br label %1258 1246: ; preds = %__nv_y0f.exit %1247 = icmp sgt i32 %n, -1 %1248 = fcmp oge float %a, 0.000000e+00 %or.cond = select i1 %1247, i1 %1248, i1 false br i1 %or.cond, label %__nv_fabsf.exit, label %1258 __nv_fabsf.exit: ; preds = %1246 br i1 %1, label %__nv_fabsf.exit620, label %__internal_fmad.exit.preheader __nv_fabsf.exit620: ; preds = %__nv_fabsf.exit %1249 = fdiv float -1.000000e+09, %0 br label %1258 __internal_fmad.exit.preheader: ; preds = %__nv_fabsf.exit %1250 = fdiv float 2.000000e+00, %a br label %__internal_fmad.exit __internal_fmad.exit: ; preds = %__internal_fmad.exit.preheader, %__internal_fmad.exit %i.0113 = phi i32 [ %1255, %__internal_fmad.exit ], [ 1, %__internal_fmad.exit.preheader ] %yim1.0112 = phi float [ %yi.0111, %__internal_fmad.exit ], [ %r.i75.5, %__internal_fmad.exit.preheader ] %yi.0111 = phi float [ %1254, %__internal_fmad.exit ], [ %r.i.6, %__internal_fmad.exit.preheader ] %1251 = sitofp i32 %i.0113 to float %1252 = fmul float %1250, %1251 %1253 = fneg float %yim1.0112 %1254 = tail call float @llvm.nvvm.fma.rn.f(float %1252, float %yi.0111, float %1253) #145 %1255 = add nuw nsw i32 %i.0113, 1 %exitcond151.not = icmp eq i32 %1255, %n br i1 %exitcond151.not, label %__nv_isnanf.exit, label %__internal_fmad.exit __nv_isnanf.exit: ; preds = %__internal_fmad.exit %.lcssa = phi float [ %1254, %__internal_fmad.exit ] %1256 = tail call float @llvm.nvvm.fabs.f(float %.lcssa) #145 %1257 = fcmp ugt float %1256, 0x7FF0000000000000 %spec.select8 = select i1 %1257, float 0xFFF0000000000000, float %.lcssa br label %1258 1258: ; preds = %__nv_isnanf.exit, %1246, %__nv_fabsf.exit620, %__nv_y1f.exit618, %__nv_y0f.exit406 %.01 = phi float [ %r.i274.5, %__nv_y0f.exit406 ], [ %r.i489.6, %__nv_y1f.exit618 ], [ %1249, %__nv_fabsf.exit620 ], [ 0x7FFFFFFFE0000000, %1246 ], [ %spec.select8, %__nv_isnanf.exit ] ret float %.01 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_jnf(i32 "enzyme_inactive" %n, float %a) unnamed_addr #59 { %result.i.i.i.i = alloca [7 x i32], align 4 switch i32 %n, label %265 [ i32 0, label %__nv_fabsf.exit.i i32 1, label %__nv_fabsf.exit.i40 ] __nv_fabsf.exit.i: ; preds = %0 %1 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %2 = fcmp ugt float %1, 8.000000e+00 br i1 %2, label %__nv_isinff.exit.i, label %__internal_fmad.exit.i __internal_fmad.exit.i: ; preds = %__nv_fabsf.exit.i %3 = fadd float %1, 0xC0033D1520000000 %4 = fadd float %3, 0xBE7D2E3660000000 %5 = tail call float @llvm.nvvm.fma.rn.f(float 0xBCD6771CE0000000, float %4, float 0xBD35953660000000) #145 %6 = tail call float @llvm.nvvm.fma.rn.f(float %5, float %4, float 0x3D87E1C300000000) #145 %7 = tail call float @llvm.nvvm.fma.rn.f(float %6, float %4, float 0xBD9A82F020000000) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float %4, float 0xBDFD21E700000000) #145 %9 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %4, float 0x3E04060B60000000) #145 %10 = tail call float @llvm.nvvm.fma.rn.f(float %9, float %4, float 0x3E6F2E2860000000) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %4, float 0x3E1EEDF0A0000000) #145 %12 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %4, float 0xBED6DBF8C0000000) #145 %13 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %4, float 0xBEDECCB920000000) #145 %14 = tail call float @llvm.nvvm.fma.rn.f(float %13, float %4, float 0x3F33C5BD60000000) #145 %15 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %4, float 0x3F495C6680000000) #145 %16 = tail call float @llvm.nvvm.fma.rn.f(float %15, float %4, float 0xBF7DD54360000000) #145 %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %4, float 0xBF9B4EE8E0000000) #145 %18 = fmul float %4, %17 %19 = fadd float %1, 0xC016148F60000000 %20 = fadd float %19, 0x3E734F46E0000000 %21 = fmul float %20, %18 %22 = fadd float %1, 0xC0214EB560000000 %23 = fadd float %22, 0xBE9999BDA0000000 %24 = fmul float %23, %21 br label %__nv_j0f.exit __nv_isinff.exit.i: ; preds = %__nv_fabsf.exit.i %25 = tail call float @llvm.nvvm.fabs.f(float %1) #145 %26 = fcmp oeq float %25, 0x7FF0000000000000 br i1 %26, label %__nv_j0f.exit, label %__internal_fmad.exit13.i __internal_fmad.exit13.i: ; preds = %__nv_isinff.exit.i %27 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %1) #146, !srcloc !10 %28 = fmul float %27, %27 %29 = tail call float @llvm.nvvm.fma.rn.f(float 0x400ADFD260000000, float %28, float 0xBFE076F840000000) #145 %30 = tail call float @llvm.nvvm.fma.rn.f(float %29, float %28, float 0x3FBA767E60000000) #145 %31 = tail call float @llvm.nvvm.fma.rn.f(float %30, float %28, float 0xBFAFFFF6C0000000) #145 %32 = tail call float @llvm.nvvm.fma.rn.f(float %31, float %28, float 1.000000e+00) #145 %33 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FF23C0120000000, float %28, float 0xBFCA4825A0000000) #145 %34 = tail call float @llvm.nvvm.fma.rn.f(float %33, float %28, float 0x3FB0A9DA20000000) #145 %35 = tail call float @llvm.nvvm.fma.rn.f(float %34, float %28, float 0xBFBFFFFFE0000000) #145 %36 = tail call float @llvm.nvvm.fma.rn.f(float %35, float %27, float %1) #145 %37 = tail call float @llvm.nvvm.rsqrt.approx.f(float %1) #145 %38 = fmul float %37, 0x3FE9884540000000 %39 = fmul float %38, %32 %40 = fmul float %36, 0x3FE45F3060000000 %41 = tail call i32 @llvm.nvvm.f2i.rn(float %40) #145 %42 = sitofp i32 %41 to float %43 = tail call float @llvm.nvvm.fma.rn.f(float %42, float 0xBFF921FB40000000, float %36) #145 %44 = tail call float @llvm.nvvm.fma.rn.f(float %42, float 0xBE74442D00000000, float %43) #145 %45 = tail call float @llvm.nvvm.fma.rn.f(float %42, float 0xBCF84698A0000000, float %44) #145 %46 = tail call float @llvm.nvvm.fabs.f(float %36) #145 %47 = fcmp ult float %46, 1.056150e+05 br i1 %47, label %__internal_trig_reduction_kernel.exit.i.i, label %__nv_isinff.exit.i.i.i __nv_isinff.exit.i.i.i: ; preds = %__internal_fmad.exit13.i %48 = fcmp oeq float %46, 0x7FF0000000000000 br i1 %48, label %__nv_fmul_rn.exit.i.i.i, label %50 __nv_fmul_rn.exit.i.i.i: ; preds = %__nv_isinff.exit.i.i.i %49 = tail call float @llvm.nvvm.mul.rn.f(float %36, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i.i 50: ; preds = %__nv_isinff.exit.i.i.i %51 = bitcast float %36 to i32 %52 = lshr i32 %51, 23 %53 = and i32 %52, 255 %54 = add nsw i32 %53, -128 %55 = shl i32 %51, 8 %56 = or i32 %55, -2147483648 %57 = lshr i32 %54, 5 br label %58 58: ; preds = %50, %58 %indvars.iv74 = phi i64 [ 0, %50 ], [ %indvars.iv.next75, %58 ] %hi.i.i.i.i.046 = phi i32 [ 0, %50 ], [ %63, %58 ] %59 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv74 %60 = load i32, ptr addrspace(1) %59, align 4 %61 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %60, i32 %56, i32 %hi.i.i.i.i.046) #146, !srcloc !11 %62 = extractvalue { i32, i32 } %61, 0 %63 = extractvalue { i32, i32 } %61, 1 %64 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %indvars.iv74 store i32 %62, ptr %64, align 4 %indvars.iv.next75 = add nuw nsw i64 %indvars.iv74, 1 %exitcond76.not = icmp eq i64 %indvars.iv.next75, 6 br i1 %exitcond76.not, label %65, label %58, !llvm.loop !12 65: ; preds = %58 %.lcssa94 = phi i32 [ %63, %58 ] %66 = and i32 %51, -2147483648 %67 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 6 store i32 %.lcssa94, ptr %67, align 4 %68 = and i32 %52, 31 %69 = sub nsw i32 6, %57 %70 = sext i32 %69 to i64 %71 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %70 %72 = load i32, ptr %71, align 4 %73 = sub nsw i32 5, %57 %74 = sext i32 %73 to i64 %75 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %74 %76 = load i32, ptr %75, align 4 %.not24 = icmp eq i32 %68, 0 br i1 %.not24, label %__internal_trig_reduction_slowpath.exit.i.i.i, label %77 77: ; preds = %65 %78 = sub nsw i32 4, %57 %79 = sub nuw nsw i32 32, %68 %80 = shl i32 %72, %68 %81 = lshr i32 %76, %79 %82 = add i32 %81, %80 %83 = shl i32 %76, %68 %84 = sext i32 %78 to i64 %85 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %84 %86 = load i32, ptr %85, align 4 %87 = lshr i32 %86, %79 %88 = add i32 %87, %83 br label %__internal_trig_reduction_slowpath.exit.i.i.i __internal_trig_reduction_slowpath.exit.i.i.i: ; preds = %77, %65 %hi.i.i.i.i.1 = phi i32 [ %82, %77 ], [ %72, %65 ] %lo.i.i.i.i.0 = phi i32 [ %88, %77 ], [ %76, %65 ] %89 = lshr i32 %hi.i.i.i.i.1, 30 %90 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i.1, i32 %lo.i.i.i.i.0, i32 2) %91 = shl i32 %lo.i.i.i.i.0, 2 %92 = lshr i32 %90, 31 %93 = add nuw nsw i32 %92, %89 %.not25 = icmp eq i32 %66, 0 %94 = sub nsw i32 0, %93 %spec.select = select i1 %.not25, i32 %93, i32 %94 %.not26 = icmp sgt i32 %90, -1 %95 = xor i32 %66, -2147483648 %s.i.i.i.i.0 = select i1 %.not26, i32 %66, i32 %95 %not..not26 = xor i1 %.not26, true %96 = sext i1 %not..not26 to i32 %hi.i.i.i.i.2 = xor i32 %90, %96 %lo.i.i.i.i.1 = xor i32 %91, %96 %97 = zext i32 %hi.i.i.i.i.2 to i64 %98 = shl nuw i64 %97, 32 %99 = zext i32 %lo.i.i.i.i.1 to i64 %100 = or i64 %98, %99 %101 = sitofp i64 %100 to double %102 = fmul double %101, 0x3BF921FB54442D19 %103 = fptrunc double %102 to float %.not28 = icmp eq i32 %s.i.i.i.i.0, 0 %104 = fneg float %103 %r.i.i.i.i.0 = select i1 %.not28, float %103, float %104 br label %__internal_trig_reduction_kernel.exit.i.i __internal_trig_reduction_kernel.exit.i.i: ; preds = %__nv_fmul_rn.exit.i.i.i, %__internal_trig_reduction_slowpath.exit.i.i.i, %__internal_fmad.exit13.i %i.i.i.1 = phi i32 [ %41, %__internal_fmad.exit13.i ], [ 0, %__nv_fmul_rn.exit.i.i.i ], [ %spec.select, %__internal_trig_reduction_slowpath.exit.i.i.i ] %t.i.i.i.1 = phi float [ %45, %__internal_fmad.exit13.i ], [ %49, %__nv_fmul_rn.exit.i.i.i ], [ %r.i.i.i.i.0, %__internal_trig_reduction_slowpath.exit.i.i.i ] %105 = and i32 %i.i.i.1, 3 %106 = uitofp i32 %105 to float %107 = tail call float @llvm.nvvm.fma.rn.f(float %106, float 0x3FF921FB60000000, float 0xBFE921FB60000000) #145 %108 = fadd float %t.i.i.i.1, %107 %109 = fmul float %108, 0x3FE45F3060000000 %110 = tail call i32 @llvm.nvvm.f2i.rn(float %109) #145 %111 = sitofp i32 %110 to float %112 = tail call float @llvm.nvvm.fma.rn.f(float %111, float 0xBFF921FB40000000, float %108) #145 %113 = tail call float @llvm.nvvm.fma.rn.f(float %111, float 0xBE74442D00000000, float %112) #145 %114 = add i32 %110, 1 %115 = tail call float @llvm.nvvm.mul.rn.f(float %113, float %113) #145 %116 = and i32 %114, 1 %.not22 = icmp eq i32 %116, 0 %117 = select i1 %.not22, float %113, float 1.000000e+00 %118 = tail call float @llvm.nvvm.fma.rn.f(float %115, float %117, float 0.000000e+00) #145 %119 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %115, float 0xBF56C0FDA0000000) #145 %120 = select i1 %.not22, float 0xBF29A82A60000000, float %119 %121 = select i1 %.not22, float 0x3F8110BC80000000, float 0x3FA5555760000000 %122 = tail call float @llvm.nvvm.fma.rn.f(float %120, float %115, float %121) #145 %123 = select i1 %.not22, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %124 = tail call float @llvm.nvvm.fma.rn.f(float %122, float %115, float %123) #145 %125 = tail call float @llvm.nvvm.fma.rn.f(float %124, float %118, float %117) #145 %126 = and i32 %114, 2 %.not23 = icmp eq i32 %126, 0 %127 = tail call float @llvm.nvvm.fma.rn.f(float %125, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i.i.0 = select i1 %.not23, float %125, float %127 %128 = fmul float %39, %z.i.i.i.0 br label %__nv_j0f.exit __nv_fabsf.exit.i40: ; preds = %0 %129 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %130 = fcmp ugt float %129, 8.000000e+00 br i1 %130, label %__nv_isinff.exit.i53, label %__internal_fmad.exit.i41 __internal_fmad.exit.i41: ; preds = %__nv_fabsf.exit.i40 %131 = fadd float %129, 0xC00EA75580000000 %132 = fadd float %131, 0x3E74A121E0000000 %133 = tail call float @llvm.nvvm.fma.rn.f(float 0x3D35E68C60000000, float %132, float 0x3D7037E840000000) #145 %134 = tail call float @llvm.nvvm.fma.rn.f(float %133, float %132, float 0xBDBC43D820000000) #145 %135 = tail call float @llvm.nvvm.fma.rn.f(float %134, float %132, float 0xBDEBBBDFE0000000) #145 %136 = tail call float @llvm.nvvm.fma.rn.f(float %135, float %132, float 0x3E336193A0000000) #145 %137 = tail call float @llvm.nvvm.fma.rn.f(float %136, float %132, float 0x3E5D022E60000000) #145 %138 = tail call float @llvm.nvvm.fma.rn.f(float %137, float %132, float 0xBEA1F1B900000000) #145 %139 = tail call float @llvm.nvvm.fma.rn.f(float %138, float %132, float 0xBEC3CCA7A0000000) #145 %140 = tail call float @llvm.nvvm.fma.rn.f(float %139, float %132, float 0x3F059B38A0000000) #145 %141 = tail call float @llvm.nvvm.fma.rn.f(float %140, float %132, float 0x3F1F3D6200000000) #145 %142 = tail call float @llvm.nvvm.fma.rn.f(float %141, float %132, float 0xBF5D9D7380000000) #145 %143 = tail call float @llvm.nvvm.fma.rn.f(float %142, float %132, float 0xBF64EDFFA0000000) #145 %144 = tail call float @llvm.nvvm.fma.rn.f(float %143, float %132, float 0x3FA0E73260000000) #145 %145 = fadd float %129, 0xC01C0FF600000000 %146 = fadd float %145, 0x3E88971B60000000 %147 = fmul float %146, %144 %148 = fmul float %132, %147 %149 = fmul float %129, %148 br label %254 __nv_isinff.exit.i53: ; preds = %__nv_fabsf.exit.i40 %150 = tail call float @llvm.nvvm.fabs.f(float %129) #145 %151 = fcmp oeq float %150, 0x7FF0000000000000 br i1 %151, label %254, label %__internal_fmad.exit12.i54 __internal_fmad.exit12.i54: ; preds = %__nv_isinff.exit.i53 %152 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %129) #146, !srcloc !10 %153 = fmul float %152, %152 %154 = tail call float @llvm.nvvm.fma.rn.f(float 0xC0105966E0000000, float %153, float 0x3FE7FEFD20000000) #145 %155 = tail call float @llvm.nvvm.fma.rn.f(float %154, float %153, float 0xBFC8B175C0000000) #145 %156 = tail call float @llvm.nvvm.fma.rn.f(float %155, float %153, float 0x3FC7FFF160000000) #145 %157 = tail call float @llvm.nvvm.fma.rn.f(float %156, float %153, float 1.000000e+00) #145 %158 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFF9477440000000, float %153, float 0x3FD72295A0000000) #145 %159 = tail call float @llvm.nvvm.fma.rn.f(float %158, float %153, float 0xBFC4FE5D80000000) #145 %160 = tail call float @llvm.nvvm.fma.rn.f(float %159, float %153, float 0x3FD7FFFFA0000000) #145 %161 = tail call float @llvm.nvvm.fma.rn.f(float %160, float %152, float %129) #145 %162 = tail call float @llvm.nvvm.rsqrt.approx.f(float %129) #145 %163 = fmul float %162, 0x3FE9884540000000 %164 = fmul float %163, %157 %165 = fmul float %161, 0x3FE45F3060000000 %166 = tail call i32 @llvm.nvvm.f2i.rn(float %165) #145 %167 = sitofp i32 %166 to float %168 = tail call float @llvm.nvvm.fma.rn.f(float %167, float 0xBFF921FB40000000, float %161) #145 %169 = tail call float @llvm.nvvm.fma.rn.f(float %167, float 0xBE74442D00000000, float %168) #145 %170 = tail call float @llvm.nvvm.fma.rn.f(float %167, float 0xBCF84698A0000000, float %169) #145 %171 = tail call float @llvm.nvvm.fabs.f(float %161) #145 %172 = fcmp ult float %171, 1.056150e+05 br i1 %172, label %__internal_trig_reduction_kernel.exit.i.i71, label %__nv_isinff.exit.i.i.i68 __nv_isinff.exit.i.i.i68: ; preds = %__internal_fmad.exit12.i54 %173 = fcmp oeq float %171, 0x7FF0000000000000 br i1 %173, label %__nv_fmul_rn.exit.i.i.i69, label %175 __nv_fmul_rn.exit.i.i.i69: ; preds = %__nv_isinff.exit.i.i.i68 %174 = tail call float @llvm.nvvm.mul.rn.f(float %161, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i.i71 175: ; preds = %__nv_isinff.exit.i.i.i68 %176 = bitcast float %161 to i32 %177 = lshr i32 %176, 23 %178 = and i32 %177, 255 %179 = add nsw i32 %178, -128 %180 = shl i32 %176, 8 %181 = or i32 %180, -2147483648 %182 = lshr i32 %179, 5 br label %183 183: ; preds = %175, %183 %indvars.iv = phi i64 [ 0, %175 ], [ %indvars.iv.next, %183 ] %hi.i.i.i.i13.044 = phi i32 [ 0, %175 ], [ %188, %183 ] %184 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv %185 = load i32, ptr addrspace(1) %184, align 4 %186 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %185, i32 %181, i32 %hi.i.i.i.i13.044) #146, !srcloc !11 %187 = extractvalue { i32, i32 } %186, 0 %188 = extractvalue { i32, i32 } %186, 1 %189 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %indvars.iv store i32 %187, ptr %189, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 6 br i1 %exitcond.not, label %190, label %183, !llvm.loop !12 190: ; preds = %183 %.lcssa95 = phi i32 [ %188, %183 ] %191 = and i32 %176, -2147483648 %192 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 6 store i32 %.lcssa95, ptr %192, align 4 %193 = and i32 %177, 31 %194 = sub nsw i32 6, %182 %195 = sext i32 %194 to i64 %196 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %195 %197 = load i32, ptr %196, align 4 %198 = sub nsw i32 5, %182 %199 = sext i32 %198 to i64 %200 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %199 %201 = load i32, ptr %200, align 4 %.not17 = icmp eq i32 %193, 0 br i1 %.not17, label %__internal_trig_reduction_slowpath.exit.i.i.i70, label %202 202: ; preds = %190 %203 = sub nsw i32 4, %182 %204 = sub nuw nsw i32 32, %193 %205 = shl i32 %197, %193 %206 = lshr i32 %201, %204 %207 = add i32 %206, %205 %208 = shl i32 %201, %193 %209 = sext i32 %203 to i64 %210 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %209 %211 = load i32, ptr %210, align 4 %212 = lshr i32 %211, %204 %213 = add i32 %212, %208 br label %__internal_trig_reduction_slowpath.exit.i.i.i70 __internal_trig_reduction_slowpath.exit.i.i.i70: ; preds = %202, %190 %hi.i.i.i.i13.1 = phi i32 [ %207, %202 ], [ %197, %190 ] %lo.i.i.i.i14.0 = phi i32 [ %213, %202 ], [ %201, %190 ] %214 = lshr i32 %hi.i.i.i.i13.1, 30 %215 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i13.1, i32 %lo.i.i.i.i14.0, i32 2) %216 = shl i32 %lo.i.i.i.i14.0, 2 %217 = lshr i32 %215, 31 %218 = add nuw nsw i32 %217, %214 %.not18 = icmp eq i32 %191, 0 %219 = sub nsw i32 0, %218 %spec.select1 = select i1 %.not18, i32 %218, i32 %219 %.not19 = icmp sgt i32 %215, -1 %220 = xor i32 %191, -2147483648 %s.i.i.i.i11.0 = select i1 %.not19, i32 %191, i32 %220 %not..not19 = xor i1 %.not19, true %221 = sext i1 %not..not19 to i32 %hi.i.i.i.i13.2 = xor i32 %215, %221 %lo.i.i.i.i14.1 = xor i32 %216, %221 %222 = zext i32 %hi.i.i.i.i13.2 to i64 %223 = shl nuw i64 %222, 32 %224 = zext i32 %lo.i.i.i.i14.1 to i64 %225 = or i64 %223, %224 %226 = sitofp i64 %225 to double %227 = fmul double %226, 0x3BF921FB54442D19 %228 = fptrunc double %227 to float %.not21 = icmp eq i32 %s.i.i.i.i11.0, 0 %229 = fneg float %228 %r.i.i.i.i22.0 = select i1 %.not21, float %228, float %229 br label %__internal_trig_reduction_kernel.exit.i.i71 __internal_trig_reduction_kernel.exit.i.i71: ; preds = %__nv_fmul_rn.exit.i.i.i69, %__internal_trig_reduction_slowpath.exit.i.i.i70, %__internal_fmad.exit12.i54 %i.i.i28.1 = phi i32 [ %166, %__internal_fmad.exit12.i54 ], [ 0, %__nv_fmul_rn.exit.i.i.i69 ], [ %spec.select1, %__internal_trig_reduction_slowpath.exit.i.i.i70 ] %t.i.i.i25.1 = phi float [ %170, %__internal_fmad.exit12.i54 ], [ %174, %__nv_fmul_rn.exit.i.i.i69 ], [ %r.i.i.i.i22.0, %__internal_trig_reduction_slowpath.exit.i.i.i70 ] %230 = and i32 %i.i.i28.1, 3 %231 = uitofp i32 %230 to float %232 = tail call float @llvm.nvvm.fma.rn.f(float %231, float 0x3FF921FB60000000, float 0xC002D97C80000000) #145 %233 = fadd float %t.i.i.i25.1, %232 %234 = fmul float %233, 0x3FE45F3060000000 %235 = tail call i32 @llvm.nvvm.f2i.rn(float %234) #145 %236 = sitofp i32 %235 to float %237 = tail call float @llvm.nvvm.fma.rn.f(float %236, float 0xBFF921FB40000000, float %233) #145 %238 = tail call float @llvm.nvvm.fma.rn.f(float %236, float 0xBE74442D00000000, float %237) #145 %239 = add i32 %235, 1 %240 = tail call float @llvm.nvvm.mul.rn.f(float %238, float %238) #145 %241 = and i32 %239, 1 %.not = icmp eq i32 %241, 0 %242 = select i1 %.not, float %238, float 1.000000e+00 %243 = tail call float @llvm.nvvm.fma.rn.f(float %240, float %242, float 0.000000e+00) #145 %244 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %240, float 0xBF56C0FDA0000000) #145 %245 = select i1 %.not, float 0xBF29A82A60000000, float %244 %246 = select i1 %.not, float 0x3F8110BC80000000, float 0x3FA5555760000000 %247 = tail call float @llvm.nvvm.fma.rn.f(float %245, float %240, float %246) #145 %248 = select i1 %.not, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %249 = tail call float @llvm.nvvm.fma.rn.f(float %247, float %240, float %248) #145 %250 = tail call float @llvm.nvvm.fma.rn.f(float %249, float %243, float %242) #145 %251 = and i32 %239, 2 %.not16 = icmp eq i32 %251, 0 %252 = tail call float @llvm.nvvm.fma.rn.f(float %250, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i.i4.0 = select i1 %.not16, float %250, float %252 %253 = fmul float %164, %z.i.i.i4.0 br label %254 254: ; preds = %__internal_trig_reduction_kernel.exit.i.i71, %__nv_isinff.exit.i53, %__internal_fmad.exit.i41 %r.i34.1 = phi float [ %149, %__internal_fmad.exit.i41 ], [ %253, %__internal_trig_reduction_kernel.exit.i.i71 ], [ 0.000000e+00, %__nv_isinff.exit.i53 ] %255 = fcmp olt float %a, 0.000000e+00 %256 = fneg float %r.i34.1 %r.i34.2 = select i1 %255, float %256, float %r.i34.1 %257 = fcmp olt float %129, 0x39B4484C00000000 br i1 %257, label %258, label %__nv_j0f.exit 258: ; preds = %254 %259 = bitcast float %a to i32 %260 = and i32 %259, -2147483648 %261 = bitcast float %r.i34.2 to i32 %262 = and i32 %261, 2147483647 %263 = or i32 %262, %260 %264 = bitcast i32 %263 to float br label %__nv_j0f.exit 265: ; preds = %0 %266 = icmp slt i32 %n, 0 br i1 %266, label %__nv_j0f.exit, label %__nv_fabsf.exit __nv_fabsf.exit: ; preds = %265 %267 = icmp ugt i32 %n, 4 %268 = zext i1 %267 to i32 %269 = add nuw nsw i32 %268, %n %270 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %271 = sitofp i32 %269 to float %272 = fcmp ogt float %270, %271 br i1 %272, label %__nv_fabsf.exit.i124, label %__nv_sqrtf.exit __nv_fabsf.exit.i124: ; preds = %__nv_fabsf.exit %273 = fdiv float 2.000000e+00, %a %274 = fcmp ole float %270, 8.000000e+00 br i1 %274, label %__internal_fmad.exit.i125, label %__nv_isinff.exit.i137 __internal_fmad.exit.i125: ; preds = %__nv_fabsf.exit.i124 %275 = fadd float %270, 0xC00EA75580000000 %276 = fadd float %275, 0x3E74A121E0000000 %277 = tail call float @llvm.nvvm.fma.rn.f(float 0x3D35E68C60000000, float %276, float 0x3D7037E840000000) #145 %278 = tail call float @llvm.nvvm.fma.rn.f(float %277, float %276, float 0xBDBC43D820000000) #145 %279 = tail call float @llvm.nvvm.fma.rn.f(float %278, float %276, float 0xBDEBBBDFE0000000) #145 %280 = tail call float @llvm.nvvm.fma.rn.f(float %279, float %276, float 0x3E336193A0000000) #145 %281 = tail call float @llvm.nvvm.fma.rn.f(float %280, float %276, float 0x3E5D022E60000000) #145 %282 = tail call float @llvm.nvvm.fma.rn.f(float %281, float %276, float 0xBEA1F1B900000000) #145 %283 = tail call float @llvm.nvvm.fma.rn.f(float %282, float %276, float 0xBEC3CCA7A0000000) #145 %284 = tail call float @llvm.nvvm.fma.rn.f(float %283, float %276, float 0x3F059B38A0000000) #145 %285 = tail call float @llvm.nvvm.fma.rn.f(float %284, float %276, float 0x3F1F3D6200000000) #145 %286 = tail call float @llvm.nvvm.fma.rn.f(float %285, float %276, float 0xBF5D9D7380000000) #145 %287 = tail call float @llvm.nvvm.fma.rn.f(float %286, float %276, float 0xBF64EDFFA0000000) #145 %288 = tail call float @llvm.nvvm.fma.rn.f(float %287, float %276, float 0x3FA0E73260000000) #145 %289 = fadd float %270, 0xC01C0FF600000000 %290 = fadd float %289, 0x3E88971B60000000 %291 = fmul float %290, %288 %292 = fmul float %276, %291 %293 = fmul float %270, %292 br label %398 __nv_isinff.exit.i137: ; preds = %__nv_fabsf.exit.i124 %294 = tail call float @llvm.nvvm.fabs.f(float %270) #145 %295 = fcmp oeq float %294, 0x7FF0000000000000 br i1 %295, label %398, label %__internal_fmad.exit12.i138 __internal_fmad.exit12.i138: ; preds = %__nv_isinff.exit.i137 %296 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %270) #146, !srcloc !10 %297 = fmul float %296, %296 %298 = tail call float @llvm.nvvm.fma.rn.f(float 0xC0105966E0000000, float %297, float 0x3FE7FEFD20000000) #145 %299 = tail call float @llvm.nvvm.fma.rn.f(float %298, float %297, float 0xBFC8B175C0000000) #145 %300 = tail call float @llvm.nvvm.fma.rn.f(float %299, float %297, float 0x3FC7FFF160000000) #145 %301 = tail call float @llvm.nvvm.fma.rn.f(float %300, float %297, float 1.000000e+00) #145 %302 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFF9477440000000, float %297, float 0x3FD72295A0000000) #145 %303 = tail call float @llvm.nvvm.fma.rn.f(float %302, float %297, float 0xBFC4FE5D80000000) #145 %304 = tail call float @llvm.nvvm.fma.rn.f(float %303, float %297, float 0x3FD7FFFFA0000000) #145 %305 = tail call float @llvm.nvvm.fma.rn.f(float %304, float %296, float %270) #145 %306 = tail call float @llvm.nvvm.rsqrt.approx.f(float %270) #145 %307 = fmul float %306, 0x3FE9884540000000 %308 = fmul float %307, %301 %309 = fmul float %305, 0x3FE45F3060000000 %310 = tail call i32 @llvm.nvvm.f2i.rn(float %309) #145 %311 = sitofp i32 %310 to float %312 = tail call float @llvm.nvvm.fma.rn.f(float %311, float 0xBFF921FB40000000, float %305) #145 %313 = tail call float @llvm.nvvm.fma.rn.f(float %311, float 0xBE74442D00000000, float %312) #145 %314 = tail call float @llvm.nvvm.fma.rn.f(float %311, float 0xBCF84698A0000000, float %313) #145 %315 = tail call float @llvm.nvvm.fabs.f(float %305) #145 %316 = fcmp ult float %315, 1.056150e+05 br i1 %316, label %__internal_trig_reduction_kernel.exit.i.i155, label %__nv_isinff.exit.i.i.i152 __nv_isinff.exit.i.i.i152: ; preds = %__internal_fmad.exit12.i138 %317 = fcmp oeq float %315, 0x7FF0000000000000 br i1 %317, label %__nv_fmul_rn.exit.i.i.i153, label %319 __nv_fmul_rn.exit.i.i.i153: ; preds = %__nv_isinff.exit.i.i.i152 %318 = tail call float @llvm.nvvm.mul.rn.f(float %305, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i.i155 319: ; preds = %__nv_isinff.exit.i.i.i152 %320 = bitcast float %305 to i32 %321 = lshr i32 %320, 23 %322 = and i32 %321, 255 %323 = add nsw i32 %322, -128 %324 = shl i32 %320, 8 %325 = or i32 %324, -2147483648 %326 = lshr i32 %323, 5 br label %327 327: ; preds = %319, %327 %indvars.iv77 = phi i64 [ 0, %319 ], [ %indvars.iv.next78, %327 ] %hi.i.i.i.i97.056 = phi i32 [ 0, %319 ], [ %332, %327 ] %328 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv77 %329 = load i32, ptr addrspace(1) %328, align 4 %330 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %329, i32 %325, i32 %hi.i.i.i.i97.056) #146, !srcloc !11 %331 = extractvalue { i32, i32 } %330, 0 %332 = extractvalue { i32, i32 } %330, 1 %333 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %indvars.iv77 store i32 %331, ptr %333, align 4 %indvars.iv.next78 = add nuw nsw i64 %indvars.iv77, 1 %exitcond79.not = icmp eq i64 %indvars.iv.next78, 6 br i1 %exitcond79.not, label %334, label %327, !llvm.loop !12 334: ; preds = %327 %.lcssa93 = phi i32 [ %332, %327 ] %335 = and i32 %320, -2147483648 %336 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 6 store i32 %.lcssa93, ptr %336, align 4 %337 = and i32 %321, 31 %338 = sub nsw i32 6, %326 %339 = sext i32 %338 to i64 %340 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %339 %341 = load i32, ptr %340, align 4 %342 = sub nsw i32 5, %326 %343 = sext i32 %342 to i64 %344 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %343 %345 = load i32, ptr %344, align 4 %.not39 = icmp eq i32 %337, 0 br i1 %.not39, label %__internal_trig_reduction_slowpath.exit.i.i.i154, label %346 346: ; preds = %334 %347 = sub nsw i32 4, %326 %348 = sub nuw nsw i32 32, %337 %349 = shl i32 %341, %337 %350 = lshr i32 %345, %348 %351 = add i32 %350, %349 %352 = shl i32 %345, %337 %353 = sext i32 %347 to i64 %354 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %353 %355 = load i32, ptr %354, align 4 %356 = lshr i32 %355, %348 %357 = add i32 %356, %352 br label %__internal_trig_reduction_slowpath.exit.i.i.i154 __internal_trig_reduction_slowpath.exit.i.i.i154: ; preds = %346, %334 %hi.i.i.i.i97.1 = phi i32 [ %351, %346 ], [ %341, %334 ] %lo.i.i.i.i98.0 = phi i32 [ %357, %346 ], [ %345, %334 ] %358 = lshr i32 %hi.i.i.i.i97.1, 30 %359 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i97.1, i32 %lo.i.i.i.i98.0, i32 2) %360 = shl i32 %lo.i.i.i.i98.0, 2 %361 = lshr i32 %359, 31 %362 = add nuw nsw i32 %361, %358 %.not40 = icmp eq i32 %335, 0 %363 = sub nsw i32 0, %362 %spec.select2 = select i1 %.not40, i32 %362, i32 %363 %.not41 = icmp sgt i32 %359, -1 %364 = xor i32 %335, -2147483648 %s.i.i.i.i95.0 = select i1 %.not41, i32 %335, i32 %364 %not..not41 = xor i1 %.not41, true %365 = sext i1 %not..not41 to i32 %hi.i.i.i.i97.2 = xor i32 %359, %365 %lo.i.i.i.i98.1 = xor i32 %360, %365 %366 = zext i32 %hi.i.i.i.i97.2 to i64 %367 = shl nuw i64 %366, 32 %368 = zext i32 %lo.i.i.i.i98.1 to i64 %369 = or i64 %367, %368 %370 = sitofp i64 %369 to double %371 = fmul double %370, 0x3BF921FB54442D19 %372 = fptrunc double %371 to float %.not43 = icmp eq i32 %s.i.i.i.i95.0, 0 %373 = fneg float %372 %r.i.i.i.i106.0 = select i1 %.not43, float %372, float %373 br label %__internal_trig_reduction_kernel.exit.i.i155 __internal_trig_reduction_kernel.exit.i.i155: ; preds = %__nv_fmul_rn.exit.i.i.i153, %__internal_trig_reduction_slowpath.exit.i.i.i154, %__internal_fmad.exit12.i138 %i.i.i112.1 = phi i32 [ %310, %__internal_fmad.exit12.i138 ], [ 0, %__nv_fmul_rn.exit.i.i.i153 ], [ %spec.select2, %__internal_trig_reduction_slowpath.exit.i.i.i154 ] %t.i.i.i109.1 = phi float [ %314, %__internal_fmad.exit12.i138 ], [ %318, %__nv_fmul_rn.exit.i.i.i153 ], [ %r.i.i.i.i106.0, %__internal_trig_reduction_slowpath.exit.i.i.i154 ] %374 = and i32 %i.i.i112.1, 3 %375 = uitofp i32 %374 to float %376 = tail call float @llvm.nvvm.fma.rn.f(float %375, float 0x3FF921FB60000000, float 0xC002D97C80000000) #145 %377 = fadd float %t.i.i.i109.1, %376 %378 = fmul float %377, 0x3FE45F3060000000 %379 = tail call i32 @llvm.nvvm.f2i.rn(float %378) #145 %380 = sitofp i32 %379 to float %381 = tail call float @llvm.nvvm.fma.rn.f(float %380, float 0xBFF921FB40000000, float %377) #145 %382 = tail call float @llvm.nvvm.fma.rn.f(float %380, float 0xBE74442D00000000, float %381) #145 %383 = add i32 %379, 1 %384 = tail call float @llvm.nvvm.mul.rn.f(float %382, float %382) #145 %385 = and i32 %383, 1 %.not30 = icmp eq i32 %385, 0 %386 = select i1 %.not30, float %382, float 1.000000e+00 %387 = tail call float @llvm.nvvm.fma.rn.f(float %384, float %386, float 0.000000e+00) #145 %388 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %384, float 0xBF56C0FDA0000000) #145 %389 = select i1 %.not30, float 0xBF29A82A60000000, float %388 %390 = select i1 %.not30, float 0x3F8110BC80000000, float 0x3FA5555760000000 %391 = tail call float @llvm.nvvm.fma.rn.f(float %389, float %384, float %390) #145 %392 = select i1 %.not30, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %393 = tail call float @llvm.nvvm.fma.rn.f(float %391, float %384, float %392) #145 %394 = tail call float @llvm.nvvm.fma.rn.f(float %393, float %387, float %386) #145 %395 = and i32 %383, 2 %.not31 = icmp eq i32 %395, 0 %396 = tail call float @llvm.nvvm.fma.rn.f(float %394, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i.i88.0 = select i1 %.not31, float %394, float %396 %397 = fmul float %308, %z.i.i.i88.0 br label %398 398: ; preds = %__internal_trig_reduction_kernel.exit.i.i155, %__nv_isinff.exit.i137, %__internal_fmad.exit.i125 %r.i118.1 = phi float [ %293, %__internal_fmad.exit.i125 ], [ %397, %__internal_trig_reduction_kernel.exit.i.i155 ], [ 0.000000e+00, %__nv_isinff.exit.i137 ] %399 = fcmp olt float %a, 0.000000e+00 %400 = fneg float %r.i118.1 %r.i118.2 = select i1 %399, float %400, float %r.i118.1 %401 = fcmp olt float %270, 0x39B4484C00000000 br i1 %401, label %402, label %__nv_j1f.exit168 402: ; preds = %398 %403 = bitcast float %a to i32 %404 = and i32 %403, -2147483648 %405 = bitcast float %r.i118.2 to i32 %406 = and i32 %405, 2147483647 %407 = or i32 %406, %404 %408 = bitcast i32 %407 to float br label %__nv_j1f.exit168 __nv_j1f.exit168: ; preds = %402, %398 %r.i118.3 = phi float [ %408, %402 ], [ %r.i118.2, %398 ] br i1 %274, label %__internal_fmad.exit.i207, label %__nv_isinff.exit.i220 __internal_fmad.exit.i207: ; preds = %__nv_j1f.exit168 %409 = fadd float %270, 0xC0033D1520000000 %410 = fadd float %409, 0xBE7D2E3660000000 %411 = tail call float @llvm.nvvm.fma.rn.f(float 0xBCD6771CE0000000, float %410, float 0xBD35953660000000) #145 %412 = tail call float @llvm.nvvm.fma.rn.f(float %411, float %410, float 0x3D87E1C300000000) #145 %413 = tail call float @llvm.nvvm.fma.rn.f(float %412, float %410, float 0xBD9A82F020000000) #145 %414 = tail call float @llvm.nvvm.fma.rn.f(float %413, float %410, float 0xBDFD21E700000000) #145 %415 = tail call float @llvm.nvvm.fma.rn.f(float %414, float %410, float 0x3E04060B60000000) #145 %416 = tail call float @llvm.nvvm.fma.rn.f(float %415, float %410, float 0x3E6F2E2860000000) #145 %417 = tail call float @llvm.nvvm.fma.rn.f(float %416, float %410, float 0x3E1EEDF0A0000000) #145 %418 = tail call float @llvm.nvvm.fma.rn.f(float %417, float %410, float 0xBED6DBF8C0000000) #145 %419 = tail call float @llvm.nvvm.fma.rn.f(float %418, float %410, float 0xBEDECCB920000000) #145 %420 = tail call float @llvm.nvvm.fma.rn.f(float %419, float %410, float 0x3F33C5BD60000000) #145 %421 = tail call float @llvm.nvvm.fma.rn.f(float %420, float %410, float 0x3F495C6680000000) #145 %422 = tail call float @llvm.nvvm.fma.rn.f(float %421, float %410, float 0xBF7DD54360000000) #145 %423 = tail call float @llvm.nvvm.fma.rn.f(float %422, float %410, float 0xBF9B4EE8E0000000) #145 %424 = fmul float %410, %423 %425 = fadd float %270, 0xC016148F60000000 %426 = fadd float %425, 0x3E734F46E0000000 %427 = fmul float %426, %424 %428 = fadd float %270, 0xC0214EB560000000 %429 = fadd float %428, 0xBE9999BDA0000000 %430 = fmul float %429, %427 br label %__nv_j0f.exit251 __nv_isinff.exit.i220: ; preds = %__nv_j1f.exit168 %431 = tail call float @llvm.nvvm.fabs.f(float %270) #145 %432 = fcmp oeq float %431, 0x7FF0000000000000 br i1 %432, label %__nv_j0f.exit251, label %__internal_fmad.exit13.i221 __internal_fmad.exit13.i221: ; preds = %__nv_isinff.exit.i220 %433 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %270) #146, !srcloc !10 %434 = fmul float %433, %433 %435 = tail call float @llvm.nvvm.fma.rn.f(float 0x400ADFD260000000, float %434, float 0xBFE076F840000000) #145 %436 = tail call float @llvm.nvvm.fma.rn.f(float %435, float %434, float 0x3FBA767E60000000) #145 %437 = tail call float @llvm.nvvm.fma.rn.f(float %436, float %434, float 0xBFAFFFF6C0000000) #145 %438 = tail call float @llvm.nvvm.fma.rn.f(float %437, float %434, float 1.000000e+00) #145 %439 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FF23C0120000000, float %434, float 0xBFCA4825A0000000) #145 %440 = tail call float @llvm.nvvm.fma.rn.f(float %439, float %434, float 0x3FB0A9DA20000000) #145 %441 = tail call float @llvm.nvvm.fma.rn.f(float %440, float %434, float 0xBFBFFFFFE0000000) #145 %442 = tail call float @llvm.nvvm.fma.rn.f(float %441, float %433, float %270) #145 %443 = tail call float @llvm.nvvm.rsqrt.approx.f(float %270) #145 %444 = fmul float %443, 0x3FE9884540000000 %445 = fmul float %444, %438 %446 = fmul float %442, 0x3FE45F3060000000 %447 = tail call i32 @llvm.nvvm.f2i.rn(float %446) #145 %448 = sitofp i32 %447 to float %449 = tail call float @llvm.nvvm.fma.rn.f(float %448, float 0xBFF921FB40000000, float %442) #145 %450 = tail call float @llvm.nvvm.fma.rn.f(float %448, float 0xBE74442D00000000, float %449) #145 %451 = tail call float @llvm.nvvm.fma.rn.f(float %448, float 0xBCF84698A0000000, float %450) #145 %452 = tail call float @llvm.nvvm.fabs.f(float %442) #145 %453 = fcmp ult float %452, 1.056150e+05 br i1 %453, label %__internal_trig_reduction_kernel.exit.i.i238, label %__nv_isinff.exit.i.i.i235 __nv_isinff.exit.i.i.i235: ; preds = %__internal_fmad.exit13.i221 %454 = fcmp oeq float %452, 0x7FF0000000000000 br i1 %454, label %__nv_fmul_rn.exit.i.i.i236, label %456 __nv_fmul_rn.exit.i.i.i236: ; preds = %__nv_isinff.exit.i.i.i235 %455 = tail call float @llvm.nvvm.mul.rn.f(float %442, float 0.000000e+00) #145 br label %__internal_trig_reduction_kernel.exit.i.i238 456: ; preds = %__nv_isinff.exit.i.i.i235 %457 = bitcast float %442 to i32 %458 = lshr i32 %457, 23 %459 = and i32 %458, 255 %460 = add nsw i32 %459, -128 %461 = shl i32 %457, 8 %462 = or i32 %461, -2147483648 %463 = lshr i32 %460, 5 br label %464 464: ; preds = %456, %464 %indvars.iv80 = phi i64 [ 0, %456 ], [ %indvars.iv.next81, %464 ] %hi.i.i.i.i179.060 = phi i32 [ 0, %456 ], [ %469, %464 ] %465 = getelementptr inbounds [6 x i32], ptr addrspace(1) @__cudart_i2opi_f, i64 0, i64 %indvars.iv80 %466 = load i32, ptr addrspace(1) %465, align 4 %467 = tail call { i32, i32 } asm "{\0A\09mad.lo.cc.u32 $0, $2, $3, $4;\0A\09madc.hi.u32 $1, $2, $3, 0;\0A\09}", "=r,=r,r,r,r"(i32 %466, i32 %462, i32 %hi.i.i.i.i179.060) #146, !srcloc !11 %468 = extractvalue { i32, i32 } %467, 0 %469 = extractvalue { i32, i32 } %467, 1 %470 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %indvars.iv80 store i32 %468, ptr %470, align 4 %indvars.iv.next81 = add nuw nsw i64 %indvars.iv80, 1 %exitcond82.not = icmp eq i64 %indvars.iv.next81, 6 br i1 %exitcond82.not, label %471, label %464, !llvm.loop !12 471: ; preds = %464 %.lcssa92 = phi i32 [ %469, %464 ] %472 = and i32 %457, -2147483648 %473 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 6 store i32 %.lcssa92, ptr %473, align 4 %474 = and i32 %458, 31 %475 = sub nsw i32 6, %463 %476 = sext i32 %475 to i64 %477 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %476 %478 = load i32, ptr %477, align 4 %479 = sub nsw i32 5, %463 %480 = sext i32 %479 to i64 %481 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %480 %482 = load i32, ptr %481, align 4 %.not34 = icmp eq i32 %474, 0 br i1 %.not34, label %__internal_trig_reduction_slowpath.exit.i.i.i237, label %483 483: ; preds = %471 %484 = sub nsw i32 4, %463 %485 = sub nuw nsw i32 32, %474 %486 = shl i32 %478, %474 %487 = lshr i32 %482, %485 %488 = add i32 %487, %486 %489 = shl i32 %482, %474 %490 = sext i32 %484 to i64 %491 = getelementptr inbounds [7 x i32], ptr %result.i.i.i.i, i64 0, i64 %490 %492 = load i32, ptr %491, align 4 %493 = lshr i32 %492, %485 %494 = add i32 %493, %489 br label %__internal_trig_reduction_slowpath.exit.i.i.i237 __internal_trig_reduction_slowpath.exit.i.i.i237: ; preds = %483, %471 %lo.i.i.i.i180.0 = phi i32 [ %494, %483 ], [ %482, %471 ] %hi.i.i.i.i179.1 = phi i32 [ %488, %483 ], [ %478, %471 ] %495 = lshr i32 %hi.i.i.i.i179.1, 30 %496 = tail call i32 @llvm.fshl.i32(i32 %hi.i.i.i.i179.1, i32 %lo.i.i.i.i180.0, i32 2) %497 = shl i32 %lo.i.i.i.i180.0, 2 %498 = lshr i32 %496, 31 %499 = add nuw nsw i32 %498, %495 %.not35 = icmp eq i32 %472, 0 %500 = sub nsw i32 0, %499 %spec.select3 = select i1 %.not35, i32 %499, i32 %500 %.not36 = icmp sgt i32 %496, -1 %501 = xor i32 %472, -2147483648 %not..not36 = xor i1 %.not36, true %502 = sext i1 %not..not36 to i32 %lo.i.i.i.i180.1 = xor i32 %497, %502 %hi.i.i.i.i179.2 = xor i32 %496, %502 %s.i.i.i.i177.0 = select i1 %.not36, i32 %472, i32 %501 %503 = zext i32 %hi.i.i.i.i179.2 to i64 %504 = shl nuw i64 %503, 32 %505 = zext i32 %lo.i.i.i.i180.1 to i64 %506 = or i64 %504, %505 %507 = sitofp i64 %506 to double %508 = fmul double %507, 0x3BF921FB54442D19 %509 = fptrunc double %508 to float %.not38 = icmp eq i32 %s.i.i.i.i177.0, 0 %510 = fneg float %509 %r.i.i.i.i188.0 = select i1 %.not38, float %509, float %510 br label %__internal_trig_reduction_kernel.exit.i.i238 __internal_trig_reduction_kernel.exit.i.i238: ; preds = %__nv_fmul_rn.exit.i.i.i236, %__internal_trig_reduction_slowpath.exit.i.i.i237, %__internal_fmad.exit13.i221 %i.i.i194.1 = phi i32 [ %447, %__internal_fmad.exit13.i221 ], [ 0, %__nv_fmul_rn.exit.i.i.i236 ], [ %spec.select3, %__internal_trig_reduction_slowpath.exit.i.i.i237 ] %t.i.i.i191.1 = phi float [ %451, %__internal_fmad.exit13.i221 ], [ %455, %__nv_fmul_rn.exit.i.i.i236 ], [ %r.i.i.i.i188.0, %__internal_trig_reduction_slowpath.exit.i.i.i237 ] %511 = and i32 %i.i.i194.1, 3 %512 = uitofp i32 %511 to float %513 = tail call float @llvm.nvvm.fma.rn.f(float %512, float 0x3FF921FB60000000, float 0xBFE921FB60000000) #145 %514 = fadd float %t.i.i.i191.1, %513 %515 = fmul float %514, 0x3FE45F3060000000 %516 = tail call i32 @llvm.nvvm.f2i.rn(float %515) #145 %517 = sitofp i32 %516 to float %518 = tail call float @llvm.nvvm.fma.rn.f(float %517, float 0xBFF921FB40000000, float %514) #145 %519 = tail call float @llvm.nvvm.fma.rn.f(float %517, float 0xBE74442D00000000, float %518) #145 %520 = add i32 %516, 1 %521 = tail call float @llvm.nvvm.mul.rn.f(float %519, float %519) #145 %522 = and i32 %520, 1 %.not32 = icmp eq i32 %522, 0 %523 = select i1 %.not32, float %519, float 1.000000e+00 %524 = tail call float @llvm.nvvm.fma.rn.f(float %521, float %523, float 0.000000e+00) #145 %525 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %521, float 0xBF56C0FDA0000000) #145 %526 = select i1 %.not32, float 0xBF29A82A60000000, float %525 %527 = select i1 %.not32, float 0x3F8110BC80000000, float 0x3FA5555760000000 %528 = tail call float @llvm.nvvm.fma.rn.f(float %526, float %521, float %527) #145 %529 = select i1 %.not32, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %530 = tail call float @llvm.nvvm.fma.rn.f(float %528, float %521, float %529) #145 %531 = tail call float @llvm.nvvm.fma.rn.f(float %530, float %524, float %523) #145 %532 = and i32 %520, 2 %.not33 = icmp eq i32 %532, 0 %533 = tail call float @llvm.nvvm.fma.rn.f(float %531, float -1.000000e+00, float 0.000000e+00) #145 %z.i.i.i170.0 = select i1 %.not33, float %531, float %533 %534 = fmul float %445, %z.i.i.i170.0 br label %__nv_j0f.exit251 __nv_j0f.exit251: ; preds = %__internal_trig_reduction_kernel.exit.i.i238, %__nv_isinff.exit.i220, %__internal_fmad.exit.i207 %r.i200.1 = phi float [ %430, %__internal_fmad.exit.i207 ], [ %534, %__internal_trig_reduction_kernel.exit.i.i238 ], [ 0.000000e+00, %__nv_isinff.exit.i220 ] %535 = icmp sgt i32 %n, 1 br i1 %535, label %__internal_fmad.exit.preheader, label %__nv_j0f.exit __internal_fmad.exit.preheader: ; preds = %__nv_j0f.exit251 br label %__internal_fmad.exit __internal_fmad.exit: ; preds = %__internal_fmad.exit.preheader, %__internal_fmad.exit %jim1.064 = phi float [ %ji.063, %__internal_fmad.exit ], [ %r.i200.1, %__internal_fmad.exit.preheader ] %ji.063 = phi float [ %539, %__internal_fmad.exit ], [ %r.i118.3, %__internal_fmad.exit.preheader ] %i.062 = phi i32 [ %540, %__internal_fmad.exit ], [ 1, %__internal_fmad.exit.preheader ] %536 = sitofp i32 %i.062 to float %537 = fmul float %ji.063, %536 %538 = fneg float %jim1.064 %539 = tail call float @llvm.nvvm.fma.rn.f(float %537, float %273, float %538) #145 %540 = add nuw nsw i32 %i.062, 1 %exitcond83.not = icmp eq i32 %540, %n br i1 %exitcond83.not, label %__nv_j0f.exit.loopexit, label %__internal_fmad.exit __nv_sqrtf.exit: ; preds = %__nv_fabsf.exit %541 = mul nsw i32 %n, 40 %542 = sitofp i32 %541 to float %543 = tail call float @llvm.nvvm.sqrt.approx.f(float %542) #145 %544 = fptosi float %543 to i32 %545 = add nsw i32 %544, %n %546 = and i32 %545, -2 %547 = icmp sgt i32 %546, 0 br i1 %547, label %__nv_fabsf.exit252.preheader, label %__nv_j0f.exit __nv_fabsf.exit252.preheader: ; preds = %__nv_sqrtf.exit br label %__nv_fabsf.exit252 __nv_fabsf.exit252: ; preds = %__nv_fabsf.exit252.preheader, %560 %ji1.053 = phi float [ %jim12.0, %560 ], [ 1.000000e+00, %__nv_fabsf.exit252.preheader ] %i.152 = phi i32 [ %561, %560 ], [ %546, %__nv_fabsf.exit252.preheader ] %sum.051 = phi float [ %sum.2, %560 ], [ 0.000000e+00, %__nv_fabsf.exit252.preheader ] %lambda.050 = phi float [ %spec.select4, %560 ], [ 0.000000e+00, %__nv_fabsf.exit252.preheader ] %jip1.149 = phi float [ %jip1.2, %560 ], [ 0.000000e+00, %__nv_fabsf.exit252.preheader ] %548 = sitofp i32 %i.152 to float %549 = fmul float %548, 2.000000e+00 %550 = fdiv float %549, %a %551 = fmul float %ji1.053, %550 %552 = fsub float %551, %jip1.149 %553 = tail call float @llvm.nvvm.fabs.f(float %552) #145 %554 = fcmp ogt float %553, 0x430C6BF520000000 br i1 %554, label %555, label %560 555: ; preds = %__nv_fabsf.exit252 %556 = fmul float %552, 0x3CD203AFA0000000 %557 = fmul float %ji1.053, 0x3CD203AFA0000000 %558 = fmul float %lambda.050, 0x3CD203AFA0000000 %559 = fmul float %sum.051, 0x3CD203AFA0000000 br label %560 560: ; preds = %555, %__nv_fabsf.exit252 %jip1.2 = phi float [ %557, %555 ], [ %ji1.053, %__nv_fabsf.exit252 ] %lambda.1 = phi float [ %558, %555 ], [ %lambda.050, %__nv_fabsf.exit252 ] %sum.1 = phi float [ %559, %555 ], [ %sum.051, %__nv_fabsf.exit252 ] %jim12.0 = phi float [ %556, %555 ], [ %552, %__nv_fabsf.exit252 ] %561 = add nsw i32 %i.152, -1 %562 = icmp eq i32 %561, %n %spec.select4 = select i1 %562, float %jim12.0, float %lambda.1 %563 = and i32 %i.152, 1 %.not29 = icmp eq i32 %563, 0 %564 = fmul float %jim12.0, 2.000000e+00 %565 = select i1 %.not29, float -0.000000e+00, float %564 %sum.2 = fadd float %sum.1, %565 %566 = icmp sgt i32 %i.152, 1 br i1 %566, label %__nv_fabsf.exit252, label %._crit_edge.loopexit ._crit_edge.loopexit: ; preds = %560 %jim12.0.lcssa = phi float [ %jim12.0, %560 ] %spec.select4.lcssa = phi float [ %spec.select4, %560 ] %sum.2.lcssa = phi float [ %sum.2, %560 ] %567 = fsub float %sum.2.lcssa, %jim12.0.lcssa %568 = fdiv float %spec.select4.lcssa, %567 br label %__nv_j0f.exit __nv_j0f.exit.loopexit: ; preds = %__internal_fmad.exit %.lcssa = phi float [ %539, %__internal_fmad.exit ] br label %__nv_j0f.exit __nv_j0f.exit: ; preds = %__nv_j0f.exit.loopexit, %__nv_sqrtf.exit, %._crit_edge.loopexit, %__nv_j0f.exit251, %265, %258, %254, %__internal_fmad.exit.i, %__nv_isinff.exit.i, %__internal_trig_reduction_kernel.exit.i.i %.03 = phi float [ %24, %__internal_fmad.exit.i ], [ %128, %__internal_trig_reduction_kernel.exit.i.i ], [ 0.000000e+00, %__nv_isinff.exit.i ], [ %264, %258 ], [ %r.i34.2, %254 ], [ 0x7FFFFFFFE0000000, %265 ], [ 0.000000e+00, %__nv_j0f.exit251 ], [ %568, %._crit_edge.loopexit ], [ -0.000000e+00, %__nv_sqrtf.exit ], [ %.lcssa, %__nv_j0f.exit.loopexit ] ret float %.03 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_erff(float %a) unnamed_addr #60 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp oge float %0, 0x3FF00C1FC0000000 %2 = fmul float %a, %a %3 = select i1 %1, float %0, float %2 %4 = select i1 %1, float 0x3F1D698740000000, float 0x3F163D2D40000000 %5 = select i1 %1, float 0xBF55C00B60000000, float 0xBF4AE9A400000000 %6 = tail call float @llvm.nvvm.fma.rn.f(float %4, float %3, float %5) #145 %7 = select i1 %1, float 0x3F813233E0000000, float 0x3F755ABD40000000 %8 = tail call float @llvm.nvvm.fma.rn.f(float %6, float %3, float %7) #145 %9 = select i1 %1, float 0xBFA49B3340000000, float 0xBF9B837CE0000000 %10 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %3, float %9) #145 %11 = select i1 %1, float 0x3FC46AA320000000, float 0x3FBCE315E0000000 %12 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %3, float %11) #145 %13 = select i1 %1, float 0x3FED369F20000000, float 0xBFD8127580000000 %14 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %3, float %13) #145 %15 = select i1 %1, float 0x3FE4214280000000, float 0x3FC06EBA60000000 %16 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %3, float %15) #145 %17 = fneg float %3 %18 = select i1 %1, float %17, float %a %19 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %18, float %18) #145 br i1 %1, label %20, label %28 20: ; preds = %__nv_fabsf.exit %21 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %19) #145 %22 = fsub float 1.000000e+00, %21 %23 = bitcast float %22 to i32 %24 = bitcast float %a to i32 %25 = and i32 %24, -2147483648 %26 = or i32 %25, %23 %27 = bitcast i32 %26 to float br label %28 28: ; preds = %20, %__nv_fabsf.exit %r.0 = phi float [ %27, %20 ], [ %19, %__nv_fabsf.exit ] ret float %r.0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_erfinvf(float %a) unnamed_addr #61 { __nv_fmaf_rn.exit: %0 = fneg float %a %1 = tail call float @llvm.nvvm.fma.rn.f(float %a, float %0, float 1.000000e+00) #145 %2 = tail call float @llvm.nvvm.lg2.approx.ftz.f(float %1) #145 %3 = fneg float %2 %4 = fcmp olt float %2, 0xC020666660000000 br i1 %4, label %__internal_fmad.exit, label %__internal_fmad.exit.i __internal_fmad.exit: ; preds = %__nv_fmaf_rn.exit %5 = tail call float @llvm.nvvm.rsqrt.approx.ftz.f(float %3) #145 %6 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFE2E09420000000, float %5, float 0xBFE53754A0000000) #145 %7 = tail call float @llvm.nvvm.fma.rn.f(float %6, float %5, float 0x3FF98D5B80000000) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float %5, float 0xBFE59B5DA0000000) #145 %9 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %5, float 0xBFB860A6E0000000) #145 %10 = tail call float @llvm.nvvm.fma.rn.f(float %9, float %5, float 0x3FEABB3720000000) #145 %11 = fdiv float 1.000000e+00, %5 %12 = fmul float %11, %10 %13 = bitcast float %12 to i32 %14 = bitcast float %a to i32 %15 = and i32 %14, -2147483648 %16 = or i32 %15, %13 %17 = bitcast i32 %16 to float br label %28 __internal_fmad.exit.i: ; preds = %__nv_fmaf_rn.exit %18 = tail call float @llvm.nvvm.fma.rn.f(float 0xBDF14C6E00000000, float %3, float 0x3E443EC8A0000000) #145 %19 = tail call float @llvm.nvvm.fma.rn.f(float %18, float %3, float 0xBE802DFB40000000) #145 %20 = tail call float @llvm.nvvm.fma.rn.f(float %19, float %3, float 0x3E8D1F08C0000000) #145 %21 = tail call float @llvm.nvvm.fma.rn.f(float %20, float %3, float 0x3EE0E85540000000) #145 %22 = tail call float @llvm.nvvm.fma.rn.f(float %21, float %3, float 0xBF009B69A0000000) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %22, float %3, float 0xBF495FD420000000) #145 %24 = tail call float @llvm.nvvm.fma.rn.f(float %23, float %3, float 0x3F76B804E0000000) #145 %25 = tail call float @llvm.nvvm.fma.rn.f(float %24, float %3, float 0x3FC495C1E0000000) #145 %26 = tail call float @llvm.nvvm.fma.rn.f(float %25, float %3, float 0x3FEC5BF880000000) #145 %27 = fmul float %26, %a br label %28 28: ; preds = %__internal_fmad.exit.i, %__internal_fmad.exit %t.0 = phi float [ %17, %__internal_fmad.exit ], [ %27, %__internal_fmad.exit.i ] ret float %t.0 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_erfcf(float %a) unnamed_addr #62 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fadd float %0, -4.000000e+00 %2 = fadd float %0, 4.000000e+00 %3 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %2) #146, !srcloc !10 %4 = tail call float @llvm.nvvm.mul.rn.f(float %1, float %3) #145 %5 = fadd float %4, 1.000000e+00 %6 = tail call float @llvm.nvvm.fma.rn.f(float -4.000000e+00, float %5, float %0) #145 %7 = fneg float %4 %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float %0, float %6) #145 %9 = tail call float @llvm.nvvm.fma.rn.f(float %3, float %8, float %4) #145 %10 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F4D341220000000, float %9, float 0x3F7CDC0B60000000) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %9, float 0xBF903F6960000000) #145 %12 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %9, float 0x3FA2A6E760000000) #145 %13 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %9, float 0xBFB10F8B40000000) #145 %14 = tail call float @llvm.nvvm.fma.rn.f(float %13, float %9, float 0x3FB8043AA0000000) #145 %15 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %9, float 0xBFB9DA8480000000) #145 %16 = tail call float @llvm.nvvm.fma.rn.f(float %15, float %9, float 0x3FB16E9BC0000000) #145 %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %9, float 0x3F8F7E2E00000000) #145 %18 = tail call float @llvm.nvvm.fma.rn.f(float %17, float %9, float 0xBFC1DF1A80000000) #145 %19 = tail call float @llvm.nvvm.fma.rn.f(float %18, float %9, float 0x3FF3BA5920000000) #145 %20 = tail call float @llvm.nvvm.fma.rn.f(float 2.000000e+00, float %0, float 1.000000e+00) #145 %21 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %20) #146, !srcloc !10 %22 = tail call float @llvm.nvvm.mul.rn.f(float %19, float %21) #145 %23 = fmul float %22, -2.000000e+00 %24 = tail call float @llvm.nvvm.fma.rn.f(float %0, float %23, float %19) #145 %25 = fsub float %24, %22 %26 = tail call float @llvm.nvvm.fma.rn.f(float %25, float %21, float %22) #145 %27 = fneg float %0 %28 = fmul float %0, %27 %29 = tail call float @llvm.nvvm.mul.rn.f(float %28, float 0x3FF7154760000000) #145 %30 = tail call float @llvm.nvvm.trunc.f(float %29) #145 %31 = tail call float @llvm.nvvm.fabs.f(float %30) #145 %32 = fcmp ogt float %31, 1.260000e+02 %33 = bitcast float %30 to i32 %34 = and i32 %33, -2147483648 %35 = or i32 %34, 1123811328 %36 = bitcast i32 %35 to float %j.i.0 = select i1 %32, float %36, float %30 %37 = tail call float @llvm.nvvm.fma.rn.f(float %j.i.0, float 0xBFE62E4300000000, float %28) #145 %38 = tail call float @llvm.nvvm.fma.rn.f(float %j.i.0, float 0x3E205C6100000000, float %37) #145 %39 = fmul float %38, 0x3FF7154760000000 %40 = fadd float %j.i.0, 0x4168000FE0000000 %41 = bitcast float %40 to i32 %42 = shl i32 %41, 23 %43 = bitcast i32 %42 to float %44 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %39) #145 %45 = fmul float %44, %43 %46 = fneg float %28 %47 = tail call float @llvm.nvvm.fma.rn.f(float %27, float %0, float %46) #145 %48 = tail call float @llvm.nvvm.fma.rn.f(float %45, float %47, float %45) #145 %49 = fmul float %48, %26 %50 = fcmp ogt float %0, 0x40241C2900000000 %t1.0 = select i1 %50, float 0.000000e+00, float %49 %51 = fcmp olt float %a, 0.000000e+00 %52 = fsub float 2.000000e+00, %t1.0 %53 = select i1 %51, float %52, float %t1.0 ret float %53 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_erfcxf(float %a) unnamed_addr #63 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp olt float %0, 0x40241C2900000000 br i1 %1, label %__nv_fmul_rn.exit.i, label %__nv_fast_fdividef.exit __nv_fmul_rn.exit.i: ; preds = %__nv_fabsf.exit %2 = fadd float %0, -4.000000e+00 %3 = fadd float %0, 4.000000e+00 %4 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %3) #146, !srcloc !10 %5 = tail call float @llvm.nvvm.mul.rn.f(float %2, float %4) #145 %6 = fadd float %5, 1.000000e+00 %7 = tail call float @llvm.nvvm.fma.rn.f(float -4.000000e+00, float %6, float %0) #145 %8 = fneg float %5 %9 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %0, float %7) #145 %10 = tail call float @llvm.nvvm.fma.rn.f(float %4, float %9, float %5) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F4D341220000000, float %10, float 0x3F7CDC0B60000000) #145 %12 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %10, float 0xBF903F6960000000) #145 %13 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %10, float 0x3FA2A6E760000000) #145 %14 = tail call float @llvm.nvvm.fma.rn.f(float %13, float %10, float 0xBFB10F8B40000000) #145 %15 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %10, float 0x3FB8043AA0000000) #145 %16 = tail call float @llvm.nvvm.fma.rn.f(float %15, float %10, float 0xBFB9DA8480000000) #145 %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %10, float 0x3FB16E9BC0000000) #145 %18 = tail call float @llvm.nvvm.fma.rn.f(float %17, float %10, float 0x3F8F7E2E00000000) #145 %19 = tail call float @llvm.nvvm.fma.rn.f(float %18, float %10, float 0xBFC1DF1A80000000) #145 %20 = tail call float @llvm.nvvm.fma.rn.f(float %19, float %10, float 0x3FF3BA5920000000) #145 %21 = tail call float @llvm.nvvm.fma.rn.f(float 2.000000e+00, float %0, float 1.000000e+00) #145 %22 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %21) #146, !srcloc !10 %23 = tail call float @llvm.nvvm.mul.rn.f(float %20, float %22) #145 %24 = fmul float %23, -2.000000e+00 %25 = tail call float @llvm.nvvm.fma.rn.f(float %0, float %24, float %20) #145 %26 = fsub float %25, %23 %27 = tail call float @llvm.nvvm.fma.rn.f(float %26, float %22, float %23) #145 br label %37 __nv_fast_fdividef.exit: ; preds = %__nv_fabsf.exit %28 = fmul float %0, 2.500000e-01 %29 = tail call float @llvm.nvvm.div.approx.f(float 2.500000e-01, float %28) #145 %30 = fmul float %29, %29 %31 = tail call float @llvm.nvvm.fma.rn.f(float 6.562500e+00, float %30, float -1.875000e+00) #145 %32 = tail call float @llvm.nvvm.fma.rn.f(float %31, float %30, float 7.500000e-01) #145 %33 = tail call float @llvm.nvvm.fma.rn.f(float %32, float %30, float -5.000000e-01) #145 %34 = tail call float @llvm.nvvm.fma.rn.f(float %33, float %30, float 1.000000e+00) #145 %35 = fmul float %29, 0x3FE20DD760000000 %36 = fmul float %35, %34 br label %37 37: ; preds = %__nv_fast_fdividef.exit, %__nv_fmul_rn.exit.i %t1.0 = phi float [ %27, %__nv_fmul_rn.exit.i ], [ %36, %__nv_fast_fdividef.exit ] %38 = fcmp olt float %a, 0.000000e+00 br i1 %38, label %__nv_fmul_rz.exit, label %58 __nv_fmul_rz.exit: ; preds = %37 %39 = tail call float @llvm.nvvm.mul.rz.f(float %0, float %0) #145 %40 = fneg float %39 %41 = tail call float @llvm.nvvm.fma.rn.f(float %0, float %0, float %40) #145 %42 = tail call float @llvm.nvvm.fma.rn.f(float %39, float 0x3F777313A0000000, float 5.000000e-01) #145 %43 = tail call float @llvm.nvvm.saturate.f(float %42) #145 %44 = tail call float @llvm.nvvm.fma.rm.f(float %43, float 2.520000e+02, float 0x4168000020000000) #145 %45 = fadd float %44, 0xC168000FE0000000 %46 = fneg float %45 %47 = tail call float @llvm.nvvm.fma.rn.f(float %39, float 0x3FF7154760000000, float %46) #145 %48 = tail call float @llvm.nvvm.fma.rn.f(float %39, float 0x3E54AE0C00000000, float %47) #145 %49 = bitcast float %44 to i32 %50 = shl i32 %49, 23 %51 = bitcast i32 %50 to float %52 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %48) #145 %53 = fmul float %52, %51 %54 = fadd float %53, %53 %55 = tail call float @llvm.nvvm.fma.rn.f(float %54, float %41, float %54) #145 %56 = fsub float %55, %t1.0 %57 = fcmp oeq float %54, 0x7FF0000000000000 %t1.1 = select i1 %57, float 0x7FF0000000000000, float %56 br label %58 58: ; preds = %__nv_fmul_rz.exit, %37 %t1.2 = phi float [ %t1.1, %__nv_fmul_rz.exit ], [ %t1.0, %37 ] ret float %t1.2 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_erfcinvf(float %a) unnamed_addr #64 { __nv_fadd_rn.exit: %0 = fneg float %a %1 = tail call float @llvm.nvvm.add.rn.f(float 2.000000e+00, float %0) #145 %2 = fcmp oge float %a, 0x3F6BDA5120000000 %3 = fcmp ole float %a, 0x3FFFF212E0000000 %or.cond = and i1 %2, %3 br i1 %or.cond, label %__nv_fmul_rn.exit, label %__nv_fast_log2f.exit __nv_fmul_rn.exit: ; preds = %__nv_fadd_rn.exit %4 = tail call float @llvm.nvvm.mul.rn.f(float %1, float %a) #145 %5 = tail call float @llvm.nvvm.lg2.approx.ftz.f(float %4) #145 %6 = fneg float %5 %7 = tail call float @llvm.nvvm.fma.rn.f(float 0xBDF14C6E00000000, float %6, float 0x3E443EC8A0000000) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float %6, float 0xBE802DFB40000000) #145 %9 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %6, float 0x3E8D1F08C0000000) #145 %10 = tail call float @llvm.nvvm.fma.rn.f(float %9, float %6, float 0x3EE0E85540000000) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %6, float 0xBF009B69A0000000) #145 %12 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %6, float 0xBF495FD420000000) #145 %13 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %6, float 0x3F76B804E0000000) #145 %14 = tail call float @llvm.nvvm.fma.rn.f(float %13, float %6, float 0x3FC495C1E0000000) #145 %15 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %6, float 0x3FEC5BF880000000) #145 %16 = tail call float @llvm.nvvm.fma.rn.f(float %15, float %0, float %15) #145 br label %32 __nv_fast_log2f.exit: ; preds = %__nv_fadd_rn.exit %17 = fcmp ogt float %a, 1.000000e+00 %p.0 = select i1 %17, float %1, float %a %18 = tail call float @llvm.nvvm.lg2.approx.f(float %p.0) #145 %19 = fneg float %18 %20 = tail call float @llvm.nvvm.rsqrt.approx.ftz.f(float %19) #145 %21 = tail call float @llvm.nvvm.fma.rn.f(float 0xC04F8E7E20000000, float %20, float 0x405FDF0520000000) #145 %22 = tail call float @llvm.nvvm.fma.rn.f(float %21, float %20, float 0xC05C86C380000000) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %22, float %20, float 0x404E29B360000000) #145 %24 = tail call float @llvm.nvvm.fma.rn.f(float %23, float %20, float 0xC035CA3660000000) #145 %25 = tail call float @llvm.nvvm.fma.rn.f(float %24, float %20, float 0x4019DEA080000000) #145 %26 = tail call float @llvm.nvvm.fma.rn.f(float %25, float %20, float 0xBFFD53C0A0000000) #145 %27 = tail call float @llvm.nvvm.fma.rn.f(float %26, float %20, float 0xBF9F0E3E80000000) #145 %28 = tail call float @llvm.nvvm.fma.rn.f(float %27, float %20, float 0x3FEAA6EEA0000000) #145 %29 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %20) #146, !srcloc !10 %30 = fneg float %29 %t.0 = select i1 %17, float %30, float %29 %31 = tail call float @llvm.nvvm.mul.rn.f(float %28, float %t.0) #145 br label %32 32: ; preds = %__nv_fast_log2f.exit, %__nv_fmul_rn.exit %t.1 = phi float [ %16, %__nv_fmul_rn.exit ], [ %31, %__nv_fast_log2f.exit ] ret float %t.1 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_normcdfinvf(float %a) unnamed_addr #65 { __nv_fadd_rn.exit.i: %0 = fadd float %a, %a %1 = fneg float %0 %2 = tail call float @llvm.nvvm.add.rn.f(float 2.000000e+00, float %1) #145 %3 = fcmp oge float %0, 0x3F6BDA5120000000 %4 = fcmp ole float %0, 0x3FFFF212E0000000 %or.cond = and i1 %3, %4 br i1 %or.cond, label %__nv_fmul_rn.exit.i, label %__nv_fast_log2f.exit.i __nv_fmul_rn.exit.i: ; preds = %__nv_fadd_rn.exit.i %5 = tail call float @llvm.nvvm.mul.rn.f(float %2, float %0) #145 %6 = tail call float @llvm.nvvm.lg2.approx.ftz.f(float %5) #145 %7 = fneg float %6 %8 = tail call float @llvm.nvvm.fma.rn.f(float 0xBDF14C6E00000000, float %7, float 0x3E443EC8A0000000) #145 %9 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %7, float 0xBE802DFB40000000) #145 %10 = tail call float @llvm.nvvm.fma.rn.f(float %9, float %7, float 0x3E8D1F08C0000000) #145 %11 = tail call float @llvm.nvvm.fma.rn.f(float %10, float %7, float 0x3EE0E85540000000) #145 %12 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %7, float 0xBF009B69A0000000) #145 %13 = tail call float @llvm.nvvm.fma.rn.f(float %12, float %7, float 0xBF495FD420000000) #145 %14 = tail call float @llvm.nvvm.fma.rn.f(float %13, float %7, float 0x3F76B804E0000000) #145 %15 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %7, float 0x3FC495C1E0000000) #145 %16 = tail call float @llvm.nvvm.fma.rn.f(float %15, float %7, float 0x3FEC5BF880000000) #145 %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float %1, float %16) #145 br label %__nv_erfcinvf.exit __nv_fast_log2f.exit.i: ; preds = %__nv_fadd_rn.exit.i %18 = fcmp ogt float %0, 1.000000e+00 %p.i.0 = select i1 %18, float %2, float %0 %19 = tail call float @llvm.nvvm.lg2.approx.f(float %p.i.0) #145 %20 = fneg float %19 %21 = tail call float @llvm.nvvm.rsqrt.approx.ftz.f(float %20) #145 %22 = tail call float @llvm.nvvm.fma.rn.f(float 0xC04F8E7E20000000, float %21, float 0x405FDF0520000000) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %22, float %21, float 0xC05C86C380000000) #145 %24 = tail call float @llvm.nvvm.fma.rn.f(float %23, float %21, float 0x404E29B360000000) #145 %25 = tail call float @llvm.nvvm.fma.rn.f(float %24, float %21, float 0xC035CA3660000000) #145 %26 = tail call float @llvm.nvvm.fma.rn.f(float %25, float %21, float 0x4019DEA080000000) #145 %27 = tail call float @llvm.nvvm.fma.rn.f(float %26, float %21, float 0xBFFD53C0A0000000) #145 %28 = tail call float @llvm.nvvm.fma.rn.f(float %27, float %21, float 0xBF9F0E3E80000000) #145 %29 = tail call float @llvm.nvvm.fma.rn.f(float %28, float %21, float 0x3FEAA6EEA0000000) #145 %30 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %21) #146, !srcloc !10 %31 = fneg float %30 %t.i.0 = select i1 %18, float %31, float %30 %32 = tail call float @llvm.nvvm.mul.rn.f(float %29, float %t.i.0) #145 br label %__nv_erfcinvf.exit __nv_erfcinvf.exit: ; preds = %__nv_fmul_rn.exit.i, %__nv_fast_log2f.exit.i %t.i.1 = phi float [ %17, %__nv_fmul_rn.exit.i ], [ %32, %__nv_fast_log2f.exit.i ] %33 = fmul float %t.i.1, 0xBFF6A09E60000000 %34 = tail call float @llvm.nvvm.add.rn.f(float %33, float 0.000000e+00) #145 ret float %34 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_normcdff(float %a) unnamed_addr #66 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp ogt float %0, 1.450000e+01 %2 = bitcast float %a to i32 %3 = and i32 %2, -2147483648 %4 = or i32 %3, 1097334784 %5 = bitcast i32 %4 to float %.02 = select i1 %1, float %5, float %a %6 = tail call float @llvm.nvvm.mul.rn.f(float %.02, float 0xBFE6A09E60000000) #145 %7 = fneg float %6 %8 = tail call float @llvm.nvvm.fma.rn.f(float %.02, float 0xBFE6A09E60000000, float %7) #145 %9 = tail call float @llvm.nvvm.fma.rn.f(float %.02, float 0xBE49FCEF40000000, float %8) #145 %10 = tail call float @llvm.nvvm.add.rn.f(float %6, float %9) #145 %11 = tail call float @llvm.nvvm.fabs.f(float %10) #145 %12 = fadd float %11, -4.000000e+00 %13 = fadd float %11, 4.000000e+00 %14 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %13) #146, !srcloc !10 %15 = tail call float @llvm.nvvm.mul.rn.f(float %12, float %14) #145 %16 = fadd float %15, 1.000000e+00 %17 = tail call float @llvm.nvvm.fma.rn.f(float -4.000000e+00, float %16, float %11) #145 %18 = fneg float %15 %19 = tail call float @llvm.nvvm.fma.rn.f(float %18, float %11, float %17) #145 %20 = tail call float @llvm.nvvm.fma.rn.f(float %14, float %19, float %15) #145 %21 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F4D341220000000, float %20, float 0x3F7CDC0B60000000) #145 %22 = tail call float @llvm.nvvm.fma.rn.f(float %21, float %20, float 0xBF903F6960000000) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %22, float %20, float 0x3FA2A6E760000000) #145 %24 = tail call float @llvm.nvvm.fma.rn.f(float %23, float %20, float 0xBFB10F8B40000000) #145 %25 = tail call float @llvm.nvvm.fma.rn.f(float %24, float %20, float 0x3FB8043AA0000000) #145 %26 = tail call float @llvm.nvvm.fma.rn.f(float %25, float %20, float 0xBFB9DA8480000000) #145 %27 = tail call float @llvm.nvvm.fma.rn.f(float %26, float %20, float 0x3FB16E9BC0000000) #145 %28 = tail call float @llvm.nvvm.fma.rn.f(float %27, float %20, float 0x3F8F7E2E00000000) #145 %29 = tail call float @llvm.nvvm.fma.rn.f(float %28, float %20, float 0xBFC1DF1A80000000) #145 %30 = tail call float @llvm.nvvm.fma.rn.f(float %29, float %20, float 0x3FF3BA5920000000) #145 %31 = tail call float @llvm.nvvm.fma.rn.f(float 2.000000e+00, float %11, float 1.000000e+00) #145 %32 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %31) #146, !srcloc !10 %33 = tail call float @llvm.nvvm.mul.rn.f(float %30, float %32) #145 %34 = fmul float %33, -2.000000e+00 %35 = tail call float @llvm.nvvm.fma.rn.f(float %11, float %34, float %30) #145 %36 = fsub float %35, %33 %37 = tail call float @llvm.nvvm.fma.rn.f(float %36, float %32, float %33) #145 %38 = fneg float %11 %39 = fmul float %11, %38 %40 = tail call float @llvm.nvvm.mul.rn.f(float %39, float 0x3FF7154760000000) #145 %41 = tail call float @llvm.nvvm.trunc.f(float %40) #145 %42 = tail call float @llvm.nvvm.fabs.f(float %41) #145 %43 = fcmp ogt float %42, 1.260000e+02 %44 = bitcast float %41 to i32 %45 = and i32 %44, -2147483648 %46 = or i32 %45, 1123811328 %47 = bitcast i32 %46 to float %j.i.i.0 = select i1 %43, float %47, float %41 %48 = tail call float @llvm.nvvm.fma.rn.f(float %j.i.i.0, float 0xBFE62E4300000000, float %39) #145 %49 = tail call float @llvm.nvvm.fma.rn.f(float %j.i.i.0, float 0x3E205C6100000000, float %48) #145 %50 = fmul float %49, 0x3FF7154760000000 %51 = fadd float %j.i.i.0, 0x4168000FE0000000 %52 = bitcast float %51 to i32 %53 = shl i32 %52, 23 %54 = bitcast i32 %53 to float %55 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %50) #145 %56 = fmul float %55, %54 %57 = fneg float %39 %58 = tail call float @llvm.nvvm.fma.rn.f(float %38, float %11, float %57) #145 %59 = tail call float @llvm.nvvm.fma.rn.f(float %56, float %58, float %56) #145 %60 = fmul float %59, %37 %61 = fcmp ogt float %11, 0x40241C2900000000 %t1.i.0 = select i1 %61, float 0.000000e+00, float %60 %62 = fcmp olt float %10, 0.000000e+00 %63 = fsub float 2.000000e+00, %t1.i.0 %64 = select i1 %62, float %63, float %t1.i.0 %65 = fcmp olt float %.02, -1.000000e+00 br i1 %65, label %__nv_fadd_rn.exit2, label %71 __nv_fadd_rn.exit2: ; preds = %__nv_fabsf.exit %66 = fsub float %6, %10 %67 = tail call float @llvm.nvvm.add.rn.f(float %66, float %9) #145 %68 = fmul float %10, -2.000000e+00 %69 = fmul float %68, %64 %70 = tail call float @llvm.nvvm.fma.rn.f(float %69, float %67, float %64) #145 br label %71 71: ; preds = %__nv_fadd_rn.exit2, %__nv_fabsf.exit %z.0 = phi float [ %70, %__nv_fadd_rn.exit2 ], [ %64, %__nv_fabsf.exit ] %72 = fmul float %z.0, 5.000000e-01 ret float %72 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_lgammaf(float %a) unnamed_addr #67 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp ult float %0, 3.000000e+00 br i1 %1, label %51, label %2 2: ; preds = %__nv_fabsf.exit %3 = fcmp ult float %0, 0x401F333340000000 br i1 %3, label %__internal_fmad.exit5.i, label %__internal_fmad.exit.i __internal_fmad.exit.i: ; preds = %2 %4 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %0) #146, !srcloc !10 %5 = fmul float %4, %4 %6 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F497CEAA0000000, float %5, float 0xBF66C12A60000000) #145 %7 = tail call float @llvm.nvvm.fma.rn.f(float %6, float %5, float 0x3FB5555460000000) #145 %8 = tail call float @llvm.nvvm.fma.rn.f(float %7, float %4, float 0x3FED67F1C0000000) #145 %9 = fcmp olt float %0, 0x3810000000000000 %10 = fmul float %0, 0x4160000000000000 %.010 = select i1 %9, float %10, float %0 %i.i.i.0 = select i1 %9, float -2.300000e+01, float 0.000000e+00 %11 = bitcast float %.010 to i32 %12 = add i32 %11, -1059760811 %13 = and i32 %12, -8388608 %14 = sub i32 %11, %13 %15 = bitcast i32 %14 to float %16 = sitofp i32 %13 to float %17 = tail call float @llvm.nvvm.fma.rn.f(float %16, float 0x3E80000000000000, float %i.i.i.0) #145 %18 = fadd float %15, -1.000000e+00 %19 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFC0AA04E0000000, float %18, float 0x3FC2073EC0000000) #145 %20 = tail call float @llvm.nvvm.fma.rn.f(float %19, float %18, float 0xBFBF19B980000000) #145 %21 = tail call float @llvm.nvvm.fma.rn.f(float %20, float %18, float 0x3FC1E52AA0000000) #145 %22 = tail call float @llvm.nvvm.fma.rn.f(float %21, float %18, float 0xBFC55B1720000000) #145 %23 = tail call float @llvm.nvvm.fma.rn.f(float %22, float %18, float 0x3FC99DA160000000) #145 %24 = tail call float @llvm.nvvm.fma.rn.f(float %23, float %18, float 0xBFCFFFE440000000) #145 %25 = tail call float @llvm.nvvm.fma.rn.f(float %24, float %18, float 0x3FD5554F00000000) #145 %26 = tail call float @llvm.nvvm.fma.rn.f(float %25, float %18, float -5.000000e-01) #145 %27 = fmul float %18, %26 %28 = tail call float @llvm.nvvm.fma.rn.f(float %27, float %18, float %18) #145 %29 = tail call float @llvm.nvvm.fma.rn.f(float %17, float 0x3FE62E4300000000, float %28) #145 %30 = icmp ugt i32 %11, 2139095039 %31 = tail call float @llvm.nvvm.fma.rn.f(float %.010, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i3.i.0 = select i1 %30, float %31, float %29 %32 = fcmp oeq float %.010, 0.000000e+00 %r.i3.i.0.op = fmul float %r.i3.i.0, 5.000000e-01 %33 = select i1 %32, float 0xFFF0000000000000, float %r.i3.i.0.op %34 = fadd float %0, -5.000000e-01 %35 = tail call float @llvm.nvvm.mul.rn.f(float %33, float %34) #145 %36 = fsub float %35, %0 %37 = tail call float @llvm.nvvm.add.rn.f(float %35, float %8) #145 %38 = fadd float %36, %37 %39 = fcmp oeq float %0, 0x7FF0000000000000 %t.i.0 = select i1 %39, float 0x7FF0000000000000, float %38 br label %__internal_lgammaf_pos.exit __internal_fmad.exit5.i: ; preds = %2 %40 = fadd float %0, -3.000000e+00 %41 = tail call float @llvm.nvvm.fma.rn.f(float 0xC087671F60000000, float %40, float 0xC0C81EDF00000000) #145 %42 = tail call float @llvm.nvvm.fma.rn.f(float %41, float %40, float 0xC0E40CAC00000000) #145 %43 = tail call float @llvm.nvvm.fma.rn.f(float %42, float %40, float 0xC0E796D540000000) #145 %44 = tail call float @llvm.nvvm.fma.rn.f(float %43, float %40, float 0xC10175CB40000000) #145 %45 = fadd float %40, 0xC070340400000000 %46 = tail call float @llvm.nvvm.fma.rn.f(float %45, float %40, float 0xC0C50C9700000000) #145 %47 = tail call float @llvm.nvvm.fma.rn.f(float %46, float %40, float 0xC0F6A0D0C0000000) #145 %48 = tail call float @llvm.nvvm.fma.rn.f(float %47, float %40, float 0xC109308CA0000000) #145 %49 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %48) #146, !srcloc !10 %50 = tail call float @llvm.nvvm.fma.rn.f(float %44, float %49, float %40) #145 br label %__internal_lgammaf_pos.exit 51: ; preds = %__nv_fabsf.exit %52 = fcmp ult float %0, 1.500000e+00 br i1 %52, label %64, label %__internal_fmad.exit22.i __internal_fmad.exit22.i: ; preds = %51 %53 = fadd float %0, -2.000000e+00 %54 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F0A00FF40000000, float %53, float 0xBF2CF40040000000) #145 %55 = tail call float @llvm.nvvm.fma.rn.f(float %54, float %53, float 0x3F41BCDF80000000) #145 %56 = tail call float @llvm.nvvm.fma.rn.f(float %55, float %53, float 0xBF53BC1C40000000) #145 %57 = tail call float @llvm.nvvm.fma.rn.f(float %56, float %53, float 0x3F67A0B6E0000000) #145 %58 = tail call float @llvm.nvvm.fma.rn.f(float %57, float %53, float 0xBF7E3D6200000000) #145 %59 = tail call float @llvm.nvvm.fma.rn.f(float %58, float %53, float 0x3F95134500000000) #145 %60 = tail call float @llvm.nvvm.fma.rn.f(float %59, float %53, float 0xBFB13E0340000000) #145 %61 = tail call float @llvm.nvvm.fma.rn.f(float %60, float %53, float 0x3FD4A34CC0000000) #145 %62 = tail call float @llvm.nvvm.fma.rn.f(float %61, float %53, float 0x3FDB0EE600000000) #145 %63 = fmul float %53, %62 br label %__internal_lgammaf_pos.exit 64: ; preds = %51 %65 = fcmp ult float %0, 0x3FE6666660000000 br i1 %65, label %__internal_fmad.exit60.i, label %__internal_fmad.exit40.i __internal_fmad.exit40.i: ; preds = %64 %66 = fsub float 1.000000e+00, %0 %67 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FA77DEEC0000000, float %66, float 0x3FBA8EAEE0000000) #145 %68 = tail call float @llvm.nvvm.fma.rn.f(float %67, float %66, float 0x3FBF700F20000000) #145 %69 = tail call float @llvm.nvvm.fma.rn.f(float %68, float %66, float 0x3FC052B6A0000000) #145 %70 = tail call float @llvm.nvvm.fma.rn.f(float %69, float %66, float 0x3FC254ECA0000000) #145 %71 = tail call float @llvm.nvvm.fma.rn.f(float %70, float %66, float 0x3FC5AD0CE0000000) #145 %72 = tail call float @llvm.nvvm.fma.rn.f(float %71, float %66, float 0x3FCA8C57E0000000) #145 %73 = tail call float @llvm.nvvm.fma.rn.f(float %72, float %66, float 0x3FD1514E40000000) #145 %74 = tail call float @llvm.nvvm.fma.rn.f(float %73, float %66, float 0x3FD9A4D480000000) #145 %75 = tail call float @llvm.nvvm.fma.rn.f(float %74, float %66, float 0x3FEA51A640000000) #145 %76 = tail call float @llvm.nvvm.fma.rn.f(float %75, float %66, float 0x3FE2788D00000000) #145 %77 = fmul float %66, %76 br label %__internal_lgammaf_pos.exit __internal_fmad.exit60.i: ; preds = %64 %78 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F6D6390C0000000, float %0, float 0xBF76690F00000000) #145 %79 = tail call float @llvm.nvvm.fma.rn.f(float %78, float %0, float 0xBFA6D95DE0000000) #145 %80 = tail call float @llvm.nvvm.fma.rn.f(float %79, float %0, float 0x3FC56AAAA0000000) #145 %81 = tail call float @llvm.nvvm.fma.rn.f(float %80, float %0, float 0xBFA592D8E0000000) #145 %82 = tail call float @llvm.nvvm.fma.rn.f(float %81, float %0, float 0xBFE4FCDD60000000) #145 %83 = tail call float @llvm.nvvm.fma.rn.f(float %82, float %0, float 0x3FE2788C60000000) #145 %84 = fmul float %0, %83 %85 = tail call float @llvm.nvvm.fma.rn.f(float %84, float %0, float %0) #145 %86 = fcmp olt float %85, 0x3810000000000000 %87 = fmul float %85, 0x4160000000000000 %.071 = select i1 %86, float %87, float %85 %i.i82.i.0 = select i1 %86, float -2.300000e+01, float 0.000000e+00 %88 = bitcast float %.071 to i32 %89 = add i32 %88, -1059760811 %90 = and i32 %89, -8388608 %91 = sub i32 %88, %90 %92 = bitcast i32 %91 to float %93 = sitofp i32 %90 to float %94 = tail call float @llvm.nvvm.fma.rn.f(float %93, float 0x3E80000000000000, float %i.i82.i.0) #145 %95 = fadd float %92, -1.000000e+00 %96 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFC0AA04E0000000, float %95, float 0x3FC2073EC0000000) #145 %97 = tail call float @llvm.nvvm.fma.rn.f(float %96, float %95, float 0xBFBF19B980000000) #145 %98 = tail call float @llvm.nvvm.fma.rn.f(float %97, float %95, float 0x3FC1E52AA0000000) #145 %99 = tail call float @llvm.nvvm.fma.rn.f(float %98, float %95, float 0xBFC55B1720000000) #145 %100 = tail call float @llvm.nvvm.fma.rn.f(float %99, float %95, float 0x3FC99DA160000000) #145 %101 = tail call float @llvm.nvvm.fma.rn.f(float %100, float %95, float 0xBFCFFFE440000000) #145 %102 = tail call float @llvm.nvvm.fma.rn.f(float %101, float %95, float 0x3FD5554F00000000) #145 %103 = tail call float @llvm.nvvm.fma.rn.f(float %102, float %95, float -5.000000e-01) #145 %104 = fmul float %95, %103 %105 = tail call float @llvm.nvvm.fma.rn.f(float %104, float %95, float %95) #145 %106 = tail call float @llvm.nvvm.fma.rn.f(float %94, float 0x3FE62E4300000000, float %105) #145 %107 = icmp ugt i32 %88, 2139095039 %108 = tail call float @llvm.nvvm.fma.rn.f(float %.071, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i81.i.0 = select i1 %107, float %108, float %106 %109 = fcmp oeq float %.071, 0.000000e+00 %r.i81.i.1 = select i1 %109, float 0xFFF0000000000000, float %r.i81.i.0 %110 = fneg float %r.i81.i.1 br label %__internal_lgammaf_pos.exit __internal_lgammaf_pos.exit: ; preds = %__internal_fmad.exit22.i, %__internal_fmad.exit60.i, %__internal_fmad.exit40.i, %__internal_fmad.exit.i, %__internal_fmad.exit5.i %t.i.4 = phi float [ %t.i.0, %__internal_fmad.exit.i ], [ %50, %__internal_fmad.exit5.i ], [ %63, %__internal_fmad.exit22.i ], [ %77, %__internal_fmad.exit40.i ], [ %110, %__internal_fmad.exit60.i ] %111 = fcmp ult float %a, 0.000000e+00 br i1 %111, label %__nv_fabsf.exit1, label %189 __nv_fabsf.exit1: ; preds = %__internal_lgammaf_pos.exit %112 = tail call float @llvm.nvvm.floor.f(float %0) #145 %113 = fcmp oeq float %0, %112 br i1 %113, label %189, label %114 114: ; preds = %__nv_fabsf.exit1 %115 = fcmp olt float %0, 0x3BFD83C940000000 br i1 %115, label %__nv_fmaf_rn.exit10.i, label %__internal_fmad.exit __nv_fmaf_rn.exit10.i: ; preds = %114 %116 = fcmp olt float %0, 0x3810000000000000 %117 = fmul float %0, 0x4160000000000000 %.089 = select i1 %116, float %117, float %0 %i.i.0 = select i1 %116, float -2.300000e+01, float 0.000000e+00 %118 = bitcast float %.089 to i32 %119 = add i32 %118, -1059760811 %120 = and i32 %119, -8388608 %121 = sub i32 %118, %120 %122 = bitcast i32 %121 to float %123 = sitofp i32 %120 to float %124 = tail call float @llvm.nvvm.fma.rn.f(float %123, float 0x3E80000000000000, float %i.i.0) #145 %125 = fadd float %122, -1.000000e+00 %126 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFC0AA04E0000000, float %125, float 0x3FC2073EC0000000) #145 %127 = tail call float @llvm.nvvm.fma.rn.f(float %126, float %125, float 0xBFBF19B980000000) #145 %128 = tail call float @llvm.nvvm.fma.rn.f(float %127, float %125, float 0x3FC1E52AA0000000) #145 %129 = tail call float @llvm.nvvm.fma.rn.f(float %128, float %125, float 0xBFC55B1720000000) #145 %130 = tail call float @llvm.nvvm.fma.rn.f(float %129, float %125, float 0x3FC99DA160000000) #145 %131 = tail call float @llvm.nvvm.fma.rn.f(float %130, float %125, float 0xBFCFFFE440000000) #145 %132 = tail call float @llvm.nvvm.fma.rn.f(float %131, float %125, float 0x3FD5554F00000000) #145 %133 = tail call float @llvm.nvvm.fma.rn.f(float %132, float %125, float -5.000000e-01) #145 %134 = fmul float %125, %133 %135 = tail call float @llvm.nvvm.fma.rn.f(float %134, float %125, float %125) #145 %136 = tail call float @llvm.nvvm.fma.rn.f(float %124, float 0x3FE62E4300000000, float %135) #145 %137 = icmp ugt i32 %118, 2139095039 %138 = tail call float @llvm.nvvm.fma.rn.f(float %.089, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i.0 = select i1 %137, float %138, float %136 %139 = fcmp oeq float %.089, 0.000000e+00 %r.i.1 = select i1 %139, float 0xFFF0000000000000, float %r.i.0 %140 = fneg float %r.i.1 br label %189 __internal_fmad.exit: ; preds = %114 %141 = fmul float %0, 2.000000e+00 %142 = tail call float @llvm.nvvm.round.f(float %141) #145 %143 = fptosi float %142 to i32 %144 = fneg float %142 %145 = tail call float @llvm.nvvm.fma.rn.f(float %144, float 5.000000e-01, float %0) #145 %146 = fmul float %145, 0x400921FB60000000 %147 = tail call float @llvm.nvvm.mul.rn.f(float %146, float %146) #145 %148 = and i32 %143, 1 %.not = icmp eq i32 %148, 0 %149 = select i1 %.not, float %146, float 1.000000e+00 %150 = tail call float @llvm.nvvm.fma.rn.f(float %147, float %149, float 0.000000e+00) #145 %151 = tail call float @llvm.nvvm.fma.rn.f(float 0x3EF9758000000000, float %147, float 0xBF56C0FDA0000000) #145 %152 = select i1 %.not, float 0xBF29A82A60000000, float %151 %153 = select i1 %.not, float 0x3F8110BC80000000, float 0x3FA5555760000000 %154 = tail call float @llvm.nvvm.fma.rn.f(float %152, float %147, float %153) #145 %155 = select i1 %.not, float 0xBFC5555500000000, float 0xBFDFFFFFE0000000 %156 = tail call float @llvm.nvvm.fma.rn.f(float %154, float %147, float %155) #145 %157 = tail call float @llvm.nvvm.fma.rn.f(float %156, float %150, float %149) #145 %158 = and i32 %143, 2 %.not1 = icmp eq i32 %158, 0 %159 = tail call float @llvm.nvvm.fma.rn.f(float %157, float -1.000000e+00, float 0.000000e+00) #145 %z.i.0 = select i1 %.not1, float %157, float %159 %160 = tail call float @llvm.nvvm.fabs.f(float %z.i.0) #145 %161 = fmul float %0, %160 %162 = fcmp olt float %161, 0x3810000000000000 %163 = fmul float %161, 0x4160000000000000 %i.i21.0 = select i1 %162, float -2.300000e+01, float 0.000000e+00 %.060 = select i1 %162, float %163, float %161 %164 = bitcast float %.060 to i32 %165 = add i32 %164, -1059760811 %166 = and i32 %165, -8388608 %167 = sub i32 %164, %166 %168 = bitcast i32 %167 to float %169 = sitofp i32 %166 to float %170 = tail call float @llvm.nvvm.fma.rn.f(float %169, float 0x3E80000000000000, float %i.i21.0) #145 %171 = fadd float %168, -1.000000e+00 %172 = tail call float @llvm.nvvm.fma.rn.f(float 0xBFC0AA04E0000000, float %171, float 0x3FC2073EC0000000) #145 %173 = tail call float @llvm.nvvm.fma.rn.f(float %172, float %171, float 0xBFBF19B980000000) #145 %174 = tail call float @llvm.nvvm.fma.rn.f(float %173, float %171, float 0x3FC1E52AA0000000) #145 %175 = tail call float @llvm.nvvm.fma.rn.f(float %174, float %171, float 0xBFC55B1720000000) #145 %176 = tail call float @llvm.nvvm.fma.rn.f(float %175, float %171, float 0x3FC99DA160000000) #145 %177 = tail call float @llvm.nvvm.fma.rn.f(float %176, float %171, float 0xBFCFFFE440000000) #145 %178 = tail call float @llvm.nvvm.fma.rn.f(float %177, float %171, float 0x3FD5554F00000000) #145 %179 = tail call float @llvm.nvvm.fma.rn.f(float %178, float %171, float -5.000000e-01) #145 %180 = fmul float %171, %179 %181 = tail call float @llvm.nvvm.fma.rn.f(float %180, float %171, float %171) #145 %182 = tail call float @llvm.nvvm.fma.rn.f(float %170, float 0x3FE62E4300000000, float %181) #145 %183 = icmp ugt i32 %164, 2139095039 %184 = tail call float @llvm.nvvm.fma.rn.f(float %.060, float 0x7FF0000000000000, float 0x7FF0000000000000) #145 %r.i20.0 = select i1 %183, float %184, float %182 %185 = fcmp oeq float %.060, 0.000000e+00 %r.i20.0.op = fsub float 0x3FF250D040000000, %r.i20.0 %186 = select i1 %185, float 0x7FF0000000000000, float %r.i20.0.op %187 = fneg float %t.i.4 %188 = tail call float @llvm.nvvm.fma.rn.f(float %186, float 1.000000e+00, float %187) #145 br label %189 189: ; preds = %__nv_fabsf.exit1, %__internal_lgammaf_pos.exit, %__internal_fmad.exit, %__nv_fmaf_rn.exit10.i %.01 = phi float [ %140, %__nv_fmaf_rn.exit10.i ], [ %188, %__internal_fmad.exit ], [ %t.i.4, %__internal_lgammaf_pos.exit ], [ 0x7FF0000000000000, %__nv_fabsf.exit1 ] ret float %.01 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_ldexpf(float %a, i32 "enzyme_inactive" %b) unnamed_addr #68 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp oeq float %0, 0.000000e+00 %2 = fcmp oeq float %0, 0x7FF0000000000000 %or.cond = or i1 %1, %2 %3 = icmp eq i32 %b, 0 %or.cond1 = select i1 %or.cond, i1 true, i1 %3 br i1 %or.cond1, label %4, label %7 4: ; preds = %__nv_fabsf.exit %5 = fcmp ogt float %0, 0.000000e+00 %6 = select i1 %5, float -0.000000e+00, float %a %.0 = fadd float %6, %a br label %36 7: ; preds = %__nv_fabsf.exit %8 = tail call i32 @llvm.abs.i32(i32 %b, i1 false) %9 = icmp slt i32 %8, 126 br i1 %9, label %10, label %14 10: ; preds = %7 %11 = sitofp i32 %b to float %12 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %11) #145 %13 = fmul float %12, %a br label %36 14: ; preds = %7 %15 = icmp ult i32 %8, 252 br i1 %15, label %16, label %25 16: ; preds = %14 %17 = sdiv i32 %b, 2 %18 = sub nsw i32 %b, %17 %19 = sitofp i32 %17 to float %20 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %19) #145 %21 = fmul float %20, %a %22 = sitofp i32 %18 to float %23 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %22) #145 %24 = fmul float %21, %23 br label %36 25: ; preds = %14 %26 = sdiv i32 %b, 4 %27 = sitofp i32 %26 to float %28 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %27) #145 %.neg = mul nsw i32 %26, -3 %29 = add i32 %.neg, %b %30 = fmul float %28, %a %31 = fmul float %28, %30 %32 = fmul float %28, %31 %33 = sitofp i32 %29 to float %34 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %33) #145 %35 = fmul float %34, %32 br label %36 36: ; preds = %10, %25, %16, %4 %.3 = phi float [ %.0, %4 ], [ %13, %10 ], [ %24, %16 ], [ %35, %25 ] ret float %.3 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_scalbnf(float %a, i32 "enzyme_inactive" %b) unnamed_addr #69 { __nv_fabsf.exit.i: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp oeq float %0, 0.000000e+00 %2 = fcmp oeq float %0, 0x7FF0000000000000 %or.cond = or i1 %1, %2 %3 = icmp eq i32 %b, 0 %or.cond1 = select i1 %or.cond, i1 true, i1 %3 br i1 %or.cond1, label %4, label %7 4: ; preds = %__nv_fabsf.exit.i %5 = fcmp ogt float %0, 0.000000e+00 %6 = select i1 %5, float -0.000000e+00, float %a %.0 = fadd float %6, %a br label %__nv_ldexpf.exit 7: ; preds = %__nv_fabsf.exit.i %8 = tail call i32 @llvm.abs.i32(i32 %b, i1 false) %9 = icmp slt i32 %8, 126 br i1 %9, label %10, label %14 10: ; preds = %7 %11 = sitofp i32 %b to float %12 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %11) #145 %13 = fmul float %12, %a br label %__nv_ldexpf.exit 14: ; preds = %7 %15 = icmp ult i32 %8, 252 br i1 %15, label %16, label %25 16: ; preds = %14 %17 = sdiv i32 %b, 2 %18 = sub nsw i32 %b, %17 %19 = sitofp i32 %17 to float %20 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %19) #145 %21 = fmul float %20, %a %22 = sitofp i32 %18 to float %23 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %22) #145 %24 = fmul float %21, %23 br label %__nv_ldexpf.exit 25: ; preds = %14 %26 = sdiv i32 %b, 4 %27 = sitofp i32 %26 to float %28 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %27) #145 %.neg = mul nsw i32 %26, -3 %29 = add i32 %.neg, %b %30 = fmul float %28, %a %31 = fmul float %28, %30 %32 = fmul float %28, %31 %33 = sitofp i32 %29 to float %34 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %33) #145 %35 = fmul float %34, %32 br label %__nv_ldexpf.exit __nv_ldexpf.exit: ; preds = %10, %25, %16, %4 %.3 = phi float [ %.0, %4 ], [ %13, %10 ], [ %24, %16 ], [ %35, %25 ] ret float %.3 } ; Function Attrs: alwaysinline argmemonly mustprogress nofree nosync nounwind willreturn writeonly define internal fastcc float @__nv_frexpf(float %a, ptr nocapture writeonly "enzyme_inactive" %b) unnamed_addr #70 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp olt float %0, 0x3810000000000000 %2 = fmul float %a, 0x4170000000000000 %.0 = select i1 %1, float %2, float %a %3 = bitcast float %.0 to i32 %4 = lshr i32 %3, 23 %5 = and i32 %4, 255 %6 = fcmp oeq float %0, 0.000000e+00 %7 = icmp eq i32 %5, 255 %or.cond = select i1 %6, i1 true, i1 %7 br i1 %or.cond, label %8, label %10 8: ; preds = %__nv_fabsf.exit %9 = fadd float %.0, %.0 br label %16 10: ; preds = %__nv_fabsf.exit %11 = select i1 %1, i32 -150, i32 -126 %12 = add nsw i32 %11, %5 %13 = and i32 %3, -2139095041 %14 = or i32 %13, 1056964608 %15 = bitcast i32 %14 to float br label %16 16: ; preds = %10, %8 %.1 = phi float [ %9, %8 ], [ %15, %10 ] %expo.0 = phi i32 [ 0, %8 ], [ %12, %10 ] store i32 %expo.0, ptr %b, align 4 ret float %.1 } ; Function Attrs: alwaysinline argmemonly mustprogress nofree nosync nounwind willreturn writeonly define internal fastcc float @__nv_modff(float %a, ptr nocapture writeonly "enzyme_inactive" %b) unnamed_addr #71 { __nv_finitef.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = fcmp olt float %0, 0x7FF0000000000000 br i1 %1, label %2, label %__nv_isinff.exit 2: ; preds = %__nv_finitef.exit %3 = tail call float @llvm.nvvm.trunc.f(float %a) #145 store float %3, ptr %b, align 4 %4 = fsub float %a, %3 %5 = bitcast float %4 to i32 %6 = bitcast float %a to i32 %7 = and i32 %6, -2147483648 %8 = or i32 %7, %5 %9 = bitcast i32 %8 to float br label %17 __nv_isinff.exit: ; preds = %__nv_finitef.exit %10 = fcmp oeq float %0, 0x7FF0000000000000 br i1 %10, label %11, label %15 11: ; preds = %__nv_isinff.exit store float %a, ptr %b, align 4 %12 = bitcast float %a to i32 %13 = and i32 %12, -2147483648 %14 = bitcast i32 %13 to float br label %17 15: ; preds = %__nv_isinff.exit %16 = fadd float %a, %a store float %16, ptr %b, align 4 br label %17 17: ; preds = %11, %15, %2 %t.1 = phi float [ %9, %2 ], [ %14, %11 ], [ %16, %15 ] ret float %t.1 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_fmodf(float %x, float %y) unnamed_addr #72 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %y) #145 %1 = tail call float @llvm.nvvm.fabs.f(float %x) #145 %2 = fcmp olt float %1, %0 br i1 %2, label %__internal_fmodf_kernel.exit, label %3 3: ; preds = %__nv_fabsf.exit %4 = fmul float %0, 0x4160000000000000 %5 = fcmp ugt float %1, %4 br i1 %5, label %27, label %__nv_fast_fdividef.exit.i.i __nv_fast_fdividef.exit.i.i: ; preds = %3 %6 = tail call float @llvm.nvvm.div.approx.f(float %1, float %0) #145 %7 = tail call float @llvm.nvvm.trunc.f(float %6) #145 %8 = fneg float %0 %9 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %7, float %1) #145 %10 = bitcast float %9 to i32 %11 = bitcast float %0 to i32 %.not = icmp ult i32 %10, %11 br i1 %.not, label %__internal_fmodf_fastpath_quot.exit.i, label %12 12: ; preds = %__nv_fast_fdividef.exit.i.i %13 = icmp ugt i32 %10, -2147483648 br i1 %13, label %14, label %18 14: ; preds = %12 %15 = fadd float %7, -1.000000e+00 %16 = fcmp olt float %9, %8 %17 = fadd float %15, -1.000000e+00 %quotient.i.i.0 = select i1 %16, float %17, float %15 br label %__internal_fmodf_fastpath_quot.exit.i 18: ; preds = %12 %19 = fadd float %7, 1.000000e+00 %20 = fmul float %0, 2.000000e+00 %21 = fcmp ult float %9, %20 br i1 %21, label %__internal_fmodf_fastpath_quot.exit.i, label %__nv_fmaf_rn.exit.i.i __nv_fmaf_rn.exit.i.i: ; preds = %18 %22 = fadd float %19, 1.000000e+00 %23 = tail call float @llvm.nvvm.fma.rn.f(float -3.000000e+00, float %0, float %9) #145 %24 = fcmp oge float %23, 0.000000e+00 %25 = fadd float %22, 1.000000e+00 %quotient.i.i.1 = select i1 %24, float %25, float %22 br label %__internal_fmodf_fastpath_quot.exit.i __internal_fmodf_fastpath_quot.exit.i: ; preds = %14, %__nv_fmaf_rn.exit.i.i, %18, %__nv_fast_fdividef.exit.i.i %quotient.i.i.4 = phi float [ %7, %__nv_fast_fdividef.exit.i.i ], [ %quotient.i.i.0, %14 ], [ %quotient.i.i.1, %__nv_fmaf_rn.exit.i.i ], [ %19, %18 ] %26 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %quotient.i.i.4, float %1) #145 br label %__internal_fmodf_kernel.exit 27: ; preds = %3 %28 = bitcast float %1 to i32 %29 = bitcast float %4 to i32 %30 = and i32 %29, -8388608 %31 = and i32 %28, 8388607 %32 = or i32 %31, 1065353216 %33 = and i32 %29, 8388607 %34 = or i32 %33, 1065353216 %35 = bitcast i32 %32 to float %36 = bitcast i32 %34 to float %37 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %36) #146, !srcloc !10 %38 = add i32 %29, -192937984 %39 = and i32 %38, -8388608 %40 = sub i32 %28, %39 %41 = and i32 %40, -8388608 %.not8 = icmp eq i32 %41, 0 br i1 %.not8, label %__internal_fmodf_slowpath_mod.exit.i, label %__nv_fmaf_rn.exit4.i.i.lr.ph __nv_fmaf_rn.exit4.i.i.lr.ph: ; preds = %27 %42 = fneg float %36 br label %__nv_fmaf_rn.exit4.i.i __nv_fmaf_rn.exit4.i.i: ; preds = %__nv_fmaf_rn.exit4.i.i.lr.ph, %__nv_fmaf_rn.exit4.i.i %ux.i.i.07 = phi i32 [ %32, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %54, %__nv_fmaf_rn.exit4.i.i ] %i.i.i.06 = phi i32 [ %41, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %53, %__nv_fmaf_rn.exit4.i.i ] %43 = tail call i32 @llvm.umin.i32(i32 %i.i.i.06, i32 192937984) %44 = add i32 %ux.i.i.07, %43 %45 = bitcast i32 %44 to float %46 = tail call float @llvm.nvvm.fma.rn.f(float %45, float %37, float -0.000000e+00) #145 %47 = tail call float @llvm.nvvm.fma.rn.f(float %42, float %46, float %45) #145 %48 = tail call float @llvm.nvvm.fma.rn.f(float %47, float %37, float %46) #145 %49 = tail call float @llvm.nvvm.fma.rn.f(float %42, float %48, float %45) #145 %50 = tail call float @llvm.nvvm.fma.rz.f(float %49, float %37, float %48) #145 %51 = tail call float @llvm.nvvm.trunc.f(float %50) #145 %52 = tail call float @llvm.nvvm.fma.rn.f(float %42, float %51, float %45) #145 %53 = sub i32 %i.i.i.06, %43 %54 = bitcast float %52 to i32 %55 = icmp ne i32 %53, 0 %56 = icmp ne i32 %54, 0 %spec.select = select i1 %55, i1 %56, i1 false br i1 %spec.select, label %__nv_fmaf_rn.exit4.i.i, label %__internal_fmodf_slowpath_mod.exit.i.loopexit __internal_fmodf_slowpath_mod.exit.i.loopexit: ; preds = %__nv_fmaf_rn.exit4.i.i %.lcssa = phi float [ %52, %__nv_fmaf_rn.exit4.i.i ] br label %__internal_fmodf_slowpath_mod.exit.i __internal_fmodf_slowpath_mod.exit.i: ; preds = %__internal_fmodf_slowpath_mod.exit.i.loopexit, %27 %.06.lcssa = phi float [ %35, %27 ], [ %.lcssa, %__internal_fmodf_slowpath_mod.exit.i.loopexit ] %57 = bitcast i32 %30 to float %58 = fcmp ule float %0, 0.000000e+00 %59 = icmp ugt i32 %28, 2139095039 %or.cond = select i1 %58, i1 true, i1 %59 %60 = select i1 %or.cond, float 0x7FFFFFFFE0000000, float %57 %61 = fmul float %.06.lcssa, 0x3E80000000000000 %62 = fmul float %60, %61 br label %__internal_fmodf_kernel.exit __internal_fmodf_kernel.exit: ; preds = %__nv_fabsf.exit, %__internal_fmodf_slowpath_mod.exit.i, %__internal_fmodf_fastpath_quot.exit.i %ans.i.1 = phi float [ %1, %__nv_fabsf.exit ], [ %26, %__internal_fmodf_fastpath_quot.exit.i ], [ %62, %__internal_fmodf_slowpath_mod.exit.i ] %63 = tail call float @llvm.nvvm.fabs.f(float %ans.i.1) #145 %64 = fcmp ugt float %63, 0x7FF0000000000000 br i1 %64, label %71, label %65 65: ; preds = %__internal_fmodf_kernel.exit %66 = bitcast float %ans.i.1 to i32 %67 = bitcast float %x to i32 %68 = and i32 %67, -2147483648 %69 = or i32 %68, %66 %70 = bitcast i32 %69 to float br label %71 71: ; preds = %__internal_fmodf_kernel.exit, %65 %72 = phi float [ %70, %65 ], [ %ans.i.1, %__internal_fmodf_kernel.exit ] ret float %72 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.nvvm.fma.rz.f(float %0, float %1, float %2) #7 ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_remainderf(float %x, float %y) unnamed_addr #73 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %y) #145 %1 = tail call float @llvm.nvvm.fabs.f(float %x) #145 %2 = fcmp olt float %1, %0 br i1 %2, label %__internal_fmodf_kernel.exit, label %3 3: ; preds = %__nv_fabsf.exit %4 = fmul float %0, 0x4160000000000000 %5 = fcmp ugt float %1, %4 br i1 %5, label %28, label %__nv_fast_fdividef.exit.i.i __nv_fast_fdividef.exit.i.i: ; preds = %3 %6 = tail call float @llvm.nvvm.div.approx.f(float %1, float %0) #145 %7 = tail call float @llvm.nvvm.trunc.f(float %6) #145 %8 = fneg float %0 %9 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %7, float %1) #145 %10 = bitcast float %9 to i32 %11 = bitcast float %0 to i32 %.not11 = icmp ult i32 %10, %11 br i1 %.not11, label %__internal_fmodf_fastpath_quot.exit.i, label %12 12: ; preds = %__nv_fast_fdividef.exit.i.i %13 = icmp ugt i32 %10, -2147483648 br i1 %13, label %14, label %18 14: ; preds = %12 %15 = fadd float %7, -1.000000e+00 %16 = fcmp olt float %9, %8 %17 = fadd float %15, -1.000000e+00 %quotient.i.i.0 = select i1 %16, float %17, float %15 br label %__internal_fmodf_fastpath_quot.exit.i 18: ; preds = %12 %19 = fadd float %7, 1.000000e+00 %20 = fmul float %0, 2.000000e+00 %21 = fcmp ult float %9, %20 br i1 %21, label %__internal_fmodf_fastpath_quot.exit.i, label %__nv_fmaf_rn.exit.i.i __nv_fmaf_rn.exit.i.i: ; preds = %18 %22 = fadd float %19, 1.000000e+00 %23 = tail call float @llvm.nvvm.fma.rn.f(float -3.000000e+00, float %0, float %9) #145 %24 = fcmp oge float %23, 0.000000e+00 %25 = fadd float %22, 1.000000e+00 %quotient.i.i.1 = select i1 %24, float %25, float %22 br label %__internal_fmodf_fastpath_quot.exit.i __internal_fmodf_fastpath_quot.exit.i: ; preds = %14, %__nv_fmaf_rn.exit.i.i, %18, %__nv_fast_fdividef.exit.i.i %quotient.i.i.4 = phi float [ %7, %__nv_fast_fdividef.exit.i.i ], [ %quotient.i.i.0, %14 ], [ %quotient.i.i.1, %__nv_fmaf_rn.exit.i.i ], [ %19, %18 ] %26 = fptoui float %quotient.i.i.4 to i32 %27 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %quotient.i.i.4, float %1) #145 br label %__internal_fmodf_kernel.exit 28: ; preds = %3 %29 = bitcast float %1 to i32 %30 = bitcast float %4 to i32 %31 = and i32 %30, -8388608 %32 = and i32 %29, 8388607 %33 = or i32 %32, 1065353216 %34 = and i32 %30, 8388607 %35 = or i32 %34, 1065353216 %36 = bitcast i32 %33 to float %37 = bitcast i32 %35 to float %38 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %37) #146, !srcloc !10 %39 = add i32 %30, -192937984 %40 = and i32 %39, -8388608 %41 = sub i32 %29, %40 %42 = and i32 %41, -8388608 %.not19 = icmp eq i32 %42, 0 br i1 %.not19, label %__internal_fmodf_slowpath_mod.exit.i.thread, label %__nv_fmaf_rn.exit4.i.i.lr.ph __nv_fmaf_rn.exit4.i.i.lr.ph: ; preds = %28 %43 = fneg float %37 br label %__nv_fmaf_rn.exit4.i.i __nv_fmaf_rn.exit4.i.i: ; preds = %__nv_fmaf_rn.exit4.i.i.lr.ph, %__nv_fmaf_rn.exit4.i.i %ux.i.i.016 = phi i32 [ %33, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %55, %__nv_fmaf_rn.exit4.i.i ] %i.i.i.015 = phi i32 [ %42, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %.fr, %__nv_fmaf_rn.exit4.i.i ] %quotient.i8.i.014 = phi i32 [ 0, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %59, %__nv_fmaf_rn.exit4.i.i ] %44 = tail call i32 @llvm.umin.i32(i32 %i.i.i.015, i32 192937984) %45 = add i32 %ux.i.i.016, %44 %46 = bitcast i32 %45 to float %47 = tail call float @llvm.nvvm.fma.rn.f(float %46, float %38, float -0.000000e+00) #145 %48 = tail call float @llvm.nvvm.fma.rn.f(float %43, float %47, float %46) #145 %49 = tail call float @llvm.nvvm.fma.rn.f(float %48, float %38, float %47) #145 %50 = tail call float @llvm.nvvm.fma.rn.f(float %43, float %49, float %46) #145 %51 = tail call float @llvm.nvvm.fma.rz.f(float %50, float %38, float %49) #145 %52 = tail call float @llvm.nvvm.trunc.f(float %51) #145 %53 = tail call float @llvm.nvvm.fma.rn.f(float %43, float %52, float %46) #145 %54 = sub i32 %i.i.i.015, %44 %.fr = freeze i32 %54 %55 = bitcast float %53 to i32 %56 = lshr i32 %44, 23 %57 = shl i32 %quotient.i8.i.014, %56 %58 = fptoui float %52 to i32 %59 = add i32 %57, %58 %60 = icmp ne i32 %.fr, 0 %61 = icmp ne i32 %55, 0 %spec.select = select i1 %60, i1 %61, i1 false br i1 %spec.select, label %__nv_fmaf_rn.exit4.i.i, label %__internal_fmodf_slowpath_mod.exit.i __internal_fmodf_slowpath_mod.exit.i: ; preds = %__nv_fmaf_rn.exit4.i.i %.lcssa33 = phi float [ %53, %__nv_fmaf_rn.exit4.i.i ] %.fr.lcssa = phi i32 [ %.fr, %__nv_fmaf_rn.exit4.i.i ] %.lcssa = phi i32 [ %59, %__nv_fmaf_rn.exit4.i.i ] %62 = lshr i32 %.fr.lcssa, 23 %min.cond = icmp ult i32 %.fr.lcssa, 33554432 br i1 %min.cond, label %__internal_fmodf_slowpath_mod.exit.i.thread, label %64 __internal_fmodf_slowpath_mod.exit.i.thread: ; preds = %28, %__internal_fmodf_slowpath_mod.exit.i %63 = phi i32 [ %62, %__internal_fmodf_slowpath_mod.exit.i ], [ 0, %28 ] %quotient.i8.i.0.lcssa30 = phi i32 [ %.lcssa, %__internal_fmodf_slowpath_mod.exit.i ], [ 0, %28 ] %.09.lcssa28 = phi float [ %.lcssa33, %__internal_fmodf_slowpath_mod.exit.i ], [ %36, %28 ] br label %64 64: ; preds = %__internal_fmodf_slowpath_mod.exit.i, %__internal_fmodf_slowpath_mod.exit.i.thread %quotient.i8.i.0.lcssa29 = phi i32 [ %quotient.i8.i.0.lcssa30, %__internal_fmodf_slowpath_mod.exit.i.thread ], [ %.lcssa, %__internal_fmodf_slowpath_mod.exit.i ] %.09.lcssa27 = phi float [ %.09.lcssa28, %__internal_fmodf_slowpath_mod.exit.i.thread ], [ %.lcssa33, %__internal_fmodf_slowpath_mod.exit.i ] %65 = phi i32 [ %63, %__internal_fmodf_slowpath_mod.exit.i.thread ], [ 3, %__internal_fmodf_slowpath_mod.exit.i ] %66 = shl i32 %quotient.i8.i.0.lcssa29, %65 %67 = bitcast i32 %31 to float %68 = fcmp ule float %0, 0.000000e+00 %69 = icmp ugt i32 %29, 2139095039 %or.cond = select i1 %68, i1 true, i1 %69 %70 = select i1 %or.cond, float 0x7FFFFFFFE0000000, float %67 %71 = fmul float %.09.lcssa27, 0x3E80000000000000 %72 = fmul float %70, %71 br label %__internal_fmodf_kernel.exit __internal_fmodf_kernel.exit: ; preds = %__nv_fabsf.exit, %64, %__internal_fmodf_fastpath_quot.exit.i %ignore_quot.1 = phi i32 [ 0, %__nv_fabsf.exit ], [ %26, %__internal_fmodf_fastpath_quot.exit.i ], [ %66, %64 ] %ans.i.1 = phi float [ %1, %__nv_fabsf.exit ], [ %27, %__internal_fmodf_fastpath_quot.exit.i ], [ %72, %64 ] %73 = fmul float %ans.i.1, 2.000000e+00 %74 = fcmp ogt float %73, %0 br i1 %74, label %79, label %75 75: ; preds = %__internal_fmodf_kernel.exit %76 = fcmp oeq float %73, %0 %77 = and i32 %ignore_quot.1, 1 %78 = icmp ne i32 %77, 0 %or.cond2 = select i1 %76, i1 %78, i1 false br i1 %or.cond2, label %79, label %__internal_remainderf_round_to_nearest_even.exit 79: ; preds = %75, %__internal_fmodf_kernel.exit %80 = fsub float %ans.i.1, %0 br label %__internal_remainderf_round_to_nearest_even.exit __internal_remainderf_round_to_nearest_even.exit: ; preds = %75, %79 %.1 = phi float [ %80, %79 ], [ %ans.i.1, %75 ] %81 = bitcast float %x to i32 %.not = icmp sgt i32 %81, -1 %82 = tail call float @llvm.nvvm.fabs.f(float %.1) #145 %83 = fcmp ugt float %82, 0x7FF0000000000000 %or.cond13 = select i1 %.not, i1 true, i1 %83 %84 = fneg float %.1 %ans.0 = select i1 %or.cond13, float %.1, float %84 ret float %ans.0 } ; Function Attrs: alwaysinline argmemonly nounwind writeonly define internal fastcc float @__nv_remquof(float %x, float %y, ptr nocapture writeonly %quo) unnamed_addr #74 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %y) #145 %1 = tail call float @llvm.nvvm.fabs.f(float %x) #145 %2 = fcmp olt float %1, %0 br i1 %2, label %__internal_fmodf_kernel.exit, label %3 3: ; preds = %__nv_fabsf.exit %4 = fmul float %0, 0x4160000000000000 %5 = fcmp ugt float %1, %4 br i1 %5, label %28, label %__nv_fast_fdividef.exit.i.i __nv_fast_fdividef.exit.i.i: ; preds = %3 %6 = tail call float @llvm.nvvm.div.approx.f(float %1, float %0) #145 %7 = tail call float @llvm.nvvm.trunc.f(float %6) #145 %8 = fneg float %0 %9 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %7, float %1) #145 %10 = bitcast float %9 to i32 %11 = bitcast float %0 to i32 %.not10 = icmp ult i32 %10, %11 br i1 %.not10, label %__internal_fmodf_fastpath_quot.exit.i, label %12 12: ; preds = %__nv_fast_fdividef.exit.i.i %13 = icmp ugt i32 %10, -2147483648 br i1 %13, label %14, label %18 14: ; preds = %12 %15 = fadd float %7, -1.000000e+00 %16 = fcmp olt float %9, %8 %17 = fadd float %15, -1.000000e+00 %quotient.i.i.0 = select i1 %16, float %17, float %15 br label %__internal_fmodf_fastpath_quot.exit.i 18: ; preds = %12 %19 = fadd float %7, 1.000000e+00 %20 = fmul float %0, 2.000000e+00 %21 = fcmp ult float %9, %20 br i1 %21, label %__internal_fmodf_fastpath_quot.exit.i, label %__nv_fmaf_rn.exit.i.i __nv_fmaf_rn.exit.i.i: ; preds = %18 %22 = fadd float %19, 1.000000e+00 %23 = tail call float @llvm.nvvm.fma.rn.f(float -3.000000e+00, float %0, float %9) #145 %24 = fcmp oge float %23, 0.000000e+00 %25 = fadd float %22, 1.000000e+00 %quotient.i.i.1 = select i1 %24, float %25, float %22 br label %__internal_fmodf_fastpath_quot.exit.i __internal_fmodf_fastpath_quot.exit.i: ; preds = %14, %__nv_fmaf_rn.exit.i.i, %18, %__nv_fast_fdividef.exit.i.i %quotient.i.i.4 = phi float [ %7, %__nv_fast_fdividef.exit.i.i ], [ %quotient.i.i.0, %14 ], [ %quotient.i.i.1, %__nv_fmaf_rn.exit.i.i ], [ %19, %18 ] %26 = fptoui float %quotient.i.i.4 to i32 %27 = tail call float @llvm.nvvm.fma.rn.f(float %8, float %quotient.i.i.4, float %1) #145 br label %__internal_fmodf_kernel.exit 28: ; preds = %3 %29 = bitcast float %1 to i32 %30 = bitcast float %4 to i32 %31 = and i32 %30, -8388608 %32 = and i32 %29, 8388607 %33 = or i32 %32, 1065353216 %34 = and i32 %30, 8388607 %35 = or i32 %34, 1065353216 %36 = bitcast i32 %33 to float %37 = bitcast i32 %35 to float %38 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %37) #146, !srcloc !10 %39 = add i32 %30, -192937984 %40 = and i32 %39, -8388608 %41 = sub i32 %29, %40 %42 = and i32 %41, -8388608 %.not18 = icmp eq i32 %42, 0 br i1 %.not18, label %__internal_fmodf_slowpath_mod.exit.i.thread, label %__nv_fmaf_rn.exit4.i.i.lr.ph __nv_fmaf_rn.exit4.i.i.lr.ph: ; preds = %28 %43 = fneg float %37 br label %__nv_fmaf_rn.exit4.i.i __nv_fmaf_rn.exit4.i.i: ; preds = %__nv_fmaf_rn.exit4.i.i.lr.ph, %__nv_fmaf_rn.exit4.i.i %ux.i.i.015 = phi i32 [ %33, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %55, %__nv_fmaf_rn.exit4.i.i ] %i.i.i.014 = phi i32 [ %42, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %.fr, %__nv_fmaf_rn.exit4.i.i ] %quotient.i8.i.013 = phi i32 [ 0, %__nv_fmaf_rn.exit4.i.i.lr.ph ], [ %59, %__nv_fmaf_rn.exit4.i.i ] %44 = tail call i32 @llvm.umin.i32(i32 %i.i.i.014, i32 192937984) %45 = add i32 %ux.i.i.015, %44 %46 = bitcast i32 %45 to float %47 = tail call float @llvm.nvvm.fma.rn.f(float %46, float %38, float -0.000000e+00) #145 %48 = tail call float @llvm.nvvm.fma.rn.f(float %43, float %47, float %46) #145 %49 = tail call float @llvm.nvvm.fma.rn.f(float %48, float %38, float %47) #145 %50 = tail call float @llvm.nvvm.fma.rn.f(float %43, float %49, float %46) #145 %51 = tail call float @llvm.nvvm.fma.rz.f(float %50, float %38, float %49) #145 %52 = tail call float @llvm.nvvm.trunc.f(float %51) #145 %53 = tail call float @llvm.nvvm.fma.rn.f(float %43, float %52, float %46) #145 %54 = sub i32 %i.i.i.014, %44 %.fr = freeze i32 %54 %55 = bitcast float %53 to i32 %56 = lshr i32 %44, 23 %57 = shl i32 %quotient.i8.i.013, %56 %58 = fptoui float %52 to i32 %59 = add i32 %57, %58 %60 = icmp ne i32 %.fr, 0 %61 = icmp ne i32 %55, 0 %spec.select = select i1 %60, i1 %61, i1 false br i1 %spec.select, label %__nv_fmaf_rn.exit4.i.i, label %__internal_fmodf_slowpath_mod.exit.i __internal_fmodf_slowpath_mod.exit.i: ; preds = %__nv_fmaf_rn.exit4.i.i %.lcssa32 = phi float [ %53, %__nv_fmaf_rn.exit4.i.i ] %.fr.lcssa = phi i32 [ %.fr, %__nv_fmaf_rn.exit4.i.i ] %.lcssa = phi i32 [ %59, %__nv_fmaf_rn.exit4.i.i ] %62 = lshr i32 %.fr.lcssa, 23 %min.cond = icmp ult i32 %.fr.lcssa, 33554432 br i1 %min.cond, label %__internal_fmodf_slowpath_mod.exit.i.thread, label %64 __internal_fmodf_slowpath_mod.exit.i.thread: ; preds = %28, %__internal_fmodf_slowpath_mod.exit.i %63 = phi i32 [ %62, %__internal_fmodf_slowpath_mod.exit.i ], [ 0, %28 ] %quotient.i8.i.0.lcssa29 = phi i32 [ %.lcssa, %__internal_fmodf_slowpath_mod.exit.i ], [ 0, %28 ] %.013.lcssa27 = phi float [ %.lcssa32, %__internal_fmodf_slowpath_mod.exit.i ], [ %36, %28 ] br label %64 64: ; preds = %__internal_fmodf_slowpath_mod.exit.i, %__internal_fmodf_slowpath_mod.exit.i.thread %quotient.i8.i.0.lcssa28 = phi i32 [ %quotient.i8.i.0.lcssa29, %__internal_fmodf_slowpath_mod.exit.i.thread ], [ %.lcssa, %__internal_fmodf_slowpath_mod.exit.i ] %.013.lcssa26 = phi float [ %.013.lcssa27, %__internal_fmodf_slowpath_mod.exit.i.thread ], [ %.lcssa32, %__internal_fmodf_slowpath_mod.exit.i ] %65 = phi i32 [ %63, %__internal_fmodf_slowpath_mod.exit.i.thread ], [ 3, %__internal_fmodf_slowpath_mod.exit.i ] %66 = shl i32 %quotient.i8.i.0.lcssa28, %65 %67 = bitcast i32 %31 to float %68 = fcmp ule float %0, 0.000000e+00 %69 = icmp ugt i32 %29, 2139095039 %or.cond = select i1 %68, i1 true, i1 %69 %70 = select i1 %or.cond, float 0x7FFFFFFFE0000000, float %67 %71 = fmul float %.013.lcssa26, 0x3E80000000000000 %72 = fmul float %70, %71 br label %__internal_fmodf_kernel.exit __internal_fmodf_kernel.exit: ; preds = %__nv_fabsf.exit, %64, %__internal_fmodf_fastpath_quot.exit.i %quot.1 = phi i32 [ 0, %__nv_fabsf.exit ], [ %26, %__internal_fmodf_fastpath_quot.exit.i ], [ %66, %64 ] %ans.i.1 = phi float [ %1, %__nv_fabsf.exit ], [ %27, %__internal_fmodf_fastpath_quot.exit.i ], [ %72, %64 ] %73 = fmul float %ans.i.1, 2.000000e+00 %74 = fcmp ogt float %73, %0 br i1 %74, label %79, label %75 75: ; preds = %__internal_fmodf_kernel.exit %76 = fcmp oeq float %73, %0 %77 = and i32 %quot.1, 1 %78 = icmp ne i32 %77, 0 %or.cond2 = select i1 %76, i1 %78, i1 false br i1 %or.cond2, label %79, label %__internal_remainderf_round_to_nearest_even.exit 79: ; preds = %75, %__internal_fmodf_kernel.exit %80 = add i32 %quot.1, 1 %81 = fsub float %ans.i.1, %0 br label %__internal_remainderf_round_to_nearest_even.exit __internal_remainderf_round_to_nearest_even.exit: ; preds = %75, %79 %quot.2 = phi i32 [ %80, %79 ], [ %quot.1, %75 ] %.1 = phi float [ %81, %79 ], [ %ans.i.1, %75 ] %82 = bitcast float %x to i32 %.not = icmp sgt i32 %82, -1 %83 = tail call float @llvm.nvvm.fabs.f(float %.1) #145 %84 = fcmp ugt float %83, 0x7FF0000000000000 %or.cond12 = select i1 %.not, i1 true, i1 %84 %85 = fneg float %.1 %ans.0 = select i1 %or.cond12, float %.1, float %85 %86 = bitcast float %y to i32 %87 = xor i32 %86, %82 %.lobit = ashr i32 %87, 31 %88 = and i32 %quot.2, 7 %89 = xor i32 %88, %.lobit %90 = sub nsw i32 %89, %.lobit %91 = tail call float @llvm.nvvm.fabs.f(float %ans.0) #145 %92 = fcmp ugt float %91, 0x7FF0000000000000 %93 = select i1 %92, i32 0, i32 %90 store i32 %93, ptr %quo, align 4 ret float %ans.0 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_powif(float %a, i32 %b) unnamed_addr #75 { %1 = tail call i32 @llvm.abs.i32(i32 %b, i1 false) %2 = and i32 %1, 1 %.not1 = icmp eq i32 %2, 0 %3 = tail call float @llvm.nvvm.mul.rn.f(float 1.000000e+00, float %a) #145 %r.12 = select i1 %.not1, float 1.000000e+00, float %3 %4 = icmp ult i32 %1, 2 br i1 %4, label %._crit_edge, label %__nv_fmul_rn.exit.preheader __nv_fmul_rn.exit.preheader: ; preds = %0 br label %__nv_fmul_rn.exit ._crit_edge.loopexit: ; preds = %__nv_fmul_rn.exit %r.1.lcssa8 = phi float [ %r.1, %__nv_fmul_rn.exit ] br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %0 %r.1.lcssa = phi float [ %r.12, %0 ], [ %r.1.lcssa8, %._crit_edge.loopexit ] %5 = icmp slt i32 %b, 0 %6 = fdiv float 1.000000e+00, %r.1.lcssa %7 = select i1 %5, float %6, float %r.1.lcssa ret float %7 __nv_fmul_rn.exit: ; preds = %__nv_fmul_rn.exit.preheader, %__nv_fmul_rn.exit %r.15 = phi float [ %r.1, %__nv_fmul_rn.exit ], [ %r.12, %__nv_fmul_rn.exit.preheader ] %e.04 = phi i32 [ %8, %__nv_fmul_rn.exit ], [ %1, %__nv_fmul_rn.exit.preheader ] %.013 = phi float [ %9, %__nv_fmul_rn.exit ], [ %a, %__nv_fmul_rn.exit.preheader ] %8 = lshr i32 %e.04, 1 %9 = tail call float @llvm.nvvm.mul.rn.f(float %.013, float %.013) #145 %10 = and i32 %e.04, 2 %.not = icmp eq i32 %10, 0 %11 = tail call float @llvm.nvvm.mul.rn.f(float %r.15, float %9) #145 %r.1 = select i1 %.not, float %r.15, float %11 %12 = icmp ult i32 %e.04, 4 br i1 %12, label %._crit_edge.loopexit, label %__nv_fmul_rn.exit } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_powi(double %a, i32 %b) unnamed_addr #76 { %1 = tail call i32 @llvm.abs.i32(i32 %b, i1 false) %2 = and i32 %1, 1 %.not2 = icmp eq i32 %2, 0 %3 = select i1 %.not2, double 1.000000e+00, double %a %4 = icmp ult i32 %1, 2 br i1 %4, label %._crit_edge, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %0 br label %.lr.ph ._crit_edge.loopexit: ; preds = %.lr.ph %spec.select.lcssa8 = phi double [ %spec.select, %.lr.ph ] br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %0 %spec.select.lcssa = phi double [ %3, %0 ], [ %spec.select.lcssa8, %._crit_edge.loopexit ] %5 = icmp slt i32 %b, 0 %6 = fdiv double 1.000000e+00, %spec.select.lcssa %7 = select i1 %5, double %6, double %spec.select.lcssa ret double %7 .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %spec.select5 = phi double [ %spec.select, %.lr.ph ], [ %3, %.lr.ph.preheader ] %e.04 = phi i32 [ %8, %.lr.ph ], [ %1, %.lr.ph.preheader ] %.03 = phi double [ %9, %.lr.ph ], [ %a, %.lr.ph.preheader ] %8 = lshr i32 %e.04, 1 %9 = fmul double %.03, %.03 %10 = and i32 %e.04, 2 %.not = icmp eq i32 %10, 0 %11 = select i1 %.not, double 1.000000e+00, double %9 %spec.select = fmul double %spec.select5, %11 %12 = icmp ult i32 %e.04, 4 br i1 %12, label %._crit_edge.loopexit, label %.lr.ph } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_powf(float %a, float %b) unnamed_addr #77 { __nv_fabsf.exit: %0 = fmul float %b, 5.000000e-01 %1 = tail call float @llvm.nvvm.trunc.f(float %0) #145 %2 = fmul float %1, 2.000000e+00 %3 = fsub float %b, %2 %4 = tail call float @llvm.nvvm.fabs.f(float %3) #145 %5 = fcmp oeq float %4, 1.000000e+00 %6 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %7 = fcmp olt float %6, 0x3810000000000000 %8 = fmul float %6, 0x4170000000000000 %.013 = select i1 %7, float %8, float %6 %expo.i.i.0 = select i1 %7, float -2.400000e+01, float 0.000000e+00 %9 = bitcast float %.013 to i32 %10 = add i32 %9, -1060439283 %11 = and i32 %10, -8388608 %12 = sub i32 %9, %11 %13 = bitcast i32 %12 to float %14 = sitofp i32 %11 to float %15 = tail call float @llvm.nvvm.fma.rn.f(float %14, float 0x3E80000000000000, float %expo.i.i.0) #145 %16 = fadd float %13, -1.000000e+00 %17 = fadd float %13, 1.000000e+00 %18 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %17) #146, !srcloc !10 %19 = fmul float %16, 2.000000e+00 %20 = fmul float %19, %18 %21 = fmul float %20, %20 %22 = fsub float %16, %20 %23 = fmul float %22, 2.000000e+00 %24 = fneg float %20 %25 = tail call float @llvm.nvvm.fma.rn.f(float %24, float %16, float %23) #145 %26 = tail call float @llvm.nvvm.mul.rn.f(float %18, float %25) #145 %27 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F45865C80000000, float %21, float 0x3F6A5CFB60000000) #145 %28 = tail call float @llvm.nvvm.fma.rn.f(float %27, float %21, float 0x3F92776E60000000) #145 %29 = tail call float @llvm.nvvm.fma.rn.f(float %28, float %21, float 0x3FBEC709E0000000) #145 %30 = tail call float @llvm.nvvm.mul.rn.f(float %29, float %21) #145 %31 = tail call float @llvm.nvvm.fma.rn.f(float %20, float 0x3FF7154760000000, float %15) #145 %32 = fsub float %15, %31 %33 = tail call float @llvm.nvvm.fma.rn.f(float %20, float 0x3FF7154760000000, float %32) #145 %34 = tail call float @llvm.nvvm.fma.rn.f(float %26, float 0x3FF7154760000000, float %33) #145 %35 = tail call float @llvm.nvvm.fma.rn.f(float %20, float 0x3E54ABC680000000, float %34) #145 %36 = fmul float %30, 3.000000e+00 %37 = tail call float @llvm.nvvm.fma.rn.f(float %36, float %26, float %35) #145 %38 = tail call float @llvm.nvvm.fma.rn.f(float %30, float %20, float %37) #145 %39 = tail call float @llvm.nvvm.add.rn.f(float %31, float %38) #145 %40 = fneg float %31 %41 = tail call float @llvm.nvvm.add.rn.f(float %39, float %40) #145 %42 = fneg float %41 %43 = tail call float @llvm.nvvm.add.rn.f(float %38, float %42) #145 %44 = tail call float @llvm.nvvm.mul.rn.f(float %39, float %b) #145 %45 = fneg float %44 %46 = tail call float @llvm.nvvm.fma.rn.f(float %39, float %b, float %45) #145 %47 = tail call float @llvm.nvvm.fma.rn.f(float %43, float %b, float %46) #145 %48 = tail call float @llvm.nvvm.round.f(float %44) #145 %49 = fsub float %44, %48 %50 = fadd float %49, %47 %51 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F23F971C0000000, float %50, float 0x3F55F0BDA0000000) #145 %52 = tail call float @llvm.nvvm.fma.rn.f(float %51, float %50, float 0x3F83B30AC0000000) #145 %53 = tail call float @llvm.nvvm.fma.rn.f(float %52, float %50, float 0x3FAC6AF760000000) #145 %54 = tail call float @llvm.nvvm.fma.rn.f(float %53, float %50, float 0x3FCEBFBD80000000) #145 %55 = tail call float @llvm.nvvm.fma.rn.f(float %54, float %50, float 0x3FE62E4300000000) #145 %56 = tail call float @llvm.nvvm.fma.rn.f(float %55, float %50, float 1.000000e+00) #145 %57 = fptosi float %48 to i32 %58 = fcmp ogt float %48, 0.000000e+00 %59 = select i1 %58, i32 0, i32 -2097152000 %60 = add nsw i32 %59, 2130706432 %61 = bitcast i32 %60 to float %62 = fmul float %56, %61 %63 = shl i32 %57, 23 %64 = sub i32 %63, %59 %65 = bitcast i32 %64 to float %66 = fmul float %62, %65 %67 = tail call float @llvm.nvvm.fabs.f(float %44) #145 %68 = fcmp ogt float %67, 1.520000e+02 %69 = fcmp olt float %44, 0.000000e+00 %. = select i1 %69, float 0.000000e+00, float 0x7FF0000000000000 %t.i.0 = select i1 %68, float %., float %66 %70 = fcmp oeq float %a, 1.000000e+00 %71 = fcmp oeq float %b, 0.000000e+00 %or.cond = select i1 %70, i1 true, i1 %71 br i1 %or.cond, label %__internal_powf_special_cases.exit, label %__nv_isnanf.exit.i __nv_isnanf.exit.i: ; preds = %__nv_fabsf.exit %72 = fcmp ugt float %6, 0x7FF0000000000000 br i1 %72, label %__nv_fadd_rn.exit.i, label %__nv_isnanf.exit2.i __nv_isnanf.exit2.i: ; preds = %__nv_isnanf.exit.i %73 = tail call float @llvm.nvvm.fabs.f(float %b) #145 %74 = fcmp ugt float %73, 0x7FF0000000000000 br i1 %74, label %__nv_fadd_rn.exit.i, label %76 __nv_fadd_rn.exit.i: ; preds = %__nv_isnanf.exit.i, %__nv_isnanf.exit2.i %75 = tail call float @llvm.nvvm.add.rn.f(float %a, float %b) #145 br label %__internal_powf_special_cases.exit 76: ; preds = %__nv_isnanf.exit2.i %77 = fcmp oeq float %a, 0.000000e+00 %78 = fcmp oeq float %6, 0x7FF0000000000000 %or.cond1 = select i1 %77, i1 true, i1 %78 br i1 %or.cond1, label %79, label %86 79: ; preds = %76 %80 = fadd float %a, %a %81 = bitcast float %80 to i32 %82 = fcmp olt float %b, 0.000000e+00 %83 = xor i32 %81, 2139095040 %ti.i.0 = select i1 %82, i32 %83, i32 %81 %84 = and i32 %ti.i.0, 2147483647 %ti.i.1 = select i1 %5, i32 %ti.i.0, i32 %84 %85 = bitcast i32 %ti.i.1 to float br label %__internal_powf_special_cases.exit 86: ; preds = %76 %87 = fcmp oeq float %a, -1.000000e+00 %88 = fcmp oeq float %73, 0x7FF0000000000000 %or.cond2 = select i1 %87, i1 %88, i1 false br i1 %or.cond2, label %__internal_powf_special_cases.exit, label %89 89: ; preds = %86 %90 = fcmp olt float %a, 0.000000e+00 br i1 %90, label %__nv_floorf.exit.i, label %__internal_powf_special_cases.exit __nv_floorf.exit.i: ; preds = %89 %91 = fneg float %t.i.0 %.01 = select i1 %5, float %91, float %t.i.0 %92 = tail call float @llvm.nvvm.floor.f(float %b) #145 %93 = fcmp une float %92, %b %.1 = select i1 %93, float 0x7FFFFFFFE0000000, float %.01 br label %__internal_powf_special_cases.exit __internal_powf_special_cases.exit: ; preds = %86, %__nv_fadd_rn.exit.i, %__nv_floorf.exit.i, %89, %79, %__nv_fabsf.exit %.6 = phi float [ 1.000000e+00, %__nv_fabsf.exit ], [ %75, %__nv_fadd_rn.exit.i ], [ %85, %79 ], [ %.1, %__nv_floorf.exit.i ], [ %t.i.0, %89 ], [ 1.000000e+00, %86 ] ret float %.6 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_tgammaf(float %a) unnamed_addr #78 { __nv_fabsf.exit: %0 = fcmp olt float %a, 0.000000e+00 %1 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %2 = fcmp ult float %1, 1.500000e+00 br i1 %2, label %__internal_tgammaf_stirling.exit, label %__nv_fabsf.exit.i __nv_fabsf.exit.i: ; preds = %__nv_fabsf.exit %3 = fcmp ogt float %1, 0x40448CCCC0000000 %x.i.0 = select i1 %3, float 0x40448CCCC0000000, float %a %4 = tail call float @llvm.nvvm.fabs.f(float %x.i.0) #145 %5 = fcmp olt float %4, 0x3810000000000000 %6 = fmul float %4, 0x4170000000000000 %.06 = select i1 %5, float %6, float %4 %expo.i.i.0 = select i1 %5, float -2.400000e+01, float 0.000000e+00 %7 = bitcast float %.06 to i32 %8 = add i32 %7, -1060439283 %9 = and i32 %8, -8388608 %10 = sub i32 %7, %9 %11 = bitcast i32 %10 to float %12 = sitofp i32 %9 to float %13 = tail call float @llvm.nvvm.fma.rn.f(float %12, float 0x3E80000000000000, float %expo.i.i.0) #145 %14 = fadd float %11, -1.000000e+00 %15 = fadd float %11, 1.000000e+00 %16 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %15) #146, !srcloc !10 %17 = fmul float %14, 2.000000e+00 %18 = fmul float %17, %16 %19 = fmul float %18, %18 %20 = fsub float %14, %18 %21 = fmul float %20, 2.000000e+00 %22 = fneg float %18 %23 = tail call float @llvm.nvvm.fma.rn.f(float %22, float %14, float %21) #145 %24 = tail call float @llvm.nvvm.mul.rn.f(float %16, float %23) #145 %25 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F45865C80000000, float %19, float 0x3F6A5CFB60000000) #145 %26 = tail call float @llvm.nvvm.fma.rn.f(float %25, float %19, float 0x3F92776E60000000) #145 %27 = tail call float @llvm.nvvm.fma.rn.f(float %26, float %19, float 0x3FBEC709E0000000) #145 %28 = tail call float @llvm.nvvm.mul.rn.f(float %27, float %19) #145 %29 = tail call float @llvm.nvvm.fma.rn.f(float %18, float 0x3FF7154760000000, float %13) #145 %30 = fsub float %13, %29 %31 = tail call float @llvm.nvvm.fma.rn.f(float %18, float 0x3FF7154760000000, float %30) #145 %32 = tail call float @llvm.nvvm.fma.rn.f(float %24, float 0x3FF7154760000000, float %31) #145 %33 = tail call float @llvm.nvvm.fma.rn.f(float %18, float 0x3E54ABC680000000, float %32) #145 %34 = tail call float @llvm.nvvm.fma.rn.f(float %28, float %18, float %33) #145 %35 = tail call float @llvm.nvvm.add.rn.f(float %29, float %34) #145 %36 = fneg float %29 %37 = tail call float @llvm.nvvm.add.rn.f(float %35, float %36) #145 %38 = fneg float %37 %39 = tail call float @llvm.nvvm.add.rn.f(float %34, float %38) #145 %40 = fadd float %4, -5.000000e-01 %41 = tail call float @llvm.nvvm.mul.rn.f(float %35, float %40) #145 %42 = fneg float %41 %43 = tail call float @llvm.nvvm.fma.rn.f(float %35, float %40, float %42) #145 %44 = tail call float @llvm.nvvm.fma.rn.f(float %39, float %40, float %43) #145 %45 = tail call float @llvm.nvvm.mul.rn.f(float 0x3FF7154760000000, float %4) #145 %46 = fneg float %45 %47 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FF7154760000000, float %4, float %46) #145 %48 = tail call float @llvm.nvvm.fma.rn.f(float 0x3E54AE0C00000000, float %4, float %47) #145 %49 = tail call float @llvm.nvvm.add.rn.f(float %41, float %46) #145 %50 = tail call float @llvm.nvvm.add.rn.f(float %49, float %45) #145 %51 = fneg float %50 %52 = tail call float @llvm.nvvm.add.rn.f(float %49, float %51) #145 %53 = tail call float @llvm.nvvm.add.rn.f(float %41, float %51) #145 %54 = fneg float %52 %55 = tail call float @llvm.nvvm.add.rn.f(float %46, float %54) #145 %56 = tail call float @llvm.nvvm.add.rn.f(float %53, float %55) #145 %57 = fsub float %44, %48 %58 = fadd float %57, %56 br i1 %0, label %59, label %__nv_fmaf.exit2.i.i 59: ; preds = %__nv_fabsf.exit.i %60 = fneg float %49 %61 = fneg float %58 %62 = fcmp ogt float %4, 3.300000e+01 %63 = fsub float 4.800000e+01, %49 %arg.i.0.0 = select i1 %62, float %63, float %60 br label %__nv_fmaf.exit2.i.i __nv_fmaf.exit2.i.i: ; preds = %59, %__nv_fabsf.exit.i %arg.i.0.1 = phi float [ %arg.i.0.0, %59 ], [ %49, %__nv_fabsf.exit.i ] %arg.i.1.0 = phi float [ %61, %59 ], [ %58, %__nv_fabsf.exit.i ] %64 = tail call float @llvm.nvvm.round.f(float %arg.i.0.1) #145 %65 = fsub float %arg.i.0.1, %64 %66 = fadd float %arg.i.1.0, %65 %67 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F23F971C0000000, float %66, float 0x3F55F0BDA0000000) #145 %68 = tail call float @llvm.nvvm.fma.rn.f(float %67, float %66, float 0x3F83B30AC0000000) #145 %69 = tail call float @llvm.nvvm.fma.rn.f(float %68, float %66, float 0x3FAC6AF760000000) #145 %70 = tail call float @llvm.nvvm.fma.rn.f(float %69, float %66, float 0x3FCEBFBD80000000) #145 %71 = tail call float @llvm.nvvm.fma.rn.f(float %70, float %66, float 0x3FE62E4300000000) #145 %72 = tail call float @llvm.nvvm.fma.rn.f(float %71, float %66, float 1.000000e+00) #145 %73 = fptosi float %64 to i32 %74 = fcmp ogt float %64, 0.000000e+00 %75 = select i1 %74, i32 0, i32 -2097152000 %76 = add nsw i32 %75, 2130706432 %77 = bitcast i32 %76 to float %78 = fmul float %72, %77 %79 = shl i32 %73, 23 %80 = sub i32 %79, %75 %81 = bitcast i32 %80 to float %82 = fmul float %78, %81 %83 = fmul float %82, 0x40040D9320000000 %84 = tail call float asm "rcp.approx.ftz.f32 $0,$1;", "=f,f"(float %4) #146, !srcloc !10 %85 = tail call float @llvm.nvvm.fma.rn.f(float 0x3F11EF2E20000000, float %84, float 0xBF0A87DB00000000) #145 %86 = tail call float @llvm.nvvm.fma.rn.f(float %85, float %84, float 0xBF3BB4D7C0000000) #145 %87 = tail call float @llvm.nvvm.fma.rn.f(float %86, float %84, float 0x3F504157C0000000) #145 %88 = tail call float @llvm.nvvm.fma.rn.f(float %87, float %84, float 0xBF32415FA0000000) #145 %89 = tail call float @llvm.nvvm.fma.rn.f(float %88, float %84, float 0xBF65E9AC80000000) #145 %90 = tail call float @llvm.nvvm.fma.rn.f(float %89, float %84, float 0x3F6C70E640000000) #145 %91 = tail call float @llvm.nvvm.fma.rn.f(float %90, float %84, float 0x3FB5555580000000) #145 %92 = fmul float %84, %91 br i1 %0, label %__internal_tgammaf_stirling.exit.thread, label %__internal_tgammaf_stirling.exit.thread5 __internal_tgammaf_stirling.exit.thread: ; preds = %__nv_fmaf.exit2.i.i %93 = tail call float @llvm.nvvm.fma.rn.f(float %92, float %x.i.0, float %x.i.0) #145 %94 = fadd float %4, %4 %95 = tail call float @llvm.nvvm.round.f(float %94) #145 %96 = tail call i32 @llvm.nvvm.f2i.rz(float %95) #145 %97 = tail call float @llvm.nvvm.fma.rn.f(float %95, float -5.000000e-01, float %4) #145 %98 = and i32 %96, 1 %99 = tail call float @llvm.nvvm.mul.rn.f(float %97, float %97) #145 %.not1 = icmp eq i32 %98, 0 %100 = select i1 %.not1, float %97, float 1.000000e+00 %101 = tail call float @llvm.nvvm.fma.rn.f(float %99, float %100, float 0.000000e+00) #145 %102 = tail call float @llvm.nvvm.fma.rn.f(float 0x3FCD09C240000000, float %99, float 0xBFF55A5C00000000) #145 %103 = select i1 %.not1, float 0xBFE2F59920000000, float %102 %104 = select i1 %.not1, float 0x400466B200000000, float 0x40103C19E0000000 %105 = tail call float @llvm.nvvm.fma.rn.f(float %103, float %99, float %104) #145 %106 = select i1 %.not1, float 0xC014ABBEC0000000, float 0xC013BD3CC0000000 %107 = tail call float @llvm.nvvm.fma.rn.f(float %105, float %99, float %106) #145 %108 = select i1 %.not1, float 0.000000e+00, float 1.000000e+00 %109 = tail call float @llvm.nvvm.fma.rn.f(float %107, float %101, float %108) #145 %110 = tail call float @llvm.nvvm.fma.rn.f(float 0x400921FB60000000, float %97, float %109) #145 %111 = select i1 %.not1, float %110, float %109 %112 = and i32 %96, 2 %.not2 = icmp eq i32 %112, 0 %113 = fsub float 0.000000e+00, %111 %114 = select i1 %.not2, float %111, float %113 %115 = tail call float @llvm.nvvm.mul.rn.f(float %93, float %114) #145 %116 = fneg float %115 %117 = tail call float @llvm.nvvm.fma.rn.f(float %93, float %114, float %116) #145 %118 = tail call float @llvm.nvvm.div.approx.f(float 1.000000e+00, float %115) #145 %119 = fneg float %118 %120 = fmul float %118, %119 %121 = fmul float %117, %120 %122 = fmul float %83, %121 %123 = tail call float @llvm.nvvm.fma.rn.f(float %83, float %118, float %122) #145 %124 = fmul float %123, 5.000000e-01 %125 = fcmp ogt float %4, 3.300000e+01 %126 = fmul float %124, 0x3CF0000000000000 %s.i.0 = select i1 %125, float %126, float %124 br label %145 __internal_tgammaf_stirling.exit.thread5: ; preds = %__nv_fmaf.exit2.i.i %127 = tail call float @llvm.nvvm.fma.rn.f(float %92, float %83, float %83) #145 br label %153 __internal_tgammaf_stirling.exit: ; preds = %__nv_fabsf.exit %128 = fcmp olt float %a, -5.000000e-01 %a. = select i1 %128, float %a, float 1.000000e+00 %129 = fcmp oeq float %a, 0.000000e+00 %130 = tail call float @llvm.nvvm.round.f(float %a) #145 %131 = select i1 %129, float 0.000000e+00, float %130 %132 = fsub float %a, %131 %133 = fcmp ole float %a, 5.000000e-01 %134 = select i1 %133, float %132, float 1.000000e+00 %fy.0 = fmul float %a., %134 %135 = tail call float @llvm.nvvm.fma.rn.f(float 0xBF5193ECC0000000, float %132, float 0x3F7D207AE0000000) #145 %136 = tail call float @llvm.nvvm.fma.rn.f(float %135, float %132, float 0xBF83C01600000000) #145 %137 = tail call float @llvm.nvvm.fma.rn.f(float %136, float %132, float 0xBFA598A440000000) #145 %138 = tail call float @llvm.nvvm.fma.rn.f(float %137, float %132, float 0x3FC5513660000000) #145 %139 = tail call float @llvm.nvvm.fma.rn.f(float %138, float %132, float 0xBFA58180A0000000) #145 %140 = tail call float @llvm.nvvm.fma.rn.f(float %139, float %132, float 0xBFE4FCF440000000) #145 %141 = tail call float @llvm.nvvm.fma.rn.f(float %140, float %132, float 0x3FE2788D00000000) #145 %142 = tail call float @llvm.nvvm.fma.rn.f(float %141, float %fy.0, float 0.000000e+00) #145 %143 = tail call float @llvm.nvvm.fma.rn.f(float %142, float %132, float %fy.0) #145 %144 = tail call float @llvm.nvvm.div.approx.f(float 1.000000e+00, float %143) #145 br i1 %0, label %145, label %153 145: ; preds = %__internal_tgammaf_stirling.exit.thread, %__internal_tgammaf_stirling.exit %s.04 = phi float [ %s.i.0, %__internal_tgammaf_stirling.exit.thread ], [ %144, %__internal_tgammaf_stirling.exit ] %146 = tail call float @llvm.nvvm.trunc.f(float %a) #145 %147 = fcmp oeq float %146, %a br i1 %147, label %153, label %148 148: ; preds = %145 %149 = fcmp olt float %a, 0xC0448CCCC0000000 br i1 %149, label %150, label %153 150: ; preds = %148 %151 = tail call i32 @llvm.nvvm.f2i.rz(float %a) %152 = and i32 %151, 1 %.not = icmp eq i32 %152, 0 %spec.select = select i1 %.not, float %s.04, float 0.000000e+00 br label %153 153: ; preds = %__internal_tgammaf_stirling.exit.thread5, %150, %145, %148, %__internal_tgammaf_stirling.exit %s.3 = phi float [ %144, %__internal_tgammaf_stirling.exit ], [ 0x7FFFFFFFE0000000, %145 ], [ %s.04, %148 ], [ %spec.select, %150 ], [ %127, %__internal_tgammaf_stirling.exit.thread5 ] ret float %s.3 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_roundf(float %a) unnamed_addr #79 { __nv_fadd_rz.exit: %0 = bitcast float %a to i32 %1 = and i32 %0, -2147483648 %2 = or i32 %1, 1056964608 %3 = bitcast i32 %2 to float %4 = tail call float @llvm.nvvm.add.rz.f(float %a, float %3) #145 %5 = tail call float @llvm.nvvm.trunc.f(float %4) #145 ret float %5 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc float @__nv_fdimf(float %a, float %b) unnamed_addr #80 { __nv_fsub_rn.exit: %0 = tail call float asm "sub.rn.f32 $0, $1, $2;", "=f,f,f"(float %a, float %b) #146, !srcloc !14 %1 = fcmp ole float %a, %b %t.0 = select i1 %1, float 0.000000e+00, float %0 ret float %t.0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc i32 @__nv_ilogbf(float %a) unnamed_addr #81 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = bitcast float %0 to i32 %2 = icmp ult i32 %1, 8388608 br i1 %2, label %3, label %7 3: ; preds = %__nv_fabsf.exit %4 = tail call i32 @llvm.ctlz.i32(i32 %1, i1 false), !range !15 %5 = sub nuw nsw i32 -118, %4 %6 = icmp eq i32 %1, 0 %spec.select = select i1 %6, i32 -2147483648, i32 %5 br label %12 7: ; preds = %__nv_fabsf.exit %8 = lshr i32 %1, 23 %9 = add nsw i32 %8, -127 %10 = icmp eq i32 %1, 2139095040 %spec.select1 = select i1 %10, i32 2147483647, i32 %9 %11 = icmp ugt i32 %1, 2139095040 %expo.2 = select i1 %11, i32 -2147483648, i32 %spec.select1 br label %12 12: ; preds = %7, %3 %expo.3 = phi i32 [ %spec.select, %3 ], [ %expo.2, %7 ] ret i32 %expo.3 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.ctlz.i32(i32 %0, i1 immarg %1) #7 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc float @__nv_logbf(float %a) unnamed_addr #82 { __nv_fabsf.exit: %0 = tail call float @llvm.nvvm.fabs.f(float %a) #145 %1 = bitcast float %0 to i32 %2 = icmp ult i32 %1, 8388608 br i1 %2, label %3, label %8 3: ; preds = %__nv_fabsf.exit %4 = tail call i32 @llvm.ctlz.i32(i32 %1, i1 false), !range !15 %5 = sub nuw nsw i32 -118, %4 %6 = sitofp i32 %5 to float %7 = fcmp oeq float %a, 0.000000e+00 %res.0 = select i1 %7, float 0xFFF0000000000000, float %6 br label %14 8: ; preds = %__nv_fabsf.exit %9 = lshr i32 %1, 23 %10 = add nsw i32 %9, -127 %11 = sitofp i32 %10 to float %12 = icmp ugt i32 %1, 2139095039 %13 = fmul float %a, %a %spec.select = select i1 %12, float %13, float %11 br label %14 14: ; preds = %8, %3 %res.2 = phi float [ %res.0, %3 ], [ %spec.select, %8 ] ret float %res.2 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare i64 @llvm.nvvm.d2ll.rn(double %0) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.nvvm.d2i.hi(double %0) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.nvvm.d2i.lo(double %0) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.mul.rn.d(double %0, double %1) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.nvvm.d2i.rn(double %0) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.fma.rn.d(double %0, double %1, double %2) #7 ; Function Attrs: argmemonly noinline nounwind writeonly define internal fastcc double @__internal_trig_reduction_slowpathd(double %a, ptr nocapture writeonly %quadrant) unnamed_addr #83 { %result = alloca [5 x i64], align 8 %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = and i32 %1, -2147483648 %3 = lshr i32 %1, 20 %4 = and i32 %3, 2047 %5 = icmp eq i32 %4, 2047 br i1 %5, label %80, label %6 6: ; preds = %0 %7 = add nsw i32 %4, -1024 %8 = bitcast double %a to i64 %9 = shl i64 %8, 11 %10 = or i64 %9, -9223372036854775808 %11 = lshr i32 %7, 6 %12 = sub nsw i32 15, %11 %13 = sub nsw i32 19, %11 %min.cond = icmp ult i32 %7, 128 %min = select i1 %min.cond, i32 18, i32 %13 %14 = icmp slt i32 %12, %min br i1 %14, label %.lr.ph.preheader, label %._crit_edge .lr.ph.preheader: ; preds = %6 %15 = sext i32 %12 to i64 %wide.trip.count = sext i32 %min to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ %15, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] %q.09 = phi i32 [ %12, %.lr.ph.preheader ], [ %24, %.lr.ph ] %p.122.08 = phi i64 [ 0, %.lr.ph.preheader ], [ %20, %.lr.ph ] %16 = getelementptr inbounds [18 x i64], ptr addrspace(1) @__cudart_i2opi_d, i64 0, i64 %indvars.iv %17 = load i64, ptr addrspace(1) %16, align 8 %18 = tail call { i64, i64 } asm "{\0A\09.reg .u32 r0, r1, r2, r3, alo, ahi, blo, bhi, clo, chi;\0A\09mov.b64 {alo,ahi}, $2; \0A\09mov.b64 {blo,bhi}, $3; \0A\09mov.b64 {clo,chi}, $4; \0A\09mad.lo.cc.u32 r0, alo, blo, clo;\0A\09madc.hi.cc.u32 r1, alo, blo, chi;\0A\09madc.hi.u32 r2, alo, bhi, 0;\0A\09mad.lo.cc.u32 r1, alo, bhi, r1;\0A\09madc.hi.cc.u32 r2, ahi, blo, r2;\0A\09madc.hi.u32 r3, ahi, bhi, 0;\0A\09mad.lo.cc.u32 r1, ahi, blo, r1;\0A\09madc.lo.cc.u32 r2, ahi, bhi, r2;\0A\09addc.u32 r3, r3, 0; \0A\09mov.b64 $0, {r0,r1}; \0A\09mov.b64 $1, {r2,r3}; \0A\09}", "=l,=l,l,l,l"(i64 %17, i64 %10, i64 %p.122.08) #146, !srcloc !16 %19 = extractvalue { i64, i64 } %18, 0 %20 = extractvalue { i64, i64 } %18, 1 %21 = sub nsw i32 %q.09, %12 %22 = sext i32 %21 to i64 %23 = getelementptr inbounds [5 x i64], ptr %result, i64 0, i64 %22 store i64 %19, ptr %23, align 8 %indvars.iv.next = add nsw i64 %indvars.iv, 1 %24 = add nsw i32 %q.09, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !17 ._crit_edge.loopexit: ; preds = %.lr.ph %.lcssa = phi i64 [ %20, %.lr.ph ] br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %6 %p.122.0.lcssa = phi i64 [ 0, %6 ], [ %.lcssa, %._crit_edge.loopexit ] %q.0.lcssa = phi i32 [ %12, %6 ], [ %min, %._crit_edge.loopexit ] %25 = sub nsw i32 %q.0.lcssa, %12 %26 = sext i32 %25 to i64 %27 = getelementptr inbounds [5 x i64], ptr %result, i64 0, i64 %26 store i64 %p.122.0.lcssa, ptr %27, align 8 %28 = and i32 %3, 63 %29 = getelementptr inbounds [5 x i64], ptr %result, i64 0, i64 2 %30 = load i64, ptr %29, align 8 %31 = getelementptr inbounds [5 x i64], ptr %result, i64 0, i64 3 %32 = load i64, ptr %31, align 8 %.not = icmp eq i32 %28, 0 br i1 %.not, label %45, label %33 33: ; preds = %._crit_edge %34 = sub nuw nsw i32 64, %28 %35 = zext i32 %28 to i64 %36 = shl i64 %32, %35 %37 = zext i32 %34 to i64 %38 = lshr i64 %30, %37 %39 = or i64 %36, %38 %40 = shl i64 %30, %35 %41 = getelementptr inbounds [5 x i64], ptr %result, i64 0, i64 1 %42 = load i64, ptr %41, align 8 %43 = lshr i64 %42, %37 %44 = or i64 %43, %40 br label %45 45: ; preds = %33, %._crit_edge %hi.0 = phi i64 [ %39, %33 ], [ %32, %._crit_edge ] %lo.0 = phi i64 [ %44, %33 ], [ %30, %._crit_edge ] %46 = lshr i64 %hi.0, 62 %47 = trunc i64 %46 to i32 %48 = tail call i64 @llvm.fshl.i64(i64 %hi.0, i64 %lo.0, i64 2) %49 = shl i64 %lo.0, 2 %50 = lshr i64 %48, 63 %51 = trunc i64 %50 to i32 %52 = add nuw nsw i32 %51, %47 %.not4 = icmp eq i32 %2, 0 %53 = sub nsw i32 0, %52 %spec.select = select i1 %.not4, i32 %52, i32 %53 store i32 %spec.select, ptr %quadrant, align 4 %.not5 = icmp sgt i64 %48, -1 br i1 %.not5, label %59, label %54 54: ; preds = %45 %55 = tail call { i64, i64 } asm "{\0A\09.reg .u32 r0, r1, r2, r3, a0, a1, a2, a3, b0, b1, b2, b3;\0A\09mov.b64 {a0,a1}, $2;\0A\09mov.b64 {a2,a3}, $3;\0A\09mov.b64 {b0,b1}, $4;\0A\09mov.b64 {b2,b3}, $5;\0A\09sub.cc.u32 r0, a0, b0; \0A\09subc.cc.u32 r1, a1, b1; \0A\09subc.cc.u32 r2, a2, b2; \0A\09subc.u32 r3, a3, b3; \0A\09mov.b64 $0, {r0,r1};\0A\09mov.b64 $1, {r2,r3};\0A\09}", "=l,=l,l,l,l,l"(i64 0, i64 0, i64 %49, i64 %48) #146, !srcloc !18 %56 = extractvalue { i64, i64 } %55, 0 %57 = extractvalue { i64, i64 } %55, 1 %58 = xor i32 %2, -2147483648 br label %59 59: ; preds = %54, %45 %hi.1 = phi i64 [ %57, %54 ], [ %48, %45 ] %lo.1 = phi i64 [ %56, %54 ], [ %49, %45 ] %s.0 = phi i32 [ %58, %54 ], [ %2, %45 ] %ctlz = tail call i64 @llvm.ctlz.i64(i64 %hi.1, i1 false), !range !19 %60 = freeze i64 %lo.1 %hi.2 = tail call i64 @llvm.fshl.i64(i64 %hi.1, i64 %60, i64 %ctlz) %61 = tail call { i64, i64 } asm "{\0A\09.reg .u32 r0, r1, r2, r3, alo, ahi, blo, bhi;\0A\09mov.b64 {alo,ahi}, $2; \0A\09mov.b64 {blo,bhi}, $3; \0A\09mul.lo.u32 r0, alo, blo; \0A\09mul.hi.u32 r1, alo, blo; \0A\09mad.lo.cc.u32 r1, alo, bhi, r1;\0A\09madc.hi.u32 r2, alo, bhi, 0;\0A\09mad.lo.cc.u32 r1, ahi, blo, r1;\0A\09madc.hi.cc.u32 r2, ahi, blo, r2;\0A\09madc.hi.u32 r3, ahi, bhi, 0;\0A\09mad.lo.cc.u32 r2, ahi, bhi, r2;\0A\09addc.u32 r3, r3, 0; \0A\09mov.b64 $0, {r0,r1}; \0A\09mov.b64 $1, {r2,r3}; \0A\09}", "=l,=l,l,l"(i64 %hi.2, i64 -3958705157555305931) #146, !srcloc !20 %62 = extractvalue { i64, i64 } %61, 1 %63 = icmp sgt i64 %62, 0 br i1 %63, label %64, label %69 64: ; preds = %59 %65 = extractvalue { i64, i64 } %61, 0 %66 = tail call { i64, i64 } asm "{\0A\09.reg .u32 r0, r1, r2, r3, a0, a1, a2, a3, b0, b1, b2, b3;\0A\09mov.b64 {a0,a1}, $2;\0A\09mov.b64 {a2,a3}, $3;\0A\09mov.b64 {b0,b1}, $4;\0A\09mov.b64 {b2,b3}, $5;\0A\09add.cc.u32 r0, a0, b0; \0A\09addc.cc.u32 r1, a1, b1; \0A\09addc.cc.u32 r2, a2, b2; \0A\09addc.u32 r3, a3, b3; \0A\09mov.b64 $0, {r0,r1};\0A\09mov.b64 $1, {r2,r3};\0A\09}", "=l,=l,l,l,l,l"(i64 %65, i64 %62, i64 %65, i64 %62) #146, !srcloc !21 %67 = extractvalue { i64, i64 } %66, 1 %68 = add nuw nsw i64 %ctlz, 1 br label %69 69: ; preds = %64, %59 %hi.3 = phi i64 [ %67, %64 ], [ %62, %59 ] %e.0 = phi i64 [ %68, %64 ], [ %ctlz, %59 ] %70 = zext i32 %s.0 to i64 %71 = shl nuw i64 %70, 32 %.neg7 = mul nsw i64 %e.0, -4503599627370496 %72 = add nsw i64 %.neg7, 4602678819172646912 %73 = add i64 %hi.3, 1 %74 = lshr i64 %73, 10 %75 = add nuw nsw i64 %74, 1 %76 = lshr i64 %75, 1 %77 = add nuw nsw i64 %72, %76 %78 = or i64 %77, %71 %79 = bitcast i64 %78 to double br label %80 80: ; preds = %0, %69 %.0 = phi double [ %79, %69 ], [ %a, %0 ] ret double %.0 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare i64 @llvm.ctlz.i64(i64 %0, i1 immarg %1) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.round.d(double %0) #7 ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_sin(double %a) unnamed_addr #84 { __nv_isinfd.exit: %q.i = alloca i32, align 4 %0 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = and i32 %1, 2147483647 %3 = icmp eq i32 %2, 2146435072 %4 = icmp eq i32 %0, 0 %5 = select i1 %3, i1 %4, i1 false br i1 %5, label %6, label %8 6: ; preds = %__nv_isinfd.exit %7 = tail call double @llvm.nvvm.mul.rn.d(double %a, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit 8: ; preds = %__nv_isinfd.exit %9 = fmul double %a, 0x3FE45F306DC9C883 %10 = tail call i32 @llvm.nvvm.d2i.rn(double %9) #145 store i32 %10, ptr %q.i, align 4 %11 = sitofp i32 %10 to double %12 = fneg double %11 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double 0x3FF921FB54442D18, double %a) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %12, double 0x3C91A62633145C00, double %13) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %12, double 0x397B839A252049C0, double %14) #145 %16 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %17 = fcmp ult double %16, 0x41E0000000000000 br i1 %17, label %__internal_trig_reduction_kerneld.exit, label %18 18: ; preds = %8 %19 = call fastcc double @__internal_trig_reduction_slowpathd(double %a, ptr nonnull %q.i) #145 %.pre = load i32, ptr %q.i, align 4 br label %__internal_trig_reduction_kerneld.exit __internal_trig_reduction_kerneld.exit: ; preds = %18, %8, %6 %i.0 = phi i32 [ 0, %6 ], [ %.pre, %18 ], [ %10, %8 ] %z.0 = phi double [ %7, %6 ], [ %19, %18 ], [ %15, %8 ] %20 = and i32 %i.0, 1 %21 = shl nuw nsw i32 %20, 3 %22 = zext i32 %21 to i64 %23 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %22 %24 = tail call double @llvm.nvvm.mul.rn.d(double %z.0, double %z.0) #145 %.not = icmp eq i32 %20, 0 %25 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %26 = getelementptr inbounds double, ptr addrspace(1) %23, i64 1 %27 = load double, ptr addrspace(1) %26, align 8 %28 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %24, double %27) #145 %29 = getelementptr inbounds double, ptr addrspace(1) %23, i64 2 %30 = load double, ptr addrspace(1) %29, align 8 %31 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %24, double %30) #145 %32 = getelementptr inbounds double, ptr addrspace(1) %23, i64 3 %33 = load double, ptr addrspace(1) %32, align 8 %34 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %24, double %33) #145 %35 = getelementptr inbounds double, ptr addrspace(1) %23, i64 4 %36 = load double, ptr addrspace(1) %35, align 8 %37 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %24, double %36) #145 %38 = getelementptr inbounds double, ptr addrspace(1) %23, i64 5 %39 = load double, ptr addrspace(1) %38, align 8 %40 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %24, double %39) #145 %41 = getelementptr inbounds double, ptr addrspace(1) %23, i64 6 %42 = load double, ptr addrspace(1) %41, align 8 %43 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %24, double %42) #145 %44 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %z.0, double %z.0) #145 %45 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %24, double 1.000000e+00) #145 %spec.select = select i1 %.not, double %44, double %45 %46 = and i32 %i.0, 2 %.not5 = icmp eq i32 %46, 0 %47 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select, double -1.000000e+00, double 0.000000e+00) #145 %.1 = select i1 %.not5, double %spec.select, double %47 ret double %.1 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_cos(double %a) unnamed_addr #85 { __nv_isinfd.exit: %q.i = alloca i32, align 4 %0 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = and i32 %1, 2147483647 %3 = icmp eq i32 %2, 2146435072 %4 = icmp eq i32 %0, 0 %5 = select i1 %3, i1 %4, i1 false br i1 %5, label %6, label %8 6: ; preds = %__nv_isinfd.exit %7 = tail call double @llvm.nvvm.mul.rn.d(double %a, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit 8: ; preds = %__nv_isinfd.exit %9 = fmul double %a, 0x3FE45F306DC9C883 %10 = tail call i32 @llvm.nvvm.d2i.rn(double %9) #145 store i32 %10, ptr %q.i, align 4 %11 = sitofp i32 %10 to double %12 = fneg double %11 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double 0x3FF921FB54442D18, double %a) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %12, double 0x3C91A62633145C00, double %13) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %12, double 0x397B839A252049C0, double %14) #145 %16 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %17 = fcmp ult double %16, 0x41E0000000000000 br i1 %17, label %__internal_trig_reduction_kerneld.exit, label %18 18: ; preds = %8 %19 = call fastcc double @__internal_trig_reduction_slowpathd(double %a, ptr nonnull %q.i) #145 %.pre = load i32, ptr %q.i, align 4 br label %__internal_trig_reduction_kerneld.exit __internal_trig_reduction_kerneld.exit: ; preds = %18, %8, %6 %i.0 = phi i32 [ 0, %6 ], [ %.pre, %18 ], [ %10, %8 ] %z.0 = phi double [ %7, %6 ], [ %19, %18 ], [ %15, %8 ] %20 = add nsw i32 %i.0, 1 %21 = and i32 %20, 1 %22 = shl nuw nsw i32 %21, 3 %23 = zext i32 %22 to i64 %24 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %23 %25 = tail call double @llvm.nvvm.mul.rn.d(double %z.0, double %z.0) #145 %.not = icmp eq i32 %21, 0 %26 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %27 = getelementptr inbounds double, ptr addrspace(1) %24, i64 1 %28 = load double, ptr addrspace(1) %27, align 8 %29 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %25, double %28) #145 %30 = getelementptr inbounds double, ptr addrspace(1) %24, i64 2 %31 = load double, ptr addrspace(1) %30, align 8 %32 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %25, double %31) #145 %33 = getelementptr inbounds double, ptr addrspace(1) %24, i64 3 %34 = load double, ptr addrspace(1) %33, align 8 %35 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %25, double %34) #145 %36 = getelementptr inbounds double, ptr addrspace(1) %24, i64 4 %37 = load double, ptr addrspace(1) %36, align 8 %38 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %25, double %37) #145 %39 = getelementptr inbounds double, ptr addrspace(1) %24, i64 5 %40 = load double, ptr addrspace(1) %39, align 8 %41 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %25, double %40) #145 %42 = getelementptr inbounds double, ptr addrspace(1) %24, i64 6 %43 = load double, ptr addrspace(1) %42, align 8 %44 = tail call double @llvm.nvvm.fma.rn.d(double %41, double %25, double %43) #145 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %z.0, double %z.0) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %25, double 1.000000e+00) #145 %spec.select = select i1 %.not, double %45, double %46 %47 = and i32 %20, 2 %.not5 = icmp eq i32 %47, 0 %48 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select, double -1.000000e+00, double 0.000000e+00) #145 %.1 = select i1 %.not5, double %spec.select, double %48 ret double %.1 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_tan(double %a) unnamed_addr #86 { __nv_isinfd.exit: %q.i = alloca i32, align 4 %0 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = and i32 %1, 2147483647 %3 = icmp eq i32 %2, 2146435072 %4 = icmp eq i32 %0, 0 %5 = select i1 %3, i1 %4, i1 false br i1 %5, label %6, label %8 6: ; preds = %__nv_isinfd.exit %7 = tail call double @llvm.nvvm.mul.rn.d(double %a, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit 8: ; preds = %__nv_isinfd.exit %9 = fmul double %a, 0x3FE45F306DC9C883 %10 = tail call i32 @llvm.nvvm.d2i.rn(double %9) #145 store i32 %10, ptr %q.i, align 4 %11 = sitofp i32 %10 to double %12 = fneg double %11 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double 0x3FF921FB54442D18, double %a) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %12, double 0x3C91A62633145C00, double %13) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %12, double 0x397B839A252049C0, double %14) #145 %16 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %17 = fcmp ult double %16, 0x41E0000000000000 br i1 %17, label %__internal_trig_reduction_kerneld.exit, label %18 18: ; preds = %8 %19 = call fastcc double @__internal_trig_reduction_slowpathd(double %a, ptr nonnull %q.i) #145 %.pre = load i32, ptr %q.i, align 4 br label %__internal_trig_reduction_kerneld.exit __internal_trig_reduction_kerneld.exit: ; preds = %18, %8, %6 %i.0 = phi i32 [ 0, %6 ], [ %.pre, %18 ], [ %10, %8 ] %z.0 = phi double [ %7, %6 ], [ %19, %18 ], [ %15, %8 ] %20 = and i32 %i.0, 1 %21 = fmul double %z.0, %z.0 %22 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EE48DAC2799BCB9, double %21, double 0xBEF9757C5B27EBB1) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %21, double 0x3F0980E90FD91E04) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %21, double 0xBEFAE2B0417D7E1D) #145 %25 = tail call double @llvm.nvvm.fma.rn.d(double %24, double %21, double 0x3F119F5341BFBA57) #145 %26 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %21, double 0x3F15E791A00F6919) #145 %27 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %21, double 0x3F2FF2E7FADEC73A) #145 %28 = tail call double @llvm.nvvm.fma.rn.d(double %27, double %21, double 0x3F434BC1B206DA62) #145 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %21, double 0x3F57DB18EF2F83F9) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %21, double 0x3F6D6D2E7AE49FBC) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %21, double 0x3F8226E3A816A776) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %21, double 0x3F9664F485D25660) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %21, double 0x3FABA1BA1BABF31D) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %21, double 0x3FC11111111105D2) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %21, double 0x3FD555555555555E) #145 %36 = fmul double %21, %35 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %z.0, double %z.0) #145 %.not = icmp eq i32 %20, 0 br i1 %.not, label %__internal_tan_kerneld.exit, label %38 38: ; preds = %__internal_trig_reduction_kerneld.exit %39 = fsub double %37, %z.0 %40 = fneg double %39 %41 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %z.0, double %40) #145 %42 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %37) #145 %43 = fneg double %37 %44 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %42, double 1.000000e+00) #145 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %44, double %44) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %42, double %42) #145 %47 = fneg double %46 %48 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %47, double 1.000000e+00) #145 %49 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %41, double %48) #145 %50 = tail call double @llvm.nvvm.fma.rn.d(double %49, double %47, double %47) #145 br label %__internal_tan_kerneld.exit __internal_tan_kerneld.exit: ; preds = %__internal_trig_reduction_kerneld.exit, %38 %q.i1.0 = phi double [ %50, %38 ], [ %37, %__internal_trig_reduction_kerneld.exit ] ret double %q.i1.0 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone willreturn declare double @llvm.nvvm.rcp.approx.ftz.d(double %0) #19 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_log(double %a) unnamed_addr #87 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %3 = icmp slt i32 %1, 1048576 br i1 %3, label %4, label %8 4: ; preds = %0 %5 = fmul double %a, 0x4350000000000000 %6 = tail call i32 @llvm.nvvm.d2i.hi(double %5) #145 %7 = tail call i32 @llvm.nvvm.d2i.lo(double %5) #145 br label %8 8: ; preds = %4, %0 %.0 = phi double [ %5, %4 ], [ %a, %0 ] %ihi.0 = phi i32 [ %6, %4 ], [ %1, %0 ] %ilo.0 = phi i32 [ %7, %4 ], [ %2, %0 ] %e.0 = phi i32 [ -1077, %4 ], [ -1023, %0 ] %9 = add i32 %ihi.0, -1 %10 = icmp ult i32 %9, 2146435071 br i1 %10, label %11, label %60 11: ; preds = %8 %12 = lshr i32 %ihi.0, 20 %13 = add nsw i32 %e.0, %12 %14 = and i32 %ihi.0, -2146435073 %15 = or i32 %14, 1072693248 %16 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.0, i32 %15) #145 %17 = icmp ugt i32 %15, 1073127582 br i1 %17, label %18, label %24 18: ; preds = %11 %19 = tail call i32 @llvm.nvvm.d2i.lo(double %16) #145 %20 = tail call i32 @llvm.nvvm.d2i.hi(double %16) #145 %21 = add i32 %20, -1048576 %22 = tail call double @llvm.nvvm.lohi.i2d(i32 %19, i32 %21) #145 %23 = add nsw i32 %13, 1 br label %24 24: ; preds = %18, %11 %m.0 = phi double [ %22, %18 ], [ %16, %11 ] %e.1 = phi i32 [ %23, %18 ], [ %13, %11 ] %25 = fadd double %m.0, -1.000000e+00 %26 = fadd double %m.0, 1.000000e+00 %27 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %26) #145 %28 = fneg double %26 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %27, double 1.000000e+00) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %29, double %29) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %27, double %27) #145 %32 = fmul double %25, %31 %33 = fadd double %32, %32 %34 = fmul double %33, %33 %35 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %34, double 0x3ED0EE258B7A8B04) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %34, double 0x3EF3B2669F02676F) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %34, double 0x3F1745CBA9AB0956) #145 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %34, double 0x3F3C71C72D1B5154) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %34, double 0x3F624924923BE72D) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %39, double %34, double 0x3F8999999999A3C4) #145 %41 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %34, double 0x3FB5555555555554) #145 %42 = fsub double %25, %33 %43 = fmul double %42, 2.000000e+00 %44 = fneg double %33 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %25, double %43) #145 %46 = fmul double %31, %45 %47 = fmul double %34, %41 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %33, double %46) #145 %49 = xor i32 %e.1, -2147483648 %50 = tail call double @llvm.nvvm.lohi.i2d(i32 %49, i32 1127219200) #145 %51 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %52 = fsub double %50, %51 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double 0x3FE62E42FEFA39EF, double %33) #145 %54 = fneg double %52 %55 = tail call double @llvm.nvvm.fma.rn.d(double %54, double 0x3FE62E42FEFA39EF, double %53) #145 %56 = fsub double %55, %33 %57 = fsub double %48, %56 %58 = tail call double @llvm.nvvm.fma.rn.d(double %52, double 0x3C7ABC9E3B39803F, double %57) #145 %59 = fadd double %53, %58 br label %65 60: ; preds = %8 %61 = tail call double @llvm.nvvm.fma.rn.d(double %.0, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %62 = tail call i32 @llvm.nvvm.d2i.hi(double %.0) #145 %63 = bitcast i32 %62 to float %64 = fcmp oeq float %63, 0.000000e+00 %q.0 = select i1 %64, double 0xFFF0000000000000, double %61 br label %65 65: ; preds = %60, %24 %q.1 = phi double [ %59, %24 ], [ %q.0, %60 ] ret double %q.1 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_log2(double %a) unnamed_addr #88 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %3 = icmp slt i32 %1, 1048576 br i1 %3, label %4, label %8 4: ; preds = %0 %5 = fmul double %a, 0x4350000000000000 %6 = tail call i32 @llvm.nvvm.d2i.hi(double %5) #145 %7 = tail call i32 @llvm.nvvm.d2i.lo(double %5) #145 br label %8 8: ; preds = %4, %0 %.0 = phi double [ %5, %4 ], [ %a, %0 ] %ihi.i.0 = phi i32 [ %6, %4 ], [ %1, %0 ] %ilo.i.0 = phi i32 [ %7, %4 ], [ %2, %0 ] %e.i.0 = phi i32 [ -1077, %4 ], [ -1023, %0 ] %9 = add i32 %ihi.i.0, -1 %10 = icmp ult i32 %9, 2146435071 br i1 %10, label %11, label %60 11: ; preds = %8 %12 = lshr i32 %ihi.i.0, 20 %13 = add nsw i32 %e.i.0, %12 %14 = and i32 %ihi.i.0, -2146435073 %15 = or i32 %14, 1072693248 %16 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %15) #145 %17 = icmp ugt i32 %15, 1073127582 br i1 %17, label %18, label %24 18: ; preds = %11 %19 = tail call i32 @llvm.nvvm.d2i.lo(double %16) #145 %20 = tail call i32 @llvm.nvvm.d2i.hi(double %16) #145 %21 = add i32 %20, -1048576 %22 = tail call double @llvm.nvvm.lohi.i2d(i32 %19, i32 %21) #145 %23 = add nsw i32 %13, 1 br label %24 24: ; preds = %18, %11 %m.i.0 = phi double [ %22, %18 ], [ %16, %11 ] %e.i.1 = phi i32 [ %23, %18 ], [ %13, %11 ] %25 = fadd double %m.i.0, -1.000000e+00 %26 = fadd double %m.i.0, 1.000000e+00 %27 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %26) #145 %28 = fneg double %26 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %27, double 1.000000e+00) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %29, double %29) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %27, double %27) #145 %32 = fmul double %25, %31 %33 = fadd double %32, %32 %34 = fmul double %33, %33 %35 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %34, double 0x3ED0EE258B7A8B04) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %34, double 0x3EF3B2669F02676F) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %34, double 0x3F1745CBA9AB0956) #145 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %34, double 0x3F3C71C72D1B5154) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %34, double 0x3F624924923BE72D) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %39, double %34, double 0x3F8999999999A3C4) #145 %41 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %34, double 0x3FB5555555555554) #145 %42 = fsub double %25, %33 %43 = fmul double %42, 2.000000e+00 %44 = fneg double %33 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %25, double %43) #145 %46 = fmul double %31, %45 %47 = fmul double %34, %41 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %33, double %46) #145 %49 = xor i32 %e.i.1, -2147483648 %50 = tail call double @llvm.nvvm.lohi.i2d(i32 %49, i32 1127219200) #145 %51 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %52 = fsub double %50, %51 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double 0x3FE62E42FEFA39EF, double %33) #145 %54 = fneg double %52 %55 = tail call double @llvm.nvvm.fma.rn.d(double %54, double 0x3FE62E42FEFA39EF, double %53) #145 %56 = fsub double %55, %33 %57 = fsub double %48, %56 %58 = tail call double @llvm.nvvm.fma.rn.d(double %52, double 0x3C7ABC9E3B39803F, double %57) #145 %59 = fadd double %53, %58 br label %__nv_log.exit 60: ; preds = %8 %61 = tail call double @llvm.nvvm.fma.rn.d(double %.0, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %62 = tail call i32 @llvm.nvvm.d2i.hi(double %.0) #145 %63 = bitcast i32 %62 to float %64 = fcmp oeq float %63, 0.000000e+00 %q.i.0 = select i1 %64, double 0xFFF0000000000000, double %61 br label %__nv_log.exit __nv_log.exit: ; preds = %24, %60 %q.i.1 = phi double [ %59, %24 ], [ %q.i.0, %60 ] %65 = fmul double %q.i.1, 0x3C7777D0FFDA0D24 %66 = tail call double @llvm.nvvm.fma.rn.d(double %q.i.1, double 0x3FF71547652B82FE, double %65) #145 ret double %66 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_log10(double %a) unnamed_addr #89 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %3 = icmp slt i32 %1, 1048576 br i1 %3, label %4, label %8 4: ; preds = %0 %5 = fmul double %a, 0x4350000000000000 %6 = tail call i32 @llvm.nvvm.d2i.hi(double %5) #145 %7 = tail call i32 @llvm.nvvm.d2i.lo(double %5) #145 br label %8 8: ; preds = %4, %0 %.0 = phi double [ %5, %4 ], [ %a, %0 ] %ihi.i.0 = phi i32 [ %6, %4 ], [ %1, %0 ] %ilo.i.0 = phi i32 [ %7, %4 ], [ %2, %0 ] %e.i.0 = phi i32 [ -1077, %4 ], [ -1023, %0 ] %9 = add i32 %ihi.i.0, -1 %10 = icmp ult i32 %9, 2146435071 br i1 %10, label %11, label %60 11: ; preds = %8 %12 = lshr i32 %ihi.i.0, 20 %13 = add nsw i32 %e.i.0, %12 %14 = and i32 %ihi.i.0, -2146435073 %15 = or i32 %14, 1072693248 %16 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %15) #145 %17 = icmp ugt i32 %15, 1073127582 br i1 %17, label %18, label %24 18: ; preds = %11 %19 = tail call i32 @llvm.nvvm.d2i.lo(double %16) #145 %20 = tail call i32 @llvm.nvvm.d2i.hi(double %16) #145 %21 = add i32 %20, -1048576 %22 = tail call double @llvm.nvvm.lohi.i2d(i32 %19, i32 %21) #145 %23 = add nsw i32 %13, 1 br label %24 24: ; preds = %18, %11 %m.i.0 = phi double [ %22, %18 ], [ %16, %11 ] %e.i.1 = phi i32 [ %23, %18 ], [ %13, %11 ] %25 = fadd double %m.i.0, -1.000000e+00 %26 = fadd double %m.i.0, 1.000000e+00 %27 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %26) #145 %28 = fneg double %26 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %27, double 1.000000e+00) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %29, double %29) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %27, double %27) #145 %32 = fmul double %25, %31 %33 = fadd double %32, %32 %34 = fmul double %33, %33 %35 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %34, double 0x3ED0EE258B7A8B04) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %34, double 0x3EF3B2669F02676F) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %34, double 0x3F1745CBA9AB0956) #145 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %34, double 0x3F3C71C72D1B5154) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %34, double 0x3F624924923BE72D) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %39, double %34, double 0x3F8999999999A3C4) #145 %41 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %34, double 0x3FB5555555555554) #145 %42 = fsub double %25, %33 %43 = fmul double %42, 2.000000e+00 %44 = fneg double %33 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %25, double %43) #145 %46 = fmul double %31, %45 %47 = fmul double %34, %41 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %33, double %46) #145 %49 = xor i32 %e.i.1, -2147483648 %50 = tail call double @llvm.nvvm.lohi.i2d(i32 %49, i32 1127219200) #145 %51 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %52 = fsub double %50, %51 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double 0x3FE62E42FEFA39EF, double %33) #145 %54 = fneg double %52 %55 = tail call double @llvm.nvvm.fma.rn.d(double %54, double 0x3FE62E42FEFA39EF, double %53) #145 %56 = fsub double %55, %33 %57 = fsub double %48, %56 %58 = tail call double @llvm.nvvm.fma.rn.d(double %52, double 0x3C7ABC9E3B39803F, double %57) #145 %59 = fadd double %53, %58 br label %__nv_log.exit 60: ; preds = %8 %61 = tail call double @llvm.nvvm.fma.rn.d(double %.0, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %62 = tail call i32 @llvm.nvvm.d2i.hi(double %.0) #145 %63 = bitcast i32 %62 to float %64 = fcmp oeq float %63, 0.000000e+00 %q.i.0 = select i1 %64, double 0xFFF0000000000000, double %61 br label %__nv_log.exit __nv_log.exit: ; preds = %24, %60 %q.i.1 = phi double [ %59, %24 ], [ %q.i.0, %60 ] %65 = fmul double %q.i.1, 0x3C695355BAAAFAD3 %66 = tail call double @llvm.nvvm.fma.rn.d(double %q.i.1, double 0x3FDBCB7B1526E50E, double %65) #145 ret double %66 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_log1p(double %a) unnamed_addr #90 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = bitcast i32 %1 to float %3 = fcmp olt float %2, 0x3FFCAAAAA0000000 %4 = fcmp ogt float %2, 0xBFFB333320000000 %or.cond = and i1 %3, %4 br i1 %or.cond, label %5, label %22 5: ; preds = %0 %6 = fadd double %a, 2.000000e+00 %7 = fdiv double %a, %6 %8 = fneg double %a %9 = fmul double %7, %8 %10 = fadd double %9, %a %11 = fmul double %10, %10 %12 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB372FB2FBE14B5, double %11, double 0x3ED087FFCEB2DC44) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %11, double 0x3EF3B9FF890F468C) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %11, double 0x3F17457EFD51BAF8) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %11, double 0x3F3C71C8DE3CE825) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %11, double 0x3F6249248FA4661F) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %11, double 0x3F899999999D70C4) #145 %18 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %11, double 0x3FB5555555555462) #145 %19 = fmul double %11, %18 %20 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %10, double %9) #145 %21 = fadd double %20, %a br label %__nv_log.exit 22: ; preds = %0 %23 = fadd double %a, 1.000000e+00 %24 = tail call i32 @llvm.nvvm.d2i.hi(double %23) #145 %25 = tail call i32 @llvm.nvvm.d2i.lo(double %23) #145 %26 = icmp slt i32 %24, 1048576 br i1 %26, label %27, label %31 27: ; preds = %22 %28 = fmul double %23, 0x4350000000000000 %29 = tail call i32 @llvm.nvvm.d2i.hi(double %28) #145 %30 = tail call i32 @llvm.nvvm.d2i.lo(double %28) #145 br label %31 31: ; preds = %27, %22 %.0 = phi double [ %28, %27 ], [ %23, %22 ] %ihi.i.0 = phi i32 [ %29, %27 ], [ %24, %22 ] %ilo.i.0 = phi i32 [ %30, %27 ], [ %25, %22 ] %e.i.0 = phi i32 [ -1077, %27 ], [ -1023, %22 ] %32 = add i32 %ihi.i.0, -1 %33 = icmp ult i32 %32, 2146435071 br i1 %33, label %34, label %83 34: ; preds = %31 %35 = lshr i32 %ihi.i.0, 20 %36 = add nsw i32 %e.i.0, %35 %37 = and i32 %ihi.i.0, -2146435073 %38 = or i32 %37, 1072693248 %39 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %38) #145 %40 = icmp ugt i32 %38, 1073127582 br i1 %40, label %41, label %47 41: ; preds = %34 %42 = tail call i32 @llvm.nvvm.d2i.lo(double %39) #145 %43 = tail call i32 @llvm.nvvm.d2i.hi(double %39) #145 %44 = add i32 %43, -1048576 %45 = tail call double @llvm.nvvm.lohi.i2d(i32 %42, i32 %44) #145 %46 = add nsw i32 %36, 1 br label %47 47: ; preds = %41, %34 %m.i.0 = phi double [ %45, %41 ], [ %39, %34 ] %e.i.1 = phi i32 [ %46, %41 ], [ %36, %34 ] %48 = fadd double %m.i.0, -1.000000e+00 %49 = fadd double %m.i.0, 1.000000e+00 %50 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %49) #145 %51 = fneg double %49 %52 = tail call double @llvm.nvvm.fma.rn.d(double %51, double %50, double 1.000000e+00) #145 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double %52, double %52) #145 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %50, double %50) #145 %55 = fmul double %48, %54 %56 = fadd double %55, %55 %57 = fmul double %56, %56 %58 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %57, double 0x3ED0EE258B7A8B04) #145 %59 = tail call double @llvm.nvvm.fma.rn.d(double %58, double %57, double 0x3EF3B2669F02676F) #145 %60 = tail call double @llvm.nvvm.fma.rn.d(double %59, double %57, double 0x3F1745CBA9AB0956) #145 %61 = tail call double @llvm.nvvm.fma.rn.d(double %60, double %57, double 0x3F3C71C72D1B5154) #145 %62 = tail call double @llvm.nvvm.fma.rn.d(double %61, double %57, double 0x3F624924923BE72D) #145 %63 = tail call double @llvm.nvvm.fma.rn.d(double %62, double %57, double 0x3F8999999999A3C4) #145 %64 = tail call double @llvm.nvvm.fma.rn.d(double %63, double %57, double 0x3FB5555555555554) #145 %65 = fsub double %48, %56 %66 = fmul double %65, 2.000000e+00 %67 = fneg double %56 %68 = tail call double @llvm.nvvm.fma.rn.d(double %67, double %48, double %66) #145 %69 = fmul double %54, %68 %70 = fmul double %57, %64 %71 = tail call double @llvm.nvvm.fma.rn.d(double %70, double %56, double %69) #145 %72 = xor i32 %e.i.1, -2147483648 %73 = tail call double @llvm.nvvm.lohi.i2d(i32 %72, i32 1127219200) #145 %74 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %75 = fsub double %73, %74 %76 = tail call double @llvm.nvvm.fma.rn.d(double %75, double 0x3FE62E42FEFA39EF, double %56) #145 %77 = fneg double %75 %78 = tail call double @llvm.nvvm.fma.rn.d(double %77, double 0x3FE62E42FEFA39EF, double %76) #145 %79 = fsub double %78, %56 %80 = fsub double %71, %79 %81 = tail call double @llvm.nvvm.fma.rn.d(double %75, double 0x3C7ABC9E3B39803F, double %80) #145 %82 = fadd double %76, %81 br label %__nv_log.exit 83: ; preds = %31 %84 = tail call double @llvm.nvvm.fma.rn.d(double %.0, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %85 = tail call i32 @llvm.nvvm.d2i.hi(double %.0) #145 %86 = bitcast i32 %85 to float %87 = fcmp oeq float %86, 0.000000e+00 %q.i.0 = select i1 %87, double 0xFFF0000000000000, double %84 br label %__nv_log.exit __nv_log.exit: ; preds = %83, %47, %5 %t.0 = phi double [ %21, %5 ], [ %82, %47 ], [ %q.i.0, %83 ] ret double %t.0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_exp(double %a) unnamed_addr #91 { __internal_fast_icmp_abs_lt.exit3: %0 = tail call double @llvm.nvvm.fma.rn.d(double %a, double 0x3FF71547652B82FE, double 0x4338000000000000) #145 %1 = tail call i32 @llvm.nvvm.d2i.lo(double %0) #145 %2 = tail call double @llvm.nvvm.add.rn.d(double %0, double 0xC338000000000000) #145 %3 = tail call double @llvm.nvvm.fma.rn.d(double %2, double 0xBFE62E42FEFA39EF, double %a) #145 %4 = tail call double @llvm.nvvm.fma.rn.d(double %2, double 0xBC7ABC9E3B39803F, double %3) #145 %5 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E5ADE1569CE2BDF, double %4, double 0x3E928AF3FCA213EA) #145 %6 = tail call double @llvm.nvvm.fma.rn.d(double %5, double %4, double 0x3EC71DEE62401315) #145 %7 = tail call double @llvm.nvvm.fma.rn.d(double %6, double %4, double 0x3EFA01997C89EB71) #145 %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double %4, double 0x3F2A01A014761F65) #145 %9 = tail call double @llvm.nvvm.fma.rn.d(double %8, double %4, double 0x3F56C16C1852B7AF) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double %9, double %4, double 0x3F81111111122322) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %4, double 0x3FA55555555502A1) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %4, double 0x3FC5555555555511) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %4, double 0x3FE000000000000B) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %4, double 1.000000e+00) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %4, double 1.000000e+00) #145 %16 = tail call i32 @llvm.nvvm.d2i.lo(double %15) #145 %17 = tail call i32 @llvm.nvvm.d2i.hi(double %15) #145 %18 = shl i32 %1, 20 %19 = add i32 %17, %18 %20 = tail call double @llvm.nvvm.lohi.i2d(i32 %16, i32 %19) #145 %21 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %22 = bitcast i32 %21 to float %23 = tail call float @llvm.nvvm.fabs.f(float %22) #145 %24 = fcmp olt float %23, 0x4010C46560000000 br i1 %24, label %38, label %__internal_fast_icmp_abs_lt.exit __internal_fast_icmp_abs_lt.exit: ; preds = %__internal_fast_icmp_abs_lt.exit3 %25 = fcmp olt double %a, 0.000000e+00 %26 = fadd double %a, 0x7FF0000000000000 %z.0 = select i1 %25, double 0.000000e+00, double %26 %27 = fcmp olt float %23, 0x4010E90000000000 br i1 %27, label %28, label %38 28: ; preds = %__internal_fast_icmp_abs_lt.exit %29 = sdiv i32 %1, 2 %30 = shl i32 %29, 20 %31 = add i32 %17, %30 %32 = tail call double @llvm.nvvm.lohi.i2d(i32 %16, i32 %31) #145 %33 = sub nsw i32 %1, %29 %34 = shl i32 %33, 20 %35 = add nsw i32 %34, 1072693248 %36 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %35) #145 %37 = fmul double %36, %32 br label %38 38: ; preds = %__internal_fast_icmp_abs_lt.exit, %28, %__internal_fast_icmp_abs_lt.exit3 %z.2 = phi double [ %20, %__internal_fast_icmp_abs_lt.exit3 ], [ %37, %28 ], [ %z.0, %__internal_fast_icmp_abs_lt.exit ] ret double %z.2 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.add.rn.d(double %0, double %1) #7 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_exp2(double %a) unnamed_addr #92 { __internal_fast_icmp_abs_lt.exit4: %0 = tail call double @llvm.nvvm.add.rn.d(double %a, double 0x4338000000000000) #145 %1 = tail call double @llvm.nvvm.add.rn.d(double %0, double 0xC338000000000000) #145 %2 = tail call i32 @llvm.nvvm.d2i.lo(double %0) #145 %3 = fsub double %a, %1 %4 = fmul double %3, 0x3C7ABC9E3B39803F %5 = tail call double @llvm.nvvm.fma.rn.d(double %3, double 0x3FE62E42FEFA39EF, double %4) #145 %6 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E5ADE1569CE2BDF, double %5, double 0x3E928AF3FCA213EA) #145 %7 = tail call double @llvm.nvvm.fma.rn.d(double %6, double %5, double 0x3EC71DEE62401315) #145 %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double %5, double 0x3EFA01997C89EB71) #145 %9 = tail call double @llvm.nvvm.fma.rn.d(double %8, double %5, double 0x3F2A01A014761F65) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double %9, double %5, double 0x3F56C16C1852B7AF) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %5, double 0x3F81111111122322) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %5, double 0x3FA55555555502A1) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %5, double 0x3FC5555555555511) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %5, double 0x3FE000000000000B) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %5, double 1.000000e+00) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %5, double 1.000000e+00) #145 %17 = tail call i32 @llvm.nvvm.d2i.lo(double %16) #145 %18 = tail call i32 @llvm.nvvm.d2i.hi(double %16) #145 %19 = shl i32 %2, 20 %20 = add i32 %18, %19 %21 = tail call double @llvm.nvvm.lohi.i2d(i32 %17, i32 %20) #145 %22 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %23 = bitcast i32 %22 to float %24 = tail call float @llvm.nvvm.fabs.f(float %23) #145 %25 = fcmp olt float %24, 0x4011FE0000000000 br i1 %25, label %41, label %__internal_fast_icmp_abs_lt.exit __internal_fast_icmp_abs_lt.exit: ; preds = %__internal_fast_icmp_abs_lt.exit4 %26 = icmp slt i32 %22, 0 %. = select i1 %26, double 0.000000e+00, double 0x7FF0000000000000 %27 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %28 = fcmp ugt double %27, 0x7FF0000000000000 %29 = fadd double %a, %a %z.0 = select i1 %28, double %29, double %. %30 = fcmp olt float %24, 0x4012198000000000 br i1 %30, label %31, label %41 31: ; preds = %__internal_fast_icmp_abs_lt.exit %32 = sdiv i32 %2, 2 %33 = shl i32 %32, 20 %34 = add i32 %18, %33 %35 = tail call double @llvm.nvvm.lohi.i2d(i32 %17, i32 %34) #145 %36 = sub nsw i32 %2, %32 %37 = shl i32 %36, 20 %38 = add nsw i32 %37, 1072693248 %39 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %38) #145 %40 = fmul double %39, %35 br label %41 41: ; preds = %__internal_fast_icmp_abs_lt.exit, %31, %__internal_fast_icmp_abs_lt.exit4 %z.2 = phi double [ %21, %__internal_fast_icmp_abs_lt.exit4 ], [ %40, %31 ], [ %z.0, %__internal_fast_icmp_abs_lt.exit ] ret double %z.2 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_exp10(double %a) unnamed_addr #93 { __internal_fast_icmp_abs_lt.exit4: %0 = tail call double @llvm.nvvm.fma.rn.d(double %a, double 0x400A934F0979A371, double 0x4338000000000000) #145 %1 = tail call i32 @llvm.nvvm.d2i.lo(double %0) #145 %2 = tail call double @llvm.nvvm.add.rn.d(double %0, double 0xC338000000000000) #145 %3 = tail call double @llvm.nvvm.fma.rn.d(double %2, double 0xBFD34413509F79FF, double %a) #145 %4 = tail call double @llvm.nvvm.fma.rn.d(double %2, double 0x3C49DC1DA994FD21, double %3) #145 %5 = fmul double %4, 0xBCAF48AD494EA3E9 %6 = tail call double @llvm.nvvm.fma.rn.d(double %4, double 0x40026BB1BBB55516, double %5) #145 %7 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E5ADE1569CE2BDF, double %6, double 0x3E928AF3FCA213EA) #145 %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double %6, double 0x3EC71DEE62401315) #145 %9 = tail call double @llvm.nvvm.fma.rn.d(double %8, double %6, double 0x3EFA01997C89EB71) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double %9, double %6, double 0x3F2A01A014761F65) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %6, double 0x3F56C16C1852B7AF) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %6, double 0x3F81111111122322) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %6, double 0x3FA55555555502A1) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %6, double 0x3FC5555555555511) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %6, double 0x3FE000000000000B) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %6, double 1.000000e+00) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %6, double 1.000000e+00) #145 %18 = tail call i32 @llvm.nvvm.d2i.lo(double %17) #145 %19 = tail call i32 @llvm.nvvm.d2i.hi(double %17) #145 %20 = shl i32 %1, 20 %21 = add i32 %19, %20 %22 = tail call double @llvm.nvvm.lohi.i2d(i32 %18, i32 %21) #145 %23 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %24 = bitcast i32 %23 to float %25 = tail call float @llvm.nvvm.fabs.f(float %24) #145 %26 = fcmp olt float %25, 0x400E674E20000000 br i1 %26, label %42, label %__internal_fast_icmp_abs_lt.exit __internal_fast_icmp_abs_lt.exit: ; preds = %__internal_fast_icmp_abs_lt.exit4 %27 = icmp slt i32 %23, 0 %. = select i1 %27, double 0.000000e+00, double 0x7FF0000000000000 %28 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %29 = fcmp ugt double %28, 0x7FF0000000000000 %30 = fadd double %a, %a %z.0 = select i1 %29, double %30, double %. %31 = fcmp olt float %25, 0x400E873700000000 br i1 %31, label %32, label %42 32: ; preds = %__internal_fast_icmp_abs_lt.exit %33 = sdiv i32 %1, 2 %34 = shl i32 %33, 20 %35 = add i32 %19, %34 %36 = tail call double @llvm.nvvm.lohi.i2d(i32 %18, i32 %35) #145 %37 = sub nsw i32 %1, %33 %38 = shl i32 %37, 20 %39 = add nsw i32 %38, 1072693248 %40 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %39) #145 %41 = fmul double %40, %36 br label %42 42: ; preds = %__internal_fast_icmp_abs_lt.exit, %32, %__internal_fast_icmp_abs_lt.exit4 %z.2 = phi double [ %22, %__internal_fast_icmp_abs_lt.exit4 ], [ %41, %32 ], [ %z.0, %__internal_fast_icmp_abs_lt.exit ] ret double %z.2 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_expm1(double %a) unnamed_addr #94 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = bitcast i32 %1 to float %3 = fcmp olt float %2, 0x4010C5C860000000 %4 = fcmp ogt float %2, 0xC009500000000000 %or.cond = and i1 %3, %4 br i1 %or.cond, label %__internal_expm1_scaled.exit, label %32 __internal_expm1_scaled.exit: ; preds = %0 %5 = tail call double @llvm.nvvm.fma.rn.d(double %a, double 0x3FF71547652B82FE, double 0x4338000000000000) #145 %6 = tail call i32 @llvm.nvvm.d2i.lo(double %5) #145 %7 = tail call double @llvm.nvvm.add.rn.d(double %5, double 0xC338000000000000) #145 %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double 0xBFE62E42FEFA39EF, double %a) #145 %9 = tail call double @llvm.nvvm.fma.rn.d(double %7, double 0xBC7ABC9E3B39803F, double %8) #145 %10 = shl i32 %1, 1 %11 = icmp ult i32 %10, 2142496327 %spec.select = select i1 %11, double %a, double %9 %spec.select1 = select i1 %11, i32 0, i32 %6 %12 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E21F4076ACD15B6, double %spec.select, double 0x3E5AF86D8EBD13CD) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %spec.select, double 0x3E927E5092BA033D) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %spec.select, double 0x3EC71DDE6C5F9DA1) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %spec.select, double 0x3EFA01A018D034E6) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %spec.select, double 0x3F2A01A01B3B6940) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %spec.select, double 0x3F56C16C16C1B5DD) #145 %18 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %spec.select, double 0x3F8111111110F74D) #145 %19 = tail call double @llvm.nvvm.fma.rn.d(double %18, double %spec.select, double 0x3FA555555555554D) #145 %20 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %spec.select, double 0x3FC5555555555557) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %spec.select, double 5.000000e-01) #145 %22 = fmul double %spec.select, %21 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %spec.select, double %spec.select) #145 %24 = icmp eq i32 %spec.select1, 1024 %spec.select1.op = shl i32 %spec.select1, 20 %spec.select1.op.op = add i32 %spec.select1.op, 1072693248 %25 = select i1 %24, i32 2145386496, i32 %spec.select1.op.op %26 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %25) #145 %27 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 1072693248) #145 %28 = fsub double %26, %27 %29 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %26, double %28) #145 %30 = select i1 %24, double %29, double -0.000000e+00 %t.i.0 = fadd double %29, %30 %31 = icmp eq i32 %10, 0 %t.i.1 = select i1 %31, double %spec.select, double %t.i.0 br label %37 32: ; preds = %0 %33 = icmp slt i32 %1, 0 %. = select i1 %33, double -1.000000e+00, double 0x7FF0000000000000 %34 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %35 = fcmp ugt double %34, 0x7FF0000000000000 %36 = fadd double %a, %a %t.0 = select i1 %35, double %36, double %. br label %37 37: ; preds = %32, %__internal_expm1_scaled.exit %t.1 = phi double [ %t.i.1, %__internal_expm1_scaled.exit ], [ %t.0, %32 ] ret double %t.1 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_cosh(double %a) unnamed_addr #95 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = and i32 %1, 2147483647 %3 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %4 = tail call double @llvm.nvvm.lohi.i2d(i32 %3, i32 %2) #145 %5 = tail call i32 @llvm.nvvm.d2i.hi(double %4) #145 %6 = icmp ult i32 %5, 1082536911 br i1 %6, label %7, label %36 7: ; preds = %0 %8 = tail call double @llvm.nvvm.fma.rn.d(double %4, double 0x3FF71547652B82FE, double 0x4338000000000000) #145 %9 = tail call i32 @llvm.nvvm.d2i.lo(double %8) #145 %10 = tail call double @llvm.nvvm.add.rn.d(double %8, double 0xC338000000000000) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double 0xBFE62E42FEFA39EF, double %4) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %10, double 0xBC7ABC9E3B39803F, double %11) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E5ADE1569CE2BDF, double %12, double 0x3E928AF3FCA213EA) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %12, double 0x3EC71DEE62401315) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %12, double 0x3EFA01997C89EB71) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %12, double 0x3F2A01A014761F65) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %12, double 0x3F56C16C1852B7AF) #145 %18 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %12, double 0x3F81111111122322) #145 %19 = tail call double @llvm.nvvm.fma.rn.d(double %18, double %12, double 0x3FA55555555502A1) #145 %20 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %12, double 0x3FC5555555555511) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %12, double 0x3FE000000000000B) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %12, double 1.000000e+00) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %12, double 1.000000e+00) #145 %24 = tail call i32 @llvm.nvvm.d2i.lo(double %23) #145 %25 = tail call i32 @llvm.nvvm.d2i.hi(double %23) #145 %26 = shl i32 %9, 20 %27 = add i32 %26, -2097152 %28 = add i32 %27, %25 %29 = tail call double @llvm.nvvm.lohi.i2d(i32 %24, i32 %28) #145 %30 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %29) #145 %31 = fneg double %29 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %30, double 1.000000e+00) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %32, double %32) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %30, double %30) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %34, double 6.250000e-02, double %29) #145 br label %38 36: ; preds = %0 %37 = fcmp ole double %a, 0x7FF0000000000000 %.0 = select i1 %37, double 0x7FF0000000000000, double %a br label %38 38: ; preds = %36, %7 %.1 = phi double [ %35, %7 ], [ %.0, %36 ] %39 = fadd double %.1, %.1 ret double %39 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_sinh(double %a) unnamed_addr #96 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = and i32 %1, 2147483647 %3 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %4 = tail call double @llvm.nvvm.lohi.i2d(i32 %3, i32 %2) #145 %5 = icmp ult i32 %2, 1072693248 br i1 %5, label %6, label %__internal_expm1_scaled.exit 6: ; preds = %0 %7 = fmul double %4, %4 %8 = tail call double @llvm.nvvm.fma.rn.d(double 0x3D6B4C75AB274C53, double %7, double 0x3DE611A561D87DEF) #145 %9 = tail call double @llvm.nvvm.fma.rn.d(double %8, double %7, double 0x3E5AE64671B18F5C) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double %9, double %7, double 0x3EC71DE3A465B1E4) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %7, double 0x3F2A01A01A02899D) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %7, double 0x3F811111111110A6) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %7, double 0x3FC5555555555556) #145 %14 = fmul double %7, %13 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %4, double %4) #145 br label %49 __internal_expm1_scaled.exit: ; preds = %0 %16 = tail call i32 @llvm.nvvm.d2i.hi(double %4) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %4, double 0x3FF71547652B82FE, double 0x4338000000000000) #145 %18 = tail call i32 @llvm.nvvm.d2i.lo(double %17) #145 %19 = add nsw i32 %18, -1 %20 = tail call double @llvm.nvvm.add.rn.d(double %17, double 0xC338000000000000) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double 0xBFE62E42FEFA39EF, double %4) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double %20, double 0xBC7ABC9E3B39803F, double %21) #145 %23 = shl i32 %16, 1 %24 = icmp ult i32 %23, 2142496327 %spec.select = select i1 %24, double %4, double %22 %spec.select1 = select i1 %24, i32 0, i32 %19 %25 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E21F4076ACD15B6, double %spec.select, double 0x3E5AF86D8EBD13CD) #145 %26 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %spec.select, double 0x3E927E5092BA033D) #145 %27 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %spec.select, double 0x3EC71DDE6C5F9DA1) #145 %28 = tail call double @llvm.nvvm.fma.rn.d(double %27, double %spec.select, double 0x3EFA01A018D034E6) #145 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %spec.select, double 0x3F2A01A01B3B6940) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %spec.select, double 0x3F56C16C16C1B5DD) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %spec.select, double 0x3F8111111110F74D) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %spec.select, double 0x3FA555555555554D) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %spec.select, double 0x3FC5555555555557) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %spec.select, double 5.000000e-01) #145 %35 = fmul double %spec.select, %34 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %spec.select, double %spec.select) #145 %37 = icmp eq i32 %spec.select1, 1024 %spec.select1.op = shl i32 %spec.select1, 20 %spec.select1.op.op = add i32 %spec.select1.op, 1072693248 %38 = select i1 %37, i32 2145386496, i32 %spec.select1.op.op %39 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %38) #145 %40 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 1071644672) #145 %41 = fsub double %39, %40 %42 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %39, double %41) #145 %43 = select i1 %37, double %42, double -0.000000e+00 %t.i.0 = fadd double %42, %43 %44 = icmp eq i32 %23, 0 %t.i.1 = select i1 %44, double %spec.select, double %t.i.0 %45 = tail call double @llvm.nvvm.fma.rn.d(double 2.000000e+00, double %t.i.1, double 1.000000e+00) #145 %46 = fdiv double %t.i.1, %45 %47 = fadd double %t.i.1, %46 %48 = fcmp oge double %4, 0x408633CE8FB9F87E %z.0 = select i1 %48, double 0x7FF0000000000000, double %47 br label %49 49: ; preds = %__internal_expm1_scaled.exit, %6 %z.1 = phi double [ %15, %6 ], [ %z.0, %__internal_expm1_scaled.exit ] %50 = tail call i32 @llvm.nvvm.d2i.lo(double %z.1) #145 %51 = tail call i32 @llvm.nvvm.d2i.hi(double %z.1) #145 %52 = and i32 %1, -2147483648 %53 = or i32 %51, %52 %54 = tail call double @llvm.nvvm.lohi.i2d(i32 %50, i32 %53) #145 ret double %54 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_tanh(double %a) unnamed_addr #97 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = and i32 %1, 2147483647 %3 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %4 = tail call double @llvm.nvvm.lohi.i2d(i32 %3, i32 %2) #145 %5 = fcmp ult double %4, 0x3FE4F92224DD2F1A br i1 %5, label %43, label %__internal_mexpm1.exit __internal_mexpm1.exit: ; preds = %0 %6 = fmul double %4, 2.000000e+00 %7 = fptrunc double %6 to float %8 = fmul float %7, 0x3FF7154760000000 %9 = tail call float @llvm.nvvm.round.f(float %8) #145 %10 = fpext float %9 to double %11 = fneg double %10 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double 0x3FE62E42FEFA39EF, double %6) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E5AE904A4741B81, double %12, double 0x3E928A27F89B6999) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %12, double 0x3EC71DE715FF7E07) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %12, double 0x3EFA019A6B0AC45A) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %12, double 0x3F2A01A017EED94F) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %12, double 0x3F56C16C17F2A71B) #145 %18 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %12, double 0x3F811111111173C4) #145 %19 = tail call double @llvm.nvvm.fma.rn.d(double %18, double %12, double 0x3FA555555555211A) #145 %20 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %12, double 0x3FC5555555555540) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %12, double 0x3FE0000000000005) #145 %22 = fmul double %12, %21 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %12, double %12) #145 %24 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %9) #145 %25 = fpext float %24 to double %26 = fsub double 1.000000e+00, %25 %27 = fneg double %23 %28 = tail call double @llvm.nvvm.fma.rn.d(double %27, double %25, double %26) #145 %29 = fsub double 2.000000e+00, %28 %30 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %29) #145 %31 = fneg double %29 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %30, double 1.000000e+00) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %32, double %32) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %30, double %30) #145 %35 = fneg double %34 %36 = tail call double @llvm.nvvm.fma.rn.d(double 2.000000e+00, double %35, double 1.000000e+00) #145 %37 = icmp ugt i32 %2, 1077088193 %r.0 = select i1 %37, double 1.000000e+00, double %36 %38 = tail call i32 @llvm.nvvm.d2i.lo(double %r.0) #145 %39 = tail call i32 @llvm.nvvm.d2i.hi(double %r.0) #145 %40 = and i32 %1, -2147483648 %41 = or i32 %39, %40 %42 = tail call double @llvm.nvvm.lohi.i2d(i32 %38, i32 %41) #145 br label %57 43: ; preds = %0 %44 = fmul double %a, %a %45 = tail call double @llvm.nvvm.fma.rn.d(double 0xBEF0BC46E2F5E964, double %44, double 0x3F14359F420AFC3D) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %44, double 0xBF2DF9F0728C5D84) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %44, double 0x3F4337D1CEC4F033) #145 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %44, double 0xBF57D6E9674335B3) #145 %49 = tail call double @llvm.nvvm.fma.rn.d(double %48, double %44, double 0x3F6D6D000D7AAD3D) #145 %50 = tail call double @llvm.nvvm.fma.rn.d(double %49, double %44, double 0xBF8226E1F3CF1EF5) #145 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %44, double 0x3F9664F47EC0C8CF) #145 %52 = tail call double @llvm.nvvm.fma.rn.d(double %51, double %44, double 0xBFABA1BA1B80AB40) #145 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double %44, double 0x3FC111111110FA4A) #145 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %44, double 0xBFD5555555555550) #145 %55 = tail call double @llvm.nvvm.fma.rn.d(double %54, double %44, double 0.000000e+00) #145 %56 = tail call double @llvm.nvvm.fma.rn.d(double %55, double %a, double %a) #145 br label %57 57: ; preds = %43, %__internal_mexpm1.exit %r.1 = phi double [ %42, %__internal_mexpm1.exit ], [ %56, %43 ] ret double %r.1 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_atan2(double %a, double %b) unnamed_addr #98 { %1 = tail call double @llvm.nvvm.fabs.d(double %b) #145 %2 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %3 = fcmp oeq double %1, 0.000000e+00 %4 = fcmp oeq double %2, 0.000000e+00 %or.cond = select i1 %3, i1 %4, i1 false br i1 %or.cond, label %5, label %15 5: ; preds = %0 %6 = tail call i32 @llvm.nvvm.d2i.hi(double %b) #145 %7 = icmp slt i32 %6, 0 %8 = select i1 %7, double 0x400921FB54442D18, double 0.000000e+00 %9 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %10 = tail call i32 @llvm.nvvm.d2i.lo(double %8) #145 %11 = tail call i32 @llvm.nvvm.d2i.hi(double %8) #145 %12 = and i32 %9, -2147483648 %13 = or i32 %11, %12 %14 = tail call double @llvm.nvvm.lohi.i2d(i32 %10, i32 %13) #145 br label %66 15: ; preds = %0 %16 = fcmp oeq double %1, 0x7FF0000000000000 %17 = fcmp oeq double %2, 0x7FF0000000000000 %or.cond1 = select i1 %16, i1 %17, i1 false br i1 %or.cond1, label %18, label %28 18: ; preds = %15 %19 = tail call i32 @llvm.nvvm.d2i.hi(double %b) #145 %20 = icmp slt i32 %19, 0 %21 = select i1 %20, double 0x4002D97C7F3321D2, double 0x3FE921FB54442D18 %22 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %23 = tail call i32 @llvm.nvvm.d2i.lo(double %21) #145 %24 = tail call i32 @llvm.nvvm.d2i.hi(double %21) #145 %25 = and i32 %22, -2147483648 %26 = or i32 %24, %25 %27 = tail call double @llvm.nvvm.lohi.i2d(i32 %23, i32 %26) #145 br label %66 28: ; preds = %15 %29 = tail call double @llvm.nvvm.fmax.d(double %2, double %1) #145 %30 = tail call double @llvm.nvvm.fmin.d(double %2, double %1) #145 %31 = fdiv double %30, %29 %32 = fmul double %31, %31 %33 = tail call double @llvm.nvvm.fma.rn.d(double 0xBEF53E1D2A25FF7E, double %32, double 0x3F2D3B63DBB65B49) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %32, double 0xBF5312788DDE082E) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %32, double 0x3F6F9690C8249315) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %32, double 0xBF82CF5AABC7CF0D) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %32, double 0x3F9162B0B2A3BFDE) #145 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %32, double 0xBF9A7256FEB6FC6B) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %32, double 0x3FA171560CE4A489) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %39, double %32, double 0xBFA4F44D841450E4) #145 %41 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %32, double 0x3FA7EE3D3F36BB95) #145 %42 = tail call double @llvm.nvvm.fma.rn.d(double %41, double %32, double 0xBFAAD32AE04A9FD1) #145 %43 = tail call double @llvm.nvvm.fma.rn.d(double %42, double %32, double 0x3FAE17813D66954F) #145 %44 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %32, double 0xBFB11089CA9A5BCD) #145 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %32, double 0x3FB3B12B2DB51738) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %32, double 0xBFB745D022F8DC5C) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %32, double 0x3FBC71C709DFE927) #145 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %32, double 0xBFC2492491FA1744) #145 %49 = tail call double @llvm.nvvm.fma.rn.d(double %48, double %32, double 0x3FC99999999840D2) #145 %50 = tail call double @llvm.nvvm.fma.rn.d(double %49, double %32, double 0xBFD555555555544C) #145 %51 = fmul double %32, %50 %52 = tail call double @llvm.nvvm.fma.rn.d(double %51, double %31, double %31) #145 %53 = fcmp ogt double %2, %1 %54 = fsub double 0x3FF921FB54442D18, %52 %t0.0 = select i1 %53, double %54, double %52 %55 = tail call i32 @llvm.nvvm.d2i.hi(double %b) #145 %56 = icmp slt i32 %55, 0 %57 = fsub double 0x400921FB54442D18, %t0.0 %t0.1 = select i1 %56, double %57, double %t0.0 %58 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %59 = tail call i32 @llvm.nvvm.d2i.lo(double %t0.1) #145 %60 = tail call i32 @llvm.nvvm.d2i.hi(double %t0.1) #145 %61 = and i32 %58, -2147483648 %62 = or i32 %60, %61 %63 = tail call double @llvm.nvvm.lohi.i2d(i32 %59, i32 %62) #145 %64 = tail call double @llvm.nvvm.add.rn.d(double %1, double %2) #145 %65 = fcmp ole double %64, 0x7FF0000000000000 %t0.2 = select i1 %65, double %63, double %64 br label %66 66: ; preds = %18, %28, %5 %t0.4 = phi double [ %14, %5 ], [ %27, %18 ], [ %t0.2, %28 ] ret double %t0.4 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_atan(double %a) unnamed_addr #99 { %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = fcmp ogt double %1, 1.000000e+00 br i1 %2, label %3, label %10 3: ; preds = %0 %4 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #145 %5 = fneg double %1 %6 = tail call double @llvm.nvvm.fma.rn.d(double %5, double %4, double 1.000000e+00) #145 %7 = tail call double @llvm.nvvm.fma.rn.d(double %6, double %6, double %6) #145 %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double %4, double %4) #145 %9 = fcmp oeq double %1, 0x7FF0000000000000 %t1.0 = select i1 %9, double 0.000000e+00, double %8 br label %10 10: ; preds = %3, %0 %t1.1 = phi double [ %t1.0, %3 ], [ %1, %0 ] %11 = fmul double %t1.1, %t1.1 %12 = tail call double @llvm.nvvm.fma.rn.d(double 0xBEF53E1D2A25FF7E, double %11, double 0x3F2D3B63DBB65B49) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %11, double 0xBF5312788DDE082E) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %11, double 0x3F6F9690C8249315) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %11, double 0xBF82CF5AABC7CF0D) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %11, double 0x3F9162B0B2A3BFDE) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %11, double 0xBF9A7256FEB6FC6B) #145 %18 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %11, double 0x3FA171560CE4A489) #145 %19 = tail call double @llvm.nvvm.fma.rn.d(double %18, double %11, double 0xBFA4F44D841450E4) #145 %20 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %11, double 0x3FA7EE3D3F36BB95) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %11, double 0xBFAAD32AE04A9FD1) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %11, double 0x3FAE17813D66954F) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %11, double 0xBFB11089CA9A5BCD) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %11, double 0x3FB3B12B2DB51738) #145 %25 = tail call double @llvm.nvvm.fma.rn.d(double %24, double %11, double 0xBFB745D022F8DC5C) #145 %26 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %11, double 0x3FBC71C709DFE927) #145 %27 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %11, double 0xBFC2492491FA1744) #145 %28 = tail call double @llvm.nvvm.fma.rn.d(double %27, double %11, double 0x3FC99999999840D2) #145 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %11, double 0xBFD555555555544C) #145 %30 = fmul double %11, %29 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %t1.1, double %t1.1) #145 %32 = fsub double 0x3FF921FB54442D18, %31 %t1.2 = select i1 %2, double %32, double %31 %33 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %34 = tail call i32 @llvm.nvvm.d2i.lo(double %t1.2) #145 %35 = tail call i32 @llvm.nvvm.d2i.hi(double %t1.2) #145 %36 = and i32 %33, -2147483648 %37 = or i32 %35, %36 %38 = tail call double @llvm.nvvm.lohi.i2d(i32 %34, i32 %37) #145 ret double %38 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_asin(double %a) unnamed_addr #100 { __nv_fabsf.exit: %0 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %1 = bitcast i32 %0 to float %2 = tail call float @llvm.nvvm.fabs.f(float %1) #145 %3 = fcmp olt float %2, 0x3FFC4CCCC0000000 br i1 %3, label %4, label %20 4: ; preds = %__nv_fabsf.exit %5 = fmul double %a, %a %6 = tail call double @llvm.nvvm.fma.rn.d(double 0x3FB0066BDC1895E9, double %5, double 0xBFB3823B180754AF) #145 %7 = tail call double @llvm.nvvm.fma.rn.d(double %6, double %5, double 0x3FB11E52CC2F79AE) #145 %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double %5, double 0xBF924EAF3526861B) #145 %9 = tail call double @llvm.nvvm.fma.rn.d(double %8, double %5, double 0x3F91DF02A31E6CB7) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double %9, double %5, double 0x3F847D18B0EEC6CC) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %5, double 0x3F8D0AF961BA53B0) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %5, double 0x3F91BF7734CF1C48) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %5, double 0x3F96E91483144EF7) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %5, double 0x3F9F1C6E0A4F9F81) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %5, double 0x3FA6DB6DC27FA92B) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %5, double 0x3FB333333320F91B) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %5, double 0x3FC5555555555F4D) #145 %18 = fmul double %5, %17 %19 = tail call double @llvm.nvvm.fma.rn.d(double %18, double %a, double %a) #145 br label %63 20: ; preds = %__nv_fabsf.exit %21 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double -5.000000e-01, double %21, double 5.000000e-01) #145 %23 = tail call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %22) #146, !srcloc !22 %24 = tail call i32 @llvm.nvvm.d2i.lo(double %23) #145 %25 = tail call i32 @llvm.nvvm.d2i.hi(double %23) #145 %26 = add i32 %25, -1048576 %27 = tail call double @llvm.nvvm.lohi.i2d(i32 %24, i32 %26) #145 %28 = fmul double %22, %23 %29 = fneg double %28 %30 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %29, double %22) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %27, double %28) #145 %32 = fneg double %31 %33 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %32, double 1.000000e+00) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %27, double %27) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %32, double %22) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %34, double %31) #145 %37 = tail call i32 @llvm.nvvm.d2i.hi(double %22) #145 %38 = icmp slt i32 %37, 0 %spec.select = select i1 %38, double 0xFFF8000000000000, double %36 %39 = fcmp one double %22, 0.000000e+00 %t0.1 = select i1 %39, double %spec.select, double %22 %40 = tail call double @llvm.nvvm.fma.rn.d(double 0x3FB0066BDC1895E9, double %22, double 0xBFB3823B180754AF) #145 %41 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %22, double 0x3FB11E52CC2F79AE) #145 %42 = tail call double @llvm.nvvm.fma.rn.d(double %41, double %22, double 0xBF924EAF3526861B) #145 %43 = tail call double @llvm.nvvm.fma.rn.d(double %42, double %22, double 0x3F91DF02A31E6CB7) #145 %44 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %22, double 0x3F847D18B0EEC6CC) #145 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %22, double 0x3F8D0AF961BA53B0) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %22, double 0x3F91BF7734CF1C48) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %22, double 0x3F96E91483144EF7) #145 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %22, double 0x3F9F1C6E0A4F9F81) #145 %49 = tail call double @llvm.nvvm.fma.rn.d(double %48, double %22, double 0x3FA6DB6DC27FA92B) #145 %50 = tail call double @llvm.nvvm.fma.rn.d(double %49, double %22, double 0x3FB333333320F91B) #145 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %22, double 0x3FC5555555555F4D) #145 %52 = fmul double %22, %51 %53 = fmul double %t0.1, -2.000000e+00 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %52, double 0x3C91A62633145C07) #145 %55 = fadd double %53, 0x3FE921FB54442D18 %56 = fadd double %55, %54 %57 = fadd double %56, 0x3FE921FB54442D18 %58 = tail call i32 @llvm.nvvm.d2i.lo(double %57) #145 %59 = tail call i32 @llvm.nvvm.d2i.hi(double %57) #145 %60 = and i32 %0, -2147483648 %61 = or i32 %59, %60 %62 = tail call double @llvm.nvvm.lohi.i2d(i32 %58, i32 %61) #145 br label %63 63: ; preds = %20, %4 %t1.0 = phi double [ %19, %4 ], [ %62, %20 ] ret double %t1.0 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_acos(double %a) unnamed_addr #101 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %3 = tail call i32 @llvm.nvvm.d2i.hi(double %2) #145 %4 = icmp slt i32 %3, 1071801958 br i1 %4, label %5, label %29 5: ; preds = %0 %6 = fmul double %2, %2 %7 = tail call double @llvm.nvvm.fma.rn.d(double 0x3FB0066BDC1895E9, double %6, double 0xBFB3823B180754AF) #145 %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double %6, double 0x3FB11E52CC2F79AE) #145 %9 = tail call double @llvm.nvvm.fma.rn.d(double %8, double %6, double 0xBF924EAF3526861B) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double %9, double %6, double 0x3F91DF02A31E6CB7) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %6, double 0x3F847D18B0EEC6CC) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %6, double 0x3F8D0AF961BA53B0) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %6, double 0x3F91BF7734CF1C48) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %6, double 0x3F96E91483144EF7) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %6, double 0x3F9F1C6E0A4F9F81) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %6, double 0x3FA6DB6DC27FA92B) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %6, double 0x3FB333333320F91B) #145 %18 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %6, double 0x3FC5555555555F4D) #145 %19 = fmul double %6, %18 %20 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %2, double %2) #145 %21 = icmp slt i32 %1, 0 br i1 %21, label %22, label %25 22: ; preds = %5 %23 = tail call double @llvm.nvvm.add.rn.d(double %20, double 0x3C91A62633145C07) #145 %24 = tail call double @llvm.nvvm.add.rn.d(double 0x3FF921FB54442D18, double %23) #145 br label %75 25: ; preds = %5 %26 = tail call double @llvm.nvvm.add.rn.d(double %20, double 0xBC91A62633145C07) #145 %27 = fneg double %26 %28 = tail call double @llvm.nvvm.add.rn.d(double 0x3FF921FB54442D18, double %27) #145 br label %75 29: ; preds = %0 %30 = fsub double 1.000000e+00, %2 %31 = tail call i32 @llvm.nvvm.d2i.lo(double %30) #145 %32 = tail call i32 @llvm.nvvm.d2i.hi(double %30) #145 %33 = add i32 %32, -1048576 %34 = tail call double @llvm.nvvm.lohi.i2d(i32 %31, i32 %33) #145 %35 = tail call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %34) #146, !srcloc !22 %36 = tail call i32 @llvm.nvvm.d2i.lo(double %35) #145 %37 = tail call i32 @llvm.nvvm.d2i.hi(double %35) #145 %38 = add i32 %37, -1048576 %39 = tail call double @llvm.nvvm.lohi.i2d(i32 %36, i32 %38) #145 %40 = fmul double %34, %35 %41 = fneg double %40 %42 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %41, double %34) #145 %43 = tail call double @llvm.nvvm.fma.rn.d(double %42, double %39, double %40) #145 %44 = fneg double %43 %45 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %44, double 1.000000e+00) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %39, double %39) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %44, double %34) #145 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %46, double %43) #145 %49 = tail call i32 @llvm.nvvm.d2i.lo(double %48) #145 %50 = tail call i32 @llvm.nvvm.d2i.hi(double %48) #145 %51 = add i32 %50, 1048576 %52 = tail call double @llvm.nvvm.lohi.i2d(i32 %49, i32 %51) #145 %53 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EC715B371155F70, double %30, double 0xBEBAC2FE66FAAC4B) #145 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %30, double 0x3ED9A9B88EFCD9B8) #145 %55 = tail call double @llvm.nvvm.fma.rn.d(double %54, double %30, double 0x3EDD0F40A8A0C4C3) #145 %56 = tail call double @llvm.nvvm.fma.rn.d(double %55, double %30, double 0x3EF46D4CFA9E0E1F) #145 %57 = tail call double @llvm.nvvm.fma.rn.d(double %56, double %30, double 0x3F079C168D1E2422) #145 %58 = tail call double @llvm.nvvm.fma.rn.d(double %57, double %30, double 0x3F1C9A88C3BCA540) #145 %59 = tail call double @llvm.nvvm.fma.rn.d(double %58, double %30, double 0x3F31C4E64BD476DF) #145 %60 = tail call double @llvm.nvvm.fma.rn.d(double %59, double %30, double 0x3F46E8BA60009C8F) #145 %61 = tail call double @llvm.nvvm.fma.rn.d(double %60, double %30, double 0x3F5F1C71C62B05A2) #145 %62 = tail call double @llvm.nvvm.fma.rn.d(double %61, double %30, double 0x3F76DB6DB6DC9F2C) #145 %63 = tail call double @llvm.nvvm.fma.rn.d(double %62, double %30, double 0x3F9333333333329C) #145 %64 = tail call double @llvm.nvvm.fma.rn.d(double %63, double %30, double 0x3FB5555555555555) #145 %65 = icmp slt i32 %32, 1 %66 = tail call double @llvm.nvvm.mul.rn.d(double %2, double 0.000000e+00) #145 %67 = fmul double %30, %64 %68 = tail call double @llvm.nvvm.fma.rn.d(double %67, double %52, double %52) #145 %t0.1 = select i1 %65, double %66, double %68 %69 = icmp slt i32 %32, 0 %70 = tail call double @llvm.nvvm.mul.rn.d(double %t0.1, double 0x7FF0000000000000) #145 %t0.2 = select i1 %69, double %70, double %t0.1 %71 = icmp slt i32 %1, 0 %72 = tail call double @llvm.nvvm.add.rn.d(double %t0.2, double 0xBCA1A62633145C07) #145 %73 = fneg double %72 %74 = tail call double @llvm.nvvm.add.rn.d(double 0x400921FB54442D18, double %73) #145 %t0.3 = select i1 %71, double %74, double %t0.2 br label %75 75: ; preds = %22, %25, %29 %t0.4 = phi double [ %t0.3, %29 ], [ %24, %22 ], [ %28, %25 ] ret double %t0.4 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_acosh(double %a) unnamed_addr #102 { %1 = fadd double %a, -1.000000e+00 %2 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %3 = icmp ugt i32 %2, 1127219199 br i1 %3, label %4, label %69 4: ; preds = %0 %5 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %6 = icmp slt i32 %2, 1048576 br i1 %6, label %7, label %11 7: ; preds = %4 %8 = fmul double %1, 0x4350000000000000 %9 = tail call i32 @llvm.nvvm.d2i.hi(double %8) #145 %10 = tail call i32 @llvm.nvvm.d2i.lo(double %8) #145 br label %11 11: ; preds = %7, %4 %.01 = phi double [ %8, %7 ], [ %1, %4 ] %ihi.i.0 = phi i32 [ %9, %7 ], [ %2, %4 ] %ilo.i.0 = phi i32 [ %10, %7 ], [ %5, %4 ] %e.i.0 = phi i32 [ -1077, %7 ], [ -1023, %4 ] %12 = add i32 %ihi.i.0, -1 %13 = icmp ult i32 %12, 2146435071 br i1 %13, label %14, label %63 14: ; preds = %11 %15 = lshr i32 %ihi.i.0, 20 %16 = add nsw i32 %e.i.0, %15 %17 = and i32 %ihi.i.0, -2146435073 %18 = or i32 %17, 1072693248 %19 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %18) #145 %20 = icmp ugt i32 %18, 1073127582 br i1 %20, label %21, label %27 21: ; preds = %14 %22 = tail call i32 @llvm.nvvm.d2i.lo(double %19) #145 %23 = tail call i32 @llvm.nvvm.d2i.hi(double %19) #145 %24 = add i32 %23, -1048576 %25 = tail call double @llvm.nvvm.lohi.i2d(i32 %22, i32 %24) #145 %26 = add nsw i32 %16, 1 br label %27 27: ; preds = %21, %14 %m.i.0 = phi double [ %25, %21 ], [ %19, %14 ] %e.i.1 = phi i32 [ %26, %21 ], [ %16, %14 ] %28 = fadd double %m.i.0, -1.000000e+00 %29 = fadd double %m.i.0, 1.000000e+00 %30 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %29) #145 %31 = fneg double %29 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %30, double 1.000000e+00) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %32, double %32) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %30, double %30) #145 %35 = fmul double %28, %34 %36 = fadd double %35, %35 %37 = fmul double %36, %36 %38 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %37, double 0x3ED0EE258B7A8B04) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %37, double 0x3EF3B2669F02676F) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %39, double %37, double 0x3F1745CBA9AB0956) #145 %41 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %37, double 0x3F3C71C72D1B5154) #145 %42 = tail call double @llvm.nvvm.fma.rn.d(double %41, double %37, double 0x3F624924923BE72D) #145 %43 = tail call double @llvm.nvvm.fma.rn.d(double %42, double %37, double 0x3F8999999999A3C4) #145 %44 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %37, double 0x3FB5555555555554) #145 %45 = fsub double %28, %36 %46 = fmul double %45, 2.000000e+00 %47 = fneg double %36 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %28, double %46) #145 %49 = fmul double %34, %48 %50 = fmul double %37, %44 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %36, double %49) #145 %52 = xor i32 %e.i.1, -2147483648 %53 = tail call double @llvm.nvvm.lohi.i2d(i32 %52, i32 1127219200) #145 %54 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %55 = fsub double %53, %54 %56 = tail call double @llvm.nvvm.fma.rn.d(double %55, double 0x3FE62E42FEFA39EF, double %36) #145 %57 = fneg double %55 %58 = tail call double @llvm.nvvm.fma.rn.d(double %57, double 0x3FE62E42FEFA39EF, double %56) #145 %59 = fsub double %58, %36 %60 = fsub double %51, %59 %61 = tail call double @llvm.nvvm.fma.rn.d(double %55, double 0x3C7ABC9E3B39803F, double %60) #145 %62 = fadd double %56, %61 br label %__nv_log.exit 63: ; preds = %11 %64 = tail call double @llvm.nvvm.fma.rn.d(double %.01, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %65 = tail call i32 @llvm.nvvm.d2i.hi(double %.01) #145 %66 = bitcast i32 %65 to float %67 = fcmp oeq float %66, 0.000000e+00 %q.i.0 = select i1 %67, double 0xFFF0000000000000, double %64 br label %__nv_log.exit __nv_log.exit: ; preds = %27, %63 %q.i.1 = phi double [ %62, %27 ], [ %q.i.0, %63 ] %68 = fadd double %q.i.1, 0x3FE62E42FEFA39EF br label %174 69: ; preds = %0 %70 = tail call double @llvm.nvvm.fma.rn.d(double %a, double %1, double %1) #145 %71 = tail call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %70) #146, !srcloc !22 %72 = tail call i32 @llvm.nvvm.d2i.lo(double %71) #145 %73 = tail call i32 @llvm.nvvm.d2i.hi(double %71) #145 %74 = add i32 %73, -1048576 %75 = tail call double @llvm.nvvm.lohi.i2d(i32 %72, i32 %74) #145 %76 = fmul double %70, %71 %77 = fneg double %76 %78 = tail call double @llvm.nvvm.fma.rn.d(double %76, double %77, double %70) #145 %79 = tail call double @llvm.nvvm.fma.rn.d(double %78, double %75, double %76) #145 %80 = fneg double %79 %81 = tail call double @llvm.nvvm.fma.rn.d(double %71, double %80, double 1.000000e+00) #145 %82 = tail call double @llvm.nvvm.fma.rn.d(double %81, double %75, double %75) #145 %83 = tail call double @llvm.nvvm.fma.rn.d(double %79, double %80, double %70) #145 %84 = tail call double @llvm.nvvm.fma.rn.d(double %83, double %82, double %79) #145 %85 = fadd double %1, %84 %86 = tail call i32 @llvm.nvvm.d2i.hi(double %85) #145 %87 = bitcast i32 %86 to float %88 = fcmp olt float %87, 0x3FFCAAAAA0000000 %89 = fcmp ogt float %87, 0xBFFB333320000000 %or.cond1 = and i1 %88, %89 br i1 %or.cond1, label %90, label %107 90: ; preds = %69 %91 = fadd double %85, 2.000000e+00 %92 = fdiv double %85, %91 %93 = fneg double %85 %94 = fmul double %92, %93 %95 = fadd double %85, %94 %96 = fmul double %95, %95 %97 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB372FB2FBE14B5, double %96, double 0x3ED087FFCEB2DC44) #145 %98 = tail call double @llvm.nvvm.fma.rn.d(double %97, double %96, double 0x3EF3B9FF890F468C) #145 %99 = tail call double @llvm.nvvm.fma.rn.d(double %98, double %96, double 0x3F17457EFD51BAF8) #145 %100 = tail call double @llvm.nvvm.fma.rn.d(double %99, double %96, double 0x3F3C71C8DE3CE825) #145 %101 = tail call double @llvm.nvvm.fma.rn.d(double %100, double %96, double 0x3F6249248FA4661F) #145 %102 = tail call double @llvm.nvvm.fma.rn.d(double %101, double %96, double 0x3F899999999D70C4) #145 %103 = tail call double @llvm.nvvm.fma.rn.d(double %102, double %96, double 0x3FB5555555555462) #145 %104 = fmul double %96, %103 %105 = tail call double @llvm.nvvm.fma.rn.d(double %104, double %95, double %94) #145 %106 = fadd double %85, %105 br label %__nv_log1p.exit 107: ; preds = %69 %108 = fadd double %85, 1.000000e+00 %109 = tail call i32 @llvm.nvvm.d2i.hi(double %108) #145 %110 = tail call i32 @llvm.nvvm.d2i.lo(double %108) #145 %111 = icmp slt i32 %109, 1048576 br i1 %111, label %112, label %116 112: ; preds = %107 %113 = fmul double %108, 0x4350000000000000 %114 = tail call i32 @llvm.nvvm.d2i.hi(double %113) #145 %115 = tail call i32 @llvm.nvvm.d2i.lo(double %113) #145 br label %116 116: ; preds = %112, %107 %.0 = phi double [ %113, %112 ], [ %108, %107 ] %ihi.i.i.0 = phi i32 [ %114, %112 ], [ %109, %107 ] %ilo.i.i.0 = phi i32 [ %115, %112 ], [ %110, %107 ] %e.i.i.0 = phi i32 [ -1077, %112 ], [ -1023, %107 ] %117 = add i32 %ihi.i.i.0, -1 %118 = icmp ult i32 %117, 2146435071 br i1 %118, label %119, label %168 119: ; preds = %116 %120 = lshr i32 %ihi.i.i.0, 20 %121 = add nsw i32 %e.i.i.0, %120 %122 = and i32 %ihi.i.i.0, -2146435073 %123 = or i32 %122, 1072693248 %124 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i.0, i32 %123) #145 %125 = icmp ugt i32 %123, 1073127582 br i1 %125, label %126, label %132 126: ; preds = %119 %127 = tail call i32 @llvm.nvvm.d2i.lo(double %124) #145 %128 = tail call i32 @llvm.nvvm.d2i.hi(double %124) #145 %129 = add i32 %128, -1048576 %130 = tail call double @llvm.nvvm.lohi.i2d(i32 %127, i32 %129) #145 %131 = add nsw i32 %121, 1 br label %132 132: ; preds = %126, %119 %m.i.i.0 = phi double [ %130, %126 ], [ %124, %119 ] %e.i.i.1 = phi i32 [ %131, %126 ], [ %121, %119 ] %133 = fadd double %m.i.i.0, -1.000000e+00 %134 = fadd double %m.i.i.0, 1.000000e+00 %135 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %134) #145 %136 = fneg double %134 %137 = tail call double @llvm.nvvm.fma.rn.d(double %136, double %135, double 1.000000e+00) #145 %138 = tail call double @llvm.nvvm.fma.rn.d(double %137, double %137, double %137) #145 %139 = tail call double @llvm.nvvm.fma.rn.d(double %138, double %135, double %135) #145 %140 = fmul double %133, %139 %141 = fadd double %140, %140 %142 = fmul double %141, %141 %143 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %142, double 0x3ED0EE258B7A8B04) #145 %144 = tail call double @llvm.nvvm.fma.rn.d(double %143, double %142, double 0x3EF3B2669F02676F) #145 %145 = tail call double @llvm.nvvm.fma.rn.d(double %144, double %142, double 0x3F1745CBA9AB0956) #145 %146 = tail call double @llvm.nvvm.fma.rn.d(double %145, double %142, double 0x3F3C71C72D1B5154) #145 %147 = tail call double @llvm.nvvm.fma.rn.d(double %146, double %142, double 0x3F624924923BE72D) #145 %148 = tail call double @llvm.nvvm.fma.rn.d(double %147, double %142, double 0x3F8999999999A3C4) #145 %149 = tail call double @llvm.nvvm.fma.rn.d(double %148, double %142, double 0x3FB5555555555554) #145 %150 = fsub double %133, %141 %151 = fmul double %150, 2.000000e+00 %152 = fneg double %141 %153 = tail call double @llvm.nvvm.fma.rn.d(double %152, double %133, double %151) #145 %154 = fmul double %139, %153 %155 = fmul double %142, %149 %156 = tail call double @llvm.nvvm.fma.rn.d(double %155, double %141, double %154) #145 %157 = xor i32 %e.i.i.1, -2147483648 %158 = tail call double @llvm.nvvm.lohi.i2d(i32 %157, i32 1127219200) #145 %159 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %160 = fsub double %158, %159 %161 = tail call double @llvm.nvvm.fma.rn.d(double %160, double 0x3FE62E42FEFA39EF, double %141) #145 %162 = fneg double %160 %163 = tail call double @llvm.nvvm.fma.rn.d(double %162, double 0x3FE62E42FEFA39EF, double %161) #145 %164 = fsub double %163, %141 %165 = fsub double %156, %164 %166 = tail call double @llvm.nvvm.fma.rn.d(double %160, double 0x3C7ABC9E3B39803F, double %165) #145 %167 = fadd double %161, %166 br label %__nv_log1p.exit 168: ; preds = %116 %169 = tail call double @llvm.nvvm.fma.rn.d(double %.0, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %170 = tail call i32 @llvm.nvvm.d2i.hi(double %.0) #145 %171 = bitcast i32 %170 to float %172 = fcmp oeq float %171, 0.000000e+00 %q.i.i.0 = select i1 %172, double 0xFFF0000000000000, double %169 br label %__nv_log1p.exit __nv_log1p.exit: ; preds = %132, %168, %90 %t.i.0 = phi double [ %106, %90 ], [ %167, %132 ], [ %q.i.i.0, %168 ] %173 = icmp eq i32 %2, 0 %spec.select = select i1 %173, double %1, double %t.i.0 br label %174 174: ; preds = %__nv_log1p.exit, %__nv_log.exit %r.1 = phi double [ %68, %__nv_log.exit ], [ %spec.select, %__nv_log1p.exit ] ret double %r.1 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_asinh(double %a) unnamed_addr #103 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %3 = and i32 %1, 2147483647 %4 = tail call double @llvm.nvvm.lohi.i2d(i32 %2, i32 %3) #145 %5 = icmp ugt i32 %3, 1138753535 br i1 %5, label %6, label %72 6: ; preds = %0 %7 = tail call i32 @llvm.nvvm.d2i.hi(double %4) #145 %8 = tail call i32 @llvm.nvvm.d2i.lo(double %4) #145 %9 = icmp slt i32 %7, 1048576 br i1 %9, label %10, label %14 10: ; preds = %6 %11 = fmul double %4, 0x4350000000000000 %12 = tail call i32 @llvm.nvvm.d2i.hi(double %11) #145 %13 = tail call i32 @llvm.nvvm.d2i.lo(double %11) #145 br label %14 14: ; preds = %10, %6 %.01 = phi double [ %11, %10 ], [ %4, %6 ] %ihi.i.0 = phi i32 [ %12, %10 ], [ %7, %6 ] %ilo.i.0 = phi i32 [ %13, %10 ], [ %8, %6 ] %e.i.0 = phi i32 [ -1077, %10 ], [ -1023, %6 ] %15 = add i32 %ihi.i.0, -1 %16 = icmp ult i32 %15, 2146435071 br i1 %16, label %17, label %66 17: ; preds = %14 %18 = lshr i32 %ihi.i.0, 20 %19 = add nsw i32 %e.i.0, %18 %20 = and i32 %ihi.i.0, -2146435073 %21 = or i32 %20, 1072693248 %22 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %21) #145 %23 = icmp ugt i32 %21, 1073127582 br i1 %23, label %24, label %30 24: ; preds = %17 %25 = tail call i32 @llvm.nvvm.d2i.lo(double %22) #145 %26 = tail call i32 @llvm.nvvm.d2i.hi(double %22) #145 %27 = add i32 %26, -1048576 %28 = tail call double @llvm.nvvm.lohi.i2d(i32 %25, i32 %27) #145 %29 = add nsw i32 %19, 1 br label %30 30: ; preds = %24, %17 %m.i.0 = phi double [ %28, %24 ], [ %22, %17 ] %e.i.1 = phi i32 [ %29, %24 ], [ %19, %17 ] %31 = fadd double %m.i.0, -1.000000e+00 %32 = fadd double %m.i.0, 1.000000e+00 %33 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %32) #145 %34 = fneg double %32 %35 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %33, double 1.000000e+00) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %35, double %35) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %33, double %33) #145 %38 = fmul double %31, %37 %39 = fadd double %38, %38 %40 = fmul double %39, %39 %41 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %40, double 0x3ED0EE258B7A8B04) #145 %42 = tail call double @llvm.nvvm.fma.rn.d(double %41, double %40, double 0x3EF3B2669F02676F) #145 %43 = tail call double @llvm.nvvm.fma.rn.d(double %42, double %40, double 0x3F1745CBA9AB0956) #145 %44 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %40, double 0x3F3C71C72D1B5154) #145 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %40, double 0x3F624924923BE72D) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %40, double 0x3F8999999999A3C4) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %40, double 0x3FB5555555555554) #145 %48 = fsub double %31, %39 %49 = fmul double %48, 2.000000e+00 %50 = fneg double %39 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %31, double %49) #145 %52 = fmul double %37, %51 %53 = fmul double %40, %47 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %39, double %52) #145 %55 = xor i32 %e.i.1, -2147483648 %56 = tail call double @llvm.nvvm.lohi.i2d(i32 %55, i32 1127219200) #145 %57 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %58 = fsub double %56, %57 %59 = tail call double @llvm.nvvm.fma.rn.d(double %58, double 0x3FE62E42FEFA39EF, double %39) #145 %60 = fneg double %58 %61 = tail call double @llvm.nvvm.fma.rn.d(double %60, double 0x3FE62E42FEFA39EF, double %59) #145 %62 = fsub double %61, %39 %63 = fsub double %54, %62 %64 = tail call double @llvm.nvvm.fma.rn.d(double %58, double 0x3C7ABC9E3B39803F, double %63) #145 %65 = fadd double %59, %64 br label %__nv_log.exit 66: ; preds = %14 %67 = tail call double @llvm.nvvm.fma.rn.d(double %.01, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %68 = tail call i32 @llvm.nvvm.d2i.hi(double %.01) #145 %69 = bitcast i32 %68 to float %70 = fcmp oeq float %69, 0.000000e+00 %q.i.0 = select i1 %70, double 0xFFF0000000000000, double %67 br label %__nv_log.exit __nv_log.exit: ; preds = %30, %66 %q.i.1 = phi double [ %65, %30 ], [ %q.i.0, %66 ] %71 = fadd double %q.i.1, 0x3FE62E42FEFA39EF br label %__nv_log1p.exit 72: ; preds = %0 %73 = tail call double @llvm.nvvm.mul.rn.d(double %a, double %a) #145 %74 = tail call double @llvm.nvvm.fma.rn.d(double %a, double %a, double 1.000000e+00) #145 %75 = tail call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %74) #146, !srcloc !22 %76 = tail call i32 @llvm.nvvm.d2i.lo(double %75) #145 %77 = tail call i32 @llvm.nvvm.d2i.hi(double %75) #145 %78 = add i32 %77, -1048576 %79 = tail call double @llvm.nvvm.lohi.i2d(i32 %76, i32 %78) #145 %80 = fmul double %74, %75 %81 = fneg double %80 %82 = tail call double @llvm.nvvm.fma.rn.d(double %80, double %81, double %74) #145 %83 = tail call double @llvm.nvvm.fma.rn.d(double %82, double %79, double %80) #145 %84 = fneg double %83 %85 = tail call double @llvm.nvvm.fma.rn.d(double %75, double %84, double 1.000000e+00) #145 %86 = tail call double @llvm.nvvm.fma.rn.d(double %85, double %79, double %79) #145 %87 = tail call double @llvm.nvvm.fma.rn.d(double %83, double %84, double %74) #145 %88 = tail call double @llvm.nvvm.fma.rn.d(double %87, double %86, double %83) #145 %89 = fadd double %88, 1.000000e+00 %90 = fdiv double %73, %89 %91 = fadd double %4, %90 %92 = tail call i32 @llvm.nvvm.d2i.hi(double %91) #145 %93 = bitcast i32 %92 to float %94 = fcmp olt float %93, 0x3FFCAAAAA0000000 %95 = fcmp ogt float %93, 0xBFFB333320000000 %or.cond1 = and i1 %94, %95 br i1 %or.cond1, label %96, label %113 96: ; preds = %72 %97 = fadd double %91, 2.000000e+00 %98 = fdiv double %91, %97 %99 = fneg double %91 %100 = fmul double %98, %99 %101 = fadd double %91, %100 %102 = fmul double %101, %101 %103 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB372FB2FBE14B5, double %102, double 0x3ED087FFCEB2DC44) #145 %104 = tail call double @llvm.nvvm.fma.rn.d(double %103, double %102, double 0x3EF3B9FF890F468C) #145 %105 = tail call double @llvm.nvvm.fma.rn.d(double %104, double %102, double 0x3F17457EFD51BAF8) #145 %106 = tail call double @llvm.nvvm.fma.rn.d(double %105, double %102, double 0x3F3C71C8DE3CE825) #145 %107 = tail call double @llvm.nvvm.fma.rn.d(double %106, double %102, double 0x3F6249248FA4661F) #145 %108 = tail call double @llvm.nvvm.fma.rn.d(double %107, double %102, double 0x3F899999999D70C4) #145 %109 = tail call double @llvm.nvvm.fma.rn.d(double %108, double %102, double 0x3FB5555555555462) #145 %110 = fmul double %102, %109 %111 = tail call double @llvm.nvvm.fma.rn.d(double %110, double %101, double %100) #145 %112 = fadd double %91, %111 br label %__nv_log1p.exit 113: ; preds = %72 %114 = fadd double %91, 1.000000e+00 %115 = tail call i32 @llvm.nvvm.d2i.hi(double %114) #145 %116 = tail call i32 @llvm.nvvm.d2i.lo(double %114) #145 %117 = icmp slt i32 %115, 1048576 br i1 %117, label %118, label %122 118: ; preds = %113 %119 = fmul double %114, 0x4350000000000000 %120 = tail call i32 @llvm.nvvm.d2i.hi(double %119) #145 %121 = tail call i32 @llvm.nvvm.d2i.lo(double %119) #145 br label %122 122: ; preds = %118, %113 %.0 = phi double [ %119, %118 ], [ %114, %113 ] %ihi.i.i.0 = phi i32 [ %120, %118 ], [ %115, %113 ] %ilo.i.i.0 = phi i32 [ %121, %118 ], [ %116, %113 ] %e.i.i.0 = phi i32 [ -1077, %118 ], [ -1023, %113 ] %123 = add i32 %ihi.i.i.0, -1 %124 = icmp ult i32 %123, 2146435071 br i1 %124, label %125, label %174 125: ; preds = %122 %126 = lshr i32 %ihi.i.i.0, 20 %127 = add nsw i32 %e.i.i.0, %126 %128 = and i32 %ihi.i.i.0, -2146435073 %129 = or i32 %128, 1072693248 %130 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i.0, i32 %129) #145 %131 = icmp ugt i32 %129, 1073127582 br i1 %131, label %132, label %138 132: ; preds = %125 %133 = tail call i32 @llvm.nvvm.d2i.lo(double %130) #145 %134 = tail call i32 @llvm.nvvm.d2i.hi(double %130) #145 %135 = add i32 %134, -1048576 %136 = tail call double @llvm.nvvm.lohi.i2d(i32 %133, i32 %135) #145 %137 = add nsw i32 %127, 1 br label %138 138: ; preds = %132, %125 %m.i.i.0 = phi double [ %136, %132 ], [ %130, %125 ] %e.i.i.1 = phi i32 [ %137, %132 ], [ %127, %125 ] %139 = fadd double %m.i.i.0, -1.000000e+00 %140 = fadd double %m.i.i.0, 1.000000e+00 %141 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %140) #145 %142 = fneg double %140 %143 = tail call double @llvm.nvvm.fma.rn.d(double %142, double %141, double 1.000000e+00) #145 %144 = tail call double @llvm.nvvm.fma.rn.d(double %143, double %143, double %143) #145 %145 = tail call double @llvm.nvvm.fma.rn.d(double %144, double %141, double %141) #145 %146 = fmul double %139, %145 %147 = fadd double %146, %146 %148 = fmul double %147, %147 %149 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %148, double 0x3ED0EE258B7A8B04) #145 %150 = tail call double @llvm.nvvm.fma.rn.d(double %149, double %148, double 0x3EF3B2669F02676F) #145 %151 = tail call double @llvm.nvvm.fma.rn.d(double %150, double %148, double 0x3F1745CBA9AB0956) #145 %152 = tail call double @llvm.nvvm.fma.rn.d(double %151, double %148, double 0x3F3C71C72D1B5154) #145 %153 = tail call double @llvm.nvvm.fma.rn.d(double %152, double %148, double 0x3F624924923BE72D) #145 %154 = tail call double @llvm.nvvm.fma.rn.d(double %153, double %148, double 0x3F8999999999A3C4) #145 %155 = tail call double @llvm.nvvm.fma.rn.d(double %154, double %148, double 0x3FB5555555555554) #145 %156 = fsub double %139, %147 %157 = fmul double %156, 2.000000e+00 %158 = fneg double %147 %159 = tail call double @llvm.nvvm.fma.rn.d(double %158, double %139, double %157) #145 %160 = fmul double %145, %159 %161 = fmul double %148, %155 %162 = tail call double @llvm.nvvm.fma.rn.d(double %161, double %147, double %160) #145 %163 = xor i32 %e.i.i.1, -2147483648 %164 = tail call double @llvm.nvvm.lohi.i2d(i32 %163, i32 1127219200) #145 %165 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %166 = fsub double %164, %165 %167 = tail call double @llvm.nvvm.fma.rn.d(double %166, double 0x3FE62E42FEFA39EF, double %147) #145 %168 = fneg double %166 %169 = tail call double @llvm.nvvm.fma.rn.d(double %168, double 0x3FE62E42FEFA39EF, double %167) #145 %170 = fsub double %169, %147 %171 = fsub double %162, %170 %172 = tail call double @llvm.nvvm.fma.rn.d(double %166, double 0x3C7ABC9E3B39803F, double %171) #145 %173 = fadd double %167, %172 br label %__nv_log1p.exit 174: ; preds = %122 %175 = tail call double @llvm.nvvm.fma.rn.d(double %.0, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %176 = tail call i32 @llvm.nvvm.d2i.hi(double %.0) #145 %177 = bitcast i32 %176 to float %178 = fcmp oeq float %177, 0.000000e+00 %q.i.i.0 = select i1 %178, double 0xFFF0000000000000, double %175 br label %__nv_log1p.exit __nv_log1p.exit: ; preds = %96, %174, %138, %__nv_log.exit %t.0 = phi double [ %71, %__nv_log.exit ], [ %112, %96 ], [ %173, %138 ], [ %q.i.i.0, %174 ] %179 = tail call i32 @llvm.nvvm.d2i.lo(double %t.0) #145 %180 = tail call i32 @llvm.nvvm.d2i.hi(double %t.0) #145 %181 = and i32 %1, -2147483648 %182 = or i32 %180, %181 %183 = tail call double @llvm.nvvm.lohi.i2d(i32 %179, i32 %182) #145 ret double %183 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_atanh(double %a) unnamed_addr #104 { %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = fmul double %1, 2.000000e+00 %3 = fsub double 1.000000e+00, %1 %4 = fdiv double %2, %3 %5 = tail call i32 @llvm.nvvm.d2i.hi(double %4) #145 %6 = bitcast i32 %5 to float %7 = fcmp olt float %6, 0x3FFCAAAAA0000000 %8 = fcmp ogt float %6, 0xBFFB333320000000 %or.cond = and i1 %7, %8 br i1 %or.cond, label %9, label %26 9: ; preds = %0 %10 = fadd double %4, 2.000000e+00 %11 = fdiv double %4, %10 %12 = fneg double %4 %13 = fmul double %11, %12 %14 = fadd double %4, %13 %15 = fmul double %14, %14 %16 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB372FB2FBE14B5, double %15, double 0x3ED087FFCEB2DC44) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %15, double 0x3EF3B9FF890F468C) #145 %18 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %15, double 0x3F17457EFD51BAF8) #145 %19 = tail call double @llvm.nvvm.fma.rn.d(double %18, double %15, double 0x3F3C71C8DE3CE825) #145 %20 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %15, double 0x3F6249248FA4661F) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %15, double 0x3F899999999D70C4) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %15, double 0x3FB5555555555462) #145 %23 = fmul double %15, %22 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %14, double %13) #145 %25 = fadd double %4, %24 br label %__nv_log1p.exit 26: ; preds = %0 %27 = fadd double %4, 1.000000e+00 %28 = tail call i32 @llvm.nvvm.d2i.hi(double %27) #145 %29 = tail call i32 @llvm.nvvm.d2i.lo(double %27) #145 %30 = icmp slt i32 %28, 1048576 br i1 %30, label %31, label %35 31: ; preds = %26 %32 = fmul double %27, 0x4350000000000000 %33 = tail call i32 @llvm.nvvm.d2i.hi(double %32) #145 %34 = tail call i32 @llvm.nvvm.d2i.lo(double %32) #145 br label %35 35: ; preds = %31, %26 %.0 = phi double [ %32, %31 ], [ %27, %26 ] %ihi.i.i.0 = phi i32 [ %33, %31 ], [ %28, %26 ] %ilo.i.i.0 = phi i32 [ %34, %31 ], [ %29, %26 ] %e.i.i.0 = phi i32 [ -1077, %31 ], [ -1023, %26 ] %36 = add i32 %ihi.i.i.0, -1 %37 = icmp ult i32 %36, 2146435071 br i1 %37, label %38, label %87 38: ; preds = %35 %39 = lshr i32 %ihi.i.i.0, 20 %40 = add nsw i32 %e.i.i.0, %39 %41 = and i32 %ihi.i.i.0, -2146435073 %42 = or i32 %41, 1072693248 %43 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i.0, i32 %42) #145 %44 = icmp ugt i32 %42, 1073127582 br i1 %44, label %45, label %51 45: ; preds = %38 %46 = tail call i32 @llvm.nvvm.d2i.lo(double %43) #145 %47 = tail call i32 @llvm.nvvm.d2i.hi(double %43) #145 %48 = add i32 %47, -1048576 %49 = tail call double @llvm.nvvm.lohi.i2d(i32 %46, i32 %48) #145 %50 = add nsw i32 %40, 1 br label %51 51: ; preds = %45, %38 %m.i.i.0 = phi double [ %49, %45 ], [ %43, %38 ] %e.i.i.1 = phi i32 [ %50, %45 ], [ %40, %38 ] %52 = fadd double %m.i.i.0, -1.000000e+00 %53 = fadd double %m.i.i.0, 1.000000e+00 %54 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %53) #145 %55 = fneg double %53 %56 = tail call double @llvm.nvvm.fma.rn.d(double %55, double %54, double 1.000000e+00) #145 %57 = tail call double @llvm.nvvm.fma.rn.d(double %56, double %56, double %56) #145 %58 = tail call double @llvm.nvvm.fma.rn.d(double %57, double %54, double %54) #145 %59 = fmul double %52, %58 %60 = fadd double %59, %59 %61 = fmul double %60, %60 %62 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %61, double 0x3ED0EE258B7A8B04) #145 %63 = tail call double @llvm.nvvm.fma.rn.d(double %62, double %61, double 0x3EF3B2669F02676F) #145 %64 = tail call double @llvm.nvvm.fma.rn.d(double %63, double %61, double 0x3F1745CBA9AB0956) #145 %65 = tail call double @llvm.nvvm.fma.rn.d(double %64, double %61, double 0x3F3C71C72D1B5154) #145 %66 = tail call double @llvm.nvvm.fma.rn.d(double %65, double %61, double 0x3F624924923BE72D) #145 %67 = tail call double @llvm.nvvm.fma.rn.d(double %66, double %61, double 0x3F8999999999A3C4) #145 %68 = tail call double @llvm.nvvm.fma.rn.d(double %67, double %61, double 0x3FB5555555555554) #145 %69 = fsub double %52, %60 %70 = fmul double %69, 2.000000e+00 %71 = fneg double %60 %72 = tail call double @llvm.nvvm.fma.rn.d(double %71, double %52, double %70) #145 %73 = fmul double %58, %72 %74 = fmul double %61, %68 %75 = tail call double @llvm.nvvm.fma.rn.d(double %74, double %60, double %73) #145 %76 = xor i32 %e.i.i.1, -2147483648 %77 = tail call double @llvm.nvvm.lohi.i2d(i32 %76, i32 1127219200) #145 %78 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %79 = fsub double %77, %78 %80 = tail call double @llvm.nvvm.fma.rn.d(double %79, double 0x3FE62E42FEFA39EF, double %60) #145 %81 = fneg double %79 %82 = tail call double @llvm.nvvm.fma.rn.d(double %81, double 0x3FE62E42FEFA39EF, double %80) #145 %83 = fsub double %82, %60 %84 = fsub double %75, %83 %85 = tail call double @llvm.nvvm.fma.rn.d(double %79, double 0x3C7ABC9E3B39803F, double %84) #145 %86 = fadd double %80, %85 br label %__nv_log1p.exit 87: ; preds = %35 %88 = tail call double @llvm.nvvm.fma.rn.d(double %.0, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %89 = tail call i32 @llvm.nvvm.d2i.hi(double %.0) #145 %90 = bitcast i32 %89 to float %91 = fcmp oeq float %90, 0.000000e+00 %q.i.i.0 = select i1 %91, double 0xFFF0000000000000, double %88 br label %__nv_log1p.exit __nv_log1p.exit: ; preds = %51, %87, %9 %t.i.0 = phi double [ %25, %9 ], [ %86, %51 ], [ %q.i.i.0, %87 ] %92 = fmul double %t.i.0, 5.000000e-01 %93 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %94 = tail call i32 @llvm.nvvm.d2i.lo(double %92) #145 %95 = tail call i32 @llvm.nvvm.d2i.hi(double %92) #145 %96 = and i32 %93, -2147483648 %97 = or i32 %95, %96 %98 = tail call double @llvm.nvvm.lohi.i2d(i32 %94, i32 %97) #145 ret double %98 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_hypot(double %a, double %b) unnamed_addr #105 { %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = tail call double @llvm.nvvm.fabs.d(double %b) #145 %3 = bitcast double %2 to i64 %4 = bitcast double %1 to i64 %5 = tail call i64 @llvm.umin.i64(i64 %3, i64 %4) %6 = bitcast i64 %5 to double %7 = tail call i64 @llvm.umax.i64(i64 %3, i64 %4) %8 = bitcast i64 %7 to double %9 = tail call i32 @llvm.nvvm.d2i.hi(double %8) #145 %10 = and i32 %9, -4194304 %11 = sub i32 2144337920, %10 %12 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %11) #145 %13 = fmul double %12, %6 %14 = fmul double %12, %8 %15 = fmul double %13, %13 %16 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %14, double %15) #145 %17 = tail call double @llvm.nvvm.fmin.d(double %16, double 0x7FEFFFFFFFFFFFFF) #145 %18 = tail call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %17) #146, !srcloc !9 %19 = tail call double @llvm.nvvm.mul.rn.d(double %18, double %18) #145 %20 = fneg double %19 %21 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %20, double 1.000000e+00) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double 3.750000e-01, double %21, double 5.000000e-01) #145 %23 = tail call double @llvm.nvvm.mul.rn.d(double %21, double %18) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %23, double %18) #145 %25 = fmul double %16, %24 %26 = or i32 %10, 1048576 %27 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %26) #145 %28 = fmul double %27, %25 %29 = fcmp oeq double %6, 0.000000e+00 %res.0 = select i1 %29, double %8, double %28 %30 = tail call i32 @llvm.nvvm.d2i.hi(double %6) #145 %31 = tail call i32 @llvm.nvvm.d2i.hi(double 0x7FF0000000000000) #145 %.not = icmp ult i32 %30, %31 %res.1 = select i1 %.not, double %res.0, double %6 ret double %res.1 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_rhypot(double %a, double %b) unnamed_addr #106 { %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = tail call double @llvm.nvvm.fabs.d(double %b) #145 %3 = bitcast double %2 to i64 %4 = bitcast double %1 to i64 %5 = tail call i64 @llvm.umin.i64(i64 %3, i64 %4) %6 = bitcast i64 %5 to double %7 = tail call i64 @llvm.umax.i64(i64 %3, i64 %4) %8 = bitcast i64 %7 to double %9 = tail call i32 @llvm.nvvm.d2i.hi(double %8) #145 %10 = and i32 %9, -4194304 %11 = sub i32 2144337920, %10 %12 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %11) #145 %13 = fmul double %12, %6 %14 = fmul double %12, %8 %15 = fmul double %13, %13 %16 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %14, double %15) #145 %17 = tail call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %16) #146, !srcloc !9 %18 = tail call double @llvm.nvvm.mul.rn.d(double %17, double %17) #145 %19 = fneg double %18 %20 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %19, double 1.000000e+00) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double 3.750000e-01, double %20, double 5.000000e-01) #145 %22 = tail call double @llvm.nvvm.mul.rn.d(double %20, double %17) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %22, double %17) #145 %24 = fmul double %12, %23 %25 = tail call i32 @llvm.nvvm.d2i.hi(double %24) #145 %26 = tail call i32 @llvm.nvvm.d2i.hi(double 0x7FF0000000000000) #145 %.not = icmp ult i32 %25, %26 br i1 %.not, label %35, label %27 27: ; preds = %0 %28 = tail call double @llvm.nvvm.fabs.d(double %8) #145 %29 = fcmp ugt double %28, 0x7FF0000000000000 %30 = tail call double @llvm.nvvm.add.rn.d(double %8, double %6) #145 %31 = fcmp une double %8, 0x7FF0000000000000 %32 = select i1 %31, i32 %26, i32 0 %33 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %32) #145 %res.0 = select i1 %29, double %30, double %33 %34 = fcmp oeq double %6, 0x7FF0000000000000 %res.1 = select i1 %34, double 0.000000e+00, double %res.0 br label %35 35: ; preds = %27, %0 %res.2 = phi double [ %res.1, %27 ], [ %24, %0 ] ret double %res.2 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_norm3d(double %a, double %b, double %c) unnamed_addr #107 { %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = tail call double @llvm.nvvm.fabs.d(double %b) #145 %3 = tail call double @llvm.nvvm.fabs.d(double %c) #145 %4 = fadd double %1, %2 %5 = fadd double %4, %3 %6 = tail call double @llvm.nvvm.fmin.d(double %1, double %2) #145 %7 = tail call double @llvm.nvvm.fmax.d(double %1, double %2) #145 %8 = tail call double @llvm.nvvm.fmin.d(double %7, double %3) #145 %9 = tail call double @llvm.nvvm.fmax.d(double %7, double %3) #145 %10 = tail call i32 @llvm.nvvm.d2i.hi(double %9) #145 %11 = and i32 %10, -4194304 %12 = sub i32 2144337920, %11 %13 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %12) #145 %14 = fmul double %8, %13 %15 = fmul double %6, %13 %16 = fmul double %9, %13 %17 = fmul double %14, %14 %18 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %15, double %17) #145 %19 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %16, double %18) #145 %20 = tail call double @llvm.nvvm.fmin.d(double %19, double 0x7FEFFFFFFFFFFFFF) #145 %21 = tail call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %20) #146, !srcloc !9 %22 = tail call double @llvm.nvvm.mul.rn.d(double %21, double %21) #145 %23 = fneg double %22 %24 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %23, double 1.000000e+00) #145 %25 = tail call double @llvm.nvvm.fma.rn.d(double 3.750000e-01, double %24, double 5.000000e-01) #145 %26 = tail call double @llvm.nvvm.mul.rn.d(double %24, double %21) #145 %27 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %26, double %21) #145 %28 = fmul double %19, %27 %29 = or i32 %11, 1048576 %30 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %29) #145 %31 = fmul double %30, %28 %32 = fcmp ogt double %5, %9 %res.0 = select i1 %32, double %31, double %5 %33 = tail call i32 @llvm.nvvm.d2i.hi(double 0x7FF0000000000000) #145 %.not = icmp ult i32 %10, %33 %res.1 = select i1 %.not, double %res.0, double %9 ret double %res.1 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_rnorm3d(double %a, double %b, double %c) unnamed_addr #108 { %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = tail call double @llvm.nvvm.fabs.d(double %b) #145 %3 = tail call double @llvm.nvvm.fabs.d(double %c) #145 %4 = fadd double %1, %2 %5 = fadd double %4, %3 %6 = tail call double @llvm.nvvm.fmin.d(double %1, double %2) #145 %7 = tail call double @llvm.nvvm.fmax.d(double %1, double %2) #145 %8 = tail call double @llvm.nvvm.fmin.d(double %7, double %3) #145 %9 = tail call double @llvm.nvvm.fmax.d(double %7, double %3) #145 %10 = tail call i32 @llvm.nvvm.d2i.hi(double %9) #145 %11 = and i32 %10, -4194304 %12 = sub i32 2144337920, %11 %13 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %12) #145 %14 = fmul double %8, %13 %15 = fmul double %6, %13 %16 = fmul double %9, %13 %17 = fmul double %14, %14 %18 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %15, double %17) #145 %19 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %16, double %18) #145 %20 = tail call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %19) #146, !srcloc !9 %21 = tail call double @llvm.nvvm.mul.rn.d(double %20, double %20) #145 %22 = fneg double %21 %23 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %22, double 1.000000e+00) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double 3.750000e-01, double %23, double 5.000000e-01) #145 %25 = tail call double @llvm.nvvm.mul.rn.d(double %23, double %20) #145 %26 = tail call double @llvm.nvvm.fma.rn.d(double %24, double %25, double %20) #145 %27 = fmul double %13, %26 %28 = fcmp ogt double %5, 0.000000e+00 %29 = fadd double %5, 0x7FF0000000000000 %res.0 = select i1 %28, double %27, double %29 %30 = fcmp oeq double %9, 0x7FF0000000000000 %res.1 = select i1 %30, double 0.000000e+00, double %res.0 ret double %res.1 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_norm4d(double %a, double %b, double %c, double %d) unnamed_addr #109 { %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = tail call double @llvm.nvvm.fabs.d(double %b) #145 %3 = tail call double @llvm.nvvm.fabs.d(double %c) #145 %4 = tail call double @llvm.nvvm.fabs.d(double %d) #145 %5 = fadd double %1, %2 %6 = fadd double %5, %3 %7 = fadd double %6, %4 %8 = tail call double @llvm.nvvm.fmin.d(double %1, double %2) #145 %9 = tail call double @llvm.nvvm.fmax.d(double %1, double %2) #145 %10 = tail call double @llvm.nvvm.fmin.d(double %9, double %3) #145 %11 = tail call double @llvm.nvvm.fmax.d(double %9, double %3) #145 %12 = tail call double @llvm.nvvm.fmin.d(double %11, double %4) #145 %13 = tail call double @llvm.nvvm.fmax.d(double %11, double %4) #145 %14 = tail call i32 @llvm.nvvm.d2i.hi(double %13) #145 %15 = and i32 %14, -4194304 %16 = sub i32 2144337920, %15 %17 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %16) #145 %18 = fmul double %12, %17 %19 = fmul double %10, %17 %20 = fmul double %8, %17 %21 = fmul double %13, %17 %22 = fmul double %18, %18 %23 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %19, double %22) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %20, double %23) #145 %25 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %21, double %24) #145 %26 = tail call double @llvm.nvvm.fmin.d(double %25, double 0x7FEFFFFFFFFFFFFF) #145 %27 = tail call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %26) #146, !srcloc !9 %28 = tail call double @llvm.nvvm.mul.rn.d(double %27, double %27) #145 %29 = fneg double %28 %30 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %29, double 1.000000e+00) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double 3.750000e-01, double %30, double 5.000000e-01) #145 %32 = tail call double @llvm.nvvm.mul.rn.d(double %30, double %27) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %32, double %27) #145 %34 = fmul double %25, %33 %35 = or i32 %15, 1048576 %36 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %35) #145 %37 = fmul double %36, %34 %38 = fcmp ogt double %7, %13 %res.0 = select i1 %38, double %37, double %7 %39 = tail call i32 @llvm.nvvm.d2i.hi(double 0x7FF0000000000000) #145 %.not = icmp ult i32 %14, %39 %res.1 = select i1 %.not, double %res.0, double %13 ret double %res.1 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_rnorm4d(double %a, double %b, double %c, double %d) unnamed_addr #110 { %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = tail call double @llvm.nvvm.fabs.d(double %b) #145 %3 = tail call double @llvm.nvvm.fabs.d(double %c) #145 %4 = tail call double @llvm.nvvm.fabs.d(double %d) #145 %5 = fadd double %1, %2 %6 = fadd double %5, %3 %7 = fadd double %6, %4 %8 = tail call double @llvm.nvvm.fmin.d(double %1, double %2) #145 %9 = tail call double @llvm.nvvm.fmax.d(double %1, double %2) #145 %10 = tail call double @llvm.nvvm.fmin.d(double %9, double %3) #145 %11 = tail call double @llvm.nvvm.fmax.d(double %9, double %3) #145 %12 = tail call double @llvm.nvvm.fmin.d(double %11, double %4) #145 %13 = tail call double @llvm.nvvm.fmax.d(double %11, double %4) #145 %14 = tail call i32 @llvm.nvvm.d2i.hi(double %13) #145 %15 = and i32 %14, -4194304 %16 = sub i32 2144337920, %15 %17 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %16) #145 %18 = fmul double %12, %17 %19 = fmul double %10, %17 %20 = fmul double %8, %17 %21 = fmul double %13, %17 %22 = fmul double %18, %18 %23 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %19, double %22) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %20, double %23) #145 %25 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %21, double %24) #145 %26 = tail call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %25) #146, !srcloc !9 %27 = tail call double @llvm.nvvm.mul.rn.d(double %26, double %26) #145 %28 = fneg double %27 %29 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %28, double 1.000000e+00) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double 3.750000e-01, double %29, double 5.000000e-01) #145 %31 = tail call double @llvm.nvvm.mul.rn.d(double %29, double %26) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %31, double %26) #145 %33 = fmul double %17, %32 %34 = fcmp ogt double %7, 0.000000e+00 %35 = fadd double %7, 0x7FF0000000000000 %res.0 = select i1 %34, double %33, double %35 %36 = fcmp oeq double %13, 0x7FF0000000000000 %res.1 = select i1 %36, double 0.000000e+00, double %res.0 ret double %res.1 } ; Function Attrs: alwaysinline argmemonly nofree nounwind readonly define internal fastcc double @__nv_norm(i32 %dim, ptr nocapture readonly %t) unnamed_addr #111 { %1 = load double, ptr %t, align 8 %2 = tail call double @llvm.nvvm.fabs.d(double %1) #145 %3 = icmp sgt i32 %dim, 1 br i1 %3, label %.lr.ph.preheader, label %._crit_edge .lr.ph.preheader: ; preds = %0 %wide.trip.count = zext i32 %dim to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] %largest.03 = phi double [ %2, %.lr.ph.preheader ], [ %7, %.lr.ph ] %4 = getelementptr inbounds double, ptr %t, i64 %indvars.iv %5 = load double, ptr %4, align 8 %6 = tail call double @llvm.nvvm.fabs.d(double %5) #145 %7 = tail call double @llvm.nvvm.fmax.d(double %6, double %largest.03) #145 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph ._crit_edge.loopexit: ; preds = %.lr.ph %.lcssa = phi double [ %7, %.lr.ph ] br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %0 %largest.0.lcssa = phi double [ %2, %0 ], [ %.lcssa, %._crit_edge.loopexit ] %8 = tail call i32 @llvm.nvvm.d2i.hi(double %largest.0.lcssa) #145 %9 = and i32 %8, -4194304 %10 = sub i32 2144337920, %9 %11 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %10) #145 %12 = fmul double %largest.0.lcssa, %11 %13 = icmp sgt i32 %dim, 0 br i1 %13, label %.lr.ph9.preheader, label %._crit_edge10 .lr.ph9.preheader: ; preds = %._crit_edge %wide.trip.count14 = zext i32 %dim to i64 br label %.lr.ph9 .lr.ph9: ; preds = %.lr.ph9.preheader, %.lr.ph9 %indvars.iv12 = phi i64 [ 0, %.lr.ph9.preheader ], [ %indvars.iv.next13, %.lr.ph9 ] %j.07 = phi i32 [ 0, %.lr.ph9.preheader ], [ %j.1, %.lr.ph9 ] %res0.05 = phi double [ 0.000000e+00, %.lr.ph9.preheader ], [ %res0.1, %.lr.ph9 ] %14 = getelementptr inbounds double, ptr %t, i64 %indvars.iv12 %15 = load double, ptr %14, align 8 %16 = tail call double @llvm.nvvm.fabs.d(double %15) #145 %17 = fmul double %11, %16 %18 = fcmp une double %17, %12 %19 = zext i32 %j.07 to i64 %20 = icmp ne i64 %indvars.iv12, %19 %or.cond = select i1 %18, i1 true, i1 %20 %21 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %17, double %res0.05) #145 %22 = add nsw i32 %j.07, 1 %res0.1 = select i1 %or.cond, double %21, double %res0.05 %23 = trunc i64 %indvars.iv12 to i32 %j.1 = select i1 %or.cond, i32 %22, i32 %23 %indvars.iv.next13 = add nuw nsw i64 %indvars.iv12, 1 %exitcond15.not = icmp eq i64 %indvars.iv.next13, %wide.trip.count14 br i1 %exitcond15.not, label %._crit_edge10.loopexit, label %.lr.ph9 ._crit_edge10.loopexit: ; preds = %.lr.ph9 %res0.1.lcssa = phi double [ %res0.1, %.lr.ph9 ] br label %._crit_edge10 ._crit_edge10: ; preds = %._crit_edge10.loopexit, %._crit_edge %res0.0.lcssa = phi double [ 0.000000e+00, %._crit_edge ], [ %res0.1.lcssa, %._crit_edge10.loopexit ] %24 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %12, double %res0.0.lcssa) #145 %25 = tail call double @llvm.nvvm.fmin.d(double %24, double 0x7FEFFFFFFFFFFFFF) #145 %26 = tail call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %25) #146, !srcloc !9 %27 = tail call double @llvm.nvvm.mul.rn.d(double %26, double %26) #145 %28 = fneg double %27 %29 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %28, double 1.000000e+00) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double 3.750000e-01, double %29, double 5.000000e-01) #145 %31 = tail call double @llvm.nvvm.mul.rn.d(double %29, double %26) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %31, double %26) #145 %33 = fmul double %24, %32 %34 = or i32 %9, 1048576 %35 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %34) #145 %36 = fmul double %35, %33 %37 = fcmp oeq double %res0.0.lcssa, 0.000000e+00 %38 = tail call i32 @llvm.nvvm.d2i.hi(double 0x7FF0000000000000) #145 %39 = icmp uge i32 %8, %38 %or.cond2 = select i1 %37, i1 true, i1 %39 %res.0 = select i1 %or.cond2, double %largest.0.lcssa, double %36 ret double %res.0 } ; Function Attrs: alwaysinline argmemonly nofree nosync nounwind readonly define internal fastcc double @__nv_rnorm(i32 %dim, ptr nocapture readonly %t) unnamed_addr #112 { %1 = load double, ptr %t, align 8 %2 = tail call double @llvm.nvvm.fabs.d(double %1) #145 %3 = icmp sgt i32 %dim, 1 br i1 %3, label %.lr.ph.preheader, label %._crit_edge .lr.ph.preheader: ; preds = %0 %wide.trip.count = zext i32 %dim to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] %largest.01 = phi double [ %2, %.lr.ph.preheader ], [ %7, %.lr.ph ] %4 = getelementptr inbounds double, ptr %t, i64 %indvars.iv %5 = load double, ptr %4, align 8 %6 = tail call double @llvm.nvvm.fabs.d(double %5) #145 %7 = tail call double @llvm.nvvm.fmax.d(double %6, double %largest.01) #145 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph ._crit_edge.loopexit: ; preds = %.lr.ph %.lcssa = phi double [ %7, %.lr.ph ] br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %0 %largest.0.lcssa = phi double [ %2, %0 ], [ %.lcssa, %._crit_edge.loopexit ] %8 = tail call i32 @llvm.nvvm.d2i.hi(double %largest.0.lcssa) #145 %9 = and i32 %8, -4194304 %10 = sub i32 2144337920, %9 %11 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %10) #145 %12 = fmul double %largest.0.lcssa, %11 %13 = icmp sgt i32 %dim, 0 br i1 %13, label %.lr.ph7.preheader, label %._crit_edge8 .lr.ph7.preheader: ; preds = %._crit_edge %wide.trip.count12 = zext i32 %dim to i64 br label %.lr.ph7 .lr.ph7: ; preds = %.lr.ph7.preheader, %.lr.ph7 %indvars.iv10 = phi i64 [ 0, %.lr.ph7.preheader ], [ %indvars.iv.next11, %.lr.ph7 ] %j.05 = phi i32 [ 0, %.lr.ph7.preheader ], [ %j.1, %.lr.ph7 ] %res0.03 = phi double [ 0.000000e+00, %.lr.ph7.preheader ], [ %res0.1, %.lr.ph7 ] %14 = getelementptr inbounds double, ptr %t, i64 %indvars.iv10 %15 = load double, ptr %14, align 8 %16 = tail call double @llvm.nvvm.fabs.d(double %15) #145 %17 = fmul double %11, %16 %18 = fcmp une double %17, %12 %19 = zext i32 %j.05 to i64 %20 = icmp ne i64 %indvars.iv10, %19 %or.cond = select i1 %18, i1 true, i1 %20 %21 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %17, double %res0.03) #145 %22 = add nsw i32 %j.05, 1 %res0.1 = select i1 %or.cond, double %21, double %res0.03 %23 = trunc i64 %indvars.iv10 to i32 %j.1 = select i1 %or.cond, i32 %22, i32 %23 %indvars.iv.next11 = add nuw nsw i64 %indvars.iv10, 1 %exitcond13.not = icmp eq i64 %indvars.iv.next11, %wide.trip.count12 br i1 %exitcond13.not, label %._crit_edge8.loopexit, label %.lr.ph7 ._crit_edge8.loopexit: ; preds = %.lr.ph7 %res0.1.lcssa = phi double [ %res0.1, %.lr.ph7 ] br label %._crit_edge8 ._crit_edge8: ; preds = %._crit_edge8.loopexit, %._crit_edge %res0.0.lcssa = phi double [ 0.000000e+00, %._crit_edge ], [ %res0.1.lcssa, %._crit_edge8.loopexit ] %24 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %12, double %res0.0.lcssa) #145 %25 = tail call double @llvm.nvvm.rsqrt.approx.d(double %24) #145 %26 = fmul double %11, %25 %27 = fcmp oeq double %largest.0.lcssa, 0x7FF0000000000000 %res.0 = select i1 %27, double 0.000000e+00, double %26 ret double %res.0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_cbrt(double %a) unnamed_addr #113 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = and i32 %1, 2147483647 %3 = fcmp une double %a, 0.000000e+00 %4 = icmp ult i32 %2, 2146435072 %or.cond = select i1 %3, i1 %4, i1 false br i1 %or.cond, label %__nv_float2int_rn.exit, label %48 __nv_float2int_rn.exit: ; preds = %0 %5 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %6 = icmp ult i32 %2, 1048576 %7 = tail call double @llvm.nvvm.lohi.i2d(i32 %5, i32 %2) #145 %8 = fmul double %7, 0x4350000000000000 %9 = tail call i32 @llvm.nvvm.d2i.lo(double %8) #145 %10 = tail call i32 @llvm.nvvm.d2i.hi(double %8) #145 %ilo.0 = select i1 %6, i32 %9, i32 %5 %ihi.0 = select i1 %6, i32 %10, i32 %2 %denorm.0.neg = select i1 %6, i32 4078, i32 1048576 %expo.0 = lshr i32 %ihi.0, 20 %11 = add nsw i32 %expo.0, -1022 %12 = sitofp i32 %11 to float %13 = fmul float %12, 0x3FD5555560000000 %14 = tail call i32 @llvm.nvvm.f2i.rn(float %13) #145 %.neg = mul i32 %14, -3145728 %15 = add i32 %.neg, %ihi.0 %16 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.0, i32 %15) #145 %17 = fptrunc double %16 to float %18 = tail call float @llvm.nvvm.lg2.approx.ftz.f(float %17) #145 %19 = fmul float %18, 0x3FD5555560000000 %20 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %19) #145 %21 = fpext float %20 to double %22 = fmul double %21, %21 %23 = tail call i32 @llvm.nvvm.d2i.lo(double %22) #145 %24 = tail call i32 @llvm.nvvm.d2i.hi(double %22) #145 %25 = add i32 %24, 1048576 %26 = tail call double @llvm.nvvm.lohi.i2d(i32 %23, i32 %25) #145 %27 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %21, double %16) #145 %28 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %27) #145 %29 = fneg double %27 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %28, double 1.000000e+00) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %30, double %30) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %28, double %28) #145 %33 = fneg double %21 %34 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %33, double %16) #145 %35 = fmul double %34, %32 %36 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %35, double %21) #145 %37 = tail call i32 @llvm.nvvm.d2i.lo(double %36) #145 %38 = tail call i32 @llvm.nvvm.d2i.hi(double %36) #145 %39 = add i32 %14, %denorm.0.neg %40 = shl i32 %39, 20 %41 = add nsw i32 %38, %40 %42 = tail call double @llvm.nvvm.lohi.i2d(i32 %37, i32 %41) #145 %43 = tail call i32 @llvm.nvvm.d2i.lo(double %42) #145 %44 = tail call i32 @llvm.nvvm.d2i.hi(double %42) #145 %45 = and i32 %1, -2147483648 %46 = or i32 %44, %45 %47 = tail call double @llvm.nvvm.lohi.i2d(i32 %43, i32 %46) #145 br label %50 48: ; preds = %0 %49 = fadd double %a, %a br label %50 50: ; preds = %48, %__nv_float2int_rn.exit %t.0 = phi double [ %47, %__nv_float2int_rn.exit ], [ %49, %48 ] ret double %t.0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_rcbrt(double %a) unnamed_addr #114 { %1 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %2 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %3 = and i32 %2, 2147483647 %4 = fcmp une double %a, 0.000000e+00 %5 = icmp ult i32 %3, 2146435072 %or.cond = select i1 %4, i1 %5, i1 false br i1 %or.cond, label %__nv_float2int_rn.exit, label %41 __nv_float2int_rn.exit: ; preds = %0 %6 = icmp ult i32 %3, 1048576 %7 = tail call double @llvm.nvvm.lohi.i2d(i32 %1, i32 %3) #145 %8 = fmul double %7, 0x4350000000000000 %9 = tail call i32 @llvm.nvvm.d2i.lo(double %8) #145 %10 = tail call i32 @llvm.nvvm.d2i.hi(double %8) #145 %ilo.0 = select i1 %6, i32 %9, i32 %1 %ihi.0 = select i1 %6, i32 %10, i32 %3 %denorm.0.neg.neg = select i1 %6, i32 18, i32 1048576 %expo.0 = lshr i32 %ihi.0, 20 %11 = add nsw i32 %expo.0, -1022 %12 = sitofp i32 %11 to float %13 = fmul float %12, 0x3FD5555560000000 %14 = tail call i32 @llvm.nvvm.f2i.rn(float %13) #145 %.neg = mul i32 %14, -3145728 %15 = add i32 %.neg, %ihi.0 %16 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.0, i32 %15) #145 %17 = fptrunc double %16 to float %18 = tail call float @llvm.nvvm.lg2.approx.ftz.f(float %17) #145 %19 = fmul float %18, 0xBFD5555560000000 %20 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %19) #145 %21 = fpext float %20 to double %22 = tail call double @llvm.nvvm.mul.rn.d(double %21, double %21) #145 %23 = tail call double @llvm.nvvm.mul.rn.d(double %16, double %21) #145 %24 = fneg double %23 %25 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %24, double 1.000000e+00) #145 %26 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %21, double %24) #145 %27 = fneg double %26 %28 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %27, double %25) #145 %29 = fneg double %22 %30 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %21, double %29) #145 %31 = fneg double %30 %32 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %31, double %28) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double 0x3FCC71C71C71C71C, double %32, double 0x3FD5555555555555) #145 %34 = tail call double @llvm.nvvm.mul.rn.d(double %32, double %21) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %34, double %21) #145 %36 = tail call i32 @llvm.nvvm.d2i.lo(double %35) #145 %37 = tail call i32 @llvm.nvvm.d2i.hi(double %35) #145 %.neg2 = sub i32 %denorm.0.neg.neg, %14 %38 = shl i32 %.neg2, 20 %39 = add nsw i32 %37, %38 %40 = tail call double @llvm.nvvm.lohi.i2d(i32 %36, i32 %39) #145 br label %47 41: ; preds = %0 %42 = xor i32 %3, 2146435072 %43 = tail call double @llvm.nvvm.lohi.i2d(i32 %1, i32 %42) #145 %44 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %45 = fcmp ugt double %44, 0x7FF0000000000000 %46 = fadd double %a, %a %spec.select = select i1 %45, double %46, double %43 br label %47 47: ; preds = %41, %__nv_float2int_rn.exit %t.1 = phi double [ %40, %__nv_float2int_rn.exit ], [ %spec.select, %41 ] %48 = tail call i32 @llvm.nvvm.d2i.lo(double %t.1) #145 %49 = tail call i32 @llvm.nvvm.d2i.hi(double %t.1) #145 %50 = and i32 %2, -2147483648 %51 = or i32 %49, %50 %52 = tail call double @llvm.nvvm.lohi.i2d(i32 %48, i32 %51) #145 ret double %52 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_pow(double %a, double %b) unnamed_addr #115 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = tail call i32 @llvm.nvvm.d2i.hi(double %b) #145 %3 = lshr i32 %2, 20 %4 = and i32 %3, 2047 %5 = add nsw i32 %4, -1012 %6 = bitcast double %b to i64 %7 = zext i32 %5 to i64 %8 = shl i64 %6, %7 %9 = icmp eq i64 %8, -9223372036854775808 %10 = zext i1 %9 to i32 %11 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %12 = icmp slt i32 %1, 0 %13 = fcmp oeq double %a, 0.000000e+00 br i1 %13, label %14, label %20 14: ; preds = %0 %15 = tail call double @llvm.nvvm.fabs.d(double %b) #145 %16 = fcmp oeq double %15, 5.000000e-01 %bIsOddInteger.0 = select i1 %16, i32 0, i32 %10 %.not = icmp eq i32 %bIsOddInteger.0, 0 %thi.0 = select i1 %.not, i32 0, i32 %1 %17 = icmp slt i32 %2, 0 %18 = or i32 %thi.0, 2146435072 %thi.1 = select i1 %17, i32 %18, i32 %thi.0 %19 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %thi.1) #145 br label %29 20: ; preds = %0 %21 = tail call fastcc double @__internal_accurate_pow(double %11, double %b) %22 = tail call i32 @llvm.nvvm.d2i.lo(double %21) #145 %23 = tail call i32 @llvm.nvvm.d2i.hi(double %21) #145 %24 = xor i32 %23, -2147483648 %25 = tail call double @llvm.nvvm.lohi.i2d(i32 %22, i32 %24) #145 %26 = select i1 %12, i1 %9, i1 false %t.0 = select i1 %26, double %25, double %21 %27 = tail call double @llvm.nvvm.trunc.d(double %b) #145 %28 = fcmp une double %27, %b %or.cond = select i1 %12, i1 %28, i1 false %t.1 = select i1 %or.cond, double 0xFFF8000000000000, double %t.0 br label %29 29: ; preds = %20, %14 %t.2 = phi double [ %19, %14 ], [ %t.1, %20 ] %bIsOddInteger.1 = phi i32 [ %bIsOddInteger.0, %14 ], [ %10, %20 ] %30 = fadd double %a, %b %31 = tail call i32 @llvm.nvvm.d2i.hi(double %30) #145 %32 = and i32 %31, 2146435072 %33 = icmp eq i32 %32, 2146435072 br i1 %33, label %34, label %61 34: ; preds = %29 %35 = fcmp ugt double %11, 0x7FF0000000000000 %36 = tail call double @llvm.nvvm.fabs.d(double %b) #145 %37 = fcmp ugt double %36, 0x7FF0000000000000 %or.cond14 = select i1 %35, i1 true, i1 %37 br i1 %or.cond14, label %38, label %__nv_isinfd.exit4 38: ; preds = %34 %39 = tail call double @llvm.nvvm.add.rn.d(double %a, double %b) #145 br label %61 __nv_isinfd.exit4: ; preds = %34 %40 = tail call i32 @llvm.nvvm.d2i.lo(double %b) #145 %41 = and i32 %2, 2147483647 %42 = icmp eq i32 %41, 2146435072 %43 = icmp eq i32 %40, 0 %44 = select i1 %42, i1 %43, i1 false br i1 %44, label %45, label %__nv_isinfd.exit 45: ; preds = %__nv_isinfd.exit4 %46 = fcmp ogt double %11, 1.000000e+00 %thi.2 = select i1 %46, i32 2146435072, i32 0 %47 = icmp slt i32 %2, 0 %48 = xor i32 %thi.2, 2146435072 %thi.3 = select i1 %47, i32 %48, i32 %thi.2 %49 = fcmp oeq double %a, -1.000000e+00 %thi.4 = select i1 %49, i32 1072693248, i32 %thi.3 %50 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %thi.4) #145 br label %61 __nv_isinfd.exit: ; preds = %__nv_isinfd.exit4 %51 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %52 = and i32 %1, 2147483647 %53 = icmp eq i32 %52, 2146435072 %54 = icmp eq i32 %51, 0 %55 = select i1 %53, i1 %54, i1 false br i1 %55, label %56, label %61 56: ; preds = %__nv_isinfd.exit %.inv = icmp slt i32 %2, 0 %spec.select = select i1 %.inv, i32 0, i32 2146435072 %57 = icmp ne i32 %bIsOddInteger.1, 0 %or.cond9 = select i1 %12, i1 %57, i1 false %58 = icmp ne i32 %41, 1071644672 %or.cond11 = select i1 %or.cond9, i1 %58, i1 false %59 = or i32 %spec.select, -2147483648 %thi.6 = select i1 %or.cond11, i32 %59, i32 %spec.select %60 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %thi.6) #145 br label %61 61: ; preds = %38, %__nv_isinfd.exit, %56, %45, %29 %t.6 = phi double [ %t.2, %29 ], [ %39, %38 ], [ %50, %45 ], [ %60, %56 ], [ %t.2, %__nv_isinfd.exit ] %62 = fcmp oeq double %a, 1.000000e+00 %63 = fcmp oeq double %b, 0.000000e+00 %or.cond12 = select i1 %62, i1 true, i1 %63 %t.7 = select i1 %or.cond12, double 1.000000e+00, double %t.6 ret double %t.7 } ; Function Attrs: mustprogress nofree noinline nosync nounwind readnone willreturn define internal fastcc double @__internal_accurate_pow(double %a, double %b) unnamed_addr #116 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %3 = lshr i32 %1, 20 %4 = icmp ult i32 %1, 1048576 br i1 %4, label %5, label %11 5: ; preds = %0 %6 = fmul double %a, 0x4350000000000000 %7 = tail call i32 @llvm.nvvm.d2i.hi(double %6) #145 %8 = tail call i32 @llvm.nvvm.d2i.lo(double %6) #145 %9 = lshr i32 %7, 20 %10 = add nsw i32 %9, -54 br label %11 11: ; preds = %5, %0 %ilo.i.0 = phi i32 [ %8, %5 ], [ %2, %0 ] %ihi.i.0 = phi i32 [ %7, %5 ], [ %1, %0 ] %expo.i.0 = phi i32 [ %10, %5 ], [ %3, %0 ] %12 = add nsw i32 %expo.i.0, -1023 %13 = and i32 %ihi.i.0, -2146435073 %14 = or i32 %13, 1072693248 %15 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %14) #145 %16 = icmp ugt i32 %14, 1073127582 br i1 %16, label %17, label %__internal_log_ext_prec.exit 17: ; preds = %11 %18 = tail call i32 @llvm.nvvm.d2i.lo(double %15) #145 %19 = tail call i32 @llvm.nvvm.d2i.hi(double %15) #145 %20 = add i32 %19, -1048576 %21 = tail call double @llvm.nvvm.lohi.i2d(i32 %18, i32 %20) #145 %22 = add nsw i32 %expo.i.0, -1022 br label %__internal_log_ext_prec.exit __internal_log_ext_prec.exit: ; preds = %11, %17 %m.i.0 = phi double [ %21, %17 ], [ %15, %11 ] %expo.i.1 = phi i32 [ %22, %17 ], [ %12, %11 ] %23 = fadd double %m.i.0, -1.000000e+00 %24 = fadd double %m.i.0, 1.000000e+00 %25 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %24) #145 %26 = fneg double %24 %27 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %25, double 1.000000e+00) #145 %28 = tail call double @llvm.nvvm.fma.rn.d(double %27, double %27, double %27) #145 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %25, double %25) #145 %30 = fmul double %23, %29 %31 = fadd double %30, %30 %32 = fmul double %31, %31 %33 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB0F5FF7D2CAFE2, double %32, double 0x3ED0F5D241AD3B5A) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %32, double 0x3EF3B20A75488A3F) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %32, double 0x3F1745CDE4FAECD5) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %32, double 0x3F3C71C7258A578B) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %32, double 0x3F6249249242B910) #145 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %32, double 0x3F89999999999DFB) #145 %39 = fmul double %32, %38 %40 = fsub double %23, %31 %41 = fmul double %40, 2.000000e+00 %42 = fneg double %31 %43 = tail call double @llvm.nvvm.fma.rn.d(double %42, double %23, double %41) #145 %44 = fmul double %29, %43 %45 = fadd double %39, 0x3FB5555555555555 %46 = fsub double 0x3FB5555555555555, %45 %47 = fadd double %39, %46 %48 = fadd double %47, 0.000000e+00 %49 = fadd double %48, 0xBC46A4CB00B9E7B0 %50 = fadd double %45, %49 %51 = fsub double %45, %50 %52 = fadd double %49, %51 %53 = tail call double @llvm.nvvm.mul.rn.d(double %31, double %31) #145 %54 = fneg double %53 %55 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %31, double %54) #145 %56 = tail call i32 @llvm.nvvm.d2i.lo(double %44) #145 %57 = tail call i32 @llvm.nvvm.d2i.hi(double %44) #145 %58 = add i32 %57, 1048576 %59 = tail call double @llvm.nvvm.lohi.i2d(i32 %56, i32 %58) #145 %60 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %59, double %55) #145 %61 = tail call double @llvm.nvvm.mul.rn.d(double %53, double %31) #145 %62 = fneg double %61 %63 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %31, double %62) #145 %64 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %44, double %63) #145 %65 = tail call double @llvm.nvvm.fma.rn.d(double %60, double %31, double %64) #145 %66 = tail call double @llvm.nvvm.mul.rn.d(double %50, double %61) #145 %67 = fneg double %66 %68 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %61, double %67) #145 %69 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %65, double %68) #145 %70 = tail call double @llvm.nvvm.fma.rn.d(double %52, double %61, double %69) #145 %71 = fadd double %66, %70 %72 = fsub double %66, %71 %73 = fadd double %70, %72 %74 = fadd double %31, %71 %75 = fsub double %31, %74 %76 = fadd double %71, %75 %77 = fadd double %73, %76 %78 = fadd double %44, %77 %79 = fadd double %74, %78 %80 = fsub double %74, %79 %81 = fadd double %78, %80 %82 = xor i32 %expo.i.1, -2147483648 %83 = tail call double @llvm.nvvm.lohi.i2d(i32 %82, i32 1127219200) #145 %84 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %85 = fsub double %83, %84 %86 = tail call double @llvm.nvvm.fma.rn.d(double %85, double 0x3FE62E42FEFA39EF, double %79) #145 %87 = fneg double %85 %88 = tail call double @llvm.nvvm.fma.rn.d(double %87, double 0x3FE62E42FEFA39EF, double %86) #145 %89 = fsub double %88, %79 %90 = fsub double %81, %89 %91 = tail call double @llvm.nvvm.fma.rn.d(double %85, double 0x3C7ABC9E3B39803F, double %90) #145 %92 = fadd double %86, %91 %93 = fsub double %86, %92 %94 = fadd double %91, %93 %95 = tail call i32 @llvm.nvvm.d2i.hi(double %b) #145 %96 = tail call i32 @llvm.nvvm.d2i.lo(double %b) #145 %97 = shl i32 %95, 1 %98 = icmp ugt i32 %97, -33554433 %99 = and i32 %95, -15728641 %spec.select = select i1 %98, i32 %99, i32 %95 %100 = tail call double @llvm.nvvm.lohi.i2d(i32 %96, i32 %spec.select) #145 %101 = tail call double @llvm.nvvm.mul.rn.d(double %92, double %100) #145 %102 = fneg double %101 %103 = tail call double @llvm.nvvm.fma.rn.d(double %92, double %100, double %102) #145 %104 = tail call double @llvm.nvvm.fma.rn.d(double %94, double %100, double %103) #145 %105 = fadd double %101, %104 %106 = tail call double @llvm.nvvm.fma.rn.d(double %105, double 0x3FF71547652B82FE, double 0x4338000000000000) #145 %107 = tail call i32 @llvm.nvvm.d2i.lo(double %106) #145 %108 = tail call double @llvm.nvvm.add.rn.d(double %106, double 0xC338000000000000) #145 %109 = tail call double @llvm.nvvm.fma.rn.d(double %108, double 0xBFE62E42FEFA39EF, double %105) #145 %110 = tail call double @llvm.nvvm.fma.rn.d(double %108, double 0xBC7ABC9E3B39803F, double %109) #145 %111 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E5ADE1569CE2BDF, double %110, double 0x3E928AF3FCA213EA) #145 %112 = tail call double @llvm.nvvm.fma.rn.d(double %111, double %110, double 0x3EC71DEE62401315) #145 %113 = tail call double @llvm.nvvm.fma.rn.d(double %112, double %110, double 0x3EFA01997C89EB71) #145 %114 = tail call double @llvm.nvvm.fma.rn.d(double %113, double %110, double 0x3F2A01A014761F65) #145 %115 = tail call double @llvm.nvvm.fma.rn.d(double %114, double %110, double 0x3F56C16C1852B7AF) #145 %116 = tail call double @llvm.nvvm.fma.rn.d(double %115, double %110, double 0x3F81111111122322) #145 %117 = tail call double @llvm.nvvm.fma.rn.d(double %116, double %110, double 0x3FA55555555502A1) #145 %118 = tail call double @llvm.nvvm.fma.rn.d(double %117, double %110, double 0x3FC5555555555511) #145 %119 = tail call double @llvm.nvvm.fma.rn.d(double %118, double %110, double 0x3FE000000000000B) #145 %120 = tail call double @llvm.nvvm.fma.rn.d(double %119, double %110, double 1.000000e+00) #145 %121 = tail call double @llvm.nvvm.fma.rn.d(double %120, double %110, double 1.000000e+00) #145 %122 = tail call i32 @llvm.nvvm.d2i.lo(double %121) #145 %123 = tail call i32 @llvm.nvvm.d2i.hi(double %121) #145 %124 = shl i32 %107, 20 %125 = add i32 %123, %124 %126 = tail call double @llvm.nvvm.lohi.i2d(i32 %122, i32 %125) #145 %127 = tail call i32 @llvm.nvvm.d2i.hi(double %105) #145 %128 = bitcast i32 %127 to float %129 = tail call float @llvm.nvvm.fabs.f(float %128) #145 %130 = fcmp olt float %129, 0x4010C46560000000 br i1 %130, label %__nv_exp.exit, label %__internal_fast_icmp_abs_lt.exit.i __internal_fast_icmp_abs_lt.exit.i: ; preds = %__internal_log_ext_prec.exit %131 = fcmp olt double %105, 0.000000e+00 %132 = fadd double %105, 0x7FF0000000000000 %z.i.0 = select i1 %131, double 0.000000e+00, double %132 %133 = fcmp olt float %129, 0x4010E90000000000 br i1 %133, label %134, label %__nv_exp.exit 134: ; preds = %__internal_fast_icmp_abs_lt.exit.i %135 = sdiv i32 %107, 2 %136 = shl i32 %135, 20 %137 = add i32 %123, %136 %138 = tail call double @llvm.nvvm.lohi.i2d(i32 %122, i32 %137) #145 %139 = sub nsw i32 %107, %135 %140 = shl i32 %139, 20 %141 = add nsw i32 %140, 1072693248 %142 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %141) #145 %143 = fmul double %142, %138 br label %__nv_exp.exit __nv_exp.exit: ; preds = %__internal_log_ext_prec.exit, %134, %__internal_fast_icmp_abs_lt.exit.i %z.i.2 = phi double [ %126, %__internal_log_ext_prec.exit ], [ %143, %134 ], [ %z.i.0, %__internal_fast_icmp_abs_lt.exit.i ] %144 = fsub double %101, %105 %145 = fadd double %104, %144 %146 = tail call i32 @llvm.nvvm.d2i.lo(double %z.i.2) #145 %147 = tail call i32 @llvm.nvvm.d2i.hi(double %z.i.2) #145 %148 = and i32 %147, 2147483647 %149 = icmp eq i32 %148, 2146435072 %150 = icmp eq i32 %146, 0 %151 = select i1 %149, i1 %150, i1 false %152 = tail call double @llvm.nvvm.fma.rn.d(double %z.i.2, double %145, double %z.i.2) #145 %tmp.0 = select i1 %151, double %z.i.2, double %152 ret double %tmp.0 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_j0(double %a) unnamed_addr #117 { %q.i.i.i = alloca i32, align 4 %q.i.i = alloca i32, align 4 %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = fcmp ugt double %1, 0x400FB319F277BBE5 br i1 %2, label %23, label %3 3: ; preds = %0 %4 = fadd double %1, 0xC0033D152E971B40 %5 = fadd double %4, 0x3CA0F539D7DA258E %6 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCC0D18564C48C61, double %5, double 0xBCFCF8F9A8C294BC) #145 %7 = tail call double @llvm.nvvm.fma.rn.d(double %6, double %5, double 0x3D3FAB983CAE498B) #145 %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double %5, double 0x3D7CD7C018579B88) #145 %9 = tail call double @llvm.nvvm.fma.rn.d(double %8, double %5, double 0xBDBBDD2342D64FDD) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double %9, double %5, double 0xBDF5C2D9416B1E2B) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %5, double 0x3E32951D73174DD5) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %5, double 0x3E67FF99802CAEB5) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %5, double 0xBEA1CCE305C4C9F7) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %5, double 0xBED232C77E29E1BB) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %5, double 0x3F06ED3B9F0EF757) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %5, double 0x3F315382BA096A62) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %5, double 0xBF61F992590D1AE4) #145 %18 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %5, double 0xBF81BB1CBE1A465F) #145 %19 = tail call double @llvm.nvvm.fma.rn.d(double %18, double %5, double 0x3FACFAE864368D84) #145 %20 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %5, double 0x3FBBA1DEEA0294A3) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %5, double 0xBFE09CDB36551280) #145 %22 = fmul double %5, %21 br label %166 23: ; preds = %0 %24 = fcmp ugt double %1, 0x401C58FD1A62F5EC br i1 %24, label %45, label %25 25: ; preds = %23 %26 = fadd double %1, 0xC016148F5B2C2E45 %27 = fadd double %26, 0xBC975054CD60A517 %28 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CBCB0A8F126B343, double %27, double 0x3CF83FD1F333EB61) #145 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %27, double 0xBD4100E33E3FB413) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %27, double 0xBD7846076D004627) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %27, double 0x3DBE2F1D4F90720D) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %27, double 0x3DF1D03B1E4A119B) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %27, double 0xBE341D72B1B3BCE9) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %27, double 0xBE62DA37CE2A9EF8) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %27, double 0x3EA32E6D9974F763) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %27, double 0x3ECAD77D744A1879) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %27, double 0xBF0863F481A37337) #145 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %27, double 0xBF26F641F418F0F4) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %27, double 0x3F627E31FE9A969E) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %39, double %27, double 0x3F72F7FFE9025628) #145 %41 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %27, double 0xBFAB2150CB41E8BF) #145 %42 = tail call double @llvm.nvvm.fma.rn.d(double %41, double %27, double 0xBF9F8F72E7A848DE) #145 %43 = tail call double @llvm.nvvm.fma.rn.d(double %42, double %27, double 0x3FD5C6E60A097823) #145 %44 = fmul double %27, %43 br label %166 45: ; preds = %23 %46 = fcmp ugt double %1, 0x402471FCB6A7A8C0 br i1 %46, label %__nv_isinfd.exit, label %47 47: ; preds = %45 %48 = fadd double %1, 0xC0214EB56CCCDECA %49 = fadd double %48, 0x3CB51970714C7C25 %50 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCBDB7FFCF659E24, double %49, double 0xBCF4B3A71AAAC629) #145 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %49, double 0x3D417EC150ECDCE7) #145 %52 = tail call double @llvm.nvvm.fma.rn.d(double %51, double %49, double 0x3D7438F5EA1D10B2) #145 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double %49, double 0xBDBEDAE7EC2C9E87) #145 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %49, double 0xBDECADD2C4B91F58) #145 %55 = tail call double @llvm.nvvm.fma.rn.d(double %54, double %49, double 0x3E34582C8EE12204) #145 %56 = tail call double @llvm.nvvm.fma.rn.d(double %55, double %49, double 0x3E5CEDA451DD20F8) #145 %57 = tail call double @llvm.nvvm.fma.rn.d(double %56, double %49, double 0xBEA30E8CC3165E2F) #145 %58 = tail call double @llvm.nvvm.fma.rn.d(double %57, double %49, double 0xBEC3324842BB1A2E) #145 %59 = tail call double @llvm.nvvm.fma.rn.d(double %58, double %49, double 0x3F07800BC54FBDDB) #145 %60 = tail call double @llvm.nvvm.fma.rn.d(double %59, double %49, double 0x3F1D79605276949A) #145 %61 = tail call double @llvm.nvvm.fma.rn.d(double %60, double %49, double 0xBF60E0D60385A629) #145 %62 = tail call double @llvm.nvvm.fma.rn.d(double %61, double %49, double 0xBF648E63600D82F3) #145 %63 = tail call double @llvm.nvvm.fma.rn.d(double %62, double %49, double 0x3FA68B984EC6493A) #145 %64 = tail call double @llvm.nvvm.fma.rn.d(double %63, double %49, double 0x3F900F7FCF183E0B) #145 %65 = tail call double @llvm.nvvm.fma.rn.d(double %64, double %49, double 0xBFD15F7977A772D4) #145 %66 = fmul double %49, %65 br label %166 __nv_isinfd.exit: ; preds = %45 %67 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %68 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %69 = and i32 %68, 2147483647 %70 = icmp ne i32 %69, 2146435072 %71 = icmp ne i32 %67, 0 %72 = select i1 %70, i1 true, i1 %71 br i1 %72, label %73, label %166 73: ; preds = %__nv_isinfd.exit %74 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #145 %75 = fneg double %1 %76 = tail call double @llvm.nvvm.fma.rn.d(double %75, double %74, double 1.000000e+00) #145 %77 = tail call double @llvm.nvvm.fma.rn.d(double %76, double %76, double %76) #145 %78 = tail call double @llvm.nvvm.fma.rn.d(double %77, double %74, double %74) #145 %79 = fmul double %78, %78 %80 = tail call double @llvm.nvvm.fma.rn.d(double 0xC0D115CB8C11A9DC, double %79, double 0x409927467A655012) #145 %81 = tail call double @llvm.nvvm.fma.rn.d(double %80, double %79, double 0xC05751787E247BD4) #145 %82 = tail call double @llvm.nvvm.fma.rn.d(double %81, double %79, double 0x401704C4E5FC36B2) #145 %83 = tail call double @llvm.nvvm.fma.rn.d(double %82, double %79, double 0xBFE15B747A2FD531) #145 %84 = tail call double @llvm.nvvm.fma.rn.d(double %83, double %79, double 0x3FBA7FEACF6CB79B) #145 %85 = tail call double @llvm.nvvm.fma.rn.d(double %84, double %79, double 0xBFAFFFFFEDDCF548) #145 %86 = tail call double @llvm.nvvm.fma.rn.d(double %85, double %79, double 0x3FEFFFFFFFFFC9E5) #145 %87 = tail call double @llvm.nvvm.fma.rn.d(double 0xC14602FE1C34685E, double %79, double 0x410ECD4523B12B84) #145 %88 = tail call double @llvm.nvvm.fma.rn.d(double %87, double %79, double 0xC0C7A2FC1972F05A) #145 %89 = tail call double @llvm.nvvm.fma.rn.d(double %88, double %79, double 0x407EBA131F7E5BEB) #145 %90 = tail call double @llvm.nvvm.fma.rn.d(double %89, double %79, double 0xC0373B92E6E7CC7D) #145 %91 = tail call double @llvm.nvvm.fma.rn.d(double %90, double %79, double 0x3FFA31BEE63A2F08) #145 %92 = tail call double @llvm.nvvm.fma.rn.d(double %91, double %79, double 0xBFCAD320104D5D05) #145 %93 = tail call double @llvm.nvvm.fma.rn.d(double %92, double %79, double 0x3FB0AAAA9C76D07E) #145 %94 = tail call double @llvm.nvvm.fma.rn.d(double %93, double %79, double 0xBFBFFFFFFFFDACEC) #145 %95 = tail call double @llvm.nvvm.fma.rn.d(double %94, double %78, double %1) #145 %96 = tail call double @llvm.nvvm.rsqrt.approx.d(double %1) #145 %97 = fmul double %96, 0x3FE9884533D43651 %98 = fmul double %97, %86 %99 = fmul double %95, 0x3FE45F306DC9C883 %100 = tail call i32 @llvm.nvvm.d2i.rn(double %99) #145 store i32 %100, ptr %q.i.i, align 4 %101 = sitofp i32 %100 to double %102 = fneg double %101 %103 = tail call double @llvm.nvvm.fma.rn.d(double %102, double 0x3FF921FB54442D18, double %95) #145 %104 = tail call double @llvm.nvvm.fma.rn.d(double %102, double 0x3C91A62633145C00, double %103) #145 %105 = tail call double @llvm.nvvm.fma.rn.d(double %102, double 0x397B839A252049C0, double %104) #145 %106 = tail call double @llvm.nvvm.fabs.d(double %95) #145 %107 = fcmp ult double %106, 0x41E0000000000000 br i1 %107, label %__internal_trig_reduction_kerneld.exit.i, label %108 108: ; preds = %73 %109 = call fastcc double @__internal_trig_reduction_slowpathd(double %95, ptr nonnull %q.i.i) #145 %.pre = load i32, ptr %q.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i __internal_trig_reduction_kerneld.exit.i: ; preds = %108, %73 %110 = phi i32 [ %.pre, %108 ], [ %100, %73 ] %t.i.i.0 = phi double [ %109, %108 ], [ %105, %73 ] %111 = and i32 %110, 3 %112 = uitofp i32 %111 to double %113 = fadd double %t.i.i.0, 0xBFE921FB54442D18 %114 = fmul double %112, 0x3FF921FB54442D18 %115 = fadd double %113, %114 %116 = tail call i32 @llvm.nvvm.d2i.lo(double %115) #145 %117 = tail call i32 @llvm.nvvm.d2i.hi(double %115) #145 %118 = and i32 %117, 2147483647 %119 = icmp eq i32 %118, 2146435072 %120 = icmp eq i32 %116, 0 %121 = select i1 %119, i1 %120, i1 false br i1 %121, label %122, label %124 122: ; preds = %__internal_trig_reduction_kerneld.exit.i %123 = tail call double @llvm.nvvm.mul.rn.d(double %115, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i 124: ; preds = %__internal_trig_reduction_kerneld.exit.i %125 = fmul double %115, 0x3FE45F306DC9C883 %126 = tail call i32 @llvm.nvvm.d2i.rn(double %125) #145 store i32 %126, ptr %q.i.i.i, align 4 %127 = sitofp i32 %126 to double %128 = fneg double %127 %129 = tail call double @llvm.nvvm.fma.rn.d(double %128, double 0x3FF921FB54442D18, double %115) #145 %130 = tail call double @llvm.nvvm.fma.rn.d(double %128, double 0x3C91A62633145C00, double %129) #145 %131 = tail call double @llvm.nvvm.fma.rn.d(double %128, double 0x397B839A252049C0, double %130) #145 %132 = tail call double @llvm.nvvm.fabs.d(double %115) #145 %133 = fcmp ult double %132, 0x41E0000000000000 br i1 %133, label %__internal_trig_reduction_kerneld.exit.i.i, label %134 134: ; preds = %124 %135 = call fastcc double @__internal_trig_reduction_slowpathd(double %115, ptr nonnull %q.i.i.i) #145 %.pre7 = load i32, ptr %q.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i __internal_trig_reduction_kerneld.exit.i.i: ; preds = %124, %134, %122 %i.i.i.0 = phi i32 [ 0, %122 ], [ %.pre7, %134 ], [ %126, %124 ] %z.i.i.0 = phi double [ %123, %122 ], [ %135, %134 ], [ %131, %124 ] %136 = add nsw i32 %i.i.i.0, 1 %137 = and i32 %136, 1 %138 = shl nuw nsw i32 %137, 3 %139 = zext i32 %138 to i64 %140 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %139 %141 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.0, double %z.i.i.0) #145 %.not = icmp eq i32 %137, 0 %142 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %143 = getelementptr inbounds double, ptr addrspace(1) %140, i64 1 %144 = load double, ptr addrspace(1) %143, align 8 %145 = tail call double @llvm.nvvm.fma.rn.d(double %142, double %141, double %144) #145 %146 = getelementptr inbounds double, ptr addrspace(1) %140, i64 2 %147 = load double, ptr addrspace(1) %146, align 8 %148 = tail call double @llvm.nvvm.fma.rn.d(double %145, double %141, double %147) #145 %149 = getelementptr inbounds double, ptr addrspace(1) %140, i64 3 %150 = load double, ptr addrspace(1) %149, align 8 %151 = tail call double @llvm.nvvm.fma.rn.d(double %148, double %141, double %150) #145 %152 = getelementptr inbounds double, ptr addrspace(1) %140, i64 4 %153 = load double, ptr addrspace(1) %152, align 8 %154 = tail call double @llvm.nvvm.fma.rn.d(double %151, double %141, double %153) #145 %155 = getelementptr inbounds double, ptr addrspace(1) %140, i64 5 %156 = load double, ptr addrspace(1) %155, align 8 %157 = tail call double @llvm.nvvm.fma.rn.d(double %154, double %141, double %156) #145 %158 = getelementptr inbounds double, ptr addrspace(1) %140, i64 6 %159 = load double, ptr addrspace(1) %158, align 8 %160 = tail call double @llvm.nvvm.fma.rn.d(double %157, double %141, double %159) #145 %161 = tail call double @llvm.nvvm.fma.rn.d(double %160, double %z.i.i.0, double %z.i.i.0) #145 %162 = tail call double @llvm.nvvm.fma.rn.d(double %160, double %141, double 1.000000e+00) #145 %spec.select = select i1 %.not, double %161, double %162 %163 = and i32 %136, 2 %.not9 = icmp eq i32 %163, 0 %164 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select, double -1.000000e+00, double 0.000000e+00) #145 %.1 = select i1 %.not9, double %spec.select, double %164 %165 = fmul double %98, %.1 br label %166 166: ; preds = %25, %__internal_trig_reduction_kerneld.exit.i.i, %__nv_isinfd.exit, %47, %3 %r.3 = phi double [ %22, %3 ], [ %44, %25 ], [ %66, %47 ], [ %165, %__internal_trig_reduction_kerneld.exit.i.i ], [ 0.000000e+00, %__nv_isinfd.exit ] ret double %r.3 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_j1(double %a) unnamed_addr #118 { %q.i.i.i = alloca i32, align 4 %q.i.i = alloca i32, align 4 %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = fcmp ugt double %1, 0x400353AABAD7B784 br i1 %2, label %20, label %3 3: ; preds = %0 %4 = tail call double @llvm.nvvm.fma.rn.d(double 0x3D020E4ADCDE2AD3, double %1, double 0xBD4DD167A0DC3F55) #145 %5 = tail call double @llvm.nvvm.fma.rn.d(double %4, double %1, double 0x3D5503F5A491E487) #145 %6 = tail call double @llvm.nvvm.fma.rn.d(double %5, double %1, double 0x3DC1F29940C2403A) #145 %7 = tail call double @llvm.nvvm.fma.rn.d(double %6, double %1, double 0x3D84CF9302EACDEF) #145 %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double %1, double 0xBE384A53DBBCA436) #145 %9 = tail call double @llvm.nvvm.fma.rn.d(double %8, double %1, double 0x3D9779BEE4F63BCC) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double %9, double %1, double 0x3EA6C160E414F3F0) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %1, double 0x3D8F3D2F12430699) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %1, double 0xBF0C71C72C0CED04) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %1, double 0x3D659BCA506F1128) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %1, double 0x3F65555555506982) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %1, double 0x3D15BA0B425F1BFB) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %1, double 0xBFB0000000000065) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %1, double 0x3C8729A7253FB679) #145 %18 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %1, double 5.000000e-01) #145 %19 = fmul double %1, %18 br label %162 20: ; preds = %0 %21 = fcmp ugt double %1, 0x4015B1D0574614EA br i1 %21, label %41, label %22 22: ; preds = %20 %23 = fadd double %1, 0xC00EA75575AF6F09 %24 = fadd double %23, 0x3CA60155A9D1B256 %25 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCF8D3CDBB60175E, double %24, double 0x3D41011A1DF02DAD) #145 %26 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %24, double 0x3D76013AC1E5E222) #145 %27 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %24, double 0xBDBEC315D96D5F03) #145 %28 = tail call double @llvm.nvvm.fma.rn.d(double %27, double %24, double 0xBDF03BE1B4B57207) #145 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %24, double 0x3E345695F8B660F7) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %24, double 0x3E617069FCFCFFF4) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %24, double 0xBEA33825C36745EB) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %24, double 0xBEC9799D4F90931B) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %24, double 0x3F083A06E2F7DF13) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %24, double 0x3F26E4C2D53A7CF6) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %24, double 0xBF624B3409957B1C) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %24, double 0xBF7537544C3325DF) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %24, double 0x3FAB589D1DA138E2) #145 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %24, double 0x3FAAE8A39F51AD13) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %24, double 0xBFD9C6CF582CBF7F) #145 %40 = fmul double %24, %39 br label %162 41: ; preds = %20 %42 = fcmp ugt double %1, 0x40213065E54C1AA9 br i1 %42, label %__nv_isinfd.exit, label %43 43: ; preds = %41 %44 = fadd double %1, 0xC01C0FF5F3B47250 %45 = fadd double %44, 0x3C9B226D9D243827 %46 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CF3EB867515FAD6, double %45, double 0xBD40E8363DB649A9) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %45, double 0xBD73B7DD4A6608FB) #145 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %45, double 0x3DBEC5E01482C750) #145 %49 = tail call double @llvm.nvvm.fma.rn.d(double %48, double %45, double 0x3DEC62BB9E882103) #145 %50 = tail call double @llvm.nvvm.fma.rn.d(double %49, double %45, double 0xBE34462EED732A23) #145 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %45, double 0xBE5D48DCAD7DC59B) #145 %52 = tail call double @llvm.nvvm.fma.rn.d(double %51, double %45, double 0x3EA3026DF29167E9) #145 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double %45, double 0x3EC4255B0119666C) #145 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %45, double 0xBF0796A751B32693) #145 %55 = tail call double @llvm.nvvm.fma.rn.d(double %54, double %45, double 0xBF207358BBDBA284) #145 %56 = tail call double @llvm.nvvm.fma.rn.d(double %55, double %45, double 0x3F613FBC7D6927B1) #145 %57 = tail call double @llvm.nvvm.fma.rn.d(double %56, double %45, double 0x3F69A4B292E3DD75) #145 %58 = tail call double @llvm.nvvm.fma.rn.d(double %57, double %45, double 0xBFA80C83BDEEE4FB) #145 %59 = tail call double @llvm.nvvm.fma.rn.d(double %58, double %45, double 0xBF95E70DC60362BF) #145 %60 = tail call double @llvm.nvvm.fma.rn.d(double %59, double %45, double 0x3FD33518B3874E8A) #145 %61 = fmul double %45, %60 br label %162 __nv_isinfd.exit: ; preds = %41 %62 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %63 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %64 = and i32 %63, 2147483647 %65 = icmp eq i32 %64, 2146435072 %66 = icmp eq i32 %62, 0 %67 = select i1 %65, i1 %66, i1 false br i1 %67, label %162, label %68 68: ; preds = %__nv_isinfd.exit %69 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #145 %70 = fneg double %1 %71 = tail call double @llvm.nvvm.fma.rn.d(double %70, double %69, double 1.000000e+00) #145 %72 = tail call double @llvm.nvvm.fma.rn.d(double %71, double %71, double %71) #145 %73 = tail call double @llvm.nvvm.fma.rn.d(double %72, double %69, double %69) #145 %74 = fmul double %73, %73 %75 = tail call double @llvm.nvvm.fma.rn.d(double 0x40CD02EA3F2F6751, double %74, double 0xC099C06322A3F8BE) #145 %76 = tail call double @llvm.nvvm.fma.rn.d(double %75, double %74, double 0x405B89354DA77324) #145 %77 = tail call double @llvm.nvvm.fma.rn.d(double %76, double %74, double 0xC01E352294653188) #145 %78 = tail call double @llvm.nvvm.fma.rn.d(double %77, double %74, double 0x3FE9BC7DB16BD7A7) #145 %79 = tail call double @llvm.nvvm.fma.rn.d(double %78, double %74, double 0xBFC8BFE1C3A4F741) #145 %80 = tail call double @llvm.nvvm.fma.rn.d(double %79, double %74, double 0x3FC7FFFFF0D00BE2) #145 %81 = tail call double @llvm.nvvm.fma.rn.d(double %80, double %74, double 0x3FF00000000068CC) #145 %82 = tail call double @llvm.nvvm.fma.rn.d(double 0xC18DA26B212FDC9A, double %74, double 0x415A30AC6857BEE0) #145 %83 = tail call double @llvm.nvvm.fma.rn.d(double %82, double %74, double 0xC11764222AD7C910) #145 %84 = tail call double @llvm.nvvm.fma.rn.d(double %83, double %74, double 0x40CEB02E0C306857) #145 %85 = tail call double @llvm.nvvm.fma.rn.d(double %84, double %74, double 0xC08351859FA2B23B) #145 %86 = tail call double @llvm.nvvm.fma.rn.d(double %85, double %74, double 0x403E65A07AF51F42) #145 %87 = tail call double @llvm.nvvm.fma.rn.d(double %86, double %74, double 0xC002F2B817F77A57) #145 %88 = tail call double @llvm.nvvm.fma.rn.d(double %87, double %74, double 0x3FD7BCC34DA069FD) #145 %89 = tail call double @llvm.nvvm.fma.rn.d(double %88, double %74, double 0xBFC4FFFFF8A44463) #145 %90 = tail call double @llvm.nvvm.fma.rn.d(double %89, double %74, double 0x3FD7FFFFFFFF5CD7) #145 %91 = tail call double @llvm.nvvm.fma.rn.d(double %90, double %73, double %1) #145 %92 = tail call double @llvm.nvvm.rsqrt.approx.d(double %1) #145 %93 = fmul double %92, 0x3FE9884533D43651 %94 = fmul double %93, %81 %95 = fmul double %91, 0x3FE45F306DC9C883 %96 = tail call i32 @llvm.nvvm.d2i.rn(double %95) #145 store i32 %96, ptr %q.i.i, align 4 %97 = sitofp i32 %96 to double %98 = fneg double %97 %99 = tail call double @llvm.nvvm.fma.rn.d(double %98, double 0x3FF921FB54442D18, double %91) #145 %100 = tail call double @llvm.nvvm.fma.rn.d(double %98, double 0x3C91A62633145C00, double %99) #145 %101 = tail call double @llvm.nvvm.fma.rn.d(double %98, double 0x397B839A252049C0, double %100) #145 %102 = tail call double @llvm.nvvm.fabs.d(double %91) #145 %103 = fcmp ult double %102, 0x41E0000000000000 br i1 %103, label %__internal_trig_reduction_kerneld.exit.i, label %104 104: ; preds = %68 %105 = call fastcc double @__internal_trig_reduction_slowpathd(double %91, ptr nonnull %q.i.i) #145 %.pre = load i32, ptr %q.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i __internal_trig_reduction_kerneld.exit.i: ; preds = %104, %68 %106 = phi i32 [ %.pre, %104 ], [ %96, %68 ] %t.i.i.0 = phi double [ %105, %104 ], [ %101, %68 ] %107 = and i32 %106, 3 %108 = uitofp i32 %107 to double %109 = fadd double %t.i.i.0, 0xC002D97C7F3321D2 %110 = fmul double %108, 0x3FF921FB54442D18 %111 = fadd double %109, %110 %112 = tail call i32 @llvm.nvvm.d2i.lo(double %111) #145 %113 = tail call i32 @llvm.nvvm.d2i.hi(double %111) #145 %114 = and i32 %113, 2147483647 %115 = icmp eq i32 %114, 2146435072 %116 = icmp eq i32 %112, 0 %117 = select i1 %115, i1 %116, i1 false br i1 %117, label %118, label %120 118: ; preds = %__internal_trig_reduction_kerneld.exit.i %119 = tail call double @llvm.nvvm.mul.rn.d(double %111, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i 120: ; preds = %__internal_trig_reduction_kerneld.exit.i %121 = fmul double %111, 0x3FE45F306DC9C883 %122 = tail call i32 @llvm.nvvm.d2i.rn(double %121) #145 store i32 %122, ptr %q.i.i.i, align 4 %123 = sitofp i32 %122 to double %124 = fneg double %123 %125 = tail call double @llvm.nvvm.fma.rn.d(double %124, double 0x3FF921FB54442D18, double %111) #145 %126 = tail call double @llvm.nvvm.fma.rn.d(double %124, double 0x3C91A62633145C00, double %125) #145 %127 = tail call double @llvm.nvvm.fma.rn.d(double %124, double 0x397B839A252049C0, double %126) #145 %128 = tail call double @llvm.nvvm.fabs.d(double %111) #145 %129 = fcmp ult double %128, 0x41E0000000000000 br i1 %129, label %__internal_trig_reduction_kerneld.exit.i.i, label %130 130: ; preds = %120 %131 = call fastcc double @__internal_trig_reduction_slowpathd(double %111, ptr nonnull %q.i.i.i) #145 %.pre7 = load i32, ptr %q.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i __internal_trig_reduction_kerneld.exit.i.i: ; preds = %120, %130, %118 %i.i.i.0 = phi i32 [ 0, %118 ], [ %.pre7, %130 ], [ %122, %120 ] %z.i.i.0 = phi double [ %119, %118 ], [ %131, %130 ], [ %127, %120 ] %132 = add nsw i32 %i.i.i.0, 1 %133 = and i32 %132, 1 %134 = shl nuw nsw i32 %133, 3 %135 = zext i32 %134 to i64 %136 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %135 %137 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.0, double %z.i.i.0) #145 %.not = icmp eq i32 %133, 0 %138 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %139 = getelementptr inbounds double, ptr addrspace(1) %136, i64 1 %140 = load double, ptr addrspace(1) %139, align 8 %141 = tail call double @llvm.nvvm.fma.rn.d(double %138, double %137, double %140) #145 %142 = getelementptr inbounds double, ptr addrspace(1) %136, i64 2 %143 = load double, ptr addrspace(1) %142, align 8 %144 = tail call double @llvm.nvvm.fma.rn.d(double %141, double %137, double %143) #145 %145 = getelementptr inbounds double, ptr addrspace(1) %136, i64 3 %146 = load double, ptr addrspace(1) %145, align 8 %147 = tail call double @llvm.nvvm.fma.rn.d(double %144, double %137, double %146) #145 %148 = getelementptr inbounds double, ptr addrspace(1) %136, i64 4 %149 = load double, ptr addrspace(1) %148, align 8 %150 = tail call double @llvm.nvvm.fma.rn.d(double %147, double %137, double %149) #145 %151 = getelementptr inbounds double, ptr addrspace(1) %136, i64 5 %152 = load double, ptr addrspace(1) %151, align 8 %153 = tail call double @llvm.nvvm.fma.rn.d(double %150, double %137, double %152) #145 %154 = getelementptr inbounds double, ptr addrspace(1) %136, i64 6 %155 = load double, ptr addrspace(1) %154, align 8 %156 = tail call double @llvm.nvvm.fma.rn.d(double %153, double %137, double %155) #145 %157 = tail call double @llvm.nvvm.fma.rn.d(double %156, double %z.i.i.0, double %z.i.i.0) #145 %158 = tail call double @llvm.nvvm.fma.rn.d(double %156, double %137, double 1.000000e+00) #145 %spec.select = select i1 %.not, double %157, double %158 %159 = and i32 %132, 2 %.not9 = icmp eq i32 %159, 0 %160 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select, double -1.000000e+00, double 0.000000e+00) #145 %.1 = select i1 %.not9, double %spec.select, double %160 %161 = fmul double %94, %.1 br label %162 162: ; preds = %22, %__internal_trig_reduction_kerneld.exit.i.i, %__nv_isinfd.exit, %43, %3 %r.3 = phi double [ %19, %3 ], [ %40, %22 ], [ %61, %43 ], [ %161, %__internal_trig_reduction_kerneld.exit.i.i ], [ 0.000000e+00, %__nv_isinfd.exit ] %163 = fcmp olt double %a, 0.000000e+00 %164 = fneg double %r.3 %r.4 = select i1 %163, double %164, double %r.3 %165 = fcmp olt double %1, 1.000000e-30 %166 = fmul double %a, 5.000000e-01 %r.5 = select i1 %165, double %166, double %r.4 ret double %r.5 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_y0(double %a) unnamed_addr #119 { %q.i.i.i.i9 = alloca i32, align 4 %q.i.i.i20 = alloca i32, align 4 %q.i.i.i = alloca i32, align 4 %q.i.i = alloca i32, align 4 %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = fcmp ugt double %1, 0x3FE97F4A8F9D3F28 br i1 %2, label %248, label %3 3: ; preds = %0 %4 = fmul double %1, %1 %5 = tail call double @llvm.nvvm.fma.rn.d(double 0x3C8EFBD0A1B77C65, double %4, double 0xBD13098C51C18514) #145 %6 = tail call double @llvm.nvvm.fma.rn.d(double %5, double %4, double 0x3D923102D2F5F2F5) #145 %7 = tail call double @llvm.nvvm.fma.rn.d(double %6, double %4, double 0xBE0A5F2DEE7D526E) #145 %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double %4, double 0x3E7BB77E758B38AF) #145 %9 = tail call double @llvm.nvvm.fma.rn.d(double %8, double %4, double 0xBEE3D1A206EC4F36) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double %9, double %4, double 0x3F4183DCD3ED6294) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %4, double 0xBF903921CF04F123) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %4, double 0x3FC5DB69D7753176) #145 %13 = fadd double %4, 0xBFDBA96740000000 %14 = fadd double %13, 0x3E15A30C80000000 %15 = fmul double %14, %12 %16 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %17 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %18 = icmp slt i32 %16, 1048576 br i1 %18, label %19, label %23 19: ; preds = %3 %20 = fmul double %1, 0x4350000000000000 %21 = tail call i32 @llvm.nvvm.d2i.hi(double %20) #145 %22 = tail call i32 @llvm.nvvm.d2i.lo(double %20) #145 br label %23 23: ; preds = %19, %3 %.05 = phi double [ %20, %19 ], [ %1, %3 ] %ihi.i.0 = phi i32 [ %21, %19 ], [ %16, %3 ] %ilo.i.0 = phi i32 [ %22, %19 ], [ %17, %3 ] %e.i.0 = phi i32 [ -1077, %19 ], [ -1023, %3 ] %24 = add i32 %ihi.i.0, -1 %25 = icmp ult i32 %24, 2146435071 br i1 %25, label %26, label %75 26: ; preds = %23 %27 = lshr i32 %ihi.i.0, 20 %28 = add nsw i32 %e.i.0, %27 %29 = and i32 %ihi.i.0, -2146435073 %30 = or i32 %29, 1072693248 %31 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %30) #145 %32 = icmp ugt i32 %30, 1073127582 br i1 %32, label %33, label %39 33: ; preds = %26 %34 = tail call i32 @llvm.nvvm.d2i.lo(double %31) #145 %35 = tail call i32 @llvm.nvvm.d2i.hi(double %31) #145 %36 = add i32 %35, -1048576 %37 = tail call double @llvm.nvvm.lohi.i2d(i32 %34, i32 %36) #145 %38 = add nsw i32 %28, 1 br label %39 39: ; preds = %33, %26 %m.i.0 = phi double [ %37, %33 ], [ %31, %26 ] %e.i.1 = phi i32 [ %38, %33 ], [ %28, %26 ] %40 = fadd double %m.i.0, -1.000000e+00 %41 = fadd double %m.i.0, 1.000000e+00 %42 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %41) #145 %43 = fneg double %41 %44 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %42, double 1.000000e+00) #145 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %44, double %44) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %42, double %42) #145 %47 = fmul double %40, %46 %48 = fadd double %47, %47 %49 = fmul double %48, %48 %50 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %49, double 0x3ED0EE258B7A8B04) #145 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %49, double 0x3EF3B2669F02676F) #145 %52 = tail call double @llvm.nvvm.fma.rn.d(double %51, double %49, double 0x3F1745CBA9AB0956) #145 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double %49, double 0x3F3C71C72D1B5154) #145 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %49, double 0x3F624924923BE72D) #145 %55 = tail call double @llvm.nvvm.fma.rn.d(double %54, double %49, double 0x3F8999999999A3C4) #145 %56 = tail call double @llvm.nvvm.fma.rn.d(double %55, double %49, double 0x3FB5555555555554) #145 %57 = fsub double %40, %48 %58 = fmul double %57, 2.000000e+00 %59 = fneg double %48 %60 = tail call double @llvm.nvvm.fma.rn.d(double %59, double %40, double %58) #145 %61 = fmul double %46, %60 %62 = fmul double %49, %56 %63 = tail call double @llvm.nvvm.fma.rn.d(double %62, double %48, double %61) #145 %64 = xor i32 %e.i.1, -2147483648 %65 = tail call double @llvm.nvvm.lohi.i2d(i32 %64, i32 1127219200) #145 %66 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %67 = fsub double %65, %66 %68 = tail call double @llvm.nvvm.fma.rn.d(double %67, double 0x3FE62E42FEFA39EF, double %48) #145 %69 = fneg double %67 %70 = tail call double @llvm.nvvm.fma.rn.d(double %69, double 0x3FE62E42FEFA39EF, double %68) #145 %71 = fsub double %70, %48 %72 = fsub double %63, %71 %73 = tail call double @llvm.nvvm.fma.rn.d(double %67, double 0x3C7ABC9E3B39803F, double %72) #145 %74 = fadd double %68, %73 br label %__nv_log.exit 75: ; preds = %23 %76 = tail call double @llvm.nvvm.fma.rn.d(double %.05, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %77 = tail call i32 @llvm.nvvm.d2i.hi(double %.05) #145 %78 = bitcast i32 %77 to float %79 = fcmp oeq float %78, 0.000000e+00 %q.i3.0 = select i1 %79, double 0xFFF0000000000000, double %76 br label %__nv_log.exit __nv_log.exit: ; preds = %39, %75 %q.i3.1 = phi double [ %74, %39 ], [ %q.i3.0, %75 ] %80 = fmul double %q.i3.1, 0x3FE45F306DC9C883 %81 = tail call double @llvm.nvvm.fabs.d(double %1) #145 %82 = fcmp ugt double %81, 0x400FB319F277BBE5 br i1 %82, label %103, label %83 83: ; preds = %__nv_log.exit %84 = fadd double %81, 0xC0033D152E971B40 %85 = fadd double %84, 0x3CA0F539D7DA258E %86 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCC0D18564C48C61, double %85, double 0xBCFCF8F9A8C294BC) #145 %87 = tail call double @llvm.nvvm.fma.rn.d(double %86, double %85, double 0x3D3FAB983CAE498B) #145 %88 = tail call double @llvm.nvvm.fma.rn.d(double %87, double %85, double 0x3D7CD7C018579B88) #145 %89 = tail call double @llvm.nvvm.fma.rn.d(double %88, double %85, double 0xBDBBDD2342D64FDD) #145 %90 = tail call double @llvm.nvvm.fma.rn.d(double %89, double %85, double 0xBDF5C2D9416B1E2B) #145 %91 = tail call double @llvm.nvvm.fma.rn.d(double %90, double %85, double 0x3E32951D73174DD5) #145 %92 = tail call double @llvm.nvvm.fma.rn.d(double %91, double %85, double 0x3E67FF99802CAEB5) #145 %93 = tail call double @llvm.nvvm.fma.rn.d(double %92, double %85, double 0xBEA1CCE305C4C9F7) #145 %94 = tail call double @llvm.nvvm.fma.rn.d(double %93, double %85, double 0xBED232C77E29E1BB) #145 %95 = tail call double @llvm.nvvm.fma.rn.d(double %94, double %85, double 0x3F06ED3B9F0EF757) #145 %96 = tail call double @llvm.nvvm.fma.rn.d(double %95, double %85, double 0x3F315382BA096A62) #145 %97 = tail call double @llvm.nvvm.fma.rn.d(double %96, double %85, double 0xBF61F992590D1AE4) #145 %98 = tail call double @llvm.nvvm.fma.rn.d(double %97, double %85, double 0xBF81BB1CBE1A465F) #145 %99 = tail call double @llvm.nvvm.fma.rn.d(double %98, double %85, double 0x3FACFAE864368D84) #145 %100 = tail call double @llvm.nvvm.fma.rn.d(double %99, double %85, double 0x3FBBA1DEEA0294A3) #145 %101 = tail call double @llvm.nvvm.fma.rn.d(double %100, double %85, double 0xBFE09CDB36551280) #145 %102 = fmul double %85, %101 br label %__nv_j0.exit 103: ; preds = %__nv_log.exit %104 = fcmp ugt double %81, 0x401C58FD1A62F5EC br i1 %104, label %125, label %105 105: ; preds = %103 %106 = fadd double %81, 0xC016148F5B2C2E45 %107 = fadd double %106, 0xBC975054CD60A517 %108 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CBCB0A8F126B343, double %107, double 0x3CF83FD1F333EB61) #145 %109 = tail call double @llvm.nvvm.fma.rn.d(double %108, double %107, double 0xBD4100E33E3FB413) #145 %110 = tail call double @llvm.nvvm.fma.rn.d(double %109, double %107, double 0xBD7846076D004627) #145 %111 = tail call double @llvm.nvvm.fma.rn.d(double %110, double %107, double 0x3DBE2F1D4F90720D) #145 %112 = tail call double @llvm.nvvm.fma.rn.d(double %111, double %107, double 0x3DF1D03B1E4A119B) #145 %113 = tail call double @llvm.nvvm.fma.rn.d(double %112, double %107, double 0xBE341D72B1B3BCE9) #145 %114 = tail call double @llvm.nvvm.fma.rn.d(double %113, double %107, double 0xBE62DA37CE2A9EF8) #145 %115 = tail call double @llvm.nvvm.fma.rn.d(double %114, double %107, double 0x3EA32E6D9974F763) #145 %116 = tail call double @llvm.nvvm.fma.rn.d(double %115, double %107, double 0x3ECAD77D744A1879) #145 %117 = tail call double @llvm.nvvm.fma.rn.d(double %116, double %107, double 0xBF0863F481A37337) #145 %118 = tail call double @llvm.nvvm.fma.rn.d(double %117, double %107, double 0xBF26F641F418F0F4) #145 %119 = tail call double @llvm.nvvm.fma.rn.d(double %118, double %107, double 0x3F627E31FE9A969E) #145 %120 = tail call double @llvm.nvvm.fma.rn.d(double %119, double %107, double 0x3F72F7FFE9025628) #145 %121 = tail call double @llvm.nvvm.fma.rn.d(double %120, double %107, double 0xBFAB2150CB41E8BF) #145 %122 = tail call double @llvm.nvvm.fma.rn.d(double %121, double %107, double 0xBF9F8F72E7A848DE) #145 %123 = tail call double @llvm.nvvm.fma.rn.d(double %122, double %107, double 0x3FD5C6E60A097823) #145 %124 = fmul double %107, %123 br label %__nv_j0.exit 125: ; preds = %103 %126 = fcmp ugt double %81, 0x402471FCB6A7A8C0 br i1 %126, label %__nv_isinfd.exit.i, label %127 127: ; preds = %125 %128 = fadd double %81, 0xC0214EB56CCCDECA %129 = fadd double %128, 0x3CB51970714C7C25 %130 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCBDB7FFCF659E24, double %129, double 0xBCF4B3A71AAAC629) #145 %131 = tail call double @llvm.nvvm.fma.rn.d(double %130, double %129, double 0x3D417EC150ECDCE7) #145 %132 = tail call double @llvm.nvvm.fma.rn.d(double %131, double %129, double 0x3D7438F5EA1D10B2) #145 %133 = tail call double @llvm.nvvm.fma.rn.d(double %132, double %129, double 0xBDBEDAE7EC2C9E87) #145 %134 = tail call double @llvm.nvvm.fma.rn.d(double %133, double %129, double 0xBDECADD2C4B91F58) #145 %135 = tail call double @llvm.nvvm.fma.rn.d(double %134, double %129, double 0x3E34582C8EE12204) #145 %136 = tail call double @llvm.nvvm.fma.rn.d(double %135, double %129, double 0x3E5CEDA451DD20F8) #145 %137 = tail call double @llvm.nvvm.fma.rn.d(double %136, double %129, double 0xBEA30E8CC3165E2F) #145 %138 = tail call double @llvm.nvvm.fma.rn.d(double %137, double %129, double 0xBEC3324842BB1A2E) #145 %139 = tail call double @llvm.nvvm.fma.rn.d(double %138, double %129, double 0x3F07800BC54FBDDB) #145 %140 = tail call double @llvm.nvvm.fma.rn.d(double %139, double %129, double 0x3F1D79605276949A) #145 %141 = tail call double @llvm.nvvm.fma.rn.d(double %140, double %129, double 0xBF60E0D60385A629) #145 %142 = tail call double @llvm.nvvm.fma.rn.d(double %141, double %129, double 0xBF648E63600D82F3) #145 %143 = tail call double @llvm.nvvm.fma.rn.d(double %142, double %129, double 0x3FA68B984EC6493A) #145 %144 = tail call double @llvm.nvvm.fma.rn.d(double %143, double %129, double 0x3F900F7FCF183E0B) #145 %145 = tail call double @llvm.nvvm.fma.rn.d(double %144, double %129, double 0xBFD15F7977A772D4) #145 %146 = fmul double %129, %145 br label %__nv_j0.exit __nv_isinfd.exit.i: ; preds = %125 %147 = tail call i32 @llvm.nvvm.d2i.lo(double %81) #145 %148 = tail call i32 @llvm.nvvm.d2i.hi(double %81) #145 %149 = and i32 %148, 2147483647 %150 = icmp ne i32 %149, 2146435072 %151 = icmp ne i32 %147, 0 %152 = select i1 %150, i1 true, i1 %151 br i1 %152, label %153, label %__nv_j0.exit 153: ; preds = %__nv_isinfd.exit.i %154 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %81) #145 %155 = fneg double %81 %156 = tail call double @llvm.nvvm.fma.rn.d(double %155, double %154, double 1.000000e+00) #145 %157 = tail call double @llvm.nvvm.fma.rn.d(double %156, double %156, double %156) #145 %158 = tail call double @llvm.nvvm.fma.rn.d(double %157, double %154, double %154) #145 %159 = fmul double %158, %158 %160 = tail call double @llvm.nvvm.fma.rn.d(double 0xC0D115CB8C11A9DC, double %159, double 0x409927467A655012) #145 %161 = tail call double @llvm.nvvm.fma.rn.d(double %160, double %159, double 0xC05751787E247BD4) #145 %162 = tail call double @llvm.nvvm.fma.rn.d(double %161, double %159, double 0x401704C4E5FC36B2) #145 %163 = tail call double @llvm.nvvm.fma.rn.d(double %162, double %159, double 0xBFE15B747A2FD531) #145 %164 = tail call double @llvm.nvvm.fma.rn.d(double %163, double %159, double 0x3FBA7FEACF6CB79B) #145 %165 = tail call double @llvm.nvvm.fma.rn.d(double %164, double %159, double 0xBFAFFFFFEDDCF548) #145 %166 = tail call double @llvm.nvvm.fma.rn.d(double %165, double %159, double 0x3FEFFFFFFFFFC9E5) #145 %167 = tail call double @llvm.nvvm.fma.rn.d(double 0xC14602FE1C34685E, double %159, double 0x410ECD4523B12B84) #145 %168 = tail call double @llvm.nvvm.fma.rn.d(double %167, double %159, double 0xC0C7A2FC1972F05A) #145 %169 = tail call double @llvm.nvvm.fma.rn.d(double %168, double %159, double 0x407EBA131F7E5BEB) #145 %170 = tail call double @llvm.nvvm.fma.rn.d(double %169, double %159, double 0xC0373B92E6E7CC7D) #145 %171 = tail call double @llvm.nvvm.fma.rn.d(double %170, double %159, double 0x3FFA31BEE63A2F08) #145 %172 = tail call double @llvm.nvvm.fma.rn.d(double %171, double %159, double 0xBFCAD320104D5D05) #145 %173 = tail call double @llvm.nvvm.fma.rn.d(double %172, double %159, double 0x3FB0AAAA9C76D07E) #145 %174 = tail call double @llvm.nvvm.fma.rn.d(double %173, double %159, double 0xBFBFFFFFFFFDACEC) #145 %175 = tail call double @llvm.nvvm.fma.rn.d(double %174, double %158, double %81) #145 %176 = tail call double @llvm.nvvm.rsqrt.approx.d(double %81) #145 %177 = fmul double %176, 0x3FE9884533D43651 %178 = fmul double %177, %166 %179 = fmul double %175, 0x3FE45F306DC9C883 %180 = tail call i32 @llvm.nvvm.d2i.rn(double %179) #145 store i32 %180, ptr %q.i.i.i20, align 4 %181 = sitofp i32 %180 to double %182 = fneg double %181 %183 = tail call double @llvm.nvvm.fma.rn.d(double %182, double 0x3FF921FB54442D18, double %175) #145 %184 = tail call double @llvm.nvvm.fma.rn.d(double %182, double 0x3C91A62633145C00, double %183) #145 %185 = tail call double @llvm.nvvm.fma.rn.d(double %182, double 0x397B839A252049C0, double %184) #145 %186 = tail call double @llvm.nvvm.fabs.d(double %175) #145 %187 = fcmp ult double %186, 0x41E0000000000000 br i1 %187, label %__internal_trig_reduction_kerneld.exit.i.i25, label %188 188: ; preds = %153 %189 = call fastcc double @__internal_trig_reduction_slowpathd(double %175, ptr nonnull %q.i.i.i20) #145 %.pre11 = load i32, ptr %q.i.i.i20, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i25 __internal_trig_reduction_kerneld.exit.i.i25: ; preds = %188, %153 %190 = phi i32 [ %.pre11, %188 ], [ %180, %153 ] %t.i.i.i19.0 = phi double [ %189, %188 ], [ %185, %153 ] %191 = and i32 %190, 3 %192 = uitofp i32 %191 to double %193 = fadd double %t.i.i.i19.0, 0xBFE921FB54442D18 %194 = fmul double %192, 0x3FF921FB54442D18 %195 = fadd double %193, %194 %196 = tail call i32 @llvm.nvvm.d2i.lo(double %195) #145 %197 = tail call i32 @llvm.nvvm.d2i.hi(double %195) #145 %198 = and i32 %197, 2147483647 %199 = icmp eq i32 %198, 2146435072 %200 = icmp eq i32 %196, 0 %201 = select i1 %199, i1 %200, i1 false br i1 %201, label %202, label %204 202: ; preds = %__internal_trig_reduction_kerneld.exit.i.i25 %203 = tail call double @llvm.nvvm.mul.rn.d(double %195, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i.i27 204: ; preds = %__internal_trig_reduction_kerneld.exit.i.i25 %205 = fmul double %195, 0x3FE45F306DC9C883 %206 = tail call i32 @llvm.nvvm.d2i.rn(double %205) #145 store i32 %206, ptr %q.i.i.i.i9, align 4 %207 = sitofp i32 %206 to double %208 = fneg double %207 %209 = tail call double @llvm.nvvm.fma.rn.d(double %208, double 0x3FF921FB54442D18, double %195) #145 %210 = tail call double @llvm.nvvm.fma.rn.d(double %208, double 0x3C91A62633145C00, double %209) #145 %211 = tail call double @llvm.nvvm.fma.rn.d(double %208, double 0x397B839A252049C0, double %210) #145 %212 = tail call double @llvm.nvvm.fabs.d(double %195) #145 %213 = fcmp ult double %212, 0x41E0000000000000 br i1 %213, label %__internal_trig_reduction_kerneld.exit.i.i.i27, label %214 214: ; preds = %204 %215 = call fastcc double @__internal_trig_reduction_slowpathd(double %195, ptr nonnull %q.i.i.i.i9) #145 %.pre16 = load i32, ptr %q.i.i.i.i9, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i27 __internal_trig_reduction_kerneld.exit.i.i.i27: ; preds = %204, %214, %202 %i.i.i.i17.0 = phi i32 [ 0, %202 ], [ %.pre16, %214 ], [ %206, %204 ] %z.i.i.i16.0 = phi double [ %203, %202 ], [ %215, %214 ], [ %211, %204 ] %216 = add nsw i32 %i.i.i.i17.0, 1 %217 = and i32 %216, 1 %218 = shl nuw nsw i32 %217, 3 %219 = zext i32 %218 to i64 %220 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %219 %221 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.i16.0, double %z.i.i.i16.0) #145 %.not23 = icmp eq i32 %217, 0 %222 = select i1 %.not23, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %223 = getelementptr inbounds double, ptr addrspace(1) %220, i64 1 %224 = load double, ptr addrspace(1) %223, align 8 %225 = tail call double @llvm.nvvm.fma.rn.d(double %222, double %221, double %224) #145 %226 = getelementptr inbounds double, ptr addrspace(1) %220, i64 2 %227 = load double, ptr addrspace(1) %226, align 8 %228 = tail call double @llvm.nvvm.fma.rn.d(double %225, double %221, double %227) #145 %229 = getelementptr inbounds double, ptr addrspace(1) %220, i64 3 %230 = load double, ptr addrspace(1) %229, align 8 %231 = tail call double @llvm.nvvm.fma.rn.d(double %228, double %221, double %230) #145 %232 = getelementptr inbounds double, ptr addrspace(1) %220, i64 4 %233 = load double, ptr addrspace(1) %232, align 8 %234 = tail call double @llvm.nvvm.fma.rn.d(double %231, double %221, double %233) #145 %235 = getelementptr inbounds double, ptr addrspace(1) %220, i64 5 %236 = load double, ptr addrspace(1) %235, align 8 %237 = tail call double @llvm.nvvm.fma.rn.d(double %234, double %221, double %236) #145 %238 = getelementptr inbounds double, ptr addrspace(1) %220, i64 6 %239 = load double, ptr addrspace(1) %238, align 8 %240 = tail call double @llvm.nvvm.fma.rn.d(double %237, double %221, double %239) #145 %241 = tail call double @llvm.nvvm.fma.rn.d(double %240, double %z.i.i.i16.0, double %z.i.i.i16.0) #145 %242 = tail call double @llvm.nvvm.fma.rn.d(double %240, double %221, double 1.000000e+00) #145 %spec.select = select i1 %.not23, double %241, double %242 %243 = and i32 %216, 2 %.not24 = icmp eq i32 %243, 0 %244 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select, double -1.000000e+00, double 0.000000e+00) #145 %.111 = select i1 %.not24, double %spec.select, double %244 %245 = fmul double %178, %.111 br label %__nv_j0.exit __nv_j0.exit: ; preds = %105, %__internal_trig_reduction_kerneld.exit.i.i.i27, %__nv_isinfd.exit.i, %127, %83 %r.i.3 = phi double [ %102, %83 ], [ %124, %105 ], [ %146, %127 ], [ %245, %__internal_trig_reduction_kerneld.exit.i.i.i27 ], [ 0.000000e+00, %__nv_isinfd.exit.i ] %246 = fmul double %80, %r.i.3 %247 = fadd double %15, %246 br label %427 248: ; preds = %0 %249 = fcmp ugt double %1, 0x4000347C4AB37B18 br i1 %249, label %277, label %250 250: ; preds = %248 %251 = fadd double %1, 0xBFEC982EB8D417EA %252 = fadd double %251, 0xBC7EA9D270347F83 %253 = tail call double @llvm.nvvm.fma.rn.d(double 0xBF01630132D75FC3, double %252, double 0x3F3D054B05D3C52D) #145 %254 = tail call double @llvm.nvvm.fma.rn.d(double %253, double %252, double 0xBF66DAC0B314B2E5) #145 %255 = tail call double @llvm.nvvm.fma.rn.d(double %254, double %252, double 0x3F86A5D1DE76263F) #145 %256 = tail call double @llvm.nvvm.fma.rn.d(double %255, double %252, double 0xBF9FD16652824592) #145 %257 = tail call double @llvm.nvvm.fma.rn.d(double %256, double %252, double 0x3FB0F69A9CC79FBD) #145 %258 = tail call double @llvm.nvvm.fma.rn.d(double %257, double %252, double 0xBFBCCE40EF15583E) #145 %259 = tail call double @llvm.nvvm.fma.rn.d(double %258, double %252, double 0x3FC446B11780E4FC) #145 %260 = tail call double @llvm.nvvm.fma.rn.d(double %259, double %252, double 0xBFC89AE7E19621F7) #145 %261 = tail call double @llvm.nvvm.fma.rn.d(double %260, double %252, double 0x3FCACBA1B38EF7B8) #145 %262 = tail call double @llvm.nvvm.fma.rn.d(double %261, double %252, double 0xBFCB4166A03BBFA5) #145 %263 = tail call double @llvm.nvvm.fma.rn.d(double %262, double %252, double 0x3FCACCA4D5D4889A) #145 %264 = tail call double @llvm.nvvm.fma.rn.d(double %263, double %252, double 0xBFCA1455932B9392) #145 %265 = tail call double @llvm.nvvm.fma.rn.d(double %264, double %252, double 0x3FC96D8DB8D844EC) #145 %266 = tail call double @llvm.nvvm.fma.rn.d(double %265, double %252, double 0xBFC8F7FB77522EDF) #145 %267 = tail call double @llvm.nvvm.fma.rn.d(double %266, double %252, double 0x3FC8C0926ABC9AB0) #145 %268 = tail call double @llvm.nvvm.fma.rn.d(double %267, double %252, double 0xBFC8D35B8FEA468C) #145 %269 = tail call double @llvm.nvvm.fma.rn.d(double %268, double %252, double 0x3FC9424B8A0C8F94) #145 %270 = tail call double @llvm.nvvm.fma.rn.d(double %269, double %252, double 0xBFCA396A7F3403EF) #145 %271 = tail call double @llvm.nvvm.fma.rn.d(double %270, double %252, double 0x3FCC068086C37055) #145 %272 = tail call double @llvm.nvvm.fma.rn.d(double %271, double %252, double 0xBFCCF18E6A4C5C4E) #145 %273 = tail call double @llvm.nvvm.fma.rn.d(double %272, double %252, double 0x3FCC3B1338AF4239) #145 %274 = tail call double @llvm.nvvm.fma.rn.d(double %273, double %252, double 0xBFDF7E38A46D70DB) #145 %275 = tail call double @llvm.nvvm.fma.rn.d(double %274, double %252, double 0x3FEC24371844B88A) #145 %276 = fmul double %252, %275 br label %427 277: ; preds = %248 %278 = fcmp ugt double %1, 0x40161663B5D9A628 br i1 %278, label %306, label %279 279: ; preds = %277 %280 = fadd double %1, 0xC00FA9534D98569C %281 = fadd double %280, 0x3C9F06AE7804384E %282 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCDAEA62AC8BDA68, double %281, double 0xBCD2434958151AC7) #145 %283 = tail call double @llvm.nvvm.fma.rn.d(double %282, double %281, double 0x3D11C24A40D33FE1) #145 %284 = tail call double @llvm.nvvm.fma.rn.d(double %283, double %281, double 0x3D237CD62FA08CA4) #145 %285 = tail call double @llvm.nvvm.fma.rn.d(double %284, double %281, double 0xBD43902E0298C52A) #145 %286 = tail call double @llvm.nvvm.fma.rn.d(double %285, double %281, double 0xBD1DDAAD11CAB40F) #145 %287 = tail call double @llvm.nvvm.fma.rn.d(double %286, double %281, double 0xBD5209D9F06D7DE4) #145 %288 = tail call double @llvm.nvvm.fma.rn.d(double %287, double %281, double 0x3D8BB9F464468E1A) #145 %289 = tail call double @llvm.nvvm.fma.rn.d(double %288, double %281, double 0xBDA8F67B07D1B440) #145 %290 = tail call double @llvm.nvvm.fma.rn.d(double %289, double %281, double 0x3DC7C8D60F9EAECF) #145 %291 = tail call double @llvm.nvvm.fma.rn.d(double %290, double %281, double 0xBDE9703405B49A8D) #145 %292 = tail call double @llvm.nvvm.fma.rn.d(double %291, double %281, double 0x3E0A6B64E76417E4) #145 %293 = tail call double @llvm.nvvm.fma.rn.d(double %292, double %281, double 0xBE2F6B5AFB2F1359) #145 %294 = tail call double @llvm.nvvm.fma.rn.d(double %293, double %281, double 0x3E54526B71C21EC1) #145 %295 = tail call double @llvm.nvvm.fma.rn.d(double %294, double %281, double 0xBE5776DBCBBC8E1D) #145 %296 = tail call double @llvm.nvvm.fma.rn.d(double %295, double %281, double 0xBE93B211FC2DF90E) #145 %297 = tail call double @llvm.nvvm.fma.rn.d(double %296, double %281, double 0xBED486372E8562DC) #145 %298 = tail call double @llvm.nvvm.fma.rn.d(double %297, double %281, double 0x3F0AB2C1FBC3A254) #145 %299 = tail call double @llvm.nvvm.fma.rn.d(double %298, double %281, double 0x3F299827653353B8) #145 %300 = tail call double @llvm.nvvm.fma.rn.d(double %299, double %281, double 0xBF61E32BC4ED7084) #145 %301 = tail call double @llvm.nvvm.fma.rn.d(double %300, double %281, double 0xBF7C116FDC599A09) #145 %302 = tail call double @llvm.nvvm.fma.rn.d(double %301, double %281, double 0x3FADF6D59BF50C77) #145 %303 = tail call double @llvm.nvvm.fma.rn.d(double %302, double %281, double 0x3FAA09C92903680B) #145 %304 = tail call double @llvm.nvvm.fma.rn.d(double %303, double %281, double 0xBFD9C34256A12A0B) #145 %305 = fmul double %281, %304 br label %427 306: ; preds = %277 %307 = fcmp ugt double %1, 0x40214EF30C0C06ED br i1 %307, label %__nv_isinfd.exit, label %308 308: ; preds = %306 %309 = fadd double %1, 0xC01C581DC4E72103 %310 = fadd double %309, 0x3C99774A495F56CF %311 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CF1CB3ABA718B8E, double %310, double 0xBD3F443BB4F53D75) #145 %312 = tail call double @llvm.nvvm.fma.rn.d(double %311, double %310, double 0xBD770F737BD6A786) #145 %313 = tail call double @llvm.nvvm.fma.rn.d(double %312, double %310, double 0x3DBF0E9A20459E14) #145 %314 = tail call double @llvm.nvvm.fma.rn.d(double %313, double %310, double 0x3DEFA6B137D5E108) #145 %315 = tail call double @llvm.nvvm.fma.rn.d(double %314, double %310, double 0xBE344296729FB7FA) #145 %316 = tail call double @llvm.nvvm.fma.rn.d(double %315, double %310, double 0xBE60A2813A80DFAA) #145 %317 = tail call double @llvm.nvvm.fma.rn.d(double %316, double %310, double 0x3EA34AA737A83EB4) #145 %318 = tail call double @llvm.nvvm.fma.rn.d(double %317, double %310, double 0x3EC6A9227332D03C) #145 %319 = tail call double @llvm.nvvm.fma.rn.d(double %318, double %310, double 0xBF08177E4F93C81E) #145 %320 = tail call double @llvm.nvvm.fma.rn.d(double %319, double %310, double 0xBF226DD71E391775) #145 %321 = tail call double @llvm.nvvm.fma.rn.d(double %320, double %310, double 0x3F61D35E85FD7B22) #145 %322 = tail call double @llvm.nvvm.fma.rn.d(double %321, double %310, double 0x3F6B2F14A955285C) #145 %323 = tail call double @llvm.nvvm.fma.rn.d(double %322, double %310, double 0xBFA8969C64CBF388) #145 %324 = tail call double @llvm.nvvm.fma.rn.d(double %323, double %310, double 0xBF95AEF611FC4D5A) #145 %325 = tail call double @llvm.nvvm.fma.rn.d(double %324, double %310, double 0x3FD334CCA0697A5A) #145 %326 = fmul double %310, %325 br label %427 __nv_isinfd.exit: ; preds = %306 %327 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %328 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %329 = and i32 %328, 2147483647 %330 = icmp eq i32 %329, 2146435072 %331 = icmp eq i32 %327, 0 %332 = select i1 %330, i1 %331, i1 false br i1 %332, label %427, label %333 333: ; preds = %__nv_isinfd.exit %334 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #145 %335 = fneg double %1 %336 = tail call double @llvm.nvvm.fma.rn.d(double %335, double %334, double 1.000000e+00) #145 %337 = tail call double @llvm.nvvm.fma.rn.d(double %336, double %336, double %336) #145 %338 = tail call double @llvm.nvvm.fma.rn.d(double %337, double %334, double %334) #145 %339 = fmul double %338, %338 %340 = tail call double @llvm.nvvm.fma.rn.d(double 0xC0C5E91E6AC3AD03, double %339, double 0x4093F56A049CDDE7) #145 %341 = tail call double @llvm.nvvm.fma.rn.d(double %340, double %339, double 0xC05572D39DFB8433) #145 %342 = tail call double @llvm.nvvm.fma.rn.d(double %341, double %339, double 0x4016A6041CAA59E5) #145 %343 = tail call double @llvm.nvvm.fma.rn.d(double %342, double %339, double 0xBFE155E3A0493880) #145 %344 = tail call double @llvm.nvvm.fma.rn.d(double %343, double %339, double 0x3FBA7FB92F417F7F) #145 %345 = tail call double @llvm.nvvm.fma.rn.d(double %344, double %339, double 0xBFAFFFFFB12E32F5) #145 %346 = tail call double @llvm.nvvm.fma.rn.d(double %345, double %339, double 0x3FEFFFFFFFFECED5) #145 %347 = tail call double @llvm.nvvm.fma.rn.d(double 0x418A86A64BE101DC, double %339, double 0xC15709C79AAC5813) #145 %348 = tail call double @llvm.nvvm.fma.rn.d(double %347, double %339, double 0x41142A31C980A287) #145 %349 = tail call double @llvm.nvvm.fma.rn.d(double %348, double %339, double 0xC0C9CBE68930485D) #145 %350 = tail call double @llvm.nvvm.fma.rn.d(double %349, double %339, double 0x407F583E14E8A4E8) #145 %351 = tail call double @llvm.nvvm.fma.rn.d(double %350, double %339, double 0xC0374A629C650680) #145 %352 = tail call double @llvm.nvvm.fma.rn.d(double %351, double %339, double 0x3FFA32A7AF17FAE9) #145 %353 = tail call double @llvm.nvvm.fma.rn.d(double %352, double %339, double 0xBFCAD32497785CD6) #145 %354 = tail call double @llvm.nvvm.fma.rn.d(double %353, double %339, double 0x3FB0AAAA9FB75F7B) #145 %355 = tail call double @llvm.nvvm.fma.rn.d(double %354, double %339, double 0xBFBFFFFFFFFE320F) #145 %356 = tail call double @llvm.nvvm.fma.rn.d(double %355, double %338, double %1) #145 %357 = tail call double @llvm.nvvm.rsqrt.approx.d(double %1) #145 %358 = fmul double %357, 0x3FE9884533D43651 %359 = fmul double %358, %346 %360 = fmul double %356, 0x3FE45F306DC9C883 %361 = tail call i32 @llvm.nvvm.d2i.rn(double %360) #145 store i32 %361, ptr %q.i.i, align 4 %362 = sitofp i32 %361 to double %363 = fneg double %362 %364 = tail call double @llvm.nvvm.fma.rn.d(double %363, double 0x3FF921FB54442D18, double %356) #145 %365 = tail call double @llvm.nvvm.fma.rn.d(double %363, double 0x3C91A62633145C00, double %364) #145 %366 = tail call double @llvm.nvvm.fma.rn.d(double %363, double 0x397B839A252049C0, double %365) #145 %367 = tail call double @llvm.nvvm.fabs.d(double %356) #145 %368 = fcmp ult double %367, 0x41E0000000000000 br i1 %368, label %__internal_trig_reduction_kerneld.exit.i, label %369 369: ; preds = %333 %370 = call fastcc double @__internal_trig_reduction_slowpathd(double %356, ptr nonnull %q.i.i) #145 %.pre = load i32, ptr %q.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i __internal_trig_reduction_kerneld.exit.i: ; preds = %369, %333 %371 = phi i32 [ %.pre, %369 ], [ %361, %333 ] %t.i.i.0 = phi double [ %370, %369 ], [ %366, %333 ] %372 = and i32 %371, 3 %373 = uitofp i32 %372 to double %374 = fadd double %t.i.i.0, 0xC002D97C7F3321D2 %375 = fmul double %373, 0x3FF921FB54442D18 %376 = fadd double %374, %375 %377 = tail call i32 @llvm.nvvm.d2i.lo(double %376) #145 %378 = tail call i32 @llvm.nvvm.d2i.hi(double %376) #145 %379 = and i32 %378, 2147483647 %380 = icmp eq i32 %379, 2146435072 %381 = icmp eq i32 %377, 0 %382 = select i1 %380, i1 %381, i1 false br i1 %382, label %383, label %385 383: ; preds = %__internal_trig_reduction_kerneld.exit.i %384 = tail call double @llvm.nvvm.mul.rn.d(double %376, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i 385: ; preds = %__internal_trig_reduction_kerneld.exit.i %386 = fmul double %376, 0x3FE45F306DC9C883 %387 = tail call i32 @llvm.nvvm.d2i.rn(double %386) #145 store i32 %387, ptr %q.i.i.i, align 4 %388 = sitofp i32 %387 to double %389 = fneg double %388 %390 = tail call double @llvm.nvvm.fma.rn.d(double %389, double 0x3FF921FB54442D18, double %376) #145 %391 = tail call double @llvm.nvvm.fma.rn.d(double %389, double 0x3C91A62633145C00, double %390) #145 %392 = tail call double @llvm.nvvm.fma.rn.d(double %389, double 0x397B839A252049C0, double %391) #145 %393 = tail call double @llvm.nvvm.fabs.d(double %376) #145 %394 = fcmp ult double %393, 0x41E0000000000000 br i1 %394, label %__internal_trig_reduction_kerneld.exit.i.i, label %395 395: ; preds = %385 %396 = call fastcc double @__internal_trig_reduction_slowpathd(double %376, ptr nonnull %q.i.i.i) #145 %.pre7 = load i32, ptr %q.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i __internal_trig_reduction_kerneld.exit.i.i: ; preds = %385, %395, %383 %i.i.i.0 = phi i32 [ 0, %383 ], [ %.pre7, %395 ], [ %387, %385 ] %z.i.i.0 = phi double [ %384, %383 ], [ %396, %395 ], [ %392, %385 ] %397 = add nsw i32 %i.i.i.0, 1 %398 = and i32 %397, 1 %399 = shl nuw nsw i32 %398, 3 %400 = zext i32 %399 to i64 %401 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %400 %402 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.0, double %z.i.i.0) #145 %.not = icmp eq i32 %398, 0 %403 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %404 = getelementptr inbounds double, ptr addrspace(1) %401, i64 1 %405 = load double, ptr addrspace(1) %404, align 8 %406 = tail call double @llvm.nvvm.fma.rn.d(double %403, double %402, double %405) #145 %407 = getelementptr inbounds double, ptr addrspace(1) %401, i64 2 %408 = load double, ptr addrspace(1) %407, align 8 %409 = tail call double @llvm.nvvm.fma.rn.d(double %406, double %402, double %408) #145 %410 = getelementptr inbounds double, ptr addrspace(1) %401, i64 3 %411 = load double, ptr addrspace(1) %410, align 8 %412 = tail call double @llvm.nvvm.fma.rn.d(double %409, double %402, double %411) #145 %413 = getelementptr inbounds double, ptr addrspace(1) %401, i64 4 %414 = load double, ptr addrspace(1) %413, align 8 %415 = tail call double @llvm.nvvm.fma.rn.d(double %412, double %402, double %414) #145 %416 = getelementptr inbounds double, ptr addrspace(1) %401, i64 5 %417 = load double, ptr addrspace(1) %416, align 8 %418 = tail call double @llvm.nvvm.fma.rn.d(double %415, double %402, double %417) #145 %419 = getelementptr inbounds double, ptr addrspace(1) %401, i64 6 %420 = load double, ptr addrspace(1) %419, align 8 %421 = tail call double @llvm.nvvm.fma.rn.d(double %418, double %402, double %420) #145 %422 = tail call double @llvm.nvvm.fma.rn.d(double %421, double %z.i.i.0, double %z.i.i.0) #145 %423 = tail call double @llvm.nvvm.fma.rn.d(double %421, double %402, double 1.000000e+00) #145 %spec.select17 = select i1 %.not, double %422, double %423 %424 = and i32 %397, 2 %.not22 = icmp eq i32 %424, 0 %425 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select17, double -1.000000e+00, double 0.000000e+00) #145 %.1 = select i1 %.not22, double %spec.select17, double %425 %426 = fmul double %359, %.1 br label %427 427: ; preds = %250, %308, %__nv_isinfd.exit, %__internal_trig_reduction_kerneld.exit.i.i, %279, %__nv_j0.exit %r.4 = phi double [ %247, %__nv_j0.exit ], [ %276, %250 ], [ %305, %279 ], [ %326, %308 ], [ %426, %__internal_trig_reduction_kerneld.exit.i.i ], [ 0.000000e+00, %__nv_isinfd.exit ] %428 = fcmp olt double %a, 0.000000e+00 %r.5 = select i1 %428, double 0xFFF8000000000000, double %r.4 ret double %r.5 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_y1(double %a) unnamed_addr #120 { %q.i.i.i.i5 = alloca i32, align 4 %q.i.i.i16 = alloca i32, align 4 %q.i.i.i = alloca i32, align 4 %q.i.i = alloca i32, align 4 %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = fcmp olt double %1, 0x730D67819E8D2 br i1 %2, label %3, label %5 3: ; preds = %0 %4 = fdiv double 0xBFE45F306DC9C883, %1 br label %427 5: ; preds = %0 %6 = fcmp ugt double %1, 0x3FF4C6F208132576 br i1 %6, label %251, label %7 7: ; preds = %5 %8 = fmul double %1, %1 %9 = tail call double @llvm.nvvm.fma.rn.d(double 0x3D5249F90687428C, double %8, double 0xBDCF0B5B1FB7B95E) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double %9, double %8, double 0x3E432E589311FA14) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %8, double 0xBEB0A780AA4A92E9) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %8, double 0x3F12C7DBFFCAEC2B) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %8, double 0xBF6835B97894BA4A) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %8, double 0x3FABD3975C75B4A3) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %8, double 0xBFC91866143CBC8A) #145 %16 = fmul double %1, %15 %17 = tail call double @llvm.nvvm.fabs.d(double %1) #145 %18 = fcmp ugt double %17, 0x400353AABAD7B784 br i1 %18, label %36, label %19 19: ; preds = %7 %20 = tail call double @llvm.nvvm.fma.rn.d(double 0x3D020E4ADCDE2AD3, double %17, double 0xBD4DD167A0DC3F55) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %17, double 0x3D5503F5A491E487) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %17, double 0x3DC1F29940C2403A) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %17, double 0x3D84CF9302EACDEF) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %17, double 0xBE384A53DBBCA436) #145 %25 = tail call double @llvm.nvvm.fma.rn.d(double %24, double %17, double 0x3D9779BEE4F63BCC) #145 %26 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %17, double 0x3EA6C160E414F3F0) #145 %27 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %17, double 0x3D8F3D2F12430699) #145 %28 = tail call double @llvm.nvvm.fma.rn.d(double %27, double %17, double 0xBF0C71C72C0CED04) #145 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %17, double 0x3D659BCA506F1128) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %17, double 0x3F65555555506982) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %17, double 0x3D15BA0B425F1BFB) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %17, double 0xBFB0000000000065) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %17, double 0x3C8729A7253FB679) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %17, double 5.000000e-01) #145 %35 = fmul double %17, %34 br label %__nv_j1.exit 36: ; preds = %7 %37 = fcmp ugt double %17, 0x4015B1D0574614EA br i1 %37, label %57, label %38 38: ; preds = %36 %39 = fadd double %17, 0xC00EA75575AF6F09 %40 = fadd double %39, 0x3CA60155A9D1B256 %41 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCF8D3CDBB60175E, double %40, double 0x3D41011A1DF02DAD) #145 %42 = tail call double @llvm.nvvm.fma.rn.d(double %41, double %40, double 0x3D76013AC1E5E222) #145 %43 = tail call double @llvm.nvvm.fma.rn.d(double %42, double %40, double 0xBDBEC315D96D5F03) #145 %44 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %40, double 0xBDF03BE1B4B57207) #145 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %40, double 0x3E345695F8B660F7) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %40, double 0x3E617069FCFCFFF4) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %40, double 0xBEA33825C36745EB) #145 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %40, double 0xBEC9799D4F90931B) #145 %49 = tail call double @llvm.nvvm.fma.rn.d(double %48, double %40, double 0x3F083A06E2F7DF13) #145 %50 = tail call double @llvm.nvvm.fma.rn.d(double %49, double %40, double 0x3F26E4C2D53A7CF6) #145 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %40, double 0xBF624B3409957B1C) #145 %52 = tail call double @llvm.nvvm.fma.rn.d(double %51, double %40, double 0xBF7537544C3325DF) #145 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double %40, double 0x3FAB589D1DA138E2) #145 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %40, double 0x3FAAE8A39F51AD13) #145 %55 = tail call double @llvm.nvvm.fma.rn.d(double %54, double %40, double 0xBFD9C6CF582CBF7F) #145 %56 = fmul double %40, %55 br label %__nv_j1.exit 57: ; preds = %36 %58 = fcmp ugt double %17, 0x40213065E54C1AA9 br i1 %58, label %__nv_isinfd.exit.i, label %59 59: ; preds = %57 %60 = fadd double %17, 0xC01C0FF5F3B47250 %61 = fadd double %60, 0x3C9B226D9D243827 %62 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CF3EB867515FAD6, double %61, double 0xBD40E8363DB649A9) #145 %63 = tail call double @llvm.nvvm.fma.rn.d(double %62, double %61, double 0xBD73B7DD4A6608FB) #145 %64 = tail call double @llvm.nvvm.fma.rn.d(double %63, double %61, double 0x3DBEC5E01482C750) #145 %65 = tail call double @llvm.nvvm.fma.rn.d(double %64, double %61, double 0x3DEC62BB9E882103) #145 %66 = tail call double @llvm.nvvm.fma.rn.d(double %65, double %61, double 0xBE34462EED732A23) #145 %67 = tail call double @llvm.nvvm.fma.rn.d(double %66, double %61, double 0xBE5D48DCAD7DC59B) #145 %68 = tail call double @llvm.nvvm.fma.rn.d(double %67, double %61, double 0x3EA3026DF29167E9) #145 %69 = tail call double @llvm.nvvm.fma.rn.d(double %68, double %61, double 0x3EC4255B0119666C) #145 %70 = tail call double @llvm.nvvm.fma.rn.d(double %69, double %61, double 0xBF0796A751B32693) #145 %71 = tail call double @llvm.nvvm.fma.rn.d(double %70, double %61, double 0xBF207358BBDBA284) #145 %72 = tail call double @llvm.nvvm.fma.rn.d(double %71, double %61, double 0x3F613FBC7D6927B1) #145 %73 = tail call double @llvm.nvvm.fma.rn.d(double %72, double %61, double 0x3F69A4B292E3DD75) #145 %74 = tail call double @llvm.nvvm.fma.rn.d(double %73, double %61, double 0xBFA80C83BDEEE4FB) #145 %75 = tail call double @llvm.nvvm.fma.rn.d(double %74, double %61, double 0xBF95E70DC60362BF) #145 %76 = tail call double @llvm.nvvm.fma.rn.d(double %75, double %61, double 0x3FD33518B3874E8A) #145 %77 = fmul double %61, %76 br label %__nv_j1.exit __nv_isinfd.exit.i: ; preds = %57 %78 = tail call i32 @llvm.nvvm.d2i.lo(double %17) #145 %79 = tail call i32 @llvm.nvvm.d2i.hi(double %17) #145 %80 = and i32 %79, 2147483647 %81 = icmp eq i32 %80, 2146435072 %82 = icmp eq i32 %78, 0 %83 = select i1 %81, i1 %82, i1 false br i1 %83, label %__nv_j1.exit, label %84 84: ; preds = %__nv_isinfd.exit.i %85 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %17) #145 %86 = fneg double %17 %87 = tail call double @llvm.nvvm.fma.rn.d(double %86, double %85, double 1.000000e+00) #145 %88 = tail call double @llvm.nvvm.fma.rn.d(double %87, double %87, double %87) #145 %89 = tail call double @llvm.nvvm.fma.rn.d(double %88, double %85, double %85) #145 %90 = fmul double %89, %89 %91 = tail call double @llvm.nvvm.fma.rn.d(double 0x40CD02EA3F2F6751, double %90, double 0xC099C06322A3F8BE) #145 %92 = tail call double @llvm.nvvm.fma.rn.d(double %91, double %90, double 0x405B89354DA77324) #145 %93 = tail call double @llvm.nvvm.fma.rn.d(double %92, double %90, double 0xC01E352294653188) #145 %94 = tail call double @llvm.nvvm.fma.rn.d(double %93, double %90, double 0x3FE9BC7DB16BD7A7) #145 %95 = tail call double @llvm.nvvm.fma.rn.d(double %94, double %90, double 0xBFC8BFE1C3A4F741) #145 %96 = tail call double @llvm.nvvm.fma.rn.d(double %95, double %90, double 0x3FC7FFFFF0D00BE2) #145 %97 = tail call double @llvm.nvvm.fma.rn.d(double %96, double %90, double 0x3FF00000000068CC) #145 %98 = tail call double @llvm.nvvm.fma.rn.d(double 0xC18DA26B212FDC9A, double %90, double 0x415A30AC6857BEE0) #145 %99 = tail call double @llvm.nvvm.fma.rn.d(double %98, double %90, double 0xC11764222AD7C910) #145 %100 = tail call double @llvm.nvvm.fma.rn.d(double %99, double %90, double 0x40CEB02E0C306857) #145 %101 = tail call double @llvm.nvvm.fma.rn.d(double %100, double %90, double 0xC08351859FA2B23B) #145 %102 = tail call double @llvm.nvvm.fma.rn.d(double %101, double %90, double 0x403E65A07AF51F42) #145 %103 = tail call double @llvm.nvvm.fma.rn.d(double %102, double %90, double 0xC002F2B817F77A57) #145 %104 = tail call double @llvm.nvvm.fma.rn.d(double %103, double %90, double 0x3FD7BCC34DA069FD) #145 %105 = tail call double @llvm.nvvm.fma.rn.d(double %104, double %90, double 0xBFC4FFFFF8A44463) #145 %106 = tail call double @llvm.nvvm.fma.rn.d(double %105, double %90, double 0x3FD7FFFFFFFF5CD7) #145 %107 = tail call double @llvm.nvvm.fma.rn.d(double %106, double %89, double %17) #145 %108 = tail call double @llvm.nvvm.rsqrt.approx.d(double %17) #145 %109 = fmul double %108, 0x3FE9884533D43651 %110 = fmul double %109, %97 %111 = fmul double %107, 0x3FE45F306DC9C883 %112 = tail call i32 @llvm.nvvm.d2i.rn(double %111) #145 store i32 %112, ptr %q.i.i.i16, align 4 %113 = sitofp i32 %112 to double %114 = fneg double %113 %115 = tail call double @llvm.nvvm.fma.rn.d(double %114, double 0x3FF921FB54442D18, double %107) #145 %116 = tail call double @llvm.nvvm.fma.rn.d(double %114, double 0x3C91A62633145C00, double %115) #145 %117 = tail call double @llvm.nvvm.fma.rn.d(double %114, double 0x397B839A252049C0, double %116) #145 %118 = tail call double @llvm.nvvm.fabs.d(double %107) #145 %119 = fcmp ult double %118, 0x41E0000000000000 br i1 %119, label %__internal_trig_reduction_kerneld.exit.i.i20, label %120 120: ; preds = %84 %121 = call fastcc double @__internal_trig_reduction_slowpathd(double %107, ptr nonnull %q.i.i.i16) #145 %.pre11 = load i32, ptr %q.i.i.i16, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i20 __internal_trig_reduction_kerneld.exit.i.i20: ; preds = %120, %84 %122 = phi i32 [ %.pre11, %120 ], [ %112, %84 ] %t.i.i.i15.0 = phi double [ %121, %120 ], [ %117, %84 ] %123 = and i32 %122, 3 %124 = uitofp i32 %123 to double %125 = fadd double %t.i.i.i15.0, 0xC002D97C7F3321D2 %126 = fmul double %124, 0x3FF921FB54442D18 %127 = fadd double %125, %126 %128 = tail call i32 @llvm.nvvm.d2i.lo(double %127) #145 %129 = tail call i32 @llvm.nvvm.d2i.hi(double %127) #145 %130 = and i32 %129, 2147483647 %131 = icmp eq i32 %130, 2146435072 %132 = icmp eq i32 %128, 0 %133 = select i1 %131, i1 %132, i1 false br i1 %133, label %134, label %136 134: ; preds = %__internal_trig_reduction_kerneld.exit.i.i20 %135 = tail call double @llvm.nvvm.mul.rn.d(double %127, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i.i22 136: ; preds = %__internal_trig_reduction_kerneld.exit.i.i20 %137 = fmul double %127, 0x3FE45F306DC9C883 %138 = tail call i32 @llvm.nvvm.d2i.rn(double %137) #145 store i32 %138, ptr %q.i.i.i.i5, align 4 %139 = sitofp i32 %138 to double %140 = fneg double %139 %141 = tail call double @llvm.nvvm.fma.rn.d(double %140, double 0x3FF921FB54442D18, double %127) #145 %142 = tail call double @llvm.nvvm.fma.rn.d(double %140, double 0x3C91A62633145C00, double %141) #145 %143 = tail call double @llvm.nvvm.fma.rn.d(double %140, double 0x397B839A252049C0, double %142) #145 %144 = tail call double @llvm.nvvm.fabs.d(double %127) #145 %145 = fcmp ult double %144, 0x41E0000000000000 br i1 %145, label %__internal_trig_reduction_kerneld.exit.i.i.i22, label %146 146: ; preds = %136 %147 = call fastcc double @__internal_trig_reduction_slowpathd(double %127, ptr nonnull %q.i.i.i.i5) #145 %.pre16 = load i32, ptr %q.i.i.i.i5, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i22 __internal_trig_reduction_kerneld.exit.i.i.i22: ; preds = %136, %146, %134 %i.i.i.i13.0 = phi i32 [ 0, %134 ], [ %.pre16, %146 ], [ %138, %136 ] %z.i.i.i12.0 = phi double [ %135, %134 ], [ %147, %146 ], [ %143, %136 ] %148 = add nsw i32 %i.i.i.i13.0, 1 %149 = and i32 %148, 1 %150 = shl nuw nsw i32 %149, 3 %151 = zext i32 %150 to i64 %152 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %151 %153 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.i12.0, double %z.i.i.i12.0) #145 %.not23 = icmp eq i32 %149, 0 %154 = select i1 %.not23, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %155 = getelementptr inbounds double, ptr addrspace(1) %152, i64 1 %156 = load double, ptr addrspace(1) %155, align 8 %157 = tail call double @llvm.nvvm.fma.rn.d(double %154, double %153, double %156) #145 %158 = getelementptr inbounds double, ptr addrspace(1) %152, i64 2 %159 = load double, ptr addrspace(1) %158, align 8 %160 = tail call double @llvm.nvvm.fma.rn.d(double %157, double %153, double %159) #145 %161 = getelementptr inbounds double, ptr addrspace(1) %152, i64 3 %162 = load double, ptr addrspace(1) %161, align 8 %163 = tail call double @llvm.nvvm.fma.rn.d(double %160, double %153, double %162) #145 %164 = getelementptr inbounds double, ptr addrspace(1) %152, i64 4 %165 = load double, ptr addrspace(1) %164, align 8 %166 = tail call double @llvm.nvvm.fma.rn.d(double %163, double %153, double %165) #145 %167 = getelementptr inbounds double, ptr addrspace(1) %152, i64 5 %168 = load double, ptr addrspace(1) %167, align 8 %169 = tail call double @llvm.nvvm.fma.rn.d(double %166, double %153, double %168) #145 %170 = getelementptr inbounds double, ptr addrspace(1) %152, i64 6 %171 = load double, ptr addrspace(1) %170, align 8 %172 = tail call double @llvm.nvvm.fma.rn.d(double %169, double %153, double %171) #145 %173 = tail call double @llvm.nvvm.fma.rn.d(double %172, double %z.i.i.i12.0, double %z.i.i.i12.0) #145 %174 = tail call double @llvm.nvvm.fma.rn.d(double %172, double %153, double 1.000000e+00) #145 %spec.select = select i1 %.not23, double %173, double %174 %175 = and i32 %148, 2 %.not24 = icmp eq i32 %175, 0 %176 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select, double -1.000000e+00, double 0.000000e+00) #145 %.110 = select i1 %.not24, double %spec.select, double %176 %177 = fmul double %110, %.110 br label %__nv_j1.exit __nv_j1.exit: ; preds = %38, %__internal_trig_reduction_kerneld.exit.i.i.i22, %__nv_isinfd.exit.i, %59, %19 %r.i.3 = phi double [ %35, %19 ], [ %56, %38 ], [ %77, %59 ], [ %177, %__internal_trig_reduction_kerneld.exit.i.i.i22 ], [ 0.000000e+00, %__nv_isinfd.exit.i ] %178 = fcmp olt double %1, 0.000000e+00 %179 = fneg double %r.i.3 %r.i.4 = select i1 %178, double %179, double %r.i.3 %180 = fcmp olt double %17, 1.000000e-30 %181 = fmul double %1, 5.000000e-01 %r.i.5 = select i1 %180, double %181, double %r.i.4 %182 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %183 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %184 = icmp slt i32 %182, 1048576 br i1 %184, label %185, label %189 185: ; preds = %__nv_j1.exit %186 = fmul double %1, 0x4350000000000000 %187 = tail call i32 @llvm.nvvm.d2i.hi(double %186) #145 %188 = tail call i32 @llvm.nvvm.d2i.lo(double %186) #145 br label %189 189: ; preds = %185, %__nv_j1.exit %.012 = phi double [ %186, %185 ], [ %1, %__nv_j1.exit ] %ihi.i.0 = phi i32 [ %187, %185 ], [ %182, %__nv_j1.exit ] %ilo.i.0 = phi i32 [ %188, %185 ], [ %183, %__nv_j1.exit ] %e.i.0 = phi i32 [ -1077, %185 ], [ -1023, %__nv_j1.exit ] %190 = add i32 %ihi.i.0, -1 %191 = icmp ult i32 %190, 2146435071 br i1 %191, label %192, label %241 192: ; preds = %189 %193 = lshr i32 %ihi.i.0, 20 %194 = add nsw i32 %e.i.0, %193 %195 = and i32 %ihi.i.0, -2146435073 %196 = or i32 %195, 1072693248 %197 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %196) #145 %198 = icmp ugt i32 %196, 1073127582 br i1 %198, label %199, label %205 199: ; preds = %192 %200 = tail call i32 @llvm.nvvm.d2i.lo(double %197) #145 %201 = tail call i32 @llvm.nvvm.d2i.hi(double %197) #145 %202 = add i32 %201, -1048576 %203 = tail call double @llvm.nvvm.lohi.i2d(i32 %200, i32 %202) #145 %204 = add nsw i32 %194, 1 br label %205 205: ; preds = %199, %192 %m.i.0 = phi double [ %203, %199 ], [ %197, %192 ] %e.i.1 = phi i32 [ %204, %199 ], [ %194, %192 ] %206 = fadd double %m.i.0, -1.000000e+00 %207 = fadd double %m.i.0, 1.000000e+00 %208 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %207) #145 %209 = fneg double %207 %210 = tail call double @llvm.nvvm.fma.rn.d(double %209, double %208, double 1.000000e+00) #145 %211 = tail call double @llvm.nvvm.fma.rn.d(double %210, double %210, double %210) #145 %212 = tail call double @llvm.nvvm.fma.rn.d(double %211, double %208, double %208) #145 %213 = fmul double %206, %212 %214 = fadd double %213, %213 %215 = fmul double %214, %214 %216 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %215, double 0x3ED0EE258B7A8B04) #145 %217 = tail call double @llvm.nvvm.fma.rn.d(double %216, double %215, double 0x3EF3B2669F02676F) #145 %218 = tail call double @llvm.nvvm.fma.rn.d(double %217, double %215, double 0x3F1745CBA9AB0956) #145 %219 = tail call double @llvm.nvvm.fma.rn.d(double %218, double %215, double 0x3F3C71C72D1B5154) #145 %220 = tail call double @llvm.nvvm.fma.rn.d(double %219, double %215, double 0x3F624924923BE72D) #145 %221 = tail call double @llvm.nvvm.fma.rn.d(double %220, double %215, double 0x3F8999999999A3C4) #145 %222 = tail call double @llvm.nvvm.fma.rn.d(double %221, double %215, double 0x3FB5555555555554) #145 %223 = fsub double %206, %214 %224 = fmul double %223, 2.000000e+00 %225 = fneg double %214 %226 = tail call double @llvm.nvvm.fma.rn.d(double %225, double %206, double %224) #145 %227 = fmul double %212, %226 %228 = fmul double %215, %222 %229 = tail call double @llvm.nvvm.fma.rn.d(double %228, double %214, double %227) #145 %230 = xor i32 %e.i.1, -2147483648 %231 = tail call double @llvm.nvvm.lohi.i2d(i32 %230, i32 1127219200) #145 %232 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %233 = fsub double %231, %232 %234 = tail call double @llvm.nvvm.fma.rn.d(double %233, double 0x3FE62E42FEFA39EF, double %214) #145 %235 = fneg double %233 %236 = tail call double @llvm.nvvm.fma.rn.d(double %235, double 0x3FE62E42FEFA39EF, double %234) #145 %237 = fsub double %236, %214 %238 = fsub double %229, %237 %239 = tail call double @llvm.nvvm.fma.rn.d(double %233, double 0x3C7ABC9E3B39803F, double %238) #145 %240 = fadd double %234, %239 br label %__nv_log.exit 241: ; preds = %189 %242 = tail call double @llvm.nvvm.fma.rn.d(double %.012, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %243 = tail call i32 @llvm.nvvm.d2i.hi(double %.012) #145 %244 = bitcast i32 %243 to float %245 = fcmp oeq float %244, 0.000000e+00 %q.i28.0 = select i1 %245, double 0xFFF0000000000000, double %242 br label %__nv_log.exit __nv_log.exit: ; preds = %205, %241 %q.i28.1 = phi double [ %240, %205 ], [ %q.i28.0, %241 ] %246 = fmul double %r.i.5, %q.i28.1 %247 = fdiv double 1.000000e+00, %1 %248 = fsub double %246, %247 %249 = fmul double %248, 0x3FE45F306DC9C883 %250 = fadd double %16, %249 br label %427 251: ; preds = %5 %252 = fcmp ugt double %1, 0x4009B510EC2ADC83 br i1 %252, label %280, label %253 253: ; preds = %251 %254 = fadd double %1, 0xC00193BED4DFF243 %255 = fadd double %254, 0x3C8BD1E50D219BFD %256 = tail call double @llvm.nvvm.fma.rn.d(double 0xBE2B87B0BE2AA150, double %255, double 0x3E4833AAE4D8B975) #145 %257 = tail call double @llvm.nvvm.fma.rn.d(double %256, double %255, double 0xBE44E279B423E68F) #145 %258 = tail call double @llvm.nvvm.fma.rn.d(double %257, double %255, double 0x3E129DC6A747EB4F) #145 %259 = tail call double @llvm.nvvm.fma.rn.d(double %258, double %255, double 0xBE61D15534496CD8) #145 %260 = tail call double @llvm.nvvm.fma.rn.d(double %259, double %255, double 0x3E7EEC8D48FECE00) #145 %261 = tail call double @llvm.nvvm.fma.rn.d(double %260, double %255, double 0xBE8D1180AF70A134) #145 %262 = tail call double @llvm.nvvm.fma.rn.d(double %261, double %255, double 0x3E9C8386A0EA1388) #145 %263 = tail call double @llvm.nvvm.fma.rn.d(double %262, double %255, double 0xBEB01A014E7F3250) #145 %264 = tail call double @llvm.nvvm.fma.rn.d(double %263, double %255, double 0x3EC1FB752010A320) #145 %265 = tail call double @llvm.nvvm.fma.rn.d(double %264, double %255, double 0xBED3AA0AFF4E332B) #145 %266 = tail call double @llvm.nvvm.fma.rn.d(double %265, double %255, double 0x3EE584A6C77F6700) #145 %267 = tail call double @llvm.nvvm.fma.rn.d(double %266, double %255, double 0xBEF794C520FC2EBB) #145 %268 = tail call double @llvm.nvvm.fma.rn.d(double %267, double %255, double 0x3F09D18D2D35CC71) #145 %269 = tail call double @llvm.nvvm.fma.rn.d(double %268, double %255, double 0xBF1C3FB7315C4599) #145 %270 = tail call double @llvm.nvvm.fma.rn.d(double %269, double %255, double 0x3F2EEA7ADECCE927) #145 %271 = tail call double @llvm.nvvm.fma.rn.d(double %270, double %255, double 0xBF40B2D85257446F) #145 %272 = tail call double @llvm.nvvm.fma.rn.d(double %271, double %255, double 0x3F517AB4B1FE5D5B) #145 %273 = tail call double @llvm.nvvm.fma.rn.d(double %272, double %255, double 0xBF65429DC6516C0D) #145 %274 = tail call double @llvm.nvvm.fma.rn.d(double %273, double %255, double 0x3F7E671C7D0B090B) #145 %275 = tail call double @llvm.nvvm.fma.rn.d(double %274, double %255, double 0xBF73A6DEC36FB27C) #145 %276 = tail call double @llvm.nvvm.fma.rn.d(double %275, double %255, double 0xBFA0D2AF4E931FD1) #145 %277 = tail call double @llvm.nvvm.fma.rn.d(double %276, double %255, double 0xBFBE56F82217B964) #145 %278 = tail call double @llvm.nvvm.fma.rn.d(double %277, double %255, double 0x3FE0AA48442F014B) #145 %279 = fmul double %255, %278 br label %427 280: ; preds = %251 %281 = fcmp ugt double %1, 0x401C0D26D5A541CB br i1 %281, label %306, label %282 282: ; preds = %280 %283 = fadd double %1, 0xC015B7FE4E87B02E %284 = fadd double %283, 0xBCBDFE7BAC228E8C %285 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CBA3C76069F1D8C, double %284, double 0x3CC69A30996793E2) #145 %286 = tail call double @llvm.nvvm.fma.rn.d(double %285, double %284, double 0xBCDDD8432FE756E7) #145 %287 = tail call double @llvm.nvvm.fma.rn.d(double %286, double %284, double 0xBD143158EEE220F7) #145 %288 = tail call double @llvm.nvvm.fma.rn.d(double %287, double %284, double 0x3D28D44491230F5A) #145 %289 = tail call double @llvm.nvvm.fma.rn.d(double %288, double %284, double 0xBD438842EAF4EDBC) #145 %290 = tail call double @llvm.nvvm.fma.rn.d(double %289, double %284, double 0x3D74958DAFBFAF5A) #145 %291 = tail call double @llvm.nvvm.fma.rn.d(double %290, double %284, double 0xBD9449A60E664848) #145 %292 = tail call double @llvm.nvvm.fma.rn.d(double %291, double %284, double 0x3D838BC8CD594A76) #145 %293 = tail call double @llvm.nvvm.fma.rn.d(double %292, double %284, double 0xBDFA798002141323) #145 %294 = tail call double @llvm.nvvm.fma.rn.d(double %293, double %284, double 0x3E380B4198956AAA) #145 %295 = tail call double @llvm.nvvm.fma.rn.d(double %294, double %284, double 0x3E5B62B5F21BACD4) #145 %296 = tail call double @llvm.nvvm.fma.rn.d(double %295, double %284, double 0xBEA255E729FB6AAE) #145 %297 = tail call double @llvm.nvvm.fma.rn.d(double %296, double %284, double 0xBEC80618F6BAE5AA) #145 %298 = tail call double @llvm.nvvm.fma.rn.d(double %297, double %284, double 0x3F085B940F8E8D36) #145 %299 = tail call double @llvm.nvvm.fma.rn.d(double %298, double %284, double 0x3F2337C7E10E14E8) #145 %300 = tail call double @llvm.nvvm.fma.rn.d(double %299, double %284, double 0xBF61BE6DB99332CA) #145 %301 = tail call double @llvm.nvvm.fma.rn.d(double %300, double %284, double 0xBF710A329E2BE9B8) #145 %302 = tail call double @llvm.nvvm.fma.rn.d(double %301, double %284, double 0x3FAA15D92DFE3FCF) #145 %303 = tail call double @llvm.nvvm.fma.rn.d(double %302, double %284, double 0x3FA00B9F8571C9BE) #145 %304 = tail call double @llvm.nvvm.fma.rn.d(double %303, double %284, double 0xBFD5C7C556F0C19A) #145 %305 = fmul double %284, %304 br label %427 306: ; preds = %280 %307 = fcmp ugt double %1, 0x4022585C739ACDDD br i1 %307, label %__nv_isinfd.exit, label %308 308: ; preds = %306 %309 = fadd double %1, 0xC0213127AE6169B4 %310 = fadd double %309, 0xBCB479CC068D9046 %311 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CB09CCC22945996, double %310, double 0xBD43515F67644276) #145 %312 = tail call double @llvm.nvvm.fma.rn.d(double %311, double %310, double 0xBD72C5B978E9F5C7) #145 %313 = tail call double @llvm.nvvm.fma.rn.d(double %312, double %310, double 0x3DBEC1151613913C) #145 %314 = tail call double @llvm.nvvm.fma.rn.d(double %313, double %310, double 0x3DE9E38D13C4A824) #145 %315 = tail call double @llvm.nvvm.fma.rn.d(double %314, double %310, double 0xBE341E75E1088EB5) #145 %316 = tail call double @llvm.nvvm.fma.rn.d(double %315, double %310, double 0xBE5A384EBB13CFE1) #145 %317 = tail call double @llvm.nvvm.fma.rn.d(double %316, double %310, double 0x3EA2BECB27F8C8F8) #145 %318 = tail call double @llvm.nvvm.fma.rn.d(double %317, double %310, double 0x3EC176E72B989FD8) #145 %319 = tail call double @llvm.nvvm.fma.rn.d(double %318, double %310, double 0xBF06F7BAB102F822) #145 %320 = tail call double @llvm.nvvm.fma.rn.d(double %319, double %310, double 0xBF1B50D7E1D278E1) #145 %321 = tail call double @llvm.nvvm.fma.rn.d(double %320, double %310, double 0x3F607A678D60004F) #145 %322 = tail call double @llvm.nvvm.fma.rn.d(double %321, double %310, double 0x3F63CED2A2E69115) #145 %323 = tail call double @llvm.nvvm.fma.rn.d(double %322, double %310, double 0xBFA6395DFE49FCD4) #145 %324 = tail call double @llvm.nvvm.fma.rn.d(double %323, double %310, double 0xBF902B3933CF21B1) #145 %325 = tail call double @llvm.nvvm.fma.rn.d(double %324, double %310, double 0x3FD15F993FCEAB5C) #145 %326 = fmul double %310, %325 br label %427 __nv_isinfd.exit: ; preds = %306 %327 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %328 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %329 = and i32 %328, 2147483647 %330 = icmp eq i32 %329, 2146435072 %331 = icmp eq i32 %327, 0 %332 = select i1 %330, i1 %331, i1 false br i1 %332, label %427, label %333 333: ; preds = %__nv_isinfd.exit %334 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #145 %335 = fneg double %1 %336 = tail call double @llvm.nvvm.fma.rn.d(double %335, double %334, double 1.000000e+00) #145 %337 = tail call double @llvm.nvvm.fma.rn.d(double %336, double %336, double %336) #145 %338 = tail call double @llvm.nvvm.fma.rn.d(double %337, double %334, double %334) #145 %339 = fmul double %338, %338 %340 = tail call double @llvm.nvvm.fma.rn.d(double 0x40D13DB326ECEBFE, double %339, double 0xC09C26E89385D5B1) #145 %341 = tail call double @llvm.nvvm.fma.rn.d(double %340, double %339, double 0x405C6AB923C6F55E) #145 %342 = tail call double @llvm.nvvm.fma.rn.d(double %341, double %339, double 0xC01E61EAF3BD2FA1) #145 %343 = tail call double @llvm.nvvm.fma.rn.d(double %342, double %339, double 0x3FE9BF15D9B97DD1) #145 %344 = tail call double @llvm.nvvm.fma.rn.d(double %343, double %339, double 0xBFC8BFECF93D7D19) #145 %345 = tail call double @llvm.nvvm.fma.rn.d(double %344, double %339, double 0x3FC7FFFFF756AA6C) #145 %346 = tail call double @llvm.nvvm.fma.rn.d(double %345, double %339, double 0x3FF0000000003646) #145 %347 = tail call double @llvm.nvvm.fma.rn.d(double 0xC1943281A050209C, double %339, double 0x416024E99BA46E7B) #145 %348 = tail call double @llvm.nvvm.fma.rn.d(double %347, double %339, double 0xC11A6875D7DFBD65) #145 %349 = tail call double @llvm.nvvm.fma.rn.d(double %348, double %339, double 0x40D032C041790233) #145 %350 = tail call double @llvm.nvvm.fma.rn.d(double %349, double %339, double 0xC0839F895BC22946) #145 %351 = tail call double @llvm.nvvm.fma.rn.d(double %350, double %339, double 0x403E77CC78ECD2D8) #145 %352 = tail call double @llvm.nvvm.fma.rn.d(double %351, double %339, double 0xC002F368D0117BE9) #145 %353 = tail call double @llvm.nvvm.fma.rn.d(double %352, double %339, double 0x3FD7BCC786009A25) #145 %354 = tail call double @llvm.nvvm.fma.rn.d(double %353, double %339, double 0xBFC4FFFFFC51BC7A) #145 %355 = tail call double @llvm.nvvm.fma.rn.d(double %354, double %339, double 0x3FD7FFFFFFFFB5EA) #145 %356 = tail call double @llvm.nvvm.fma.rn.d(double %355, double %338, double %1) #145 %357 = tail call double @llvm.nvvm.rsqrt.approx.d(double %1) #145 %358 = fmul double %357, 0x3FE9884533D43651 %359 = fmul double %358, %346 %360 = fmul double %356, 0x3FE45F306DC9C883 %361 = tail call i32 @llvm.nvvm.d2i.rn(double %360) #145 store i32 %361, ptr %q.i.i, align 4 %362 = sitofp i32 %361 to double %363 = fneg double %362 %364 = tail call double @llvm.nvvm.fma.rn.d(double %363, double 0x3FF921FB54442D18, double %356) #145 %365 = tail call double @llvm.nvvm.fma.rn.d(double %363, double 0x3C91A62633145C00, double %364) #145 %366 = tail call double @llvm.nvvm.fma.rn.d(double %363, double 0x397B839A252049C0, double %365) #145 %367 = tail call double @llvm.nvvm.fabs.d(double %356) #145 %368 = fcmp ult double %367, 0x41E0000000000000 br i1 %368, label %__internal_trig_reduction_kerneld.exit.i, label %369 369: ; preds = %333 %370 = call fastcc double @__internal_trig_reduction_slowpathd(double %356, ptr nonnull %q.i.i) #145 %.pre = load i32, ptr %q.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i __internal_trig_reduction_kerneld.exit.i: ; preds = %369, %333 %371 = phi i32 [ %.pre, %369 ], [ %361, %333 ] %t.i.i.0 = phi double [ %370, %369 ], [ %366, %333 ] %372 = and i32 %371, 3 %373 = uitofp i32 %372 to double %374 = fadd double %t.i.i.0, 0xC00F6A7A2955385E %375 = fmul double %373, 0x3FF921FB54442D18 %376 = fadd double %374, %375 %377 = tail call i32 @llvm.nvvm.d2i.lo(double %376) #145 %378 = tail call i32 @llvm.nvvm.d2i.hi(double %376) #145 %379 = and i32 %378, 2147483647 %380 = icmp eq i32 %379, 2146435072 %381 = icmp eq i32 %377, 0 %382 = select i1 %380, i1 %381, i1 false br i1 %382, label %383, label %385 383: ; preds = %__internal_trig_reduction_kerneld.exit.i %384 = tail call double @llvm.nvvm.mul.rn.d(double %376, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i 385: ; preds = %__internal_trig_reduction_kerneld.exit.i %386 = fmul double %376, 0x3FE45F306DC9C883 %387 = tail call i32 @llvm.nvvm.d2i.rn(double %386) #145 store i32 %387, ptr %q.i.i.i, align 4 %388 = sitofp i32 %387 to double %389 = fneg double %388 %390 = tail call double @llvm.nvvm.fma.rn.d(double %389, double 0x3FF921FB54442D18, double %376) #145 %391 = tail call double @llvm.nvvm.fma.rn.d(double %389, double 0x3C91A62633145C00, double %390) #145 %392 = tail call double @llvm.nvvm.fma.rn.d(double %389, double 0x397B839A252049C0, double %391) #145 %393 = tail call double @llvm.nvvm.fabs.d(double %376) #145 %394 = fcmp ult double %393, 0x41E0000000000000 br i1 %394, label %__internal_trig_reduction_kerneld.exit.i.i, label %395 395: ; preds = %385 %396 = call fastcc double @__internal_trig_reduction_slowpathd(double %376, ptr nonnull %q.i.i.i) #145 %.pre7 = load i32, ptr %q.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i __internal_trig_reduction_kerneld.exit.i.i: ; preds = %385, %395, %383 %i.i.i.0 = phi i32 [ 0, %383 ], [ %.pre7, %395 ], [ %387, %385 ] %z.i.i.0 = phi double [ %384, %383 ], [ %396, %395 ], [ %392, %385 ] %397 = add nsw i32 %i.i.i.0, 1 %398 = and i32 %397, 1 %399 = shl nuw nsw i32 %398, 3 %400 = zext i32 %399 to i64 %401 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %400 %402 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.0, double %z.i.i.0) #145 %.not = icmp eq i32 %398, 0 %403 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %404 = getelementptr inbounds double, ptr addrspace(1) %401, i64 1 %405 = load double, ptr addrspace(1) %404, align 8 %406 = tail call double @llvm.nvvm.fma.rn.d(double %403, double %402, double %405) #145 %407 = getelementptr inbounds double, ptr addrspace(1) %401, i64 2 %408 = load double, ptr addrspace(1) %407, align 8 %409 = tail call double @llvm.nvvm.fma.rn.d(double %406, double %402, double %408) #145 %410 = getelementptr inbounds double, ptr addrspace(1) %401, i64 3 %411 = load double, ptr addrspace(1) %410, align 8 %412 = tail call double @llvm.nvvm.fma.rn.d(double %409, double %402, double %411) #145 %413 = getelementptr inbounds double, ptr addrspace(1) %401, i64 4 %414 = load double, ptr addrspace(1) %413, align 8 %415 = tail call double @llvm.nvvm.fma.rn.d(double %412, double %402, double %414) #145 %416 = getelementptr inbounds double, ptr addrspace(1) %401, i64 5 %417 = load double, ptr addrspace(1) %416, align 8 %418 = tail call double @llvm.nvvm.fma.rn.d(double %415, double %402, double %417) #145 %419 = getelementptr inbounds double, ptr addrspace(1) %401, i64 6 %420 = load double, ptr addrspace(1) %419, align 8 %421 = tail call double @llvm.nvvm.fma.rn.d(double %418, double %402, double %420) #145 %422 = tail call double @llvm.nvvm.fma.rn.d(double %421, double %z.i.i.0, double %z.i.i.0) #145 %423 = tail call double @llvm.nvvm.fma.rn.d(double %421, double %402, double 1.000000e+00) #145 %spec.select17 = select i1 %.not, double %422, double %423 %424 = and i32 %397, 2 %.not22 = icmp eq i32 %424, 0 %425 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select17, double -1.000000e+00, double 0.000000e+00) #145 %.1 = select i1 %.not22, double %spec.select17, double %425 %426 = fmul double %359, %.1 br label %427 427: ; preds = %__nv_log.exit, %282, %__internal_trig_reduction_kerneld.exit.i.i, %__nv_isinfd.exit, %308, %253, %3 %r.5 = phi double [ %4, %3 ], [ %250, %__nv_log.exit ], [ %279, %253 ], [ %305, %282 ], [ %326, %308 ], [ %426, %__internal_trig_reduction_kerneld.exit.i.i ], [ 0.000000e+00, %__nv_isinfd.exit ] %428 = fcmp ole double %a, 0.000000e+00 %429 = fcmp oeq double %a, 0.000000e+00 %. = select i1 %429, double 0xFFF0000000000000, double 0xFFF8000000000000 %r.7 = select i1 %428, double %., double %r.5 ret double %r.7 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_yn(i32 "enzyme_inactive" %n, double %a) unnamed_addr #121 { %q.i.i.i.i5.i304 = alloca i32, align 4 %q.i.i.i16.i334 = alloca i32, align 4 %q.i.i.i.i351 = alloca i32, align 4 %q.i.i.i381 = alloca i32, align 4 %q.i.i.i.i9.i133 = alloca i32, align 4 %q.i.i.i20.i163 = alloca i32, align 4 %q.i.i.i.i202 = alloca i32, align 4 %q.i.i.i232 = alloca i32, align 4 %q.i.i.i.i9.i = alloca i32, align 4 %q.i.i.i20.i = alloca i32, align 4 %q.i.i.i.i58 = alloca i32, align 4 %q.i.i.i88 = alloca i32, align 4 %q.i.i.i.i5.i = alloca i32, align 4 %q.i.i.i16.i = alloca i32, align 4 %q.i.i.i.i = alloca i32, align 4 %q.i.i.i = alloca i32, align 4 %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = fcmp olt double %1, 0x730D67819E8D2 br i1 %2, label %3, label %5 3: ; preds = %0 %4 = fdiv double 0xBFE45F306DC9C883, %1 br label %__nv_y1.exit 5: ; preds = %0 %6 = fcmp ugt double %1, 0x3FF4C6F208132576 br i1 %6, label %251, label %7 7: ; preds = %5 %8 = fmul double %1, %1 %9 = tail call double @llvm.nvvm.fma.rn.d(double 0x3D5249F90687428C, double %8, double 0xBDCF0B5B1FB7B95E) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double %9, double %8, double 0x3E432E589311FA14) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %8, double 0xBEB0A780AA4A92E9) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %8, double 0x3F12C7DBFFCAEC2B) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %8, double 0xBF6835B97894BA4A) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %8, double 0x3FABD3975C75B4A3) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %8, double 0xBFC91866143CBC8A) #145 %16 = fmul double %1, %15 %17 = tail call double @llvm.nvvm.fabs.d(double %1) #145 %18 = fcmp ugt double %17, 0x400353AABAD7B784 br i1 %18, label %36, label %19 19: ; preds = %7 %20 = tail call double @llvm.nvvm.fma.rn.d(double 0x3D020E4ADCDE2AD3, double %17, double 0xBD4DD167A0DC3F55) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %17, double 0x3D5503F5A491E487) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %17, double 0x3DC1F29940C2403A) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %17, double 0x3D84CF9302EACDEF) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %17, double 0xBE384A53DBBCA436) #145 %25 = tail call double @llvm.nvvm.fma.rn.d(double %24, double %17, double 0x3D9779BEE4F63BCC) #145 %26 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %17, double 0x3EA6C160E414F3F0) #145 %27 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %17, double 0x3D8F3D2F12430699) #145 %28 = tail call double @llvm.nvvm.fma.rn.d(double %27, double %17, double 0xBF0C71C72C0CED04) #145 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %17, double 0x3D659BCA506F1128) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %17, double 0x3F65555555506982) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %17, double 0x3D15BA0B425F1BFB) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %17, double 0xBFB0000000000065) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %17, double 0x3C8729A7253FB679) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %17, double 5.000000e-01) #145 %35 = fmul double %17, %34 br label %__nv_j1.exit.i 36: ; preds = %7 %37 = fcmp ugt double %17, 0x4015B1D0574614EA br i1 %37, label %57, label %38 38: ; preds = %36 %39 = fadd double %17, 0xC00EA75575AF6F09 %40 = fadd double %39, 0x3CA60155A9D1B256 %41 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCF8D3CDBB60175E, double %40, double 0x3D41011A1DF02DAD) #145 %42 = tail call double @llvm.nvvm.fma.rn.d(double %41, double %40, double 0x3D76013AC1E5E222) #145 %43 = tail call double @llvm.nvvm.fma.rn.d(double %42, double %40, double 0xBDBEC315D96D5F03) #145 %44 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %40, double 0xBDF03BE1B4B57207) #145 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %40, double 0x3E345695F8B660F7) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %40, double 0x3E617069FCFCFFF4) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %40, double 0xBEA33825C36745EB) #145 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %40, double 0xBEC9799D4F90931B) #145 %49 = tail call double @llvm.nvvm.fma.rn.d(double %48, double %40, double 0x3F083A06E2F7DF13) #145 %50 = tail call double @llvm.nvvm.fma.rn.d(double %49, double %40, double 0x3F26E4C2D53A7CF6) #145 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %40, double 0xBF624B3409957B1C) #145 %52 = tail call double @llvm.nvvm.fma.rn.d(double %51, double %40, double 0xBF7537544C3325DF) #145 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double %40, double 0x3FAB589D1DA138E2) #145 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %40, double 0x3FAAE8A39F51AD13) #145 %55 = tail call double @llvm.nvvm.fma.rn.d(double %54, double %40, double 0xBFD9C6CF582CBF7F) #145 %56 = fmul double %40, %55 br label %__nv_j1.exit.i 57: ; preds = %36 %58 = fcmp ugt double %17, 0x40213065E54C1AA9 br i1 %58, label %__nv_isinfd.exit.i.i, label %59 59: ; preds = %57 %60 = fadd double %17, 0xC01C0FF5F3B47250 %61 = fadd double %60, 0x3C9B226D9D243827 %62 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CF3EB867515FAD6, double %61, double 0xBD40E8363DB649A9) #145 %63 = tail call double @llvm.nvvm.fma.rn.d(double %62, double %61, double 0xBD73B7DD4A6608FB) #145 %64 = tail call double @llvm.nvvm.fma.rn.d(double %63, double %61, double 0x3DBEC5E01482C750) #145 %65 = tail call double @llvm.nvvm.fma.rn.d(double %64, double %61, double 0x3DEC62BB9E882103) #145 %66 = tail call double @llvm.nvvm.fma.rn.d(double %65, double %61, double 0xBE34462EED732A23) #145 %67 = tail call double @llvm.nvvm.fma.rn.d(double %66, double %61, double 0xBE5D48DCAD7DC59B) #145 %68 = tail call double @llvm.nvvm.fma.rn.d(double %67, double %61, double 0x3EA3026DF29167E9) #145 %69 = tail call double @llvm.nvvm.fma.rn.d(double %68, double %61, double 0x3EC4255B0119666C) #145 %70 = tail call double @llvm.nvvm.fma.rn.d(double %69, double %61, double 0xBF0796A751B32693) #145 %71 = tail call double @llvm.nvvm.fma.rn.d(double %70, double %61, double 0xBF207358BBDBA284) #145 %72 = tail call double @llvm.nvvm.fma.rn.d(double %71, double %61, double 0x3F613FBC7D6927B1) #145 %73 = tail call double @llvm.nvvm.fma.rn.d(double %72, double %61, double 0x3F69A4B292E3DD75) #145 %74 = tail call double @llvm.nvvm.fma.rn.d(double %73, double %61, double 0xBFA80C83BDEEE4FB) #145 %75 = tail call double @llvm.nvvm.fma.rn.d(double %74, double %61, double 0xBF95E70DC60362BF) #145 %76 = tail call double @llvm.nvvm.fma.rn.d(double %75, double %61, double 0x3FD33518B3874E8A) #145 %77 = fmul double %61, %76 br label %__nv_j1.exit.i __nv_isinfd.exit.i.i: ; preds = %57 %78 = tail call i32 @llvm.nvvm.d2i.lo(double %17) #145 %79 = tail call i32 @llvm.nvvm.d2i.hi(double %17) #145 %80 = and i32 %79, 2147483647 %81 = icmp eq i32 %80, 2146435072 %82 = icmp eq i32 %78, 0 %83 = select i1 %81, i1 %82, i1 false br i1 %83, label %__nv_j1.exit.i, label %84 84: ; preds = %__nv_isinfd.exit.i.i %85 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %17) #145 %86 = fneg double %17 %87 = tail call double @llvm.nvvm.fma.rn.d(double %86, double %85, double 1.000000e+00) #145 %88 = tail call double @llvm.nvvm.fma.rn.d(double %87, double %87, double %87) #145 %89 = tail call double @llvm.nvvm.fma.rn.d(double %88, double %85, double %85) #145 %90 = fmul double %89, %89 %91 = tail call double @llvm.nvvm.fma.rn.d(double 0x40CD02EA3F2F6751, double %90, double 0xC099C06322A3F8BE) #145 %92 = tail call double @llvm.nvvm.fma.rn.d(double %91, double %90, double 0x405B89354DA77324) #145 %93 = tail call double @llvm.nvvm.fma.rn.d(double %92, double %90, double 0xC01E352294653188) #145 %94 = tail call double @llvm.nvvm.fma.rn.d(double %93, double %90, double 0x3FE9BC7DB16BD7A7) #145 %95 = tail call double @llvm.nvvm.fma.rn.d(double %94, double %90, double 0xBFC8BFE1C3A4F741) #145 %96 = tail call double @llvm.nvvm.fma.rn.d(double %95, double %90, double 0x3FC7FFFFF0D00BE2) #145 %97 = tail call double @llvm.nvvm.fma.rn.d(double %96, double %90, double 0x3FF00000000068CC) #145 %98 = tail call double @llvm.nvvm.fma.rn.d(double 0xC18DA26B212FDC9A, double %90, double 0x415A30AC6857BEE0) #145 %99 = tail call double @llvm.nvvm.fma.rn.d(double %98, double %90, double 0xC11764222AD7C910) #145 %100 = tail call double @llvm.nvvm.fma.rn.d(double %99, double %90, double 0x40CEB02E0C306857) #145 %101 = tail call double @llvm.nvvm.fma.rn.d(double %100, double %90, double 0xC08351859FA2B23B) #145 %102 = tail call double @llvm.nvvm.fma.rn.d(double %101, double %90, double 0x403E65A07AF51F42) #145 %103 = tail call double @llvm.nvvm.fma.rn.d(double %102, double %90, double 0xC002F2B817F77A57) #145 %104 = tail call double @llvm.nvvm.fma.rn.d(double %103, double %90, double 0x3FD7BCC34DA069FD) #145 %105 = tail call double @llvm.nvvm.fma.rn.d(double %104, double %90, double 0xBFC4FFFFF8A44463) #145 %106 = tail call double @llvm.nvvm.fma.rn.d(double %105, double %90, double 0x3FD7FFFFFFFF5CD7) #145 %107 = tail call double @llvm.nvvm.fma.rn.d(double %106, double %89, double %17) #145 %108 = tail call double @llvm.nvvm.rsqrt.approx.d(double %17) #145 %109 = fmul double %108, 0x3FE9884533D43651 %110 = fmul double %109, %97 %111 = fmul double %107, 0x3FE45F306DC9C883 %112 = tail call i32 @llvm.nvvm.d2i.rn(double %111) #145 store i32 %112, ptr %q.i.i.i16.i, align 4 %113 = sitofp i32 %112 to double %114 = fneg double %113 %115 = tail call double @llvm.nvvm.fma.rn.d(double %114, double 0x3FF921FB54442D18, double %107) #145 %116 = tail call double @llvm.nvvm.fma.rn.d(double %114, double 0x3C91A62633145C00, double %115) #145 %117 = tail call double @llvm.nvvm.fma.rn.d(double %114, double 0x397B839A252049C0, double %116) #145 %118 = tail call double @llvm.nvvm.fabs.d(double %107) #145 %119 = fcmp ult double %118, 0x41E0000000000000 br i1 %119, label %__internal_trig_reduction_kerneld.exit.i.i20.i, label %120 120: ; preds = %84 %121 = call fastcc double @__internal_trig_reduction_slowpathd(double %107, ptr nonnull %q.i.i.i16.i) #145 %.pre11 = load i32, ptr %q.i.i.i16.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i20.i __internal_trig_reduction_kerneld.exit.i.i20.i: ; preds = %120, %84 %122 = phi i32 [ %.pre11, %120 ], [ %112, %84 ] %t.i.i.i15.i.0 = phi double [ %121, %120 ], [ %117, %84 ] %123 = and i32 %122, 3 %124 = uitofp i32 %123 to double %125 = fadd double %t.i.i.i15.i.0, 0xC002D97C7F3321D2 %126 = fmul double %124, 0x3FF921FB54442D18 %127 = fadd double %125, %126 %128 = tail call i32 @llvm.nvvm.d2i.lo(double %127) #145 %129 = tail call i32 @llvm.nvvm.d2i.hi(double %127) #145 %130 = and i32 %129, 2147483647 %131 = icmp eq i32 %130, 2146435072 %132 = icmp eq i32 %128, 0 %133 = select i1 %131, i1 %132, i1 false br i1 %133, label %134, label %136 134: ; preds = %__internal_trig_reduction_kerneld.exit.i.i20.i %135 = tail call double @llvm.nvvm.mul.rn.d(double %127, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i.i22.i 136: ; preds = %__internal_trig_reduction_kerneld.exit.i.i20.i %137 = fmul double %127, 0x3FE45F306DC9C883 %138 = tail call i32 @llvm.nvvm.d2i.rn(double %137) #145 store i32 %138, ptr %q.i.i.i.i5.i, align 4 %139 = sitofp i32 %138 to double %140 = fneg double %139 %141 = tail call double @llvm.nvvm.fma.rn.d(double %140, double 0x3FF921FB54442D18, double %127) #145 %142 = tail call double @llvm.nvvm.fma.rn.d(double %140, double 0x3C91A62633145C00, double %141) #145 %143 = tail call double @llvm.nvvm.fma.rn.d(double %140, double 0x397B839A252049C0, double %142) #145 %144 = tail call double @llvm.nvvm.fabs.d(double %127) #145 %145 = fcmp ult double %144, 0x41E0000000000000 br i1 %145, label %__internal_trig_reduction_kerneld.exit.i.i.i22.i, label %146 146: ; preds = %136 %147 = call fastcc double @__internal_trig_reduction_slowpathd(double %127, ptr nonnull %q.i.i.i.i5.i) #145 %.pre16 = load i32, ptr %q.i.i.i.i5.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i22.i __internal_trig_reduction_kerneld.exit.i.i.i22.i: ; preds = %136, %146, %134 %i.i.i.i13.i.0 = phi i32 [ 0, %134 ], [ %.pre16, %146 ], [ %138, %136 ] %z.i.i.i12.i.0 = phi double [ %135, %134 ], [ %147, %146 ], [ %143, %136 ] %148 = add nsw i32 %i.i.i.i13.i.0, 1 %149 = and i32 %148, 1 %150 = shl nuw nsw i32 %149, 3 %151 = zext i32 %150 to i64 %152 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %151 %153 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.i12.i.0, double %z.i.i.i12.i.0) #145 %.not110 = icmp eq i32 %149, 0 %154 = select i1 %.not110, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %155 = getelementptr inbounds double, ptr addrspace(1) %152, i64 1 %156 = load double, ptr addrspace(1) %155, align 8 %157 = tail call double @llvm.nvvm.fma.rn.d(double %154, double %153, double %156) #145 %158 = getelementptr inbounds double, ptr addrspace(1) %152, i64 2 %159 = load double, ptr addrspace(1) %158, align 8 %160 = tail call double @llvm.nvvm.fma.rn.d(double %157, double %153, double %159) #145 %161 = getelementptr inbounds double, ptr addrspace(1) %152, i64 3 %162 = load double, ptr addrspace(1) %161, align 8 %163 = tail call double @llvm.nvvm.fma.rn.d(double %160, double %153, double %162) #145 %164 = getelementptr inbounds double, ptr addrspace(1) %152, i64 4 %165 = load double, ptr addrspace(1) %164, align 8 %166 = tail call double @llvm.nvvm.fma.rn.d(double %163, double %153, double %165) #145 %167 = getelementptr inbounds double, ptr addrspace(1) %152, i64 5 %168 = load double, ptr addrspace(1) %167, align 8 %169 = tail call double @llvm.nvvm.fma.rn.d(double %166, double %153, double %168) #145 %170 = getelementptr inbounds double, ptr addrspace(1) %152, i64 6 %171 = load double, ptr addrspace(1) %170, align 8 %172 = tail call double @llvm.nvvm.fma.rn.d(double %169, double %153, double %171) #145 %173 = tail call double @llvm.nvvm.fma.rn.d(double %172, double %z.i.i.i12.i.0, double %z.i.i.i12.i.0) #145 %174 = tail call double @llvm.nvvm.fma.rn.d(double %172, double %153, double 1.000000e+00) #145 %spec.select = select i1 %.not110, double %173, double %174 %175 = and i32 %148, 2 %.not111 = icmp eq i32 %175, 0 %176 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select, double -1.000000e+00, double 0.000000e+00) #145 %.111 = select i1 %.not111, double %spec.select, double %176 %177 = fmul double %110, %.111 br label %__nv_j1.exit.i __nv_j1.exit.i: ; preds = %38, %__internal_trig_reduction_kerneld.exit.i.i.i22.i, %__nv_isinfd.exit.i.i, %59, %19 %r.i.i.3 = phi double [ %35, %19 ], [ %56, %38 ], [ %77, %59 ], [ %177, %__internal_trig_reduction_kerneld.exit.i.i.i22.i ], [ 0.000000e+00, %__nv_isinfd.exit.i.i ] %178 = fcmp olt double %1, 0.000000e+00 %179 = fneg double %r.i.i.3 %r.i.i.4 = select i1 %178, double %179, double %r.i.i.3 %180 = fcmp olt double %17, 1.000000e-30 %181 = fmul double %1, 5.000000e-01 %r.i.i.5 = select i1 %180, double %181, double %r.i.i.4 %182 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %183 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %184 = icmp slt i32 %182, 1048576 br i1 %184, label %185, label %189 185: ; preds = %__nv_j1.exit.i %186 = fmul double %1, 0x4350000000000000 %187 = tail call i32 @llvm.nvvm.d2i.hi(double %186) #145 %188 = tail call i32 @llvm.nvvm.d2i.lo(double %186) #145 br label %189 189: ; preds = %185, %__nv_j1.exit.i %.013 = phi double [ %186, %185 ], [ %1, %__nv_j1.exit.i ] %ihi.i.i.0 = phi i32 [ %187, %185 ], [ %182, %__nv_j1.exit.i ] %ilo.i.i.0 = phi i32 [ %188, %185 ], [ %183, %__nv_j1.exit.i ] %e.i.i.0 = phi i32 [ -1077, %185 ], [ -1023, %__nv_j1.exit.i ] %190 = add i32 %ihi.i.i.0, -1 %191 = icmp ult i32 %190, 2146435071 br i1 %191, label %192, label %241 192: ; preds = %189 %193 = lshr i32 %ihi.i.i.0, 20 %194 = add nsw i32 %e.i.i.0, %193 %195 = and i32 %ihi.i.i.0, -2146435073 %196 = or i32 %195, 1072693248 %197 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i.0, i32 %196) #145 %198 = icmp ugt i32 %196, 1073127582 br i1 %198, label %199, label %205 199: ; preds = %192 %200 = tail call i32 @llvm.nvvm.d2i.lo(double %197) #145 %201 = tail call i32 @llvm.nvvm.d2i.hi(double %197) #145 %202 = add i32 %201, -1048576 %203 = tail call double @llvm.nvvm.lohi.i2d(i32 %200, i32 %202) #145 %204 = add nsw i32 %194, 1 br label %205 205: ; preds = %199, %192 %m.i.i.0 = phi double [ %203, %199 ], [ %197, %192 ] %e.i.i.1 = phi i32 [ %204, %199 ], [ %194, %192 ] %206 = fadd double %m.i.i.0, -1.000000e+00 %207 = fadd double %m.i.i.0, 1.000000e+00 %208 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %207) #145 %209 = fneg double %207 %210 = tail call double @llvm.nvvm.fma.rn.d(double %209, double %208, double 1.000000e+00) #145 %211 = tail call double @llvm.nvvm.fma.rn.d(double %210, double %210, double %210) #145 %212 = tail call double @llvm.nvvm.fma.rn.d(double %211, double %208, double %208) #145 %213 = fmul double %206, %212 %214 = fadd double %213, %213 %215 = fmul double %214, %214 %216 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %215, double 0x3ED0EE258B7A8B04) #145 %217 = tail call double @llvm.nvvm.fma.rn.d(double %216, double %215, double 0x3EF3B2669F02676F) #145 %218 = tail call double @llvm.nvvm.fma.rn.d(double %217, double %215, double 0x3F1745CBA9AB0956) #145 %219 = tail call double @llvm.nvvm.fma.rn.d(double %218, double %215, double 0x3F3C71C72D1B5154) #145 %220 = tail call double @llvm.nvvm.fma.rn.d(double %219, double %215, double 0x3F624924923BE72D) #145 %221 = tail call double @llvm.nvvm.fma.rn.d(double %220, double %215, double 0x3F8999999999A3C4) #145 %222 = tail call double @llvm.nvvm.fma.rn.d(double %221, double %215, double 0x3FB5555555555554) #145 %223 = fsub double %206, %214 %224 = fmul double %223, 2.000000e+00 %225 = fneg double %214 %226 = tail call double @llvm.nvvm.fma.rn.d(double %225, double %206, double %224) #145 %227 = fmul double %212, %226 %228 = fmul double %215, %222 %229 = tail call double @llvm.nvvm.fma.rn.d(double %228, double %214, double %227) #145 %230 = xor i32 %e.i.i.1, -2147483648 %231 = tail call double @llvm.nvvm.lohi.i2d(i32 %230, i32 1127219200) #145 %232 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %233 = fsub double %231, %232 %234 = tail call double @llvm.nvvm.fma.rn.d(double %233, double 0x3FE62E42FEFA39EF, double %214) #145 %235 = fneg double %233 %236 = tail call double @llvm.nvvm.fma.rn.d(double %235, double 0x3FE62E42FEFA39EF, double %234) #145 %237 = fsub double %236, %214 %238 = fsub double %229, %237 %239 = tail call double @llvm.nvvm.fma.rn.d(double %233, double 0x3C7ABC9E3B39803F, double %238) #145 %240 = fadd double %234, %239 br label %__nv_log.exit.i 241: ; preds = %189 %242 = tail call double @llvm.nvvm.fma.rn.d(double %.013, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %243 = tail call i32 @llvm.nvvm.d2i.hi(double %.013) #145 %244 = bitcast i32 %243 to float %245 = fcmp oeq float %244, 0.000000e+00 %q.i28.i.0 = select i1 %245, double 0xFFF0000000000000, double %242 br label %__nv_log.exit.i __nv_log.exit.i: ; preds = %241, %205 %q.i28.i.1 = phi double [ %240, %205 ], [ %q.i28.i.0, %241 ] %246 = fmul double %r.i.i.5, %q.i28.i.1 %247 = fdiv double 1.000000e+00, %1 %248 = fsub double %246, %247 %249 = fmul double %248, 0x3FE45F306DC9C883 %250 = fadd double %16, %249 br label %__nv_y1.exit 251: ; preds = %5 %252 = fcmp ugt double %1, 0x4009B510EC2ADC83 br i1 %252, label %280, label %253 253: ; preds = %251 %254 = fadd double %1, 0xC00193BED4DFF243 %255 = fadd double %254, 0x3C8BD1E50D219BFD %256 = tail call double @llvm.nvvm.fma.rn.d(double 0xBE2B87B0BE2AA150, double %255, double 0x3E4833AAE4D8B975) #145 %257 = tail call double @llvm.nvvm.fma.rn.d(double %256, double %255, double 0xBE44E279B423E68F) #145 %258 = tail call double @llvm.nvvm.fma.rn.d(double %257, double %255, double 0x3E129DC6A747EB4F) #145 %259 = tail call double @llvm.nvvm.fma.rn.d(double %258, double %255, double 0xBE61D15534496CD8) #145 %260 = tail call double @llvm.nvvm.fma.rn.d(double %259, double %255, double 0x3E7EEC8D48FECE00) #145 %261 = tail call double @llvm.nvvm.fma.rn.d(double %260, double %255, double 0xBE8D1180AF70A134) #145 %262 = tail call double @llvm.nvvm.fma.rn.d(double %261, double %255, double 0x3E9C8386A0EA1388) #145 %263 = tail call double @llvm.nvvm.fma.rn.d(double %262, double %255, double 0xBEB01A014E7F3250) #145 %264 = tail call double @llvm.nvvm.fma.rn.d(double %263, double %255, double 0x3EC1FB752010A320) #145 %265 = tail call double @llvm.nvvm.fma.rn.d(double %264, double %255, double 0xBED3AA0AFF4E332B) #145 %266 = tail call double @llvm.nvvm.fma.rn.d(double %265, double %255, double 0x3EE584A6C77F6700) #145 %267 = tail call double @llvm.nvvm.fma.rn.d(double %266, double %255, double 0xBEF794C520FC2EBB) #145 %268 = tail call double @llvm.nvvm.fma.rn.d(double %267, double %255, double 0x3F09D18D2D35CC71) #145 %269 = tail call double @llvm.nvvm.fma.rn.d(double %268, double %255, double 0xBF1C3FB7315C4599) #145 %270 = tail call double @llvm.nvvm.fma.rn.d(double %269, double %255, double 0x3F2EEA7ADECCE927) #145 %271 = tail call double @llvm.nvvm.fma.rn.d(double %270, double %255, double 0xBF40B2D85257446F) #145 %272 = tail call double @llvm.nvvm.fma.rn.d(double %271, double %255, double 0x3F517AB4B1FE5D5B) #145 %273 = tail call double @llvm.nvvm.fma.rn.d(double %272, double %255, double 0xBF65429DC6516C0D) #145 %274 = tail call double @llvm.nvvm.fma.rn.d(double %273, double %255, double 0x3F7E671C7D0B090B) #145 %275 = tail call double @llvm.nvvm.fma.rn.d(double %274, double %255, double 0xBF73A6DEC36FB27C) #145 %276 = tail call double @llvm.nvvm.fma.rn.d(double %275, double %255, double 0xBFA0D2AF4E931FD1) #145 %277 = tail call double @llvm.nvvm.fma.rn.d(double %276, double %255, double 0xBFBE56F82217B964) #145 %278 = tail call double @llvm.nvvm.fma.rn.d(double %277, double %255, double 0x3FE0AA48442F014B) #145 %279 = fmul double %255, %278 br label %__nv_y1.exit 280: ; preds = %251 %281 = fcmp ugt double %1, 0x401C0D26D5A541CB br i1 %281, label %306, label %282 282: ; preds = %280 %283 = fadd double %1, 0xC015B7FE4E87B02E %284 = fadd double %283, 0xBCBDFE7BAC228E8C %285 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CBA3C76069F1D8C, double %284, double 0x3CC69A30996793E2) #145 %286 = tail call double @llvm.nvvm.fma.rn.d(double %285, double %284, double 0xBCDDD8432FE756E7) #145 %287 = tail call double @llvm.nvvm.fma.rn.d(double %286, double %284, double 0xBD143158EEE220F7) #145 %288 = tail call double @llvm.nvvm.fma.rn.d(double %287, double %284, double 0x3D28D44491230F5A) #145 %289 = tail call double @llvm.nvvm.fma.rn.d(double %288, double %284, double 0xBD438842EAF4EDBC) #145 %290 = tail call double @llvm.nvvm.fma.rn.d(double %289, double %284, double 0x3D74958DAFBFAF5A) #145 %291 = tail call double @llvm.nvvm.fma.rn.d(double %290, double %284, double 0xBD9449A60E664848) #145 %292 = tail call double @llvm.nvvm.fma.rn.d(double %291, double %284, double 0x3D838BC8CD594A76) #145 %293 = tail call double @llvm.nvvm.fma.rn.d(double %292, double %284, double 0xBDFA798002141323) #145 %294 = tail call double @llvm.nvvm.fma.rn.d(double %293, double %284, double 0x3E380B4198956AAA) #145 %295 = tail call double @llvm.nvvm.fma.rn.d(double %294, double %284, double 0x3E5B62B5F21BACD4) #145 %296 = tail call double @llvm.nvvm.fma.rn.d(double %295, double %284, double 0xBEA255E729FB6AAE) #145 %297 = tail call double @llvm.nvvm.fma.rn.d(double %296, double %284, double 0xBEC80618F6BAE5AA) #145 %298 = tail call double @llvm.nvvm.fma.rn.d(double %297, double %284, double 0x3F085B940F8E8D36) #145 %299 = tail call double @llvm.nvvm.fma.rn.d(double %298, double %284, double 0x3F2337C7E10E14E8) #145 %300 = tail call double @llvm.nvvm.fma.rn.d(double %299, double %284, double 0xBF61BE6DB99332CA) #145 %301 = tail call double @llvm.nvvm.fma.rn.d(double %300, double %284, double 0xBF710A329E2BE9B8) #145 %302 = tail call double @llvm.nvvm.fma.rn.d(double %301, double %284, double 0x3FAA15D92DFE3FCF) #145 %303 = tail call double @llvm.nvvm.fma.rn.d(double %302, double %284, double 0x3FA00B9F8571C9BE) #145 %304 = tail call double @llvm.nvvm.fma.rn.d(double %303, double %284, double 0xBFD5C7C556F0C19A) #145 %305 = fmul double %284, %304 br label %__nv_y1.exit 306: ; preds = %280 %307 = fcmp ugt double %1, 0x4022585C739ACDDD br i1 %307, label %__nv_isinfd.exit.i, label %308 308: ; preds = %306 %309 = fadd double %1, 0xC0213127AE6169B4 %310 = fadd double %309, 0xBCB479CC068D9046 %311 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CB09CCC22945996, double %310, double 0xBD43515F67644276) #145 %312 = tail call double @llvm.nvvm.fma.rn.d(double %311, double %310, double 0xBD72C5B978E9F5C7) #145 %313 = tail call double @llvm.nvvm.fma.rn.d(double %312, double %310, double 0x3DBEC1151613913C) #145 %314 = tail call double @llvm.nvvm.fma.rn.d(double %313, double %310, double 0x3DE9E38D13C4A824) #145 %315 = tail call double @llvm.nvvm.fma.rn.d(double %314, double %310, double 0xBE341E75E1088EB5) #145 %316 = tail call double @llvm.nvvm.fma.rn.d(double %315, double %310, double 0xBE5A384EBB13CFE1) #145 %317 = tail call double @llvm.nvvm.fma.rn.d(double %316, double %310, double 0x3EA2BECB27F8C8F8) #145 %318 = tail call double @llvm.nvvm.fma.rn.d(double %317, double %310, double 0x3EC176E72B989FD8) #145 %319 = tail call double @llvm.nvvm.fma.rn.d(double %318, double %310, double 0xBF06F7BAB102F822) #145 %320 = tail call double @llvm.nvvm.fma.rn.d(double %319, double %310, double 0xBF1B50D7E1D278E1) #145 %321 = tail call double @llvm.nvvm.fma.rn.d(double %320, double %310, double 0x3F607A678D60004F) #145 %322 = tail call double @llvm.nvvm.fma.rn.d(double %321, double %310, double 0x3F63CED2A2E69115) #145 %323 = tail call double @llvm.nvvm.fma.rn.d(double %322, double %310, double 0xBFA6395DFE49FCD4) #145 %324 = tail call double @llvm.nvvm.fma.rn.d(double %323, double %310, double 0xBF902B3933CF21B1) #145 %325 = tail call double @llvm.nvvm.fma.rn.d(double %324, double %310, double 0x3FD15F993FCEAB5C) #145 %326 = fmul double %310, %325 br label %__nv_y1.exit __nv_isinfd.exit.i: ; preds = %306 %327 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %328 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %329 = and i32 %328, 2147483647 %330 = icmp eq i32 %329, 2146435072 %331 = icmp eq i32 %327, 0 %332 = select i1 %330, i1 %331, i1 false br i1 %332, label %__nv_y1.exit, label %333 333: ; preds = %__nv_isinfd.exit.i %334 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #145 %335 = fneg double %1 %336 = tail call double @llvm.nvvm.fma.rn.d(double %335, double %334, double 1.000000e+00) #145 %337 = tail call double @llvm.nvvm.fma.rn.d(double %336, double %336, double %336) #145 %338 = tail call double @llvm.nvvm.fma.rn.d(double %337, double %334, double %334) #145 %339 = fmul double %338, %338 %340 = tail call double @llvm.nvvm.fma.rn.d(double 0x40D13DB326ECEBFE, double %339, double 0xC09C26E89385D5B1) #145 %341 = tail call double @llvm.nvvm.fma.rn.d(double %340, double %339, double 0x405C6AB923C6F55E) #145 %342 = tail call double @llvm.nvvm.fma.rn.d(double %341, double %339, double 0xC01E61EAF3BD2FA1) #145 %343 = tail call double @llvm.nvvm.fma.rn.d(double %342, double %339, double 0x3FE9BF15D9B97DD1) #145 %344 = tail call double @llvm.nvvm.fma.rn.d(double %343, double %339, double 0xBFC8BFECF93D7D19) #145 %345 = tail call double @llvm.nvvm.fma.rn.d(double %344, double %339, double 0x3FC7FFFFF756AA6C) #145 %346 = tail call double @llvm.nvvm.fma.rn.d(double %345, double %339, double 0x3FF0000000003646) #145 %347 = tail call double @llvm.nvvm.fma.rn.d(double 0xC1943281A050209C, double %339, double 0x416024E99BA46E7B) #145 %348 = tail call double @llvm.nvvm.fma.rn.d(double %347, double %339, double 0xC11A6875D7DFBD65) #145 %349 = tail call double @llvm.nvvm.fma.rn.d(double %348, double %339, double 0x40D032C041790233) #145 %350 = tail call double @llvm.nvvm.fma.rn.d(double %349, double %339, double 0xC0839F895BC22946) #145 %351 = tail call double @llvm.nvvm.fma.rn.d(double %350, double %339, double 0x403E77CC78ECD2D8) #145 %352 = tail call double @llvm.nvvm.fma.rn.d(double %351, double %339, double 0xC002F368D0117BE9) #145 %353 = tail call double @llvm.nvvm.fma.rn.d(double %352, double %339, double 0x3FD7BCC786009A25) #145 %354 = tail call double @llvm.nvvm.fma.rn.d(double %353, double %339, double 0xBFC4FFFFFC51BC7A) #145 %355 = tail call double @llvm.nvvm.fma.rn.d(double %354, double %339, double 0x3FD7FFFFFFFFB5EA) #145 %356 = tail call double @llvm.nvvm.fma.rn.d(double %355, double %338, double %1) #145 %357 = tail call double @llvm.nvvm.rsqrt.approx.d(double %1) #145 %358 = fmul double %357, 0x3FE9884533D43651 %359 = fmul double %358, %346 %360 = fmul double %356, 0x3FE45F306DC9C883 %361 = tail call i32 @llvm.nvvm.d2i.rn(double %360) #145 store i32 %361, ptr %q.i.i.i, align 4 %362 = sitofp i32 %361 to double %363 = fneg double %362 %364 = tail call double @llvm.nvvm.fma.rn.d(double %363, double 0x3FF921FB54442D18, double %356) #145 %365 = tail call double @llvm.nvvm.fma.rn.d(double %363, double 0x3C91A62633145C00, double %364) #145 %366 = tail call double @llvm.nvvm.fma.rn.d(double %363, double 0x397B839A252049C0, double %365) #145 %367 = tail call double @llvm.nvvm.fabs.d(double %356) #145 %368 = fcmp ult double %367, 0x41E0000000000000 br i1 %368, label %__internal_trig_reduction_kerneld.exit.i.i, label %369 369: ; preds = %333 %370 = call fastcc double @__internal_trig_reduction_slowpathd(double %356, ptr nonnull %q.i.i.i) #145 %.pre = load i32, ptr %q.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i __internal_trig_reduction_kerneld.exit.i.i: ; preds = %369, %333 %371 = phi i32 [ %.pre, %369 ], [ %361, %333 ] %t.i.i.i.0 = phi double [ %370, %369 ], [ %366, %333 ] %372 = and i32 %371, 3 %373 = uitofp i32 %372 to double %374 = fadd double %t.i.i.i.0, 0xC00F6A7A2955385E %375 = fmul double %373, 0x3FF921FB54442D18 %376 = fadd double %374, %375 %377 = tail call i32 @llvm.nvvm.d2i.lo(double %376) #145 %378 = tail call i32 @llvm.nvvm.d2i.hi(double %376) #145 %379 = and i32 %378, 2147483647 %380 = icmp eq i32 %379, 2146435072 %381 = icmp eq i32 %377, 0 %382 = select i1 %380, i1 %381, i1 false br i1 %382, label %383, label %385 383: ; preds = %__internal_trig_reduction_kerneld.exit.i.i %384 = tail call double @llvm.nvvm.mul.rn.d(double %376, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i.i 385: ; preds = %__internal_trig_reduction_kerneld.exit.i.i %386 = fmul double %376, 0x3FE45F306DC9C883 %387 = tail call i32 @llvm.nvvm.d2i.rn(double %386) #145 store i32 %387, ptr %q.i.i.i.i, align 4 %388 = sitofp i32 %387 to double %389 = fneg double %388 %390 = tail call double @llvm.nvvm.fma.rn.d(double %389, double 0x3FF921FB54442D18, double %376) #145 %391 = tail call double @llvm.nvvm.fma.rn.d(double %389, double 0x3C91A62633145C00, double %390) #145 %392 = tail call double @llvm.nvvm.fma.rn.d(double %389, double 0x397B839A252049C0, double %391) #145 %393 = tail call double @llvm.nvvm.fabs.d(double %376) #145 %394 = fcmp ult double %393, 0x41E0000000000000 br i1 %394, label %__internal_trig_reduction_kerneld.exit.i.i.i, label %395 395: ; preds = %385 %396 = call fastcc double @__internal_trig_reduction_slowpathd(double %376, ptr nonnull %q.i.i.i.i) #145 %.pre7 = load i32, ptr %q.i.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i __internal_trig_reduction_kerneld.exit.i.i.i: ; preds = %385, %395, %383 %i.i.i.i.0 = phi i32 [ 0, %383 ], [ %.pre7, %395 ], [ %387, %385 ] %z.i.i.i.0 = phi double [ %384, %383 ], [ %396, %395 ], [ %392, %385 ] %397 = add nsw i32 %i.i.i.i.0, 1 %398 = and i32 %397, 1 %399 = shl nuw nsw i32 %398, 3 %400 = zext i32 %399 to i64 %401 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %400 %402 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.i.0, double %z.i.i.i.0) #145 %.not = icmp eq i32 %398, 0 %403 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %404 = getelementptr inbounds double, ptr addrspace(1) %401, i64 1 %405 = load double, ptr addrspace(1) %404, align 8 %406 = tail call double @llvm.nvvm.fma.rn.d(double %403, double %402, double %405) #145 %407 = getelementptr inbounds double, ptr addrspace(1) %401, i64 2 %408 = load double, ptr addrspace(1) %407, align 8 %409 = tail call double @llvm.nvvm.fma.rn.d(double %406, double %402, double %408) #145 %410 = getelementptr inbounds double, ptr addrspace(1) %401, i64 3 %411 = load double, ptr addrspace(1) %410, align 8 %412 = tail call double @llvm.nvvm.fma.rn.d(double %409, double %402, double %411) #145 %413 = getelementptr inbounds double, ptr addrspace(1) %401, i64 4 %414 = load double, ptr addrspace(1) %413, align 8 %415 = tail call double @llvm.nvvm.fma.rn.d(double %412, double %402, double %414) #145 %416 = getelementptr inbounds double, ptr addrspace(1) %401, i64 5 %417 = load double, ptr addrspace(1) %416, align 8 %418 = tail call double @llvm.nvvm.fma.rn.d(double %415, double %402, double %417) #145 %419 = getelementptr inbounds double, ptr addrspace(1) %401, i64 6 %420 = load double, ptr addrspace(1) %419, align 8 %421 = tail call double @llvm.nvvm.fma.rn.d(double %418, double %402, double %420) #145 %422 = tail call double @llvm.nvvm.fma.rn.d(double %421, double %z.i.i.i.0, double %z.i.i.i.0) #145 %423 = tail call double @llvm.nvvm.fma.rn.d(double %421, double %402, double 1.000000e+00) #145 %spec.select71 = select i1 %.not, double %422, double %423 %424 = and i32 %397, 2 %.not97 = icmp eq i32 %424, 0 %425 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select71, double -1.000000e+00, double 0.000000e+00) #145 %.1 = select i1 %.not97, double %spec.select71, double %425 %426 = fmul double %359, %.1 br label %__nv_y1.exit __nv_y1.exit: ; preds = %__nv_log.exit.i, %282, %__internal_trig_reduction_kerneld.exit.i.i.i, %__nv_isinfd.exit.i, %308, %253, %3 %r.i.5 = phi double [ %4, %3 ], [ %250, %__nv_log.exit.i ], [ %279, %253 ], [ %305, %282 ], [ %326, %308 ], [ %426, %__internal_trig_reduction_kerneld.exit.i.i.i ], [ 0.000000e+00, %__nv_isinfd.exit.i ] %427 = fcmp ole double %a, 0.000000e+00 %428 = fcmp oeq double %a, 0.000000e+00 %. = select i1 %428, double 0xFFF0000000000000, double 0xFFF8000000000000 %r.i.7 = select i1 %427, double %., double %r.i.5 %429 = fcmp ole double %1, 0x3FE97F4A8F9D3F28 br i1 %429, label %430, label %675 430: ; preds = %__nv_y1.exit %431 = fmul double %1, %1 %432 = tail call double @llvm.nvvm.fma.rn.d(double 0x3C8EFBD0A1B77C65, double %431, double 0xBD13098C51C18514) #145 %433 = tail call double @llvm.nvvm.fma.rn.d(double %432, double %431, double 0x3D923102D2F5F2F5) #145 %434 = tail call double @llvm.nvvm.fma.rn.d(double %433, double %431, double 0xBE0A5F2DEE7D526E) #145 %435 = tail call double @llvm.nvvm.fma.rn.d(double %434, double %431, double 0x3E7BB77E758B38AF) #145 %436 = tail call double @llvm.nvvm.fma.rn.d(double %435, double %431, double 0xBEE3D1A206EC4F36) #145 %437 = tail call double @llvm.nvvm.fma.rn.d(double %436, double %431, double 0x3F4183DCD3ED6294) #145 %438 = tail call double @llvm.nvvm.fma.rn.d(double %437, double %431, double 0xBF903921CF04F123) #145 %439 = tail call double @llvm.nvvm.fma.rn.d(double %438, double %431, double 0x3FC5DB69D7753176) #145 %440 = fadd double %431, 0xBFDBA96740000000 %441 = fadd double %440, 0x3E15A30C80000000 %442 = fmul double %441, %439 %443 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %444 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %445 = icmp slt i32 %443, 1048576 br i1 %445, label %446, label %450 446: ; preds = %430 %447 = fmul double %1, 0x4350000000000000 %448 = tail call i32 @llvm.nvvm.d2i.hi(double %447) #145 %449 = tail call i32 @llvm.nvvm.d2i.lo(double %447) #145 br label %450 450: ; preds = %446, %430 %.021 = phi double [ %447, %446 ], [ %1, %430 ] %ihi.i.i50.0 = phi i32 [ %448, %446 ], [ %443, %430 ] %ilo.i.i51.0 = phi i32 [ %449, %446 ], [ %444, %430 ] %e.i.i52.0 = phi i32 [ -1077, %446 ], [ -1023, %430 ] %451 = add i32 %ihi.i.i50.0, -1 %452 = icmp ult i32 %451, 2146435071 br i1 %452, label %453, label %502 453: ; preds = %450 %454 = lshr i32 %ihi.i.i50.0, 20 %455 = add nsw i32 %e.i.i52.0, %454 %456 = and i32 %ihi.i.i50.0, -2146435073 %457 = or i32 %456, 1072693248 %458 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i51.0, i32 %457) #145 %459 = icmp ugt i32 %457, 1073127582 br i1 %459, label %460, label %466 460: ; preds = %453 %461 = tail call i32 @llvm.nvvm.d2i.lo(double %458) #145 %462 = tail call i32 @llvm.nvvm.d2i.hi(double %458) #145 %463 = add i32 %462, -1048576 %464 = tail call double @llvm.nvvm.lohi.i2d(i32 %461, i32 %463) #145 %465 = add nsw i32 %455, 1 br label %466 466: ; preds = %460, %453 %m.i.i42.0 = phi double [ %464, %460 ], [ %458, %453 ] %e.i.i52.1 = phi i32 [ %465, %460 ], [ %455, %453 ] %467 = fadd double %m.i.i42.0, -1.000000e+00 %468 = fadd double %m.i.i42.0, 1.000000e+00 %469 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %468) #145 %470 = fneg double %468 %471 = tail call double @llvm.nvvm.fma.rn.d(double %470, double %469, double 1.000000e+00) #145 %472 = tail call double @llvm.nvvm.fma.rn.d(double %471, double %471, double %471) #145 %473 = tail call double @llvm.nvvm.fma.rn.d(double %472, double %469, double %469) #145 %474 = fmul double %467, %473 %475 = fadd double %474, %474 %476 = fmul double %475, %475 %477 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %476, double 0x3ED0EE258B7A8B04) #145 %478 = tail call double @llvm.nvvm.fma.rn.d(double %477, double %476, double 0x3EF3B2669F02676F) #145 %479 = tail call double @llvm.nvvm.fma.rn.d(double %478, double %476, double 0x3F1745CBA9AB0956) #145 %480 = tail call double @llvm.nvvm.fma.rn.d(double %479, double %476, double 0x3F3C71C72D1B5154) #145 %481 = tail call double @llvm.nvvm.fma.rn.d(double %480, double %476, double 0x3F624924923BE72D) #145 %482 = tail call double @llvm.nvvm.fma.rn.d(double %481, double %476, double 0x3F8999999999A3C4) #145 %483 = tail call double @llvm.nvvm.fma.rn.d(double %482, double %476, double 0x3FB5555555555554) #145 %484 = fsub double %467, %475 %485 = fmul double %484, 2.000000e+00 %486 = fneg double %475 %487 = tail call double @llvm.nvvm.fma.rn.d(double %486, double %467, double %485) #145 %488 = fmul double %473, %487 %489 = fmul double %476, %483 %490 = tail call double @llvm.nvvm.fma.rn.d(double %489, double %475, double %488) #145 %491 = xor i32 %e.i.i52.1, -2147483648 %492 = tail call double @llvm.nvvm.lohi.i2d(i32 %491, i32 1127219200) #145 %493 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %494 = fsub double %492, %493 %495 = tail call double @llvm.nvvm.fma.rn.d(double %494, double 0x3FE62E42FEFA39EF, double %475) #145 %496 = fneg double %494 %497 = tail call double @llvm.nvvm.fma.rn.d(double %496, double 0x3FE62E42FEFA39EF, double %495) #145 %498 = fsub double %497, %475 %499 = fsub double %490, %498 %500 = tail call double @llvm.nvvm.fma.rn.d(double %494, double 0x3C7ABC9E3B39803F, double %499) #145 %501 = fadd double %495, %500 br label %__nv_log.exit.i102 502: ; preds = %450 %503 = tail call double @llvm.nvvm.fma.rn.d(double %.021, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %504 = tail call i32 @llvm.nvvm.d2i.hi(double %.021) #145 %505 = bitcast i32 %504 to float %506 = fcmp oeq float %505, 0.000000e+00 %q.i3.i.0 = select i1 %506, double 0xFFF0000000000000, double %503 br label %__nv_log.exit.i102 __nv_log.exit.i102: ; preds = %502, %466 %q.i3.i.1 = phi double [ %501, %466 ], [ %q.i3.i.0, %502 ] %507 = fmul double %q.i3.i.1, 0x3FE45F306DC9C883 %508 = tail call double @llvm.nvvm.fabs.d(double %1) #145 %509 = fcmp ugt double %508, 0x400FB319F277BBE5 br i1 %509, label %530, label %510 510: ; preds = %__nv_log.exit.i102 %511 = fadd double %508, 0xC0033D152E971B40 %512 = fadd double %511, 0x3CA0F539D7DA258E %513 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCC0D18564C48C61, double %512, double 0xBCFCF8F9A8C294BC) #145 %514 = tail call double @llvm.nvvm.fma.rn.d(double %513, double %512, double 0x3D3FAB983CAE498B) #145 %515 = tail call double @llvm.nvvm.fma.rn.d(double %514, double %512, double 0x3D7CD7C018579B88) #145 %516 = tail call double @llvm.nvvm.fma.rn.d(double %515, double %512, double 0xBDBBDD2342D64FDD) #145 %517 = tail call double @llvm.nvvm.fma.rn.d(double %516, double %512, double 0xBDF5C2D9416B1E2B) #145 %518 = tail call double @llvm.nvvm.fma.rn.d(double %517, double %512, double 0x3E32951D73174DD5) #145 %519 = tail call double @llvm.nvvm.fma.rn.d(double %518, double %512, double 0x3E67FF99802CAEB5) #145 %520 = tail call double @llvm.nvvm.fma.rn.d(double %519, double %512, double 0xBEA1CCE305C4C9F7) #145 %521 = tail call double @llvm.nvvm.fma.rn.d(double %520, double %512, double 0xBED232C77E29E1BB) #145 %522 = tail call double @llvm.nvvm.fma.rn.d(double %521, double %512, double 0x3F06ED3B9F0EF757) #145 %523 = tail call double @llvm.nvvm.fma.rn.d(double %522, double %512, double 0x3F315382BA096A62) #145 %524 = tail call double @llvm.nvvm.fma.rn.d(double %523, double %512, double 0xBF61F992590D1AE4) #145 %525 = tail call double @llvm.nvvm.fma.rn.d(double %524, double %512, double 0xBF81BB1CBE1A465F) #145 %526 = tail call double @llvm.nvvm.fma.rn.d(double %525, double %512, double 0x3FACFAE864368D84) #145 %527 = tail call double @llvm.nvvm.fma.rn.d(double %526, double %512, double 0x3FBBA1DEEA0294A3) #145 %528 = tail call double @llvm.nvvm.fma.rn.d(double %527, double %512, double 0xBFE09CDB36551280) #145 %529 = fmul double %512, %528 br label %__nv_j0.exit.i 530: ; preds = %__nv_log.exit.i102 %531 = fcmp ugt double %508, 0x401C58FD1A62F5EC br i1 %531, label %552, label %532 532: ; preds = %530 %533 = fadd double %508, 0xC016148F5B2C2E45 %534 = fadd double %533, 0xBC975054CD60A517 %535 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CBCB0A8F126B343, double %534, double 0x3CF83FD1F333EB61) #145 %536 = tail call double @llvm.nvvm.fma.rn.d(double %535, double %534, double 0xBD4100E33E3FB413) #145 %537 = tail call double @llvm.nvvm.fma.rn.d(double %536, double %534, double 0xBD7846076D004627) #145 %538 = tail call double @llvm.nvvm.fma.rn.d(double %537, double %534, double 0x3DBE2F1D4F90720D) #145 %539 = tail call double @llvm.nvvm.fma.rn.d(double %538, double %534, double 0x3DF1D03B1E4A119B) #145 %540 = tail call double @llvm.nvvm.fma.rn.d(double %539, double %534, double 0xBE341D72B1B3BCE9) #145 %541 = tail call double @llvm.nvvm.fma.rn.d(double %540, double %534, double 0xBE62DA37CE2A9EF8) #145 %542 = tail call double @llvm.nvvm.fma.rn.d(double %541, double %534, double 0x3EA32E6D9974F763) #145 %543 = tail call double @llvm.nvvm.fma.rn.d(double %542, double %534, double 0x3ECAD77D744A1879) #145 %544 = tail call double @llvm.nvvm.fma.rn.d(double %543, double %534, double 0xBF0863F481A37337) #145 %545 = tail call double @llvm.nvvm.fma.rn.d(double %544, double %534, double 0xBF26F641F418F0F4) #145 %546 = tail call double @llvm.nvvm.fma.rn.d(double %545, double %534, double 0x3F627E31FE9A969E) #145 %547 = tail call double @llvm.nvvm.fma.rn.d(double %546, double %534, double 0x3F72F7FFE9025628) #145 %548 = tail call double @llvm.nvvm.fma.rn.d(double %547, double %534, double 0xBFAB2150CB41E8BF) #145 %549 = tail call double @llvm.nvvm.fma.rn.d(double %548, double %534, double 0xBF9F8F72E7A848DE) #145 %550 = tail call double @llvm.nvvm.fma.rn.d(double %549, double %534, double 0x3FD5C6E60A097823) #145 %551 = fmul double %534, %550 br label %__nv_j0.exit.i 552: ; preds = %530 %553 = fcmp ugt double %508, 0x402471FCB6A7A8C0 br i1 %553, label %__nv_isinfd.exit.i.i103, label %554 554: ; preds = %552 %555 = fadd double %508, 0xC0214EB56CCCDECA %556 = fadd double %555, 0x3CB51970714C7C25 %557 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCBDB7FFCF659E24, double %556, double 0xBCF4B3A71AAAC629) #145 %558 = tail call double @llvm.nvvm.fma.rn.d(double %557, double %556, double 0x3D417EC150ECDCE7) #145 %559 = tail call double @llvm.nvvm.fma.rn.d(double %558, double %556, double 0x3D7438F5EA1D10B2) #145 %560 = tail call double @llvm.nvvm.fma.rn.d(double %559, double %556, double 0xBDBEDAE7EC2C9E87) #145 %561 = tail call double @llvm.nvvm.fma.rn.d(double %560, double %556, double 0xBDECADD2C4B91F58) #145 %562 = tail call double @llvm.nvvm.fma.rn.d(double %561, double %556, double 0x3E34582C8EE12204) #145 %563 = tail call double @llvm.nvvm.fma.rn.d(double %562, double %556, double 0x3E5CEDA451DD20F8) #145 %564 = tail call double @llvm.nvvm.fma.rn.d(double %563, double %556, double 0xBEA30E8CC3165E2F) #145 %565 = tail call double @llvm.nvvm.fma.rn.d(double %564, double %556, double 0xBEC3324842BB1A2E) #145 %566 = tail call double @llvm.nvvm.fma.rn.d(double %565, double %556, double 0x3F07800BC54FBDDB) #145 %567 = tail call double @llvm.nvvm.fma.rn.d(double %566, double %556, double 0x3F1D79605276949A) #145 %568 = tail call double @llvm.nvvm.fma.rn.d(double %567, double %556, double 0xBF60E0D60385A629) #145 %569 = tail call double @llvm.nvvm.fma.rn.d(double %568, double %556, double 0xBF648E63600D82F3) #145 %570 = tail call double @llvm.nvvm.fma.rn.d(double %569, double %556, double 0x3FA68B984EC6493A) #145 %571 = tail call double @llvm.nvvm.fma.rn.d(double %570, double %556, double 0x3F900F7FCF183E0B) #145 %572 = tail call double @llvm.nvvm.fma.rn.d(double %571, double %556, double 0xBFD15F7977A772D4) #145 %573 = fmul double %556, %572 br label %__nv_j0.exit.i __nv_isinfd.exit.i.i103: ; preds = %552 %574 = tail call i32 @llvm.nvvm.d2i.lo(double %508) #145 %575 = tail call i32 @llvm.nvvm.d2i.hi(double %508) #145 %576 = and i32 %575, 2147483647 %577 = icmp ne i32 %576, 2146435072 %578 = icmp ne i32 %574, 0 %579 = select i1 %577, i1 true, i1 %578 br i1 %579, label %580, label %__nv_j0.exit.i 580: ; preds = %__nv_isinfd.exit.i.i103 %581 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %508) #145 %582 = fneg double %508 %583 = tail call double @llvm.nvvm.fma.rn.d(double %582, double %581, double 1.000000e+00) #145 %584 = tail call double @llvm.nvvm.fma.rn.d(double %583, double %583, double %583) #145 %585 = tail call double @llvm.nvvm.fma.rn.d(double %584, double %581, double %581) #145 %586 = fmul double %585, %585 %587 = tail call double @llvm.nvvm.fma.rn.d(double 0xC0D115CB8C11A9DC, double %586, double 0x409927467A655012) #145 %588 = tail call double @llvm.nvvm.fma.rn.d(double %587, double %586, double 0xC05751787E247BD4) #145 %589 = tail call double @llvm.nvvm.fma.rn.d(double %588, double %586, double 0x401704C4E5FC36B2) #145 %590 = tail call double @llvm.nvvm.fma.rn.d(double %589, double %586, double 0xBFE15B747A2FD531) #145 %591 = tail call double @llvm.nvvm.fma.rn.d(double %590, double %586, double 0x3FBA7FEACF6CB79B) #145 %592 = tail call double @llvm.nvvm.fma.rn.d(double %591, double %586, double 0xBFAFFFFFEDDCF548) #145 %593 = tail call double @llvm.nvvm.fma.rn.d(double %592, double %586, double 0x3FEFFFFFFFFFC9E5) #145 %594 = tail call double @llvm.nvvm.fma.rn.d(double 0xC14602FE1C34685E, double %586, double 0x410ECD4523B12B84) #145 %595 = tail call double @llvm.nvvm.fma.rn.d(double %594, double %586, double 0xC0C7A2FC1972F05A) #145 %596 = tail call double @llvm.nvvm.fma.rn.d(double %595, double %586, double 0x407EBA131F7E5BEB) #145 %597 = tail call double @llvm.nvvm.fma.rn.d(double %596, double %586, double 0xC0373B92E6E7CC7D) #145 %598 = tail call double @llvm.nvvm.fma.rn.d(double %597, double %586, double 0x3FFA31BEE63A2F08) #145 %599 = tail call double @llvm.nvvm.fma.rn.d(double %598, double %586, double 0xBFCAD320104D5D05) #145 %600 = tail call double @llvm.nvvm.fma.rn.d(double %599, double %586, double 0x3FB0AAAA9C76D07E) #145 %601 = tail call double @llvm.nvvm.fma.rn.d(double %600, double %586, double 0xBFBFFFFFFFFDACEC) #145 %602 = tail call double @llvm.nvvm.fma.rn.d(double %601, double %585, double %508) #145 %603 = tail call double @llvm.nvvm.rsqrt.approx.d(double %508) #145 %604 = fmul double %603, 0x3FE9884533D43651 %605 = fmul double %604, %593 %606 = fmul double %602, 0x3FE45F306DC9C883 %607 = tail call i32 @llvm.nvvm.d2i.rn(double %606) #145 store i32 %607, ptr %q.i.i.i20.i, align 4 %608 = sitofp i32 %607 to double %609 = fneg double %608 %610 = tail call double @llvm.nvvm.fma.rn.d(double %609, double 0x3FF921FB54442D18, double %602) #145 %611 = tail call double @llvm.nvvm.fma.rn.d(double %609, double 0x3C91A62633145C00, double %610) #145 %612 = tail call double @llvm.nvvm.fma.rn.d(double %609, double 0x397B839A252049C0, double %611) #145 %613 = tail call double @llvm.nvvm.fabs.d(double %602) #145 %614 = fcmp ult double %613, 0x41E0000000000000 br i1 %614, label %__internal_trig_reduction_kerneld.exit.i.i25.i, label %615 615: ; preds = %580 %616 = call fastcc double @__internal_trig_reduction_slowpathd(double %602, ptr nonnull %q.i.i.i20.i) #145 %.pre29 = load i32, ptr %q.i.i.i20.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i25.i __internal_trig_reduction_kerneld.exit.i.i25.i: ; preds = %615, %580 %617 = phi i32 [ %.pre29, %615 ], [ %607, %580 ] %t.i.i.i19.i.0 = phi double [ %616, %615 ], [ %612, %580 ] %618 = and i32 %617, 3 %619 = uitofp i32 %618 to double %620 = fadd double %t.i.i.i19.i.0, 0xBFE921FB54442D18 %621 = fmul double %619, 0x3FF921FB54442D18 %622 = fadd double %620, %621 %623 = tail call i32 @llvm.nvvm.d2i.lo(double %622) #145 %624 = tail call i32 @llvm.nvvm.d2i.hi(double %622) #145 %625 = and i32 %624, 2147483647 %626 = icmp eq i32 %625, 2146435072 %627 = icmp eq i32 %623, 0 %628 = select i1 %626, i1 %627, i1 false br i1 %628, label %629, label %631 629: ; preds = %__internal_trig_reduction_kerneld.exit.i.i25.i %630 = tail call double @llvm.nvvm.mul.rn.d(double %622, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i.i27.i 631: ; preds = %__internal_trig_reduction_kerneld.exit.i.i25.i %632 = fmul double %622, 0x3FE45F306DC9C883 %633 = tail call i32 @llvm.nvvm.d2i.rn(double %632) #145 store i32 %633, ptr %q.i.i.i.i9.i, align 4 %634 = sitofp i32 %633 to double %635 = fneg double %634 %636 = tail call double @llvm.nvvm.fma.rn.d(double %635, double 0x3FF921FB54442D18, double %622) #145 %637 = tail call double @llvm.nvvm.fma.rn.d(double %635, double 0x3C91A62633145C00, double %636) #145 %638 = tail call double @llvm.nvvm.fma.rn.d(double %635, double 0x397B839A252049C0, double %637) #145 %639 = tail call double @llvm.nvvm.fabs.d(double %622) #145 %640 = fcmp ult double %639, 0x41E0000000000000 br i1 %640, label %__internal_trig_reduction_kerneld.exit.i.i.i27.i, label %641 641: ; preds = %631 %642 = call fastcc double @__internal_trig_reduction_slowpathd(double %622, ptr nonnull %q.i.i.i.i9.i) #145 %.pre34 = load i32, ptr %q.i.i.i.i9.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i27.i __internal_trig_reduction_kerneld.exit.i.i.i27.i: ; preds = %631, %641, %629 %i.i.i.i17.i.0 = phi i32 [ 0, %629 ], [ %.pre34, %641 ], [ %633, %631 ] %z.i.i.i16.i.0 = phi double [ %630, %629 ], [ %642, %641 ], [ %638, %631 ] %643 = add nsw i32 %i.i.i.i17.i.0, 1 %644 = and i32 %643, 1 %645 = shl nuw nsw i32 %644, 3 %646 = zext i32 %645 to i64 %647 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %646 %648 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.i16.i.0, double %z.i.i.i16.i.0) #145 %.not108 = icmp eq i32 %644, 0 %649 = select i1 %.not108, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %650 = getelementptr inbounds double, ptr addrspace(1) %647, i64 1 %651 = load double, ptr addrspace(1) %650, align 8 %652 = tail call double @llvm.nvvm.fma.rn.d(double %649, double %648, double %651) #145 %653 = getelementptr inbounds double, ptr addrspace(1) %647, i64 2 %654 = load double, ptr addrspace(1) %653, align 8 %655 = tail call double @llvm.nvvm.fma.rn.d(double %652, double %648, double %654) #145 %656 = getelementptr inbounds double, ptr addrspace(1) %647, i64 3 %657 = load double, ptr addrspace(1) %656, align 8 %658 = tail call double @llvm.nvvm.fma.rn.d(double %655, double %648, double %657) #145 %659 = getelementptr inbounds double, ptr addrspace(1) %647, i64 4 %660 = load double, ptr addrspace(1) %659, align 8 %661 = tail call double @llvm.nvvm.fma.rn.d(double %658, double %648, double %660) #145 %662 = getelementptr inbounds double, ptr addrspace(1) %647, i64 5 %663 = load double, ptr addrspace(1) %662, align 8 %664 = tail call double @llvm.nvvm.fma.rn.d(double %661, double %648, double %663) #145 %665 = getelementptr inbounds double, ptr addrspace(1) %647, i64 6 %666 = load double, ptr addrspace(1) %665, align 8 %667 = tail call double @llvm.nvvm.fma.rn.d(double %664, double %648, double %666) #145 %668 = tail call double @llvm.nvvm.fma.rn.d(double %667, double %z.i.i.i16.i.0, double %z.i.i.i16.i.0) #145 %669 = tail call double @llvm.nvvm.fma.rn.d(double %667, double %648, double 1.000000e+00) #145 %spec.select73 = select i1 %.not108, double %668, double %669 %670 = and i32 %643, 2 %.not109 = icmp eq i32 %670, 0 %671 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select73, double -1.000000e+00, double 0.000000e+00) #145 %.127 = select i1 %.not109, double %spec.select73, double %671 %672 = fmul double %605, %.127 br label %__nv_j0.exit.i __nv_j0.exit.i: ; preds = %532, %__internal_trig_reduction_kerneld.exit.i.i.i27.i, %__nv_isinfd.exit.i.i103, %554, %510 %r.i.i29.3 = phi double [ %529, %510 ], [ %551, %532 ], [ %573, %554 ], [ %672, %__internal_trig_reduction_kerneld.exit.i.i.i27.i ], [ 0.000000e+00, %__nv_isinfd.exit.i.i103 ] %673 = fmul double %507, %r.i.i29.3 %674 = fadd double %442, %673 br label %__nv_y0.exit 675: ; preds = %__nv_y1.exit %676 = fcmp ugt double %1, 0x4000347C4AB37B18 br i1 %676, label %704, label %677 677: ; preds = %675 %678 = fadd double %1, 0xBFEC982EB8D417EA %679 = fadd double %678, 0xBC7EA9D270347F83 %680 = tail call double @llvm.nvvm.fma.rn.d(double 0xBF01630132D75FC3, double %679, double 0x3F3D054B05D3C52D) #145 %681 = tail call double @llvm.nvvm.fma.rn.d(double %680, double %679, double 0xBF66DAC0B314B2E5) #145 %682 = tail call double @llvm.nvvm.fma.rn.d(double %681, double %679, double 0x3F86A5D1DE76263F) #145 %683 = tail call double @llvm.nvvm.fma.rn.d(double %682, double %679, double 0xBF9FD16652824592) #145 %684 = tail call double @llvm.nvvm.fma.rn.d(double %683, double %679, double 0x3FB0F69A9CC79FBD) #145 %685 = tail call double @llvm.nvvm.fma.rn.d(double %684, double %679, double 0xBFBCCE40EF15583E) #145 %686 = tail call double @llvm.nvvm.fma.rn.d(double %685, double %679, double 0x3FC446B11780E4FC) #145 %687 = tail call double @llvm.nvvm.fma.rn.d(double %686, double %679, double 0xBFC89AE7E19621F7) #145 %688 = tail call double @llvm.nvvm.fma.rn.d(double %687, double %679, double 0x3FCACBA1B38EF7B8) #145 %689 = tail call double @llvm.nvvm.fma.rn.d(double %688, double %679, double 0xBFCB4166A03BBFA5) #145 %690 = tail call double @llvm.nvvm.fma.rn.d(double %689, double %679, double 0x3FCACCA4D5D4889A) #145 %691 = tail call double @llvm.nvvm.fma.rn.d(double %690, double %679, double 0xBFCA1455932B9392) #145 %692 = tail call double @llvm.nvvm.fma.rn.d(double %691, double %679, double 0x3FC96D8DB8D844EC) #145 %693 = tail call double @llvm.nvvm.fma.rn.d(double %692, double %679, double 0xBFC8F7FB77522EDF) #145 %694 = tail call double @llvm.nvvm.fma.rn.d(double %693, double %679, double 0x3FC8C0926ABC9AB0) #145 %695 = tail call double @llvm.nvvm.fma.rn.d(double %694, double %679, double 0xBFC8D35B8FEA468C) #145 %696 = tail call double @llvm.nvvm.fma.rn.d(double %695, double %679, double 0x3FC9424B8A0C8F94) #145 %697 = tail call double @llvm.nvvm.fma.rn.d(double %696, double %679, double 0xBFCA396A7F3403EF) #145 %698 = tail call double @llvm.nvvm.fma.rn.d(double %697, double %679, double 0x3FCC068086C37055) #145 %699 = tail call double @llvm.nvvm.fma.rn.d(double %698, double %679, double 0xBFCCF18E6A4C5C4E) #145 %700 = tail call double @llvm.nvvm.fma.rn.d(double %699, double %679, double 0x3FCC3B1338AF4239) #145 %701 = tail call double @llvm.nvvm.fma.rn.d(double %700, double %679, double 0xBFDF7E38A46D70DB) #145 %702 = tail call double @llvm.nvvm.fma.rn.d(double %701, double %679, double 0x3FEC24371844B88A) #145 %703 = fmul double %679, %702 br label %__nv_y0.exit 704: ; preds = %675 %705 = fcmp ugt double %1, 0x40161663B5D9A628 br i1 %705, label %733, label %706 706: ; preds = %704 %707 = fadd double %1, 0xC00FA9534D98569C %708 = fadd double %707, 0x3C9F06AE7804384E %709 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCDAEA62AC8BDA68, double %708, double 0xBCD2434958151AC7) #145 %710 = tail call double @llvm.nvvm.fma.rn.d(double %709, double %708, double 0x3D11C24A40D33FE1) #145 %711 = tail call double @llvm.nvvm.fma.rn.d(double %710, double %708, double 0x3D237CD62FA08CA4) #145 %712 = tail call double @llvm.nvvm.fma.rn.d(double %711, double %708, double 0xBD43902E0298C52A) #145 %713 = tail call double @llvm.nvvm.fma.rn.d(double %712, double %708, double 0xBD1DDAAD11CAB40F) #145 %714 = tail call double @llvm.nvvm.fma.rn.d(double %713, double %708, double 0xBD5209D9F06D7DE4) #145 %715 = tail call double @llvm.nvvm.fma.rn.d(double %714, double %708, double 0x3D8BB9F464468E1A) #145 %716 = tail call double @llvm.nvvm.fma.rn.d(double %715, double %708, double 0xBDA8F67B07D1B440) #145 %717 = tail call double @llvm.nvvm.fma.rn.d(double %716, double %708, double 0x3DC7C8D60F9EAECF) #145 %718 = tail call double @llvm.nvvm.fma.rn.d(double %717, double %708, double 0xBDE9703405B49A8D) #145 %719 = tail call double @llvm.nvvm.fma.rn.d(double %718, double %708, double 0x3E0A6B64E76417E4) #145 %720 = tail call double @llvm.nvvm.fma.rn.d(double %719, double %708, double 0xBE2F6B5AFB2F1359) #145 %721 = tail call double @llvm.nvvm.fma.rn.d(double %720, double %708, double 0x3E54526B71C21EC1) #145 %722 = tail call double @llvm.nvvm.fma.rn.d(double %721, double %708, double 0xBE5776DBCBBC8E1D) #145 %723 = tail call double @llvm.nvvm.fma.rn.d(double %722, double %708, double 0xBE93B211FC2DF90E) #145 %724 = tail call double @llvm.nvvm.fma.rn.d(double %723, double %708, double 0xBED486372E8562DC) #145 %725 = tail call double @llvm.nvvm.fma.rn.d(double %724, double %708, double 0x3F0AB2C1FBC3A254) #145 %726 = tail call double @llvm.nvvm.fma.rn.d(double %725, double %708, double 0x3F299827653353B8) #145 %727 = tail call double @llvm.nvvm.fma.rn.d(double %726, double %708, double 0xBF61E32BC4ED7084) #145 %728 = tail call double @llvm.nvvm.fma.rn.d(double %727, double %708, double 0xBF7C116FDC599A09) #145 %729 = tail call double @llvm.nvvm.fma.rn.d(double %728, double %708, double 0x3FADF6D59BF50C77) #145 %730 = tail call double @llvm.nvvm.fma.rn.d(double %729, double %708, double 0x3FAA09C92903680B) #145 %731 = tail call double @llvm.nvvm.fma.rn.d(double %730, double %708, double 0xBFD9C34256A12A0B) #145 %732 = fmul double %708, %731 br label %__nv_y0.exit 733: ; preds = %704 %734 = fcmp ugt double %1, 0x40214EF30C0C06ED br i1 %734, label %__nv_isinfd.exit.i109, label %735 735: ; preds = %733 %736 = fadd double %1, 0xC01C581DC4E72103 %737 = fadd double %736, 0x3C99774A495F56CF %738 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CF1CB3ABA718B8E, double %737, double 0xBD3F443BB4F53D75) #145 %739 = tail call double @llvm.nvvm.fma.rn.d(double %738, double %737, double 0xBD770F737BD6A786) #145 %740 = tail call double @llvm.nvvm.fma.rn.d(double %739, double %737, double 0x3DBF0E9A20459E14) #145 %741 = tail call double @llvm.nvvm.fma.rn.d(double %740, double %737, double 0x3DEFA6B137D5E108) #145 %742 = tail call double @llvm.nvvm.fma.rn.d(double %741, double %737, double 0xBE344296729FB7FA) #145 %743 = tail call double @llvm.nvvm.fma.rn.d(double %742, double %737, double 0xBE60A2813A80DFAA) #145 %744 = tail call double @llvm.nvvm.fma.rn.d(double %743, double %737, double 0x3EA34AA737A83EB4) #145 %745 = tail call double @llvm.nvvm.fma.rn.d(double %744, double %737, double 0x3EC6A9227332D03C) #145 %746 = tail call double @llvm.nvvm.fma.rn.d(double %745, double %737, double 0xBF08177E4F93C81E) #145 %747 = tail call double @llvm.nvvm.fma.rn.d(double %746, double %737, double 0xBF226DD71E391775) #145 %748 = tail call double @llvm.nvvm.fma.rn.d(double %747, double %737, double 0x3F61D35E85FD7B22) #145 %749 = tail call double @llvm.nvvm.fma.rn.d(double %748, double %737, double 0x3F6B2F14A955285C) #145 %750 = tail call double @llvm.nvvm.fma.rn.d(double %749, double %737, double 0xBFA8969C64CBF388) #145 %751 = tail call double @llvm.nvvm.fma.rn.d(double %750, double %737, double 0xBF95AEF611FC4D5A) #145 %752 = tail call double @llvm.nvvm.fma.rn.d(double %751, double %737, double 0x3FD334CCA0697A5A) #145 %753 = fmul double %737, %752 br label %__nv_y0.exit __nv_isinfd.exit.i109: ; preds = %733 %754 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %755 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %756 = and i32 %755, 2147483647 %757 = icmp eq i32 %756, 2146435072 %758 = icmp eq i32 %754, 0 %759 = select i1 %757, i1 %758, i1 false br i1 %759, label %__nv_y0.exit, label %760 760: ; preds = %__nv_isinfd.exit.i109 %761 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #145 %762 = fneg double %1 %763 = tail call double @llvm.nvvm.fma.rn.d(double %762, double %761, double 1.000000e+00) #145 %764 = tail call double @llvm.nvvm.fma.rn.d(double %763, double %763, double %763) #145 %765 = tail call double @llvm.nvvm.fma.rn.d(double %764, double %761, double %761) #145 %766 = fmul double %765, %765 %767 = tail call double @llvm.nvvm.fma.rn.d(double 0xC0C5E91E6AC3AD03, double %766, double 0x4093F56A049CDDE7) #145 %768 = tail call double @llvm.nvvm.fma.rn.d(double %767, double %766, double 0xC05572D39DFB8433) #145 %769 = tail call double @llvm.nvvm.fma.rn.d(double %768, double %766, double 0x4016A6041CAA59E5) #145 %770 = tail call double @llvm.nvvm.fma.rn.d(double %769, double %766, double 0xBFE155E3A0493880) #145 %771 = tail call double @llvm.nvvm.fma.rn.d(double %770, double %766, double 0x3FBA7FB92F417F7F) #145 %772 = tail call double @llvm.nvvm.fma.rn.d(double %771, double %766, double 0xBFAFFFFFB12E32F5) #145 %773 = tail call double @llvm.nvvm.fma.rn.d(double %772, double %766, double 0x3FEFFFFFFFFECED5) #145 %774 = tail call double @llvm.nvvm.fma.rn.d(double 0x418A86A64BE101DC, double %766, double 0xC15709C79AAC5813) #145 %775 = tail call double @llvm.nvvm.fma.rn.d(double %774, double %766, double 0x41142A31C980A287) #145 %776 = tail call double @llvm.nvvm.fma.rn.d(double %775, double %766, double 0xC0C9CBE68930485D) #145 %777 = tail call double @llvm.nvvm.fma.rn.d(double %776, double %766, double 0x407F583E14E8A4E8) #145 %778 = tail call double @llvm.nvvm.fma.rn.d(double %777, double %766, double 0xC0374A629C650680) #145 %779 = tail call double @llvm.nvvm.fma.rn.d(double %778, double %766, double 0x3FFA32A7AF17FAE9) #145 %780 = tail call double @llvm.nvvm.fma.rn.d(double %779, double %766, double 0xBFCAD32497785CD6) #145 %781 = tail call double @llvm.nvvm.fma.rn.d(double %780, double %766, double 0x3FB0AAAA9FB75F7B) #145 %782 = tail call double @llvm.nvvm.fma.rn.d(double %781, double %766, double 0xBFBFFFFFFFFE320F) #145 %783 = tail call double @llvm.nvvm.fma.rn.d(double %782, double %765, double %1) #145 %784 = tail call double @llvm.nvvm.rsqrt.approx.d(double %1) #145 %785 = fmul double %784, 0x3FE9884533D43651 %786 = fmul double %785, %773 %787 = fmul double %783, 0x3FE45F306DC9C883 %788 = tail call i32 @llvm.nvvm.d2i.rn(double %787) #145 store i32 %788, ptr %q.i.i.i88, align 4 %789 = sitofp i32 %788 to double %790 = fneg double %789 %791 = tail call double @llvm.nvvm.fma.rn.d(double %790, double 0x3FF921FB54442D18, double %783) #145 %792 = tail call double @llvm.nvvm.fma.rn.d(double %790, double 0x3C91A62633145C00, double %791) #145 %793 = tail call double @llvm.nvvm.fma.rn.d(double %790, double 0x397B839A252049C0, double %792) #145 %794 = tail call double @llvm.nvvm.fabs.d(double %783) #145 %795 = fcmp ult double %794, 0x41E0000000000000 br i1 %795, label %__internal_trig_reduction_kerneld.exit.i.i110, label %796 796: ; preds = %760 %797 = call fastcc double @__internal_trig_reduction_slowpathd(double %783, ptr nonnull %q.i.i.i88) #145 %.pre20 = load i32, ptr %q.i.i.i88, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i110 __internal_trig_reduction_kerneld.exit.i.i110: ; preds = %796, %760 %798 = phi i32 [ %.pre20, %796 ], [ %788, %760 ] %t.i.i.i87.0 = phi double [ %797, %796 ], [ %793, %760 ] %799 = and i32 %798, 3 %800 = uitofp i32 %799 to double %801 = fadd double %t.i.i.i87.0, 0xC002D97C7F3321D2 %802 = fmul double %800, 0x3FF921FB54442D18 %803 = fadd double %801, %802 %804 = tail call i32 @llvm.nvvm.d2i.lo(double %803) #145 %805 = tail call i32 @llvm.nvvm.d2i.hi(double %803) #145 %806 = and i32 %805, 2147483647 %807 = icmp eq i32 %806, 2146435072 %808 = icmp eq i32 %804, 0 %809 = select i1 %807, i1 %808, i1 false br i1 %809, label %810, label %812 810: ; preds = %__internal_trig_reduction_kerneld.exit.i.i110 %811 = tail call double @llvm.nvvm.mul.rn.d(double %803, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i.i115 812: ; preds = %__internal_trig_reduction_kerneld.exit.i.i110 %813 = fmul double %803, 0x3FE45F306DC9C883 %814 = tail call i32 @llvm.nvvm.d2i.rn(double %813) #145 store i32 %814, ptr %q.i.i.i.i58, align 4 %815 = sitofp i32 %814 to double %816 = fneg double %815 %817 = tail call double @llvm.nvvm.fma.rn.d(double %816, double 0x3FF921FB54442D18, double %803) #145 %818 = tail call double @llvm.nvvm.fma.rn.d(double %816, double 0x3C91A62633145C00, double %817) #145 %819 = tail call double @llvm.nvvm.fma.rn.d(double %816, double 0x397B839A252049C0, double %818) #145 %820 = tail call double @llvm.nvvm.fabs.d(double %803) #145 %821 = fcmp ult double %820, 0x41E0000000000000 br i1 %821, label %__internal_trig_reduction_kerneld.exit.i.i.i115, label %822 822: ; preds = %812 %823 = call fastcc double @__internal_trig_reduction_slowpathd(double %803, ptr nonnull %q.i.i.i.i58) #145 %.pre25 = load i32, ptr %q.i.i.i.i58, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i115 __internal_trig_reduction_kerneld.exit.i.i.i115: ; preds = %812, %822, %810 %i.i.i.i85.0 = phi i32 [ 0, %810 ], [ %.pre25, %822 ], [ %814, %812 ] %z.i.i.i84.0 = phi double [ %811, %810 ], [ %823, %822 ], [ %819, %812 ] %824 = add nsw i32 %i.i.i.i85.0, 1 %825 = and i32 %824, 1 %826 = shl nuw nsw i32 %825, 3 %827 = zext i32 %826 to i64 %828 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %827 %829 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.i84.0, double %z.i.i.i84.0) #145 %.not98 = icmp eq i32 %825, 0 %830 = select i1 %.not98, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %831 = getelementptr inbounds double, ptr addrspace(1) %828, i64 1 %832 = load double, ptr addrspace(1) %831, align 8 %833 = tail call double @llvm.nvvm.fma.rn.d(double %830, double %829, double %832) #145 %834 = getelementptr inbounds double, ptr addrspace(1) %828, i64 2 %835 = load double, ptr addrspace(1) %834, align 8 %836 = tail call double @llvm.nvvm.fma.rn.d(double %833, double %829, double %835) #145 %837 = getelementptr inbounds double, ptr addrspace(1) %828, i64 3 %838 = load double, ptr addrspace(1) %837, align 8 %839 = tail call double @llvm.nvvm.fma.rn.d(double %836, double %829, double %838) #145 %840 = getelementptr inbounds double, ptr addrspace(1) %828, i64 4 %841 = load double, ptr addrspace(1) %840, align 8 %842 = tail call double @llvm.nvvm.fma.rn.d(double %839, double %829, double %841) #145 %843 = getelementptr inbounds double, ptr addrspace(1) %828, i64 5 %844 = load double, ptr addrspace(1) %843, align 8 %845 = tail call double @llvm.nvvm.fma.rn.d(double %842, double %829, double %844) #145 %846 = getelementptr inbounds double, ptr addrspace(1) %828, i64 6 %847 = load double, ptr addrspace(1) %846, align 8 %848 = tail call double @llvm.nvvm.fma.rn.d(double %845, double %829, double %847) #145 %849 = tail call double @llvm.nvvm.fma.rn.d(double %848, double %z.i.i.i84.0, double %z.i.i.i84.0) #145 %850 = tail call double @llvm.nvvm.fma.rn.d(double %848, double %829, double 1.000000e+00) #145 %spec.select74 = select i1 %.not98, double %849, double %850 %851 = and i32 %824, 2 %.not99 = icmp eq i32 %851, 0 %852 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select74, double -1.000000e+00, double 0.000000e+00) #145 %.120 = select i1 %.not99, double %spec.select74, double %852 %853 = fmul double %786, %.120 br label %__nv_y0.exit __nv_y0.exit: ; preds = %677, %735, %__nv_isinfd.exit.i109, %__internal_trig_reduction_kerneld.exit.i.i.i115, %706, %__nv_j0.exit.i %r.i95.4 = phi double [ %674, %__nv_j0.exit.i ], [ %703, %677 ], [ %732, %706 ], [ %753, %735 ], [ %853, %__internal_trig_reduction_kerneld.exit.i.i.i115 ], [ 0.000000e+00, %__nv_isinfd.exit.i109 ] %854 = fcmp olt double %a, 0.000000e+00 %r.i95.5 = select i1 %854, double 0xFFF8000000000000, double %r.i95.4 switch i32 %n, label %1705 [ i32 0, label %855 i32 1, label %1280 ] 855: ; preds = %__nv_y0.exit br i1 %429, label %856, label %1101 856: ; preds = %855 %857 = fmul double %1, %1 %858 = tail call double @llvm.nvvm.fma.rn.d(double 0x3C8EFBD0A1B77C65, double %857, double 0xBD13098C51C18514) #145 %859 = tail call double @llvm.nvvm.fma.rn.d(double %858, double %857, double 0x3D923102D2F5F2F5) #145 %860 = tail call double @llvm.nvvm.fma.rn.d(double %859, double %857, double 0xBE0A5F2DEE7D526E) #145 %861 = tail call double @llvm.nvvm.fma.rn.d(double %860, double %857, double 0x3E7BB77E758B38AF) #145 %862 = tail call double @llvm.nvvm.fma.rn.d(double %861, double %857, double 0xBEE3D1A206EC4F36) #145 %863 = tail call double @llvm.nvvm.fma.rn.d(double %862, double %857, double 0x3F4183DCD3ED6294) #145 %864 = tail call double @llvm.nvvm.fma.rn.d(double %863, double %857, double 0xBF903921CF04F123) #145 %865 = tail call double @llvm.nvvm.fma.rn.d(double %864, double %857, double 0x3FC5DB69D7753176) #145 %866 = fadd double %857, 0xBFDBA96740000000 %867 = fadd double %866, 0x3E15A30C80000000 %868 = fmul double %867, %865 %869 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %870 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %871 = icmp slt i32 %869, 1048576 br i1 %871, label %872, label %876 872: ; preds = %856 %873 = fmul double %1, 0x4350000000000000 %874 = tail call i32 @llvm.nvvm.d2i.hi(double %873) #145 %875 = tail call i32 @llvm.nvvm.d2i.lo(double %873) #145 br label %876 876: ; preds = %872, %856 %.036 = phi double [ %873, %872 ], [ %1, %856 ] %ihi.i.i194.0 = phi i32 [ %874, %872 ], [ %869, %856 ] %ilo.i.i195.0 = phi i32 [ %875, %872 ], [ %870, %856 ] %e.i.i196.0 = phi i32 [ -1077, %872 ], [ -1023, %856 ] %877 = add i32 %ihi.i.i194.0, -1 %878 = icmp ult i32 %877, 2146435071 br i1 %878, label %879, label %928 879: ; preds = %876 %880 = lshr i32 %ihi.i.i194.0, 20 %881 = add nsw i32 %e.i.i196.0, %880 %882 = and i32 %ihi.i.i194.0, -2146435073 %883 = or i32 %882, 1072693248 %884 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i195.0, i32 %883) #145 %885 = icmp ugt i32 %883, 1073127582 br i1 %885, label %886, label %892 886: ; preds = %879 %887 = tail call i32 @llvm.nvvm.d2i.lo(double %884) #145 %888 = tail call i32 @llvm.nvvm.d2i.hi(double %884) #145 %889 = add i32 %888, -1048576 %890 = tail call double @llvm.nvvm.lohi.i2d(i32 %887, i32 %889) #145 %891 = add nsw i32 %881, 1 br label %892 892: ; preds = %886, %879 %m.i.i184.0 = phi double [ %890, %886 ], [ %884, %879 ] %e.i.i196.1 = phi i32 [ %891, %886 ], [ %881, %879 ] %893 = fadd double %m.i.i184.0, -1.000000e+00 %894 = fadd double %m.i.i184.0, 1.000000e+00 %895 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %894) #145 %896 = fneg double %894 %897 = tail call double @llvm.nvvm.fma.rn.d(double %896, double %895, double 1.000000e+00) #145 %898 = tail call double @llvm.nvvm.fma.rn.d(double %897, double %897, double %897) #145 %899 = tail call double @llvm.nvvm.fma.rn.d(double %898, double %895, double %895) #145 %900 = fmul double %893, %899 %901 = fadd double %900, %900 %902 = fmul double %901, %901 %903 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %902, double 0x3ED0EE258B7A8B04) #145 %904 = tail call double @llvm.nvvm.fma.rn.d(double %903, double %902, double 0x3EF3B2669F02676F) #145 %905 = tail call double @llvm.nvvm.fma.rn.d(double %904, double %902, double 0x3F1745CBA9AB0956) #145 %906 = tail call double @llvm.nvvm.fma.rn.d(double %905, double %902, double 0x3F3C71C72D1B5154) #145 %907 = tail call double @llvm.nvvm.fma.rn.d(double %906, double %902, double 0x3F624924923BE72D) #145 %908 = tail call double @llvm.nvvm.fma.rn.d(double %907, double %902, double 0x3F8999999999A3C4) #145 %909 = tail call double @llvm.nvvm.fma.rn.d(double %908, double %902, double 0x3FB5555555555554) #145 %910 = fsub double %893, %901 %911 = fmul double %910, 2.000000e+00 %912 = fneg double %901 %913 = tail call double @llvm.nvvm.fma.rn.d(double %912, double %893, double %911) #145 %914 = fmul double %899, %913 %915 = fmul double %902, %909 %916 = tail call double @llvm.nvvm.fma.rn.d(double %915, double %901, double %914) #145 %917 = xor i32 %e.i.i196.1, -2147483648 %918 = tail call double @llvm.nvvm.lohi.i2d(i32 %917, i32 1127219200) #145 %919 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %920 = fsub double %918, %919 %921 = tail call double @llvm.nvvm.fma.rn.d(double %920, double 0x3FE62E42FEFA39EF, double %901) #145 %922 = fneg double %920 %923 = tail call double @llvm.nvvm.fma.rn.d(double %922, double 0x3FE62E42FEFA39EF, double %921) #145 %924 = fsub double %923, %901 %925 = fsub double %916, %924 %926 = tail call double @llvm.nvvm.fma.rn.d(double %920, double 0x3C7ABC9E3B39803F, double %925) #145 %927 = fadd double %921, %926 br label %__nv_log.exit.i246 928: ; preds = %876 %929 = tail call double @llvm.nvvm.fma.rn.d(double %.036, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %930 = tail call i32 @llvm.nvvm.d2i.hi(double %.036) #145 %931 = bitcast i32 %930 to float %932 = fcmp oeq float %931, 0.000000e+00 %q.i3.i190.0 = select i1 %932, double 0xFFF0000000000000, double %929 br label %__nv_log.exit.i246 __nv_log.exit.i246: ; preds = %928, %892 %q.i3.i190.1 = phi double [ %927, %892 ], [ %q.i3.i190.0, %928 ] %933 = fmul double %q.i3.i190.1, 0x3FE45F306DC9C883 %934 = tail call double @llvm.nvvm.fabs.d(double %1) #145 %935 = fcmp ugt double %934, 0x400FB319F277BBE5 br i1 %935, label %956, label %936 936: ; preds = %__nv_log.exit.i246 %937 = fadd double %934, 0xC0033D152E971B40 %938 = fadd double %937, 0x3CA0F539D7DA258E %939 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCC0D18564C48C61, double %938, double 0xBCFCF8F9A8C294BC) #145 %940 = tail call double @llvm.nvvm.fma.rn.d(double %939, double %938, double 0x3D3FAB983CAE498B) #145 %941 = tail call double @llvm.nvvm.fma.rn.d(double %940, double %938, double 0x3D7CD7C018579B88) #145 %942 = tail call double @llvm.nvvm.fma.rn.d(double %941, double %938, double 0xBDBBDD2342D64FDD) #145 %943 = tail call double @llvm.nvvm.fma.rn.d(double %942, double %938, double 0xBDF5C2D9416B1E2B) #145 %944 = tail call double @llvm.nvvm.fma.rn.d(double %943, double %938, double 0x3E32951D73174DD5) #145 %945 = tail call double @llvm.nvvm.fma.rn.d(double %944, double %938, double 0x3E67FF99802CAEB5) #145 %946 = tail call double @llvm.nvvm.fma.rn.d(double %945, double %938, double 0xBEA1CCE305C4C9F7) #145 %947 = tail call double @llvm.nvvm.fma.rn.d(double %946, double %938, double 0xBED232C77E29E1BB) #145 %948 = tail call double @llvm.nvvm.fma.rn.d(double %947, double %938, double 0x3F06ED3B9F0EF757) #145 %949 = tail call double @llvm.nvvm.fma.rn.d(double %948, double %938, double 0x3F315382BA096A62) #145 %950 = tail call double @llvm.nvvm.fma.rn.d(double %949, double %938, double 0xBF61F992590D1AE4) #145 %951 = tail call double @llvm.nvvm.fma.rn.d(double %950, double %938, double 0xBF81BB1CBE1A465F) #145 %952 = tail call double @llvm.nvvm.fma.rn.d(double %951, double %938, double 0x3FACFAE864368D84) #145 %953 = tail call double @llvm.nvvm.fma.rn.d(double %952, double %938, double 0x3FBBA1DEEA0294A3) #145 %954 = tail call double @llvm.nvvm.fma.rn.d(double %953, double %938, double 0xBFE09CDB36551280) #145 %955 = fmul double %938, %954 br label %__nv_j0.exit.i256 956: ; preds = %__nv_log.exit.i246 %957 = fcmp ugt double %934, 0x401C58FD1A62F5EC br i1 %957, label %978, label %958 958: ; preds = %956 %959 = fadd double %934, 0xC016148F5B2C2E45 %960 = fadd double %959, 0xBC975054CD60A517 %961 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CBCB0A8F126B343, double %960, double 0x3CF83FD1F333EB61) #145 %962 = tail call double @llvm.nvvm.fma.rn.d(double %961, double %960, double 0xBD4100E33E3FB413) #145 %963 = tail call double @llvm.nvvm.fma.rn.d(double %962, double %960, double 0xBD7846076D004627) #145 %964 = tail call double @llvm.nvvm.fma.rn.d(double %963, double %960, double 0x3DBE2F1D4F90720D) #145 %965 = tail call double @llvm.nvvm.fma.rn.d(double %964, double %960, double 0x3DF1D03B1E4A119B) #145 %966 = tail call double @llvm.nvvm.fma.rn.d(double %965, double %960, double 0xBE341D72B1B3BCE9) #145 %967 = tail call double @llvm.nvvm.fma.rn.d(double %966, double %960, double 0xBE62DA37CE2A9EF8) #145 %968 = tail call double @llvm.nvvm.fma.rn.d(double %967, double %960, double 0x3EA32E6D9974F763) #145 %969 = tail call double @llvm.nvvm.fma.rn.d(double %968, double %960, double 0x3ECAD77D744A1879) #145 %970 = tail call double @llvm.nvvm.fma.rn.d(double %969, double %960, double 0xBF0863F481A37337) #145 %971 = tail call double @llvm.nvvm.fma.rn.d(double %970, double %960, double 0xBF26F641F418F0F4) #145 %972 = tail call double @llvm.nvvm.fma.rn.d(double %971, double %960, double 0x3F627E31FE9A969E) #145 %973 = tail call double @llvm.nvvm.fma.rn.d(double %972, double %960, double 0x3F72F7FFE9025628) #145 %974 = tail call double @llvm.nvvm.fma.rn.d(double %973, double %960, double 0xBFAB2150CB41E8BF) #145 %975 = tail call double @llvm.nvvm.fma.rn.d(double %974, double %960, double 0xBF9F8F72E7A848DE) #145 %976 = tail call double @llvm.nvvm.fma.rn.d(double %975, double %960, double 0x3FD5C6E60A097823) #145 %977 = fmul double %960, %976 br label %__nv_j0.exit.i256 978: ; preds = %956 %979 = fcmp ugt double %934, 0x402471FCB6A7A8C0 br i1 %979, label %__nv_isinfd.exit.i.i247, label %980 980: ; preds = %978 %981 = fadd double %934, 0xC0214EB56CCCDECA %982 = fadd double %981, 0x3CB51970714C7C25 %983 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCBDB7FFCF659E24, double %982, double 0xBCF4B3A71AAAC629) #145 %984 = tail call double @llvm.nvvm.fma.rn.d(double %983, double %982, double 0x3D417EC150ECDCE7) #145 %985 = tail call double @llvm.nvvm.fma.rn.d(double %984, double %982, double 0x3D7438F5EA1D10B2) #145 %986 = tail call double @llvm.nvvm.fma.rn.d(double %985, double %982, double 0xBDBEDAE7EC2C9E87) #145 %987 = tail call double @llvm.nvvm.fma.rn.d(double %986, double %982, double 0xBDECADD2C4B91F58) #145 %988 = tail call double @llvm.nvvm.fma.rn.d(double %987, double %982, double 0x3E34582C8EE12204) #145 %989 = tail call double @llvm.nvvm.fma.rn.d(double %988, double %982, double 0x3E5CEDA451DD20F8) #145 %990 = tail call double @llvm.nvvm.fma.rn.d(double %989, double %982, double 0xBEA30E8CC3165E2F) #145 %991 = tail call double @llvm.nvvm.fma.rn.d(double %990, double %982, double 0xBEC3324842BB1A2E) #145 %992 = tail call double @llvm.nvvm.fma.rn.d(double %991, double %982, double 0x3F07800BC54FBDDB) #145 %993 = tail call double @llvm.nvvm.fma.rn.d(double %992, double %982, double 0x3F1D79605276949A) #145 %994 = tail call double @llvm.nvvm.fma.rn.d(double %993, double %982, double 0xBF60E0D60385A629) #145 %995 = tail call double @llvm.nvvm.fma.rn.d(double %994, double %982, double 0xBF648E63600D82F3) #145 %996 = tail call double @llvm.nvvm.fma.rn.d(double %995, double %982, double 0x3FA68B984EC6493A) #145 %997 = tail call double @llvm.nvvm.fma.rn.d(double %996, double %982, double 0x3F900F7FCF183E0B) #145 %998 = tail call double @llvm.nvvm.fma.rn.d(double %997, double %982, double 0xBFD15F7977A772D4) #145 %999 = fmul double %982, %998 br label %__nv_j0.exit.i256 __nv_isinfd.exit.i.i247: ; preds = %978 %1000 = tail call i32 @llvm.nvvm.d2i.lo(double %934) #145 %1001 = tail call i32 @llvm.nvvm.d2i.hi(double %934) #145 %1002 = and i32 %1001, 2147483647 %1003 = icmp ne i32 %1002, 2146435072 %1004 = icmp ne i32 %1000, 0 %1005 = select i1 %1003, i1 true, i1 %1004 br i1 %1005, label %1006, label %__nv_j0.exit.i256 1006: ; preds = %__nv_isinfd.exit.i.i247 %1007 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %934) #145 %1008 = fneg double %934 %1009 = tail call double @llvm.nvvm.fma.rn.d(double %1008, double %1007, double 1.000000e+00) #145 %1010 = tail call double @llvm.nvvm.fma.rn.d(double %1009, double %1009, double %1009) #145 %1011 = tail call double @llvm.nvvm.fma.rn.d(double %1010, double %1007, double %1007) #145 %1012 = fmul double %1011, %1011 %1013 = tail call double @llvm.nvvm.fma.rn.d(double 0xC0D115CB8C11A9DC, double %1012, double 0x409927467A655012) #145 %1014 = tail call double @llvm.nvvm.fma.rn.d(double %1013, double %1012, double 0xC05751787E247BD4) #145 %1015 = tail call double @llvm.nvvm.fma.rn.d(double %1014, double %1012, double 0x401704C4E5FC36B2) #145 %1016 = tail call double @llvm.nvvm.fma.rn.d(double %1015, double %1012, double 0xBFE15B747A2FD531) #145 %1017 = tail call double @llvm.nvvm.fma.rn.d(double %1016, double %1012, double 0x3FBA7FEACF6CB79B) #145 %1018 = tail call double @llvm.nvvm.fma.rn.d(double %1017, double %1012, double 0xBFAFFFFFEDDCF548) #145 %1019 = tail call double @llvm.nvvm.fma.rn.d(double %1018, double %1012, double 0x3FEFFFFFFFFFC9E5) #145 %1020 = tail call double @llvm.nvvm.fma.rn.d(double 0xC14602FE1C34685E, double %1012, double 0x410ECD4523B12B84) #145 %1021 = tail call double @llvm.nvvm.fma.rn.d(double %1020, double %1012, double 0xC0C7A2FC1972F05A) #145 %1022 = tail call double @llvm.nvvm.fma.rn.d(double %1021, double %1012, double 0x407EBA131F7E5BEB) #145 %1023 = tail call double @llvm.nvvm.fma.rn.d(double %1022, double %1012, double 0xC0373B92E6E7CC7D) #145 %1024 = tail call double @llvm.nvvm.fma.rn.d(double %1023, double %1012, double 0x3FFA31BEE63A2F08) #145 %1025 = tail call double @llvm.nvvm.fma.rn.d(double %1024, double %1012, double 0xBFCAD320104D5D05) #145 %1026 = tail call double @llvm.nvvm.fma.rn.d(double %1025, double %1012, double 0x3FB0AAAA9C76D07E) #145 %1027 = tail call double @llvm.nvvm.fma.rn.d(double %1026, double %1012, double 0xBFBFFFFFFFFDACEC) #145 %1028 = tail call double @llvm.nvvm.fma.rn.d(double %1027, double %1011, double %934) #145 %1029 = tail call double @llvm.nvvm.rsqrt.approx.d(double %934) #145 %1030 = fmul double %1029, 0x3FE9884533D43651 %1031 = fmul double %1030, %1019 %1032 = fmul double %1028, 0x3FE45F306DC9C883 %1033 = tail call i32 @llvm.nvvm.d2i.rn(double %1032) #145 store i32 %1033, ptr %q.i.i.i20.i163, align 4 %1034 = sitofp i32 %1033 to double %1035 = fneg double %1034 %1036 = tail call double @llvm.nvvm.fma.rn.d(double %1035, double 0x3FF921FB54442D18, double %1028) #145 %1037 = tail call double @llvm.nvvm.fma.rn.d(double %1035, double 0x3C91A62633145C00, double %1036) #145 %1038 = tail call double @llvm.nvvm.fma.rn.d(double %1035, double 0x397B839A252049C0, double %1037) #145 %1039 = tail call double @llvm.nvvm.fabs.d(double %1028) #145 %1040 = fcmp ult double %1039, 0x41E0000000000000 br i1 %1040, label %__internal_trig_reduction_kerneld.exit.i.i25.i248, label %1041 1041: ; preds = %1006 %1042 = call fastcc double @__internal_trig_reduction_slowpathd(double %1028, ptr nonnull %q.i.i.i20.i163) #145 %.pre65 = load i32, ptr %q.i.i.i20.i163, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i25.i248 __internal_trig_reduction_kerneld.exit.i.i25.i248: ; preds = %1041, %1006 %1043 = phi i32 [ %.pre65, %1041 ], [ %1033, %1006 ] %t.i.i.i19.i162.0 = phi double [ %1042, %1041 ], [ %1038, %1006 ] %1044 = and i32 %1043, 3 %1045 = uitofp i32 %1044 to double %1046 = fadd double %t.i.i.i19.i162.0, 0xBFE921FB54442D18 %1047 = fmul double %1045, 0x3FF921FB54442D18 %1048 = fadd double %1046, %1047 %1049 = tail call i32 @llvm.nvvm.d2i.lo(double %1048) #145 %1050 = tail call i32 @llvm.nvvm.d2i.hi(double %1048) #145 %1051 = and i32 %1050, 2147483647 %1052 = icmp eq i32 %1051, 2146435072 %1053 = icmp eq i32 %1049, 0 %1054 = select i1 %1052, i1 %1053, i1 false br i1 %1054, label %1055, label %1057 1055: ; preds = %__internal_trig_reduction_kerneld.exit.i.i25.i248 %1056 = tail call double @llvm.nvvm.mul.rn.d(double %1048, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i.i27.i253 1057: ; preds = %__internal_trig_reduction_kerneld.exit.i.i25.i248 %1058 = fmul double %1048, 0x3FE45F306DC9C883 %1059 = tail call i32 @llvm.nvvm.d2i.rn(double %1058) #145 store i32 %1059, ptr %q.i.i.i.i9.i133, align 4 %1060 = sitofp i32 %1059 to double %1061 = fneg double %1060 %1062 = tail call double @llvm.nvvm.fma.rn.d(double %1061, double 0x3FF921FB54442D18, double %1048) #145 %1063 = tail call double @llvm.nvvm.fma.rn.d(double %1061, double 0x3C91A62633145C00, double %1062) #145 %1064 = tail call double @llvm.nvvm.fma.rn.d(double %1061, double 0x397B839A252049C0, double %1063) #145 %1065 = tail call double @llvm.nvvm.fabs.d(double %1048) #145 %1066 = fcmp ult double %1065, 0x41E0000000000000 br i1 %1066, label %__internal_trig_reduction_kerneld.exit.i.i.i27.i253, label %1067 1067: ; preds = %1057 %1068 = call fastcc double @__internal_trig_reduction_slowpathd(double %1048, ptr nonnull %q.i.i.i.i9.i133) #145 %.pre70 = load i32, ptr %q.i.i.i.i9.i133, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i27.i253 __internal_trig_reduction_kerneld.exit.i.i.i27.i253: ; preds = %1057, %1067, %1055 %i.i.i.i17.i160.0 = phi i32 [ 0, %1055 ], [ %.pre70, %1067 ], [ %1059, %1057 ] %z.i.i.i16.i159.0 = phi double [ %1056, %1055 ], [ %1068, %1067 ], [ %1064, %1057 ] %1069 = add nsw i32 %i.i.i.i17.i160.0, 1 %1070 = and i32 %1069, 1 %1071 = shl nuw nsw i32 %1070, 3 %1072 = zext i32 %1071 to i64 %1073 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %1072 %1074 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.i16.i159.0, double %z.i.i.i16.i159.0) #145 %.not106 = icmp eq i32 %1070, 0 %1075 = select i1 %.not106, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %1076 = getelementptr inbounds double, ptr addrspace(1) %1073, i64 1 %1077 = load double, ptr addrspace(1) %1076, align 8 %1078 = tail call double @llvm.nvvm.fma.rn.d(double %1075, double %1074, double %1077) #145 %1079 = getelementptr inbounds double, ptr addrspace(1) %1073, i64 2 %1080 = load double, ptr addrspace(1) %1079, align 8 %1081 = tail call double @llvm.nvvm.fma.rn.d(double %1078, double %1074, double %1080) #145 %1082 = getelementptr inbounds double, ptr addrspace(1) %1073, i64 3 %1083 = load double, ptr addrspace(1) %1082, align 8 %1084 = tail call double @llvm.nvvm.fma.rn.d(double %1081, double %1074, double %1083) #145 %1085 = getelementptr inbounds double, ptr addrspace(1) %1073, i64 4 %1086 = load double, ptr addrspace(1) %1085, align 8 %1087 = tail call double @llvm.nvvm.fma.rn.d(double %1084, double %1074, double %1086) #145 %1088 = getelementptr inbounds double, ptr addrspace(1) %1073, i64 5 %1089 = load double, ptr addrspace(1) %1088, align 8 %1090 = tail call double @llvm.nvvm.fma.rn.d(double %1087, double %1074, double %1089) #145 %1091 = getelementptr inbounds double, ptr addrspace(1) %1073, i64 6 %1092 = load double, ptr addrspace(1) %1091, align 8 %1093 = tail call double @llvm.nvvm.fma.rn.d(double %1090, double %1074, double %1092) #145 %1094 = tail call double @llvm.nvvm.fma.rn.d(double %1093, double %z.i.i.i16.i159.0, double %z.i.i.i16.i159.0) #145 %1095 = tail call double @llvm.nvvm.fma.rn.d(double %1093, double %1074, double 1.000000e+00) #145 %spec.select76 = select i1 %.not106, double %1094, double %1095 %1096 = and i32 %1069, 2 %.not107 = icmp eq i32 %1096, 0 %1097 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select76, double -1.000000e+00, double 0.000000e+00) #145 %.142 = select i1 %.not107, double %spec.select76, double %1097 %1098 = fmul double %1031, %.142 br label %__nv_j0.exit.i256 __nv_j0.exit.i256: ; preds = %958, %__internal_trig_reduction_kerneld.exit.i.i.i27.i253, %__nv_isinfd.exit.i.i247, %980, %936 %r.i.i169.3 = phi double [ %955, %936 ], [ %977, %958 ], [ %999, %980 ], [ %1098, %__internal_trig_reduction_kerneld.exit.i.i.i27.i253 ], [ 0.000000e+00, %__nv_isinfd.exit.i.i247 ] %1099 = fmul double %933, %r.i.i169.3 %1100 = fadd double %868, %1099 br label %__nv_y0.exit266 1101: ; preds = %855 %1102 = fcmp ugt double %1, 0x4000347C4AB37B18 br i1 %1102, label %1130, label %1103 1103: ; preds = %1101 %1104 = fadd double %1, 0xBFEC982EB8D417EA %1105 = fadd double %1104, 0xBC7EA9D270347F83 %1106 = tail call double @llvm.nvvm.fma.rn.d(double 0xBF01630132D75FC3, double %1105, double 0x3F3D054B05D3C52D) #145 %1107 = tail call double @llvm.nvvm.fma.rn.d(double %1106, double %1105, double 0xBF66DAC0B314B2E5) #145 %1108 = tail call double @llvm.nvvm.fma.rn.d(double %1107, double %1105, double 0x3F86A5D1DE76263F) #145 %1109 = tail call double @llvm.nvvm.fma.rn.d(double %1108, double %1105, double 0xBF9FD16652824592) #145 %1110 = tail call double @llvm.nvvm.fma.rn.d(double %1109, double %1105, double 0x3FB0F69A9CC79FBD) #145 %1111 = tail call double @llvm.nvvm.fma.rn.d(double %1110, double %1105, double 0xBFBCCE40EF15583E) #145 %1112 = tail call double @llvm.nvvm.fma.rn.d(double %1111, double %1105, double 0x3FC446B11780E4FC) #145 %1113 = tail call double @llvm.nvvm.fma.rn.d(double %1112, double %1105, double 0xBFC89AE7E19621F7) #145 %1114 = tail call double @llvm.nvvm.fma.rn.d(double %1113, double %1105, double 0x3FCACBA1B38EF7B8) #145 %1115 = tail call double @llvm.nvvm.fma.rn.d(double %1114, double %1105, double 0xBFCB4166A03BBFA5) #145 %1116 = tail call double @llvm.nvvm.fma.rn.d(double %1115, double %1105, double 0x3FCACCA4D5D4889A) #145 %1117 = tail call double @llvm.nvvm.fma.rn.d(double %1116, double %1105, double 0xBFCA1455932B9392) #145 %1118 = tail call double @llvm.nvvm.fma.rn.d(double %1117, double %1105, double 0x3FC96D8DB8D844EC) #145 %1119 = tail call double @llvm.nvvm.fma.rn.d(double %1118, double %1105, double 0xBFC8F7FB77522EDF) #145 %1120 = tail call double @llvm.nvvm.fma.rn.d(double %1119, double %1105, double 0x3FC8C0926ABC9AB0) #145 %1121 = tail call double @llvm.nvvm.fma.rn.d(double %1120, double %1105, double 0xBFC8D35B8FEA468C) #145 %1122 = tail call double @llvm.nvvm.fma.rn.d(double %1121, double %1105, double 0x3FC9424B8A0C8F94) #145 %1123 = tail call double @llvm.nvvm.fma.rn.d(double %1122, double %1105, double 0xBFCA396A7F3403EF) #145 %1124 = tail call double @llvm.nvvm.fma.rn.d(double %1123, double %1105, double 0x3FCC068086C37055) #145 %1125 = tail call double @llvm.nvvm.fma.rn.d(double %1124, double %1105, double 0xBFCCF18E6A4C5C4E) #145 %1126 = tail call double @llvm.nvvm.fma.rn.d(double %1125, double %1105, double 0x3FCC3B1338AF4239) #145 %1127 = tail call double @llvm.nvvm.fma.rn.d(double %1126, double %1105, double 0xBFDF7E38A46D70DB) #145 %1128 = tail call double @llvm.nvvm.fma.rn.d(double %1127, double %1105, double 0x3FEC24371844B88A) #145 %1129 = fmul double %1105, %1128 br label %__nv_y0.exit266 1130: ; preds = %1101 %1131 = fcmp ugt double %1, 0x40161663B5D9A628 br i1 %1131, label %1159, label %1132 1132: ; preds = %1130 %1133 = fadd double %1, 0xC00FA9534D98569C %1134 = fadd double %1133, 0x3C9F06AE7804384E %1135 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCDAEA62AC8BDA68, double %1134, double 0xBCD2434958151AC7) #145 %1136 = tail call double @llvm.nvvm.fma.rn.d(double %1135, double %1134, double 0x3D11C24A40D33FE1) #145 %1137 = tail call double @llvm.nvvm.fma.rn.d(double %1136, double %1134, double 0x3D237CD62FA08CA4) #145 %1138 = tail call double @llvm.nvvm.fma.rn.d(double %1137, double %1134, double 0xBD43902E0298C52A) #145 %1139 = tail call double @llvm.nvvm.fma.rn.d(double %1138, double %1134, double 0xBD1DDAAD11CAB40F) #145 %1140 = tail call double @llvm.nvvm.fma.rn.d(double %1139, double %1134, double 0xBD5209D9F06D7DE4) #145 %1141 = tail call double @llvm.nvvm.fma.rn.d(double %1140, double %1134, double 0x3D8BB9F464468E1A) #145 %1142 = tail call double @llvm.nvvm.fma.rn.d(double %1141, double %1134, double 0xBDA8F67B07D1B440) #145 %1143 = tail call double @llvm.nvvm.fma.rn.d(double %1142, double %1134, double 0x3DC7C8D60F9EAECF) #145 %1144 = tail call double @llvm.nvvm.fma.rn.d(double %1143, double %1134, double 0xBDE9703405B49A8D) #145 %1145 = tail call double @llvm.nvvm.fma.rn.d(double %1144, double %1134, double 0x3E0A6B64E76417E4) #145 %1146 = tail call double @llvm.nvvm.fma.rn.d(double %1145, double %1134, double 0xBE2F6B5AFB2F1359) #145 %1147 = tail call double @llvm.nvvm.fma.rn.d(double %1146, double %1134, double 0x3E54526B71C21EC1) #145 %1148 = tail call double @llvm.nvvm.fma.rn.d(double %1147, double %1134, double 0xBE5776DBCBBC8E1D) #145 %1149 = tail call double @llvm.nvvm.fma.rn.d(double %1148, double %1134, double 0xBE93B211FC2DF90E) #145 %1150 = tail call double @llvm.nvvm.fma.rn.d(double %1149, double %1134, double 0xBED486372E8562DC) #145 %1151 = tail call double @llvm.nvvm.fma.rn.d(double %1150, double %1134, double 0x3F0AB2C1FBC3A254) #145 %1152 = tail call double @llvm.nvvm.fma.rn.d(double %1151, double %1134, double 0x3F299827653353B8) #145 %1153 = tail call double @llvm.nvvm.fma.rn.d(double %1152, double %1134, double 0xBF61E32BC4ED7084) #145 %1154 = tail call double @llvm.nvvm.fma.rn.d(double %1153, double %1134, double 0xBF7C116FDC599A09) #145 %1155 = tail call double @llvm.nvvm.fma.rn.d(double %1154, double %1134, double 0x3FADF6D59BF50C77) #145 %1156 = tail call double @llvm.nvvm.fma.rn.d(double %1155, double %1134, double 0x3FAA09C92903680B) #145 %1157 = tail call double @llvm.nvvm.fma.rn.d(double %1156, double %1134, double 0xBFD9C34256A12A0B) #145 %1158 = fmul double %1134, %1157 br label %__nv_y0.exit266 1159: ; preds = %1130 %1160 = fcmp ugt double %1, 0x40214EF30C0C06ED br i1 %1160, label %__nv_isinfd.exit.i257, label %1161 1161: ; preds = %1159 %1162 = fadd double %1, 0xC01C581DC4E72103 %1163 = fadd double %1162, 0x3C99774A495F56CF %1164 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CF1CB3ABA718B8E, double %1163, double 0xBD3F443BB4F53D75) #145 %1165 = tail call double @llvm.nvvm.fma.rn.d(double %1164, double %1163, double 0xBD770F737BD6A786) #145 %1166 = tail call double @llvm.nvvm.fma.rn.d(double %1165, double %1163, double 0x3DBF0E9A20459E14) #145 %1167 = tail call double @llvm.nvvm.fma.rn.d(double %1166, double %1163, double 0x3DEFA6B137D5E108) #145 %1168 = tail call double @llvm.nvvm.fma.rn.d(double %1167, double %1163, double 0xBE344296729FB7FA) #145 %1169 = tail call double @llvm.nvvm.fma.rn.d(double %1168, double %1163, double 0xBE60A2813A80DFAA) #145 %1170 = tail call double @llvm.nvvm.fma.rn.d(double %1169, double %1163, double 0x3EA34AA737A83EB4) #145 %1171 = tail call double @llvm.nvvm.fma.rn.d(double %1170, double %1163, double 0x3EC6A9227332D03C) #145 %1172 = tail call double @llvm.nvvm.fma.rn.d(double %1171, double %1163, double 0xBF08177E4F93C81E) #145 %1173 = tail call double @llvm.nvvm.fma.rn.d(double %1172, double %1163, double 0xBF226DD71E391775) #145 %1174 = tail call double @llvm.nvvm.fma.rn.d(double %1173, double %1163, double 0x3F61D35E85FD7B22) #145 %1175 = tail call double @llvm.nvvm.fma.rn.d(double %1174, double %1163, double 0x3F6B2F14A955285C) #145 %1176 = tail call double @llvm.nvvm.fma.rn.d(double %1175, double %1163, double 0xBFA8969C64CBF388) #145 %1177 = tail call double @llvm.nvvm.fma.rn.d(double %1176, double %1163, double 0xBF95AEF611FC4D5A) #145 %1178 = tail call double @llvm.nvvm.fma.rn.d(double %1177, double %1163, double 0x3FD334CCA0697A5A) #145 %1179 = fmul double %1163, %1178 br label %__nv_y0.exit266 __nv_isinfd.exit.i257: ; preds = %1159 %1180 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %1181 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %1182 = and i32 %1181, 2147483647 %1183 = icmp eq i32 %1182, 2146435072 %1184 = icmp eq i32 %1180, 0 %1185 = select i1 %1183, i1 %1184, i1 false br i1 %1185, label %__nv_y0.exit266, label %1186 1186: ; preds = %__nv_isinfd.exit.i257 %1187 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #145 %1188 = fneg double %1 %1189 = tail call double @llvm.nvvm.fma.rn.d(double %1188, double %1187, double 1.000000e+00) #145 %1190 = tail call double @llvm.nvvm.fma.rn.d(double %1189, double %1189, double %1189) #145 %1191 = tail call double @llvm.nvvm.fma.rn.d(double %1190, double %1187, double %1187) #145 %1192 = fmul double %1191, %1191 %1193 = tail call double @llvm.nvvm.fma.rn.d(double 0xC0C5E91E6AC3AD03, double %1192, double 0x4093F56A049CDDE7) #145 %1194 = tail call double @llvm.nvvm.fma.rn.d(double %1193, double %1192, double 0xC05572D39DFB8433) #145 %1195 = tail call double @llvm.nvvm.fma.rn.d(double %1194, double %1192, double 0x4016A6041CAA59E5) #145 %1196 = tail call double @llvm.nvvm.fma.rn.d(double %1195, double %1192, double 0xBFE155E3A0493880) #145 %1197 = tail call double @llvm.nvvm.fma.rn.d(double %1196, double %1192, double 0x3FBA7FB92F417F7F) #145 %1198 = tail call double @llvm.nvvm.fma.rn.d(double %1197, double %1192, double 0xBFAFFFFFB12E32F5) #145 %1199 = tail call double @llvm.nvvm.fma.rn.d(double %1198, double %1192, double 0x3FEFFFFFFFFECED5) #145 %1200 = tail call double @llvm.nvvm.fma.rn.d(double 0x418A86A64BE101DC, double %1192, double 0xC15709C79AAC5813) #145 %1201 = tail call double @llvm.nvvm.fma.rn.d(double %1200, double %1192, double 0x41142A31C980A287) #145 %1202 = tail call double @llvm.nvvm.fma.rn.d(double %1201, double %1192, double 0xC0C9CBE68930485D) #145 %1203 = tail call double @llvm.nvvm.fma.rn.d(double %1202, double %1192, double 0x407F583E14E8A4E8) #145 %1204 = tail call double @llvm.nvvm.fma.rn.d(double %1203, double %1192, double 0xC0374A629C650680) #145 %1205 = tail call double @llvm.nvvm.fma.rn.d(double %1204, double %1192, double 0x3FFA32A7AF17FAE9) #145 %1206 = tail call double @llvm.nvvm.fma.rn.d(double %1205, double %1192, double 0xBFCAD32497785CD6) #145 %1207 = tail call double @llvm.nvvm.fma.rn.d(double %1206, double %1192, double 0x3FB0AAAA9FB75F7B) #145 %1208 = tail call double @llvm.nvvm.fma.rn.d(double %1207, double %1192, double 0xBFBFFFFFFFFE320F) #145 %1209 = tail call double @llvm.nvvm.fma.rn.d(double %1208, double %1191, double %1) #145 %1210 = tail call double @llvm.nvvm.rsqrt.approx.d(double %1) #145 %1211 = fmul double %1210, 0x3FE9884533D43651 %1212 = fmul double %1211, %1199 %1213 = fmul double %1209, 0x3FE45F306DC9C883 %1214 = tail call i32 @llvm.nvvm.d2i.rn(double %1213) #145 store i32 %1214, ptr %q.i.i.i232, align 4 %1215 = sitofp i32 %1214 to double %1216 = fneg double %1215 %1217 = tail call double @llvm.nvvm.fma.rn.d(double %1216, double 0x3FF921FB54442D18, double %1209) #145 %1218 = tail call double @llvm.nvvm.fma.rn.d(double %1216, double 0x3C91A62633145C00, double %1217) #145 %1219 = tail call double @llvm.nvvm.fma.rn.d(double %1216, double 0x397B839A252049C0, double %1218) #145 %1220 = tail call double @llvm.nvvm.fabs.d(double %1209) #145 %1221 = fcmp ult double %1220, 0x41E0000000000000 br i1 %1221, label %__internal_trig_reduction_kerneld.exit.i.i258, label %1222 1222: ; preds = %1186 %1223 = call fastcc double @__internal_trig_reduction_slowpathd(double %1209, ptr nonnull %q.i.i.i232) #145 %.pre56 = load i32, ptr %q.i.i.i232, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i258 __internal_trig_reduction_kerneld.exit.i.i258: ; preds = %1222, %1186 %1224 = phi i32 [ %.pre56, %1222 ], [ %1214, %1186 ] %t.i.i.i231.0 = phi double [ %1223, %1222 ], [ %1219, %1186 ] %1225 = and i32 %1224, 3 %1226 = uitofp i32 %1225 to double %1227 = fadd double %t.i.i.i231.0, 0xC002D97C7F3321D2 %1228 = fmul double %1226, 0x3FF921FB54442D18 %1229 = fadd double %1227, %1228 %1230 = tail call i32 @llvm.nvvm.d2i.lo(double %1229) #145 %1231 = tail call i32 @llvm.nvvm.d2i.hi(double %1229) #145 %1232 = and i32 %1231, 2147483647 %1233 = icmp eq i32 %1232, 2146435072 %1234 = icmp eq i32 %1230, 0 %1235 = select i1 %1233, i1 %1234, i1 false br i1 %1235, label %1236, label %1238 1236: ; preds = %__internal_trig_reduction_kerneld.exit.i.i258 %1237 = tail call double @llvm.nvvm.mul.rn.d(double %1229, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i.i263 1238: ; preds = %__internal_trig_reduction_kerneld.exit.i.i258 %1239 = fmul double %1229, 0x3FE45F306DC9C883 %1240 = tail call i32 @llvm.nvvm.d2i.rn(double %1239) #145 store i32 %1240, ptr %q.i.i.i.i202, align 4 %1241 = sitofp i32 %1240 to double %1242 = fneg double %1241 %1243 = tail call double @llvm.nvvm.fma.rn.d(double %1242, double 0x3FF921FB54442D18, double %1229) #145 %1244 = tail call double @llvm.nvvm.fma.rn.d(double %1242, double 0x3C91A62633145C00, double %1243) #145 %1245 = tail call double @llvm.nvvm.fma.rn.d(double %1242, double 0x397B839A252049C0, double %1244) #145 %1246 = tail call double @llvm.nvvm.fabs.d(double %1229) #145 %1247 = fcmp ult double %1246, 0x41E0000000000000 br i1 %1247, label %__internal_trig_reduction_kerneld.exit.i.i.i263, label %1248 1248: ; preds = %1238 %1249 = call fastcc double @__internal_trig_reduction_slowpathd(double %1229, ptr nonnull %q.i.i.i.i202) #145 %.pre61 = load i32, ptr %q.i.i.i.i202, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i263 __internal_trig_reduction_kerneld.exit.i.i.i263: ; preds = %1238, %1248, %1236 %i.i.i.i229.0 = phi i32 [ 0, %1236 ], [ %.pre61, %1248 ], [ %1240, %1238 ] %z.i.i.i228.0 = phi double [ %1237, %1236 ], [ %1249, %1248 ], [ %1245, %1238 ] %1250 = add nsw i32 %i.i.i.i229.0, 1 %1251 = and i32 %1250, 1 %1252 = shl nuw nsw i32 %1251, 3 %1253 = zext i32 %1252 to i64 %1254 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %1253 %1255 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.i228.0, double %z.i.i.i228.0) #145 %.not104 = icmp eq i32 %1251, 0 %1256 = select i1 %.not104, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %1257 = getelementptr inbounds double, ptr addrspace(1) %1254, i64 1 %1258 = load double, ptr addrspace(1) %1257, align 8 %1259 = tail call double @llvm.nvvm.fma.rn.d(double %1256, double %1255, double %1258) #145 %1260 = getelementptr inbounds double, ptr addrspace(1) %1254, i64 2 %1261 = load double, ptr addrspace(1) %1260, align 8 %1262 = tail call double @llvm.nvvm.fma.rn.d(double %1259, double %1255, double %1261) #145 %1263 = getelementptr inbounds double, ptr addrspace(1) %1254, i64 3 %1264 = load double, ptr addrspace(1) %1263, align 8 %1265 = tail call double @llvm.nvvm.fma.rn.d(double %1262, double %1255, double %1264) #145 %1266 = getelementptr inbounds double, ptr addrspace(1) %1254, i64 4 %1267 = load double, ptr addrspace(1) %1266, align 8 %1268 = tail call double @llvm.nvvm.fma.rn.d(double %1265, double %1255, double %1267) #145 %1269 = getelementptr inbounds double, ptr addrspace(1) %1254, i64 5 %1270 = load double, ptr addrspace(1) %1269, align 8 %1271 = tail call double @llvm.nvvm.fma.rn.d(double %1268, double %1255, double %1270) #145 %1272 = getelementptr inbounds double, ptr addrspace(1) %1254, i64 6 %1273 = load double, ptr addrspace(1) %1272, align 8 %1274 = tail call double @llvm.nvvm.fma.rn.d(double %1271, double %1255, double %1273) #145 %1275 = tail call double @llvm.nvvm.fma.rn.d(double %1274, double %z.i.i.i228.0, double %z.i.i.i228.0) #145 %1276 = tail call double @llvm.nvvm.fma.rn.d(double %1274, double %1255, double 1.000000e+00) #145 %spec.select77 = select i1 %.not104, double %1275, double %1276 %1277 = and i32 %1250, 2 %.not105 = icmp eq i32 %1277, 0 %1278 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select77, double -1.000000e+00, double 0.000000e+00) #145 %.135 = select i1 %.not105, double %spec.select77, double %1278 %1279 = fmul double %1212, %.135 br label %__nv_y0.exit266 __nv_y0.exit266: ; preds = %1103, %1161, %__nv_isinfd.exit.i257, %__internal_trig_reduction_kerneld.exit.i.i.i263, %1132, %__nv_j0.exit.i256 %r.i239.4 = phi double [ %1100, %__nv_j0.exit.i256 ], [ %1129, %1103 ], [ %1158, %1132 ], [ %1179, %1161 ], [ %1279, %__internal_trig_reduction_kerneld.exit.i.i.i263 ], [ 0.000000e+00, %__nv_isinfd.exit.i257 ] %r.i239.5 = select i1 %854, double 0xFFF8000000000000, double %r.i239.4 br label %1719 1280: ; preds = %__nv_y0.exit br i1 %2, label %1281, label %1283 1281: ; preds = %1280 %1282 = fdiv double 0xBFE45F306DC9C883, %1 br label %__nv_y1.exit416 1283: ; preds = %1280 %1284 = fcmp ugt double %1, 0x3FF4C6F208132576 br i1 %1284, label %1529, label %1285 1285: ; preds = %1283 %1286 = fmul double %1, %1 %1287 = tail call double @llvm.nvvm.fma.rn.d(double 0x3D5249F90687428C, double %1286, double 0xBDCF0B5B1FB7B95E) #145 %1288 = tail call double @llvm.nvvm.fma.rn.d(double %1287, double %1286, double 0x3E432E589311FA14) #145 %1289 = tail call double @llvm.nvvm.fma.rn.d(double %1288, double %1286, double 0xBEB0A780AA4A92E9) #145 %1290 = tail call double @llvm.nvvm.fma.rn.d(double %1289, double %1286, double 0x3F12C7DBFFCAEC2B) #145 %1291 = tail call double @llvm.nvvm.fma.rn.d(double %1290, double %1286, double 0xBF6835B97894BA4A) #145 %1292 = tail call double @llvm.nvvm.fma.rn.d(double %1291, double %1286, double 0x3FABD3975C75B4A3) #145 %1293 = tail call double @llvm.nvvm.fma.rn.d(double %1292, double %1286, double 0xBFC91866143CBC8A) #145 %1294 = fmul double %1, %1293 %1295 = tail call double @llvm.nvvm.fabs.d(double %1) #145 %1296 = fcmp ugt double %1295, 0x400353AABAD7B784 br i1 %1296, label %1314, label %1297 1297: ; preds = %1285 %1298 = tail call double @llvm.nvvm.fma.rn.d(double 0x3D020E4ADCDE2AD3, double %1295, double 0xBD4DD167A0DC3F55) #145 %1299 = tail call double @llvm.nvvm.fma.rn.d(double %1298, double %1295, double 0x3D5503F5A491E487) #145 %1300 = tail call double @llvm.nvvm.fma.rn.d(double %1299, double %1295, double 0x3DC1F29940C2403A) #145 %1301 = tail call double @llvm.nvvm.fma.rn.d(double %1300, double %1295, double 0x3D84CF9302EACDEF) #145 %1302 = tail call double @llvm.nvvm.fma.rn.d(double %1301, double %1295, double 0xBE384A53DBBCA436) #145 %1303 = tail call double @llvm.nvvm.fma.rn.d(double %1302, double %1295, double 0x3D9779BEE4F63BCC) #145 %1304 = tail call double @llvm.nvvm.fma.rn.d(double %1303, double %1295, double 0x3EA6C160E414F3F0) #145 %1305 = tail call double @llvm.nvvm.fma.rn.d(double %1304, double %1295, double 0x3D8F3D2F12430699) #145 %1306 = tail call double @llvm.nvvm.fma.rn.d(double %1305, double %1295, double 0xBF0C71C72C0CED04) #145 %1307 = tail call double @llvm.nvvm.fma.rn.d(double %1306, double %1295, double 0x3D659BCA506F1128) #145 %1308 = tail call double @llvm.nvvm.fma.rn.d(double %1307, double %1295, double 0x3F65555555506982) #145 %1309 = tail call double @llvm.nvvm.fma.rn.d(double %1308, double %1295, double 0x3D15BA0B425F1BFB) #145 %1310 = tail call double @llvm.nvvm.fma.rn.d(double %1309, double %1295, double 0xBFB0000000000065) #145 %1311 = tail call double @llvm.nvvm.fma.rn.d(double %1310, double %1295, double 0x3C8729A7253FB679) #145 %1312 = tail call double @llvm.nvvm.fma.rn.d(double %1311, double %1295, double 5.000000e-01) #145 %1313 = fmul double %1295, %1312 br label %__nv_j1.exit.i405 1314: ; preds = %1285 %1315 = fcmp ugt double %1295, 0x4015B1D0574614EA br i1 %1315, label %1335, label %1316 1316: ; preds = %1314 %1317 = fadd double %1295, 0xC00EA75575AF6F09 %1318 = fadd double %1317, 0x3CA60155A9D1B256 %1319 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCF8D3CDBB60175E, double %1318, double 0x3D41011A1DF02DAD) #145 %1320 = tail call double @llvm.nvvm.fma.rn.d(double %1319, double %1318, double 0x3D76013AC1E5E222) #145 %1321 = tail call double @llvm.nvvm.fma.rn.d(double %1320, double %1318, double 0xBDBEC315D96D5F03) #145 %1322 = tail call double @llvm.nvvm.fma.rn.d(double %1321, double %1318, double 0xBDF03BE1B4B57207) #145 %1323 = tail call double @llvm.nvvm.fma.rn.d(double %1322, double %1318, double 0x3E345695F8B660F7) #145 %1324 = tail call double @llvm.nvvm.fma.rn.d(double %1323, double %1318, double 0x3E617069FCFCFFF4) #145 %1325 = tail call double @llvm.nvvm.fma.rn.d(double %1324, double %1318, double 0xBEA33825C36745EB) #145 %1326 = tail call double @llvm.nvvm.fma.rn.d(double %1325, double %1318, double 0xBEC9799D4F90931B) #145 %1327 = tail call double @llvm.nvvm.fma.rn.d(double %1326, double %1318, double 0x3F083A06E2F7DF13) #145 %1328 = tail call double @llvm.nvvm.fma.rn.d(double %1327, double %1318, double 0x3F26E4C2D53A7CF6) #145 %1329 = tail call double @llvm.nvvm.fma.rn.d(double %1328, double %1318, double 0xBF624B3409957B1C) #145 %1330 = tail call double @llvm.nvvm.fma.rn.d(double %1329, double %1318, double 0xBF7537544C3325DF) #145 %1331 = tail call double @llvm.nvvm.fma.rn.d(double %1330, double %1318, double 0x3FAB589D1DA138E2) #145 %1332 = tail call double @llvm.nvvm.fma.rn.d(double %1331, double %1318, double 0x3FAAE8A39F51AD13) #145 %1333 = tail call double @llvm.nvvm.fma.rn.d(double %1332, double %1318, double 0xBFD9C6CF582CBF7F) #145 %1334 = fmul double %1318, %1333 br label %__nv_j1.exit.i405 1335: ; preds = %1314 %1336 = fcmp ugt double %1295, 0x40213065E54C1AA9 br i1 %1336, label %__nv_isinfd.exit.i.i396, label %1337 1337: ; preds = %1335 %1338 = fadd double %1295, 0xC01C0FF5F3B47250 %1339 = fadd double %1338, 0x3C9B226D9D243827 %1340 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CF3EB867515FAD6, double %1339, double 0xBD40E8363DB649A9) #145 %1341 = tail call double @llvm.nvvm.fma.rn.d(double %1340, double %1339, double 0xBD73B7DD4A6608FB) #145 %1342 = tail call double @llvm.nvvm.fma.rn.d(double %1341, double %1339, double 0x3DBEC5E01482C750) #145 %1343 = tail call double @llvm.nvvm.fma.rn.d(double %1342, double %1339, double 0x3DEC62BB9E882103) #145 %1344 = tail call double @llvm.nvvm.fma.rn.d(double %1343, double %1339, double 0xBE34462EED732A23) #145 %1345 = tail call double @llvm.nvvm.fma.rn.d(double %1344, double %1339, double 0xBE5D48DCAD7DC59B) #145 %1346 = tail call double @llvm.nvvm.fma.rn.d(double %1345, double %1339, double 0x3EA3026DF29167E9) #145 %1347 = tail call double @llvm.nvvm.fma.rn.d(double %1346, double %1339, double 0x3EC4255B0119666C) #145 %1348 = tail call double @llvm.nvvm.fma.rn.d(double %1347, double %1339, double 0xBF0796A751B32693) #145 %1349 = tail call double @llvm.nvvm.fma.rn.d(double %1348, double %1339, double 0xBF207358BBDBA284) #145 %1350 = tail call double @llvm.nvvm.fma.rn.d(double %1349, double %1339, double 0x3F613FBC7D6927B1) #145 %1351 = tail call double @llvm.nvvm.fma.rn.d(double %1350, double %1339, double 0x3F69A4B292E3DD75) #145 %1352 = tail call double @llvm.nvvm.fma.rn.d(double %1351, double %1339, double 0xBFA80C83BDEEE4FB) #145 %1353 = tail call double @llvm.nvvm.fma.rn.d(double %1352, double %1339, double 0xBF95E70DC60362BF) #145 %1354 = tail call double @llvm.nvvm.fma.rn.d(double %1353, double %1339, double 0x3FD33518B3874E8A) #145 %1355 = fmul double %1339, %1354 br label %__nv_j1.exit.i405 __nv_isinfd.exit.i.i396: ; preds = %1335 %1356 = tail call i32 @llvm.nvvm.d2i.lo(double %1295) #145 %1357 = tail call i32 @llvm.nvvm.d2i.hi(double %1295) #145 %1358 = and i32 %1357, 2147483647 %1359 = icmp eq i32 %1358, 2146435072 %1360 = icmp eq i32 %1356, 0 %1361 = select i1 %1359, i1 %1360, i1 false br i1 %1361, label %__nv_j1.exit.i405, label %1362 1362: ; preds = %__nv_isinfd.exit.i.i396 %1363 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %1295) #145 %1364 = fneg double %1295 %1365 = tail call double @llvm.nvvm.fma.rn.d(double %1364, double %1363, double 1.000000e+00) #145 %1366 = tail call double @llvm.nvvm.fma.rn.d(double %1365, double %1365, double %1365) #145 %1367 = tail call double @llvm.nvvm.fma.rn.d(double %1366, double %1363, double %1363) #145 %1368 = fmul double %1367, %1367 %1369 = tail call double @llvm.nvvm.fma.rn.d(double 0x40CD02EA3F2F6751, double %1368, double 0xC099C06322A3F8BE) #145 %1370 = tail call double @llvm.nvvm.fma.rn.d(double %1369, double %1368, double 0x405B89354DA77324) #145 %1371 = tail call double @llvm.nvvm.fma.rn.d(double %1370, double %1368, double 0xC01E352294653188) #145 %1372 = tail call double @llvm.nvvm.fma.rn.d(double %1371, double %1368, double 0x3FE9BC7DB16BD7A7) #145 %1373 = tail call double @llvm.nvvm.fma.rn.d(double %1372, double %1368, double 0xBFC8BFE1C3A4F741) #145 %1374 = tail call double @llvm.nvvm.fma.rn.d(double %1373, double %1368, double 0x3FC7FFFFF0D00BE2) #145 %1375 = tail call double @llvm.nvvm.fma.rn.d(double %1374, double %1368, double 0x3FF00000000068CC) #145 %1376 = tail call double @llvm.nvvm.fma.rn.d(double 0xC18DA26B212FDC9A, double %1368, double 0x415A30AC6857BEE0) #145 %1377 = tail call double @llvm.nvvm.fma.rn.d(double %1376, double %1368, double 0xC11764222AD7C910) #145 %1378 = tail call double @llvm.nvvm.fma.rn.d(double %1377, double %1368, double 0x40CEB02E0C306857) #145 %1379 = tail call double @llvm.nvvm.fma.rn.d(double %1378, double %1368, double 0xC08351859FA2B23B) #145 %1380 = tail call double @llvm.nvvm.fma.rn.d(double %1379, double %1368, double 0x403E65A07AF51F42) #145 %1381 = tail call double @llvm.nvvm.fma.rn.d(double %1380, double %1368, double 0xC002F2B817F77A57) #145 %1382 = tail call double @llvm.nvvm.fma.rn.d(double %1381, double %1368, double 0x3FD7BCC34DA069FD) #145 %1383 = tail call double @llvm.nvvm.fma.rn.d(double %1382, double %1368, double 0xBFC4FFFFF8A44463) #145 %1384 = tail call double @llvm.nvvm.fma.rn.d(double %1383, double %1368, double 0x3FD7FFFFFFFF5CD7) #145 %1385 = tail call double @llvm.nvvm.fma.rn.d(double %1384, double %1367, double %1295) #145 %1386 = tail call double @llvm.nvvm.rsqrt.approx.d(double %1295) #145 %1387 = fmul double %1386, 0x3FE9884533D43651 %1388 = fmul double %1387, %1375 %1389 = fmul double %1385, 0x3FE45F306DC9C883 %1390 = tail call i32 @llvm.nvvm.d2i.rn(double %1389) #145 store i32 %1390, ptr %q.i.i.i16.i334, align 4 %1391 = sitofp i32 %1390 to double %1392 = fneg double %1391 %1393 = tail call double @llvm.nvvm.fma.rn.d(double %1392, double 0x3FF921FB54442D18, double %1385) #145 %1394 = tail call double @llvm.nvvm.fma.rn.d(double %1392, double 0x3C91A62633145C00, double %1393) #145 %1395 = tail call double @llvm.nvvm.fma.rn.d(double %1392, double 0x397B839A252049C0, double %1394) #145 %1396 = tail call double @llvm.nvvm.fabs.d(double %1385) #145 %1397 = fcmp ult double %1396, 0x41E0000000000000 br i1 %1397, label %__internal_trig_reduction_kerneld.exit.i.i20.i397, label %1398 1398: ; preds = %1362 %1399 = call fastcc double @__internal_trig_reduction_slowpathd(double %1385, ptr nonnull %q.i.i.i16.i334) #145 %.pre47 = load i32, ptr %q.i.i.i16.i334, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i20.i397 __internal_trig_reduction_kerneld.exit.i.i20.i397: ; preds = %1398, %1362 %1400 = phi i32 [ %.pre47, %1398 ], [ %1390, %1362 ] %t.i.i.i15.i333.0 = phi double [ %1399, %1398 ], [ %1395, %1362 ] %1401 = and i32 %1400, 3 %1402 = uitofp i32 %1401 to double %1403 = fadd double %t.i.i.i15.i333.0, 0xC002D97C7F3321D2 %1404 = fmul double %1402, 0x3FF921FB54442D18 %1405 = fadd double %1403, %1404 %1406 = tail call i32 @llvm.nvvm.d2i.lo(double %1405) #145 %1407 = tail call i32 @llvm.nvvm.d2i.hi(double %1405) #145 %1408 = and i32 %1407, 2147483647 %1409 = icmp eq i32 %1408, 2146435072 %1410 = icmp eq i32 %1406, 0 %1411 = select i1 %1409, i1 %1410, i1 false br i1 %1411, label %1412, label %1414 1412: ; preds = %__internal_trig_reduction_kerneld.exit.i.i20.i397 %1413 = tail call double @llvm.nvvm.mul.rn.d(double %1405, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i.i22.i402 1414: ; preds = %__internal_trig_reduction_kerneld.exit.i.i20.i397 %1415 = fmul double %1405, 0x3FE45F306DC9C883 %1416 = tail call i32 @llvm.nvvm.d2i.rn(double %1415) #145 store i32 %1416, ptr %q.i.i.i.i5.i304, align 4 %1417 = sitofp i32 %1416 to double %1418 = fneg double %1417 %1419 = tail call double @llvm.nvvm.fma.rn.d(double %1418, double 0x3FF921FB54442D18, double %1405) #145 %1420 = tail call double @llvm.nvvm.fma.rn.d(double %1418, double 0x3C91A62633145C00, double %1419) #145 %1421 = tail call double @llvm.nvvm.fma.rn.d(double %1418, double 0x397B839A252049C0, double %1420) #145 %1422 = tail call double @llvm.nvvm.fabs.d(double %1405) #145 %1423 = fcmp ult double %1422, 0x41E0000000000000 br i1 %1423, label %__internal_trig_reduction_kerneld.exit.i.i.i22.i402, label %1424 1424: ; preds = %1414 %1425 = call fastcc double @__internal_trig_reduction_slowpathd(double %1405, ptr nonnull %q.i.i.i.i5.i304) #145 %.pre52 = load i32, ptr %q.i.i.i.i5.i304, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i22.i402 __internal_trig_reduction_kerneld.exit.i.i.i22.i402: ; preds = %1414, %1424, %1412 %i.i.i.i13.i331.0 = phi i32 [ 0, %1412 ], [ %.pre52, %1424 ], [ %1416, %1414 ] %z.i.i.i12.i330.0 = phi double [ %1413, %1412 ], [ %1425, %1424 ], [ %1421, %1414 ] %1426 = add nsw i32 %i.i.i.i13.i331.0, 1 %1427 = and i32 %1426, 1 %1428 = shl nuw nsw i32 %1427, 3 %1429 = zext i32 %1428 to i64 %1430 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %1429 %1431 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.i12.i330.0, double %z.i.i.i12.i330.0) #145 %.not102 = icmp eq i32 %1427, 0 %1432 = select i1 %.not102, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %1433 = getelementptr inbounds double, ptr addrspace(1) %1430, i64 1 %1434 = load double, ptr addrspace(1) %1433, align 8 %1435 = tail call double @llvm.nvvm.fma.rn.d(double %1432, double %1431, double %1434) #145 %1436 = getelementptr inbounds double, ptr addrspace(1) %1430, i64 2 %1437 = load double, ptr addrspace(1) %1436, align 8 %1438 = tail call double @llvm.nvvm.fma.rn.d(double %1435, double %1431, double %1437) #145 %1439 = getelementptr inbounds double, ptr addrspace(1) %1430, i64 3 %1440 = load double, ptr addrspace(1) %1439, align 8 %1441 = tail call double @llvm.nvvm.fma.rn.d(double %1438, double %1431, double %1440) #145 %1442 = getelementptr inbounds double, ptr addrspace(1) %1430, i64 4 %1443 = load double, ptr addrspace(1) %1442, align 8 %1444 = tail call double @llvm.nvvm.fma.rn.d(double %1441, double %1431, double %1443) #145 %1445 = getelementptr inbounds double, ptr addrspace(1) %1430, i64 5 %1446 = load double, ptr addrspace(1) %1445, align 8 %1447 = tail call double @llvm.nvvm.fma.rn.d(double %1444, double %1431, double %1446) #145 %1448 = getelementptr inbounds double, ptr addrspace(1) %1430, i64 6 %1449 = load double, ptr addrspace(1) %1448, align 8 %1450 = tail call double @llvm.nvvm.fma.rn.d(double %1447, double %1431, double %1449) #145 %1451 = tail call double @llvm.nvvm.fma.rn.d(double %1450, double %z.i.i.i12.i330.0, double %z.i.i.i12.i330.0) #145 %1452 = tail call double @llvm.nvvm.fma.rn.d(double %1450, double %1431, double 1.000000e+00) #145 %spec.select78 = select i1 %.not102, double %1451, double %1452 %1453 = and i32 %1426, 2 %.not103 = icmp eq i32 %1453, 0 %1454 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select78, double -1.000000e+00, double 0.000000e+00) #145 %.157 = select i1 %.not103, double %spec.select78, double %1454 %1455 = fmul double %1388, %.157 br label %__nv_j1.exit.i405 __nv_j1.exit.i405: ; preds = %1316, %__internal_trig_reduction_kerneld.exit.i.i.i22.i402, %__nv_isinfd.exit.i.i396, %1337, %1297 %r.i.i340.3 = phi double [ %1313, %1297 ], [ %1334, %1316 ], [ %1355, %1337 ], [ %1455, %__internal_trig_reduction_kerneld.exit.i.i.i22.i402 ], [ 0.000000e+00, %__nv_isinfd.exit.i.i396 ] %1456 = fcmp olt double %1, 0.000000e+00 %1457 = fneg double %r.i.i340.3 %r.i.i340.4 = select i1 %1456, double %1457, double %r.i.i340.3 %1458 = fcmp olt double %1295, 1.000000e-30 %1459 = fmul double %1, 5.000000e-01 %r.i.i340.5 = select i1 %1458, double %1459, double %r.i.i340.4 %1460 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %1461 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %1462 = icmp slt i32 %1460, 1048576 br i1 %1462, label %1463, label %1467 1463: ; preds = %__nv_j1.exit.i405 %1464 = fmul double %1, 0x4350000000000000 %1465 = tail call i32 @llvm.nvvm.d2i.hi(double %1464) #145 %1466 = tail call i32 @llvm.nvvm.d2i.lo(double %1464) #145 br label %1467 1467: ; preds = %1463, %__nv_j1.exit.i405 %.059 = phi double [ %1464, %1463 ], [ %1, %__nv_j1.exit.i405 ] %ihi.i.i291.0 = phi i32 [ %1465, %1463 ], [ %1460, %__nv_j1.exit.i405 ] %ilo.i.i292.0 = phi i32 [ %1466, %1463 ], [ %1461, %__nv_j1.exit.i405 ] %e.i.i293.0 = phi i32 [ -1077, %1463 ], [ -1023, %__nv_j1.exit.i405 ] %1468 = add i32 %ihi.i.i291.0, -1 %1469 = icmp ult i32 %1468, 2146435071 br i1 %1469, label %1470, label %1519 1470: ; preds = %1467 %1471 = lshr i32 %ihi.i.i291.0, 20 %1472 = add nsw i32 %e.i.i293.0, %1471 %1473 = and i32 %ihi.i.i291.0, -2146435073 %1474 = or i32 %1473, 1072693248 %1475 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i292.0, i32 %1474) #145 %1476 = icmp ugt i32 %1474, 1073127582 br i1 %1476, label %1477, label %1483 1477: ; preds = %1470 %1478 = tail call i32 @llvm.nvvm.d2i.lo(double %1475) #145 %1479 = tail call i32 @llvm.nvvm.d2i.hi(double %1475) #145 %1480 = add i32 %1479, -1048576 %1481 = tail call double @llvm.nvvm.lohi.i2d(i32 %1478, i32 %1480) #145 %1482 = add nsw i32 %1472, 1 br label %1483 1483: ; preds = %1477, %1470 %m.i.i281.0 = phi double [ %1481, %1477 ], [ %1475, %1470 ] %e.i.i293.1 = phi i32 [ %1482, %1477 ], [ %1472, %1470 ] %1484 = fadd double %m.i.i281.0, -1.000000e+00 %1485 = fadd double %m.i.i281.0, 1.000000e+00 %1486 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %1485) #145 %1487 = fneg double %1485 %1488 = tail call double @llvm.nvvm.fma.rn.d(double %1487, double %1486, double 1.000000e+00) #145 %1489 = tail call double @llvm.nvvm.fma.rn.d(double %1488, double %1488, double %1488) #145 %1490 = tail call double @llvm.nvvm.fma.rn.d(double %1489, double %1486, double %1486) #145 %1491 = fmul double %1484, %1490 %1492 = fadd double %1491, %1491 %1493 = fmul double %1492, %1492 %1494 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %1493, double 0x3ED0EE258B7A8B04) #145 %1495 = tail call double @llvm.nvvm.fma.rn.d(double %1494, double %1493, double 0x3EF3B2669F02676F) #145 %1496 = tail call double @llvm.nvvm.fma.rn.d(double %1495, double %1493, double 0x3F1745CBA9AB0956) #145 %1497 = tail call double @llvm.nvvm.fma.rn.d(double %1496, double %1493, double 0x3F3C71C72D1B5154) #145 %1498 = tail call double @llvm.nvvm.fma.rn.d(double %1497, double %1493, double 0x3F624924923BE72D) #145 %1499 = tail call double @llvm.nvvm.fma.rn.d(double %1498, double %1493, double 0x3F8999999999A3C4) #145 %1500 = tail call double @llvm.nvvm.fma.rn.d(double %1499, double %1493, double 0x3FB5555555555554) #145 %1501 = fsub double %1484, %1492 %1502 = fmul double %1501, 2.000000e+00 %1503 = fneg double %1492 %1504 = tail call double @llvm.nvvm.fma.rn.d(double %1503, double %1484, double %1502) #145 %1505 = fmul double %1490, %1504 %1506 = fmul double %1493, %1500 %1507 = tail call double @llvm.nvvm.fma.rn.d(double %1506, double %1492, double %1505) #145 %1508 = xor i32 %e.i.i293.1, -2147483648 %1509 = tail call double @llvm.nvvm.lohi.i2d(i32 %1508, i32 1127219200) #145 %1510 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %1511 = fsub double %1509, %1510 %1512 = tail call double @llvm.nvvm.fma.rn.d(double %1511, double 0x3FE62E42FEFA39EF, double %1492) #145 %1513 = fneg double %1511 %1514 = tail call double @llvm.nvvm.fma.rn.d(double %1513, double 0x3FE62E42FEFA39EF, double %1512) #145 %1515 = fsub double %1514, %1492 %1516 = fsub double %1507, %1515 %1517 = tail call double @llvm.nvvm.fma.rn.d(double %1511, double 0x3C7ABC9E3B39803F, double %1516) #145 %1518 = fadd double %1512, %1517 br label %__nv_log.exit.i406 1519: ; preds = %1467 %1520 = tail call double @llvm.nvvm.fma.rn.d(double %.059, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %1521 = tail call i32 @llvm.nvvm.d2i.hi(double %.059) #145 %1522 = bitcast i32 %1521 to float %1523 = fcmp oeq float %1522, 0.000000e+00 %q.i28.i287.0 = select i1 %1523, double 0xFFF0000000000000, double %1520 br label %__nv_log.exit.i406 __nv_log.exit.i406: ; preds = %1519, %1483 %q.i28.i287.1 = phi double [ %1518, %1483 ], [ %q.i28.i287.0, %1519 ] %1524 = fmul double %r.i.i340.5, %q.i28.i287.1 %1525 = fdiv double 1.000000e+00, %1 %1526 = fsub double %1524, %1525 %1527 = fmul double %1526, 0x3FE45F306DC9C883 %1528 = fadd double %1294, %1527 br label %__nv_y1.exit416 1529: ; preds = %1283 %1530 = fcmp ugt double %1, 0x4009B510EC2ADC83 br i1 %1530, label %1558, label %1531 1531: ; preds = %1529 %1532 = fadd double %1, 0xC00193BED4DFF243 %1533 = fadd double %1532, 0x3C8BD1E50D219BFD %1534 = tail call double @llvm.nvvm.fma.rn.d(double 0xBE2B87B0BE2AA150, double %1533, double 0x3E4833AAE4D8B975) #145 %1535 = tail call double @llvm.nvvm.fma.rn.d(double %1534, double %1533, double 0xBE44E279B423E68F) #145 %1536 = tail call double @llvm.nvvm.fma.rn.d(double %1535, double %1533, double 0x3E129DC6A747EB4F) #145 %1537 = tail call double @llvm.nvvm.fma.rn.d(double %1536, double %1533, double 0xBE61D15534496CD8) #145 %1538 = tail call double @llvm.nvvm.fma.rn.d(double %1537, double %1533, double 0x3E7EEC8D48FECE00) #145 %1539 = tail call double @llvm.nvvm.fma.rn.d(double %1538, double %1533, double 0xBE8D1180AF70A134) #145 %1540 = tail call double @llvm.nvvm.fma.rn.d(double %1539, double %1533, double 0x3E9C8386A0EA1388) #145 %1541 = tail call double @llvm.nvvm.fma.rn.d(double %1540, double %1533, double 0xBEB01A014E7F3250) #145 %1542 = tail call double @llvm.nvvm.fma.rn.d(double %1541, double %1533, double 0x3EC1FB752010A320) #145 %1543 = tail call double @llvm.nvvm.fma.rn.d(double %1542, double %1533, double 0xBED3AA0AFF4E332B) #145 %1544 = tail call double @llvm.nvvm.fma.rn.d(double %1543, double %1533, double 0x3EE584A6C77F6700) #145 %1545 = tail call double @llvm.nvvm.fma.rn.d(double %1544, double %1533, double 0xBEF794C520FC2EBB) #145 %1546 = tail call double @llvm.nvvm.fma.rn.d(double %1545, double %1533, double 0x3F09D18D2D35CC71) #145 %1547 = tail call double @llvm.nvvm.fma.rn.d(double %1546, double %1533, double 0xBF1C3FB7315C4599) #145 %1548 = tail call double @llvm.nvvm.fma.rn.d(double %1547, double %1533, double 0x3F2EEA7ADECCE927) #145 %1549 = tail call double @llvm.nvvm.fma.rn.d(double %1548, double %1533, double 0xBF40B2D85257446F) #145 %1550 = tail call double @llvm.nvvm.fma.rn.d(double %1549, double %1533, double 0x3F517AB4B1FE5D5B) #145 %1551 = tail call double @llvm.nvvm.fma.rn.d(double %1550, double %1533, double 0xBF65429DC6516C0D) #145 %1552 = tail call double @llvm.nvvm.fma.rn.d(double %1551, double %1533, double 0x3F7E671C7D0B090B) #145 %1553 = tail call double @llvm.nvvm.fma.rn.d(double %1552, double %1533, double 0xBF73A6DEC36FB27C) #145 %1554 = tail call double @llvm.nvvm.fma.rn.d(double %1553, double %1533, double 0xBFA0D2AF4E931FD1) #145 %1555 = tail call double @llvm.nvvm.fma.rn.d(double %1554, double %1533, double 0xBFBE56F82217B964) #145 %1556 = tail call double @llvm.nvvm.fma.rn.d(double %1555, double %1533, double 0x3FE0AA48442F014B) #145 %1557 = fmul double %1533, %1556 br label %__nv_y1.exit416 1558: ; preds = %1529 %1559 = fcmp ugt double %1, 0x401C0D26D5A541CB br i1 %1559, label %1584, label %1560 1560: ; preds = %1558 %1561 = fadd double %1, 0xC015B7FE4E87B02E %1562 = fadd double %1561, 0xBCBDFE7BAC228E8C %1563 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CBA3C76069F1D8C, double %1562, double 0x3CC69A30996793E2) #145 %1564 = tail call double @llvm.nvvm.fma.rn.d(double %1563, double %1562, double 0xBCDDD8432FE756E7) #145 %1565 = tail call double @llvm.nvvm.fma.rn.d(double %1564, double %1562, double 0xBD143158EEE220F7) #145 %1566 = tail call double @llvm.nvvm.fma.rn.d(double %1565, double %1562, double 0x3D28D44491230F5A) #145 %1567 = tail call double @llvm.nvvm.fma.rn.d(double %1566, double %1562, double 0xBD438842EAF4EDBC) #145 %1568 = tail call double @llvm.nvvm.fma.rn.d(double %1567, double %1562, double 0x3D74958DAFBFAF5A) #145 %1569 = tail call double @llvm.nvvm.fma.rn.d(double %1568, double %1562, double 0xBD9449A60E664848) #145 %1570 = tail call double @llvm.nvvm.fma.rn.d(double %1569, double %1562, double 0x3D838BC8CD594A76) #145 %1571 = tail call double @llvm.nvvm.fma.rn.d(double %1570, double %1562, double 0xBDFA798002141323) #145 %1572 = tail call double @llvm.nvvm.fma.rn.d(double %1571, double %1562, double 0x3E380B4198956AAA) #145 %1573 = tail call double @llvm.nvvm.fma.rn.d(double %1572, double %1562, double 0x3E5B62B5F21BACD4) #145 %1574 = tail call double @llvm.nvvm.fma.rn.d(double %1573, double %1562, double 0xBEA255E729FB6AAE) #145 %1575 = tail call double @llvm.nvvm.fma.rn.d(double %1574, double %1562, double 0xBEC80618F6BAE5AA) #145 %1576 = tail call double @llvm.nvvm.fma.rn.d(double %1575, double %1562, double 0x3F085B940F8E8D36) #145 %1577 = tail call double @llvm.nvvm.fma.rn.d(double %1576, double %1562, double 0x3F2337C7E10E14E8) #145 %1578 = tail call double @llvm.nvvm.fma.rn.d(double %1577, double %1562, double 0xBF61BE6DB99332CA) #145 %1579 = tail call double @llvm.nvvm.fma.rn.d(double %1578, double %1562, double 0xBF710A329E2BE9B8) #145 %1580 = tail call double @llvm.nvvm.fma.rn.d(double %1579, double %1562, double 0x3FAA15D92DFE3FCF) #145 %1581 = tail call double @llvm.nvvm.fma.rn.d(double %1580, double %1562, double 0x3FA00B9F8571C9BE) #145 %1582 = tail call double @llvm.nvvm.fma.rn.d(double %1581, double %1562, double 0xBFD5C7C556F0C19A) #145 %1583 = fmul double %1562, %1582 br label %__nv_y1.exit416 1584: ; preds = %1558 %1585 = fcmp ugt double %1, 0x4022585C739ACDDD br i1 %1585, label %__nv_isinfd.exit.i407, label %1586 1586: ; preds = %1584 %1587 = fadd double %1, 0xC0213127AE6169B4 %1588 = fadd double %1587, 0xBCB479CC068D9046 %1589 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CB09CCC22945996, double %1588, double 0xBD43515F67644276) #145 %1590 = tail call double @llvm.nvvm.fma.rn.d(double %1589, double %1588, double 0xBD72C5B978E9F5C7) #145 %1591 = tail call double @llvm.nvvm.fma.rn.d(double %1590, double %1588, double 0x3DBEC1151613913C) #145 %1592 = tail call double @llvm.nvvm.fma.rn.d(double %1591, double %1588, double 0x3DE9E38D13C4A824) #145 %1593 = tail call double @llvm.nvvm.fma.rn.d(double %1592, double %1588, double 0xBE341E75E1088EB5) #145 %1594 = tail call double @llvm.nvvm.fma.rn.d(double %1593, double %1588, double 0xBE5A384EBB13CFE1) #145 %1595 = tail call double @llvm.nvvm.fma.rn.d(double %1594, double %1588, double 0x3EA2BECB27F8C8F8) #145 %1596 = tail call double @llvm.nvvm.fma.rn.d(double %1595, double %1588, double 0x3EC176E72B989FD8) #145 %1597 = tail call double @llvm.nvvm.fma.rn.d(double %1596, double %1588, double 0xBF06F7BAB102F822) #145 %1598 = tail call double @llvm.nvvm.fma.rn.d(double %1597, double %1588, double 0xBF1B50D7E1D278E1) #145 %1599 = tail call double @llvm.nvvm.fma.rn.d(double %1598, double %1588, double 0x3F607A678D60004F) #145 %1600 = tail call double @llvm.nvvm.fma.rn.d(double %1599, double %1588, double 0x3F63CED2A2E69115) #145 %1601 = tail call double @llvm.nvvm.fma.rn.d(double %1600, double %1588, double 0xBFA6395DFE49FCD4) #145 %1602 = tail call double @llvm.nvvm.fma.rn.d(double %1601, double %1588, double 0xBF902B3933CF21B1) #145 %1603 = tail call double @llvm.nvvm.fma.rn.d(double %1602, double %1588, double 0x3FD15F993FCEAB5C) #145 %1604 = fmul double %1588, %1603 br label %__nv_y1.exit416 __nv_isinfd.exit.i407: ; preds = %1584 %1605 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %1606 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %1607 = and i32 %1606, 2147483647 %1608 = icmp eq i32 %1607, 2146435072 %1609 = icmp eq i32 %1605, 0 %1610 = select i1 %1608, i1 %1609, i1 false br i1 %1610, label %__nv_y1.exit416, label %1611 1611: ; preds = %__nv_isinfd.exit.i407 %1612 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %1) #145 %1613 = fneg double %1 %1614 = tail call double @llvm.nvvm.fma.rn.d(double %1613, double %1612, double 1.000000e+00) #145 %1615 = tail call double @llvm.nvvm.fma.rn.d(double %1614, double %1614, double %1614) #145 %1616 = tail call double @llvm.nvvm.fma.rn.d(double %1615, double %1612, double %1612) #145 %1617 = fmul double %1616, %1616 %1618 = tail call double @llvm.nvvm.fma.rn.d(double 0x40D13DB326ECEBFE, double %1617, double 0xC09C26E89385D5B1) #145 %1619 = tail call double @llvm.nvvm.fma.rn.d(double %1618, double %1617, double 0x405C6AB923C6F55E) #145 %1620 = tail call double @llvm.nvvm.fma.rn.d(double %1619, double %1617, double 0xC01E61EAF3BD2FA1) #145 %1621 = tail call double @llvm.nvvm.fma.rn.d(double %1620, double %1617, double 0x3FE9BF15D9B97DD1) #145 %1622 = tail call double @llvm.nvvm.fma.rn.d(double %1621, double %1617, double 0xBFC8BFECF93D7D19) #145 %1623 = tail call double @llvm.nvvm.fma.rn.d(double %1622, double %1617, double 0x3FC7FFFFF756AA6C) #145 %1624 = tail call double @llvm.nvvm.fma.rn.d(double %1623, double %1617, double 0x3FF0000000003646) #145 %1625 = tail call double @llvm.nvvm.fma.rn.d(double 0xC1943281A050209C, double %1617, double 0x416024E99BA46E7B) #145 %1626 = tail call double @llvm.nvvm.fma.rn.d(double %1625, double %1617, double 0xC11A6875D7DFBD65) #145 %1627 = tail call double @llvm.nvvm.fma.rn.d(double %1626, double %1617, double 0x40D032C041790233) #145 %1628 = tail call double @llvm.nvvm.fma.rn.d(double %1627, double %1617, double 0xC0839F895BC22946) #145 %1629 = tail call double @llvm.nvvm.fma.rn.d(double %1628, double %1617, double 0x403E77CC78ECD2D8) #145 %1630 = tail call double @llvm.nvvm.fma.rn.d(double %1629, double %1617, double 0xC002F368D0117BE9) #145 %1631 = tail call double @llvm.nvvm.fma.rn.d(double %1630, double %1617, double 0x3FD7BCC786009A25) #145 %1632 = tail call double @llvm.nvvm.fma.rn.d(double %1631, double %1617, double 0xBFC4FFFFFC51BC7A) #145 %1633 = tail call double @llvm.nvvm.fma.rn.d(double %1632, double %1617, double 0x3FD7FFFFFFFFB5EA) #145 %1634 = tail call double @llvm.nvvm.fma.rn.d(double %1633, double %1616, double %1) #145 %1635 = tail call double @llvm.nvvm.rsqrt.approx.d(double %1) #145 %1636 = fmul double %1635, 0x3FE9884533D43651 %1637 = fmul double %1636, %1624 %1638 = fmul double %1634, 0x3FE45F306DC9C883 %1639 = tail call i32 @llvm.nvvm.d2i.rn(double %1638) #145 store i32 %1639, ptr %q.i.i.i381, align 4 %1640 = sitofp i32 %1639 to double %1641 = fneg double %1640 %1642 = tail call double @llvm.nvvm.fma.rn.d(double %1641, double 0x3FF921FB54442D18, double %1634) #145 %1643 = tail call double @llvm.nvvm.fma.rn.d(double %1641, double 0x3C91A62633145C00, double %1642) #145 %1644 = tail call double @llvm.nvvm.fma.rn.d(double %1641, double 0x397B839A252049C0, double %1643) #145 %1645 = tail call double @llvm.nvvm.fabs.d(double %1634) #145 %1646 = fcmp ult double %1645, 0x41E0000000000000 br i1 %1646, label %__internal_trig_reduction_kerneld.exit.i.i408, label %1647 1647: ; preds = %1611 %1648 = call fastcc double @__internal_trig_reduction_slowpathd(double %1634, ptr nonnull %q.i.i.i381) #145 %.pre38 = load i32, ptr %q.i.i.i381, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i408 __internal_trig_reduction_kerneld.exit.i.i408: ; preds = %1647, %1611 %1649 = phi i32 [ %.pre38, %1647 ], [ %1639, %1611 ] %t.i.i.i380.0 = phi double [ %1648, %1647 ], [ %1644, %1611 ] %1650 = and i32 %1649, 3 %1651 = uitofp i32 %1650 to double %1652 = fadd double %t.i.i.i380.0, 0xC00F6A7A2955385E %1653 = fmul double %1651, 0x3FF921FB54442D18 %1654 = fadd double %1652, %1653 %1655 = tail call i32 @llvm.nvvm.d2i.lo(double %1654) #145 %1656 = tail call i32 @llvm.nvvm.d2i.hi(double %1654) #145 %1657 = and i32 %1656, 2147483647 %1658 = icmp eq i32 %1657, 2146435072 %1659 = icmp eq i32 %1655, 0 %1660 = select i1 %1658, i1 %1659, i1 false br i1 %1660, label %1661, label %1663 1661: ; preds = %__internal_trig_reduction_kerneld.exit.i.i408 %1662 = tail call double @llvm.nvvm.mul.rn.d(double %1654, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i.i413 1663: ; preds = %__internal_trig_reduction_kerneld.exit.i.i408 %1664 = fmul double %1654, 0x3FE45F306DC9C883 %1665 = tail call i32 @llvm.nvvm.d2i.rn(double %1664) #145 store i32 %1665, ptr %q.i.i.i.i351, align 4 %1666 = sitofp i32 %1665 to double %1667 = fneg double %1666 %1668 = tail call double @llvm.nvvm.fma.rn.d(double %1667, double 0x3FF921FB54442D18, double %1654) #145 %1669 = tail call double @llvm.nvvm.fma.rn.d(double %1667, double 0x3C91A62633145C00, double %1668) #145 %1670 = tail call double @llvm.nvvm.fma.rn.d(double %1667, double 0x397B839A252049C0, double %1669) #145 %1671 = tail call double @llvm.nvvm.fabs.d(double %1654) #145 %1672 = fcmp ult double %1671, 0x41E0000000000000 br i1 %1672, label %__internal_trig_reduction_kerneld.exit.i.i.i413, label %1673 1673: ; preds = %1663 %1674 = call fastcc double @__internal_trig_reduction_slowpathd(double %1654, ptr nonnull %q.i.i.i.i351) #145 %.pre43 = load i32, ptr %q.i.i.i.i351, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i413 __internal_trig_reduction_kerneld.exit.i.i.i413: ; preds = %1663, %1673, %1661 %i.i.i.i378.0 = phi i32 [ 0, %1661 ], [ %.pre43, %1673 ], [ %1665, %1663 ] %z.i.i.i377.0 = phi double [ %1662, %1661 ], [ %1674, %1673 ], [ %1670, %1663 ] %1675 = add nsw i32 %i.i.i.i378.0, 1 %1676 = and i32 %1675, 1 %1677 = shl nuw nsw i32 %1676, 3 %1678 = zext i32 %1677 to i64 %1679 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %1678 %1680 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.i377.0, double %z.i.i.i377.0) #145 %.not100 = icmp eq i32 %1676, 0 %1681 = select i1 %.not100, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %1682 = getelementptr inbounds double, ptr addrspace(1) %1679, i64 1 %1683 = load double, ptr addrspace(1) %1682, align 8 %1684 = tail call double @llvm.nvvm.fma.rn.d(double %1681, double %1680, double %1683) #145 %1685 = getelementptr inbounds double, ptr addrspace(1) %1679, i64 2 %1686 = load double, ptr addrspace(1) %1685, align 8 %1687 = tail call double @llvm.nvvm.fma.rn.d(double %1684, double %1680, double %1686) #145 %1688 = getelementptr inbounds double, ptr addrspace(1) %1679, i64 3 %1689 = load double, ptr addrspace(1) %1688, align 8 %1690 = tail call double @llvm.nvvm.fma.rn.d(double %1687, double %1680, double %1689) #145 %1691 = getelementptr inbounds double, ptr addrspace(1) %1679, i64 4 %1692 = load double, ptr addrspace(1) %1691, align 8 %1693 = tail call double @llvm.nvvm.fma.rn.d(double %1690, double %1680, double %1692) #145 %1694 = getelementptr inbounds double, ptr addrspace(1) %1679, i64 5 %1695 = load double, ptr addrspace(1) %1694, align 8 %1696 = tail call double @llvm.nvvm.fma.rn.d(double %1693, double %1680, double %1695) #145 %1697 = getelementptr inbounds double, ptr addrspace(1) %1679, i64 6 %1698 = load double, ptr addrspace(1) %1697, align 8 %1699 = tail call double @llvm.nvvm.fma.rn.d(double %1696, double %1680, double %1698) #145 %1700 = tail call double @llvm.nvvm.fma.rn.d(double %1699, double %z.i.i.i377.0, double %z.i.i.i377.0) #145 %1701 = tail call double @llvm.nvvm.fma.rn.d(double %1699, double %1680, double 1.000000e+00) #145 %spec.select80 = select i1 %.not100, double %1700, double %1701 %1702 = and i32 %1675, 2 %.not101 = icmp eq i32 %1702, 0 %1703 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select80, double -1.000000e+00, double 0.000000e+00) #145 %.150 = select i1 %.not101, double %spec.select80, double %1703 %1704 = fmul double %1637, %.150 br label %__nv_y1.exit416 __nv_y1.exit416: ; preds = %__nv_log.exit.i406, %1560, %__internal_trig_reduction_kerneld.exit.i.i.i413, %__nv_isinfd.exit.i407, %1586, %1531, %1281 %r.i389.5 = phi double [ %1282, %1281 ], [ %1528, %__nv_log.exit.i406 ], [ %1557, %1531 ], [ %1583, %1560 ], [ %1604, %1586 ], [ %1704, %__internal_trig_reduction_kerneld.exit.i.i.i413 ], [ 0.000000e+00, %__nv_isinfd.exit.i407 ] %r.i389.7 = select i1 %427, double %., double %r.i389.5 br label %1719 1705: ; preds = %__nv_y0.exit %1706 = icmp sgt i32 %n, -1 %1707 = fcmp oge double %a, 0.000000e+00 %or.cond82 = select i1 %1706, i1 %1707, i1 false br i1 %or.cond82, label %1708, label %1719 1708: ; preds = %1705 br i1 %2, label %1709, label %.lr.ph.preheader 1709: ; preds = %1708 %1710 = fdiv double 0xBFE45F306DC9C883, %a br label %1719 .lr.ph.preheader: ; preds = %1708 %1711 = fdiv double 2.000000e+00, %a br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %i.0114 = phi i32 [ %1716, %.lr.ph ], [ 1, %.lr.ph.preheader ] %yim1.0113 = phi double [ %yi.0112, %.lr.ph ], [ %r.i95.5, %.lr.ph.preheader ] %yi.0112 = phi double [ %1715, %.lr.ph ], [ %r.i.7, %.lr.ph.preheader ] %1712 = sitofp i32 %i.0114 to double %1713 = fmul double %1711, %1712 %1714 = fneg double %yim1.0113 %1715 = tail call double @llvm.nvvm.fma.rn.d(double %1713, double %yi.0112, double %1714) #145 %1716 = add nuw nsw i32 %i.0114, 1 %exitcond.not = icmp eq i32 %1716, %n br i1 %exitcond.not, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph %.lcssa = phi double [ %1715, %.lr.ph ] %1717 = tail call double @llvm.nvvm.fabs.d(double %.lcssa) #145 %1718 = fcmp ugt double %1717, 0x7FF0000000000000 %.yip1.0 = select i1 %1718, double 0xFFF0000000000000, double %.lcssa br label %1719 1719: ; preds = %._crit_edge, %1705, %1709, %__nv_y1.exit416, %__nv_y0.exit266 %.0 = phi double [ %r.i239.5, %__nv_y0.exit266 ], [ %r.i389.7, %__nv_y1.exit416 ], [ %1710, %1709 ], [ 0xFFF8000000000000, %1705 ], [ %.yip1.0, %._crit_edge ] ret double %.0 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_jn(i32 "enzyme_inactive" %n, double %a) unnamed_addr #122 { %q.i.i.i.i137 = alloca i32, align 4 %q.i.i.i167 = alloca i32, align 4 %q.i.i.i.i75 = alloca i32, align 4 %q.i.i.i105 = alloca i32, align 4 %q.i.i.i.i14 = alloca i32, align 4 %q.i.i.i44 = alloca i32, align 4 %q.i.i.i.i = alloca i32, align 4 %q.i.i.i = alloca i32, align 4 switch i32 %n, label %333 [ i32 0, label %1 i32 1, label %167 ] 1: ; preds = %0 %2 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %3 = fcmp ugt double %2, 0x400FB319F277BBE5 br i1 %3, label %24, label %4 4: ; preds = %1 %5 = fadd double %2, 0xC0033D152E971B40 %6 = fadd double %5, 0x3CA0F539D7DA258E %7 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCC0D18564C48C61, double %6, double 0xBCFCF8F9A8C294BC) #145 %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double %6, double 0x3D3FAB983CAE498B) #145 %9 = tail call double @llvm.nvvm.fma.rn.d(double %8, double %6, double 0x3D7CD7C018579B88) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double %9, double %6, double 0xBDBBDD2342D64FDD) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %6, double 0xBDF5C2D9416B1E2B) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %6, double 0x3E32951D73174DD5) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %6, double 0x3E67FF99802CAEB5) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %6, double 0xBEA1CCE305C4C9F7) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %6, double 0xBED232C77E29E1BB) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %6, double 0x3F06ED3B9F0EF757) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %6, double 0x3F315382BA096A62) #145 %18 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %6, double 0xBF61F992590D1AE4) #145 %19 = tail call double @llvm.nvvm.fma.rn.d(double %18, double %6, double 0xBF81BB1CBE1A465F) #145 %20 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %6, double 0x3FACFAE864368D84) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %6, double 0x3FBBA1DEEA0294A3) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %6, double 0xBFE09CDB36551280) #145 %23 = fmul double %6, %22 br label %__nv_j0.exit 24: ; preds = %1 %25 = fcmp ugt double %2, 0x401C58FD1A62F5EC br i1 %25, label %46, label %26 26: ; preds = %24 %27 = fadd double %2, 0xC016148F5B2C2E45 %28 = fadd double %27, 0xBC975054CD60A517 %29 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CBCB0A8F126B343, double %28, double 0x3CF83FD1F333EB61) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %28, double 0xBD4100E33E3FB413) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %28, double 0xBD7846076D004627) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %28, double 0x3DBE2F1D4F90720D) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %28, double 0x3DF1D03B1E4A119B) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %28, double 0xBE341D72B1B3BCE9) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %28, double 0xBE62DA37CE2A9EF8) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %28, double 0x3EA32E6D9974F763) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %28, double 0x3ECAD77D744A1879) #145 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %28, double 0xBF0863F481A37337) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %28, double 0xBF26F641F418F0F4) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %39, double %28, double 0x3F627E31FE9A969E) #145 %41 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %28, double 0x3F72F7FFE9025628) #145 %42 = tail call double @llvm.nvvm.fma.rn.d(double %41, double %28, double 0xBFAB2150CB41E8BF) #145 %43 = tail call double @llvm.nvvm.fma.rn.d(double %42, double %28, double 0xBF9F8F72E7A848DE) #145 %44 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %28, double 0x3FD5C6E60A097823) #145 %45 = fmul double %28, %44 br label %__nv_j0.exit 46: ; preds = %24 %47 = fcmp ugt double %2, 0x402471FCB6A7A8C0 br i1 %47, label %__nv_isinfd.exit.i, label %48 48: ; preds = %46 %49 = fadd double %2, 0xC0214EB56CCCDECA %50 = fadd double %49, 0x3CB51970714C7C25 %51 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCBDB7FFCF659E24, double %50, double 0xBCF4B3A71AAAC629) #145 %52 = tail call double @llvm.nvvm.fma.rn.d(double %51, double %50, double 0x3D417EC150ECDCE7) #145 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double %50, double 0x3D7438F5EA1D10B2) #145 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %50, double 0xBDBEDAE7EC2C9E87) #145 %55 = tail call double @llvm.nvvm.fma.rn.d(double %54, double %50, double 0xBDECADD2C4B91F58) #145 %56 = tail call double @llvm.nvvm.fma.rn.d(double %55, double %50, double 0x3E34582C8EE12204) #145 %57 = tail call double @llvm.nvvm.fma.rn.d(double %56, double %50, double 0x3E5CEDA451DD20F8) #145 %58 = tail call double @llvm.nvvm.fma.rn.d(double %57, double %50, double 0xBEA30E8CC3165E2F) #145 %59 = tail call double @llvm.nvvm.fma.rn.d(double %58, double %50, double 0xBEC3324842BB1A2E) #145 %60 = tail call double @llvm.nvvm.fma.rn.d(double %59, double %50, double 0x3F07800BC54FBDDB) #145 %61 = tail call double @llvm.nvvm.fma.rn.d(double %60, double %50, double 0x3F1D79605276949A) #145 %62 = tail call double @llvm.nvvm.fma.rn.d(double %61, double %50, double 0xBF60E0D60385A629) #145 %63 = tail call double @llvm.nvvm.fma.rn.d(double %62, double %50, double 0xBF648E63600D82F3) #145 %64 = tail call double @llvm.nvvm.fma.rn.d(double %63, double %50, double 0x3FA68B984EC6493A) #145 %65 = tail call double @llvm.nvvm.fma.rn.d(double %64, double %50, double 0x3F900F7FCF183E0B) #145 %66 = tail call double @llvm.nvvm.fma.rn.d(double %65, double %50, double 0xBFD15F7977A772D4) #145 %67 = fmul double %50, %66 br label %__nv_j0.exit __nv_isinfd.exit.i: ; preds = %46 %68 = tail call i32 @llvm.nvvm.d2i.lo(double %2) #145 %69 = tail call i32 @llvm.nvvm.d2i.hi(double %2) #145 %70 = and i32 %69, 2147483647 %71 = icmp ne i32 %70, 2146435072 %72 = icmp ne i32 %68, 0 %73 = select i1 %71, i1 true, i1 %72 br i1 %73, label %74, label %__nv_j0.exit 74: ; preds = %__nv_isinfd.exit.i %75 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %2) #145 %76 = fneg double %2 %77 = tail call double @llvm.nvvm.fma.rn.d(double %76, double %75, double 1.000000e+00) #145 %78 = tail call double @llvm.nvvm.fma.rn.d(double %77, double %77, double %77) #145 %79 = tail call double @llvm.nvvm.fma.rn.d(double %78, double %75, double %75) #145 %80 = fmul double %79, %79 %81 = tail call double @llvm.nvvm.fma.rn.d(double 0xC0D115CB8C11A9DC, double %80, double 0x409927467A655012) #145 %82 = tail call double @llvm.nvvm.fma.rn.d(double %81, double %80, double 0xC05751787E247BD4) #145 %83 = tail call double @llvm.nvvm.fma.rn.d(double %82, double %80, double 0x401704C4E5FC36B2) #145 %84 = tail call double @llvm.nvvm.fma.rn.d(double %83, double %80, double 0xBFE15B747A2FD531) #145 %85 = tail call double @llvm.nvvm.fma.rn.d(double %84, double %80, double 0x3FBA7FEACF6CB79B) #145 %86 = tail call double @llvm.nvvm.fma.rn.d(double %85, double %80, double 0xBFAFFFFFEDDCF548) #145 %87 = tail call double @llvm.nvvm.fma.rn.d(double %86, double %80, double 0x3FEFFFFFFFFFC9E5) #145 %88 = tail call double @llvm.nvvm.fma.rn.d(double 0xC14602FE1C34685E, double %80, double 0x410ECD4523B12B84) #145 %89 = tail call double @llvm.nvvm.fma.rn.d(double %88, double %80, double 0xC0C7A2FC1972F05A) #145 %90 = tail call double @llvm.nvvm.fma.rn.d(double %89, double %80, double 0x407EBA131F7E5BEB) #145 %91 = tail call double @llvm.nvvm.fma.rn.d(double %90, double %80, double 0xC0373B92E6E7CC7D) #145 %92 = tail call double @llvm.nvvm.fma.rn.d(double %91, double %80, double 0x3FFA31BEE63A2F08) #145 %93 = tail call double @llvm.nvvm.fma.rn.d(double %92, double %80, double 0xBFCAD320104D5D05) #145 %94 = tail call double @llvm.nvvm.fma.rn.d(double %93, double %80, double 0x3FB0AAAA9C76D07E) #145 %95 = tail call double @llvm.nvvm.fma.rn.d(double %94, double %80, double 0xBFBFFFFFFFFDACEC) #145 %96 = tail call double @llvm.nvvm.fma.rn.d(double %95, double %79, double %2) #145 %97 = tail call double @llvm.nvvm.rsqrt.approx.d(double %2) #145 %98 = fmul double %97, 0x3FE9884533D43651 %99 = fmul double %98, %87 %100 = fmul double %96, 0x3FE45F306DC9C883 %101 = tail call i32 @llvm.nvvm.d2i.rn(double %100) #145 store i32 %101, ptr %q.i.i.i, align 4 %102 = sitofp i32 %101 to double %103 = fneg double %102 %104 = tail call double @llvm.nvvm.fma.rn.d(double %103, double 0x3FF921FB54442D18, double %96) #145 %105 = tail call double @llvm.nvvm.fma.rn.d(double %103, double 0x3C91A62633145C00, double %104) #145 %106 = tail call double @llvm.nvvm.fma.rn.d(double %103, double 0x397B839A252049C0, double %105) #145 %107 = tail call double @llvm.nvvm.fabs.d(double %96) #145 %108 = fcmp ult double %107, 0x41E0000000000000 br i1 %108, label %__internal_trig_reduction_kerneld.exit.i.i, label %109 109: ; preds = %74 %110 = call fastcc double @__internal_trig_reduction_slowpathd(double %96, ptr nonnull %q.i.i.i) #145 %.pre29 = load i32, ptr %q.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i __internal_trig_reduction_kerneld.exit.i.i: ; preds = %109, %74 %111 = phi i32 [ %.pre29, %109 ], [ %101, %74 ] %t.i.i.i.0 = phi double [ %110, %109 ], [ %106, %74 ] %112 = and i32 %111, 3 %113 = uitofp i32 %112 to double %114 = fadd double %t.i.i.i.0, 0xBFE921FB54442D18 %115 = fmul double %113, 0x3FF921FB54442D18 %116 = fadd double %114, %115 %117 = tail call i32 @llvm.nvvm.d2i.lo(double %116) #145 %118 = tail call i32 @llvm.nvvm.d2i.hi(double %116) #145 %119 = and i32 %118, 2147483647 %120 = icmp eq i32 %119, 2146435072 %121 = icmp eq i32 %117, 0 %122 = select i1 %120, i1 %121, i1 false br i1 %122, label %123, label %125 123: ; preds = %__internal_trig_reduction_kerneld.exit.i.i %124 = tail call double @llvm.nvvm.mul.rn.d(double %116, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i.i 125: ; preds = %__internal_trig_reduction_kerneld.exit.i.i %126 = fmul double %116, 0x3FE45F306DC9C883 %127 = tail call i32 @llvm.nvvm.d2i.rn(double %126) #145 store i32 %127, ptr %q.i.i.i.i, align 4 %128 = sitofp i32 %127 to double %129 = fneg double %128 %130 = tail call double @llvm.nvvm.fma.rn.d(double %129, double 0x3FF921FB54442D18, double %116) #145 %131 = tail call double @llvm.nvvm.fma.rn.d(double %129, double 0x3C91A62633145C00, double %130) #145 %132 = tail call double @llvm.nvvm.fma.rn.d(double %129, double 0x397B839A252049C0, double %131) #145 %133 = tail call double @llvm.nvvm.fabs.d(double %116) #145 %134 = fcmp ult double %133, 0x41E0000000000000 br i1 %134, label %__internal_trig_reduction_kerneld.exit.i.i.i, label %135 135: ; preds = %125 %136 = call fastcc double @__internal_trig_reduction_slowpathd(double %116, ptr nonnull %q.i.i.i.i) #145 %.pre34 = load i32, ptr %q.i.i.i.i, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i __internal_trig_reduction_kerneld.exit.i.i.i: ; preds = %125, %135, %123 %i.i.i.i.0 = phi i32 [ 0, %123 ], [ %.pre34, %135 ], [ %127, %125 ] %z.i.i.i.0 = phi double [ %124, %123 ], [ %136, %135 ], [ %132, %125 ] %137 = add nsw i32 %i.i.i.i.0, 1 %138 = and i32 %137, 1 %139 = shl nuw nsw i32 %138, 3 %140 = zext i32 %139 to i64 %141 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %140 %142 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.i.0, double %z.i.i.i.0) #145 %.not44 = icmp eq i32 %138, 0 %143 = select i1 %.not44, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %144 = getelementptr inbounds double, ptr addrspace(1) %141, i64 1 %145 = load double, ptr addrspace(1) %144, align 8 %146 = tail call double @llvm.nvvm.fma.rn.d(double %143, double %142, double %145) #145 %147 = getelementptr inbounds double, ptr addrspace(1) %141, i64 2 %148 = load double, ptr addrspace(1) %147, align 8 %149 = tail call double @llvm.nvvm.fma.rn.d(double %146, double %142, double %148) #145 %150 = getelementptr inbounds double, ptr addrspace(1) %141, i64 3 %151 = load double, ptr addrspace(1) %150, align 8 %152 = tail call double @llvm.nvvm.fma.rn.d(double %149, double %142, double %151) #145 %153 = getelementptr inbounds double, ptr addrspace(1) %141, i64 4 %154 = load double, ptr addrspace(1) %153, align 8 %155 = tail call double @llvm.nvvm.fma.rn.d(double %152, double %142, double %154) #145 %156 = getelementptr inbounds double, ptr addrspace(1) %141, i64 5 %157 = load double, ptr addrspace(1) %156, align 8 %158 = tail call double @llvm.nvvm.fma.rn.d(double %155, double %142, double %157) #145 %159 = getelementptr inbounds double, ptr addrspace(1) %141, i64 6 %160 = load double, ptr addrspace(1) %159, align 8 %161 = tail call double @llvm.nvvm.fma.rn.d(double %158, double %142, double %160) #145 %162 = tail call double @llvm.nvvm.fma.rn.d(double %161, double %z.i.i.i.0, double %z.i.i.i.0) #145 %163 = tail call double @llvm.nvvm.fma.rn.d(double %161, double %142, double 1.000000e+00) #145 %spec.select = select i1 %.not44, double %162, double %163 %164 = and i32 %137, 2 %.not45 = icmp eq i32 %164, 0 %165 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select, double -1.000000e+00, double 0.000000e+00) #145 %.1 = select i1 %.not45, double %spec.select, double %165 %166 = fmul double %99, %.1 br label %__nv_j0.exit 167: ; preds = %0 %168 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %169 = fcmp ugt double %168, 0x400353AABAD7B784 br i1 %169, label %187, label %170 170: ; preds = %167 %171 = tail call double @llvm.nvvm.fma.rn.d(double 0x3D020E4ADCDE2AD3, double %168, double 0xBD4DD167A0DC3F55) #145 %172 = tail call double @llvm.nvvm.fma.rn.d(double %171, double %168, double 0x3D5503F5A491E487) #145 %173 = tail call double @llvm.nvvm.fma.rn.d(double %172, double %168, double 0x3DC1F29940C2403A) #145 %174 = tail call double @llvm.nvvm.fma.rn.d(double %173, double %168, double 0x3D84CF9302EACDEF) #145 %175 = tail call double @llvm.nvvm.fma.rn.d(double %174, double %168, double 0xBE384A53DBBCA436) #145 %176 = tail call double @llvm.nvvm.fma.rn.d(double %175, double %168, double 0x3D9779BEE4F63BCC) #145 %177 = tail call double @llvm.nvvm.fma.rn.d(double %176, double %168, double 0x3EA6C160E414F3F0) #145 %178 = tail call double @llvm.nvvm.fma.rn.d(double %177, double %168, double 0x3D8F3D2F12430699) #145 %179 = tail call double @llvm.nvvm.fma.rn.d(double %178, double %168, double 0xBF0C71C72C0CED04) #145 %180 = tail call double @llvm.nvvm.fma.rn.d(double %179, double %168, double 0x3D659BCA506F1128) #145 %181 = tail call double @llvm.nvvm.fma.rn.d(double %180, double %168, double 0x3F65555555506982) #145 %182 = tail call double @llvm.nvvm.fma.rn.d(double %181, double %168, double 0x3D15BA0B425F1BFB) #145 %183 = tail call double @llvm.nvvm.fma.rn.d(double %182, double %168, double 0xBFB0000000000065) #145 %184 = tail call double @llvm.nvvm.fma.rn.d(double %183, double %168, double 0x3C8729A7253FB679) #145 %185 = tail call double @llvm.nvvm.fma.rn.d(double %184, double %168, double 5.000000e-01) #145 %186 = fmul double %168, %185 br label %__nv_j1.exit 187: ; preds = %167 %188 = fcmp ugt double %168, 0x4015B1D0574614EA br i1 %188, label %208, label %189 189: ; preds = %187 %190 = fadd double %168, 0xC00EA75575AF6F09 %191 = fadd double %190, 0x3CA60155A9D1B256 %192 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCF8D3CDBB60175E, double %191, double 0x3D41011A1DF02DAD) #145 %193 = tail call double @llvm.nvvm.fma.rn.d(double %192, double %191, double 0x3D76013AC1E5E222) #145 %194 = tail call double @llvm.nvvm.fma.rn.d(double %193, double %191, double 0xBDBEC315D96D5F03) #145 %195 = tail call double @llvm.nvvm.fma.rn.d(double %194, double %191, double 0xBDF03BE1B4B57207) #145 %196 = tail call double @llvm.nvvm.fma.rn.d(double %195, double %191, double 0x3E345695F8B660F7) #145 %197 = tail call double @llvm.nvvm.fma.rn.d(double %196, double %191, double 0x3E617069FCFCFFF4) #145 %198 = tail call double @llvm.nvvm.fma.rn.d(double %197, double %191, double 0xBEA33825C36745EB) #145 %199 = tail call double @llvm.nvvm.fma.rn.d(double %198, double %191, double 0xBEC9799D4F90931B) #145 %200 = tail call double @llvm.nvvm.fma.rn.d(double %199, double %191, double 0x3F083A06E2F7DF13) #145 %201 = tail call double @llvm.nvvm.fma.rn.d(double %200, double %191, double 0x3F26E4C2D53A7CF6) #145 %202 = tail call double @llvm.nvvm.fma.rn.d(double %201, double %191, double 0xBF624B3409957B1C) #145 %203 = tail call double @llvm.nvvm.fma.rn.d(double %202, double %191, double 0xBF7537544C3325DF) #145 %204 = tail call double @llvm.nvvm.fma.rn.d(double %203, double %191, double 0x3FAB589D1DA138E2) #145 %205 = tail call double @llvm.nvvm.fma.rn.d(double %204, double %191, double 0x3FAAE8A39F51AD13) #145 %206 = tail call double @llvm.nvvm.fma.rn.d(double %205, double %191, double 0xBFD9C6CF582CBF7F) #145 %207 = fmul double %191, %206 br label %__nv_j1.exit 208: ; preds = %187 %209 = fcmp ugt double %168, 0x40213065E54C1AA9 br i1 %209, label %__nv_isinfd.exit.i56, label %210 210: ; preds = %208 %211 = fadd double %168, 0xC01C0FF5F3B47250 %212 = fadd double %211, 0x3C9B226D9D243827 %213 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CF3EB867515FAD6, double %212, double 0xBD40E8363DB649A9) #145 %214 = tail call double @llvm.nvvm.fma.rn.d(double %213, double %212, double 0xBD73B7DD4A6608FB) #145 %215 = tail call double @llvm.nvvm.fma.rn.d(double %214, double %212, double 0x3DBEC5E01482C750) #145 %216 = tail call double @llvm.nvvm.fma.rn.d(double %215, double %212, double 0x3DEC62BB9E882103) #145 %217 = tail call double @llvm.nvvm.fma.rn.d(double %216, double %212, double 0xBE34462EED732A23) #145 %218 = tail call double @llvm.nvvm.fma.rn.d(double %217, double %212, double 0xBE5D48DCAD7DC59B) #145 %219 = tail call double @llvm.nvvm.fma.rn.d(double %218, double %212, double 0x3EA3026DF29167E9) #145 %220 = tail call double @llvm.nvvm.fma.rn.d(double %219, double %212, double 0x3EC4255B0119666C) #145 %221 = tail call double @llvm.nvvm.fma.rn.d(double %220, double %212, double 0xBF0796A751B32693) #145 %222 = tail call double @llvm.nvvm.fma.rn.d(double %221, double %212, double 0xBF207358BBDBA284) #145 %223 = tail call double @llvm.nvvm.fma.rn.d(double %222, double %212, double 0x3F613FBC7D6927B1) #145 %224 = tail call double @llvm.nvvm.fma.rn.d(double %223, double %212, double 0x3F69A4B292E3DD75) #145 %225 = tail call double @llvm.nvvm.fma.rn.d(double %224, double %212, double 0xBFA80C83BDEEE4FB) #145 %226 = tail call double @llvm.nvvm.fma.rn.d(double %225, double %212, double 0xBF95E70DC60362BF) #145 %227 = tail call double @llvm.nvvm.fma.rn.d(double %226, double %212, double 0x3FD33518B3874E8A) #145 %228 = fmul double %212, %227 br label %__nv_j1.exit __nv_isinfd.exit.i56: ; preds = %208 %229 = tail call i32 @llvm.nvvm.d2i.lo(double %168) #145 %230 = tail call i32 @llvm.nvvm.d2i.hi(double %168) #145 %231 = and i32 %230, 2147483647 %232 = icmp eq i32 %231, 2146435072 %233 = icmp eq i32 %229, 0 %234 = select i1 %232, i1 %233, i1 false br i1 %234, label %__nv_j1.exit, label %235 235: ; preds = %__nv_isinfd.exit.i56 %236 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %168) #145 %237 = fneg double %168 %238 = tail call double @llvm.nvvm.fma.rn.d(double %237, double %236, double 1.000000e+00) #145 %239 = tail call double @llvm.nvvm.fma.rn.d(double %238, double %238, double %238) #145 %240 = tail call double @llvm.nvvm.fma.rn.d(double %239, double %236, double %236) #145 %241 = fmul double %240, %240 %242 = tail call double @llvm.nvvm.fma.rn.d(double 0x40CD02EA3F2F6751, double %241, double 0xC099C06322A3F8BE) #145 %243 = tail call double @llvm.nvvm.fma.rn.d(double %242, double %241, double 0x405B89354DA77324) #145 %244 = tail call double @llvm.nvvm.fma.rn.d(double %243, double %241, double 0xC01E352294653188) #145 %245 = tail call double @llvm.nvvm.fma.rn.d(double %244, double %241, double 0x3FE9BC7DB16BD7A7) #145 %246 = tail call double @llvm.nvvm.fma.rn.d(double %245, double %241, double 0xBFC8BFE1C3A4F741) #145 %247 = tail call double @llvm.nvvm.fma.rn.d(double %246, double %241, double 0x3FC7FFFFF0D00BE2) #145 %248 = tail call double @llvm.nvvm.fma.rn.d(double %247, double %241, double 0x3FF00000000068CC) #145 %249 = tail call double @llvm.nvvm.fma.rn.d(double 0xC18DA26B212FDC9A, double %241, double 0x415A30AC6857BEE0) #145 %250 = tail call double @llvm.nvvm.fma.rn.d(double %249, double %241, double 0xC11764222AD7C910) #145 %251 = tail call double @llvm.nvvm.fma.rn.d(double %250, double %241, double 0x40CEB02E0C306857) #145 %252 = tail call double @llvm.nvvm.fma.rn.d(double %251, double %241, double 0xC08351859FA2B23B) #145 %253 = tail call double @llvm.nvvm.fma.rn.d(double %252, double %241, double 0x403E65A07AF51F42) #145 %254 = tail call double @llvm.nvvm.fma.rn.d(double %253, double %241, double 0xC002F2B817F77A57) #145 %255 = tail call double @llvm.nvvm.fma.rn.d(double %254, double %241, double 0x3FD7BCC34DA069FD) #145 %256 = tail call double @llvm.nvvm.fma.rn.d(double %255, double %241, double 0xBFC4FFFFF8A44463) #145 %257 = tail call double @llvm.nvvm.fma.rn.d(double %256, double %241, double 0x3FD7FFFFFFFF5CD7) #145 %258 = tail call double @llvm.nvvm.fma.rn.d(double %257, double %240, double %168) #145 %259 = tail call double @llvm.nvvm.rsqrt.approx.d(double %168) #145 %260 = fmul double %259, 0x3FE9884533D43651 %261 = fmul double %260, %248 %262 = fmul double %258, 0x3FE45F306DC9C883 %263 = tail call i32 @llvm.nvvm.d2i.rn(double %262) #145 store i32 %263, ptr %q.i.i.i44, align 4 %264 = sitofp i32 %263 to double %265 = fneg double %264 %266 = tail call double @llvm.nvvm.fma.rn.d(double %265, double 0x3FF921FB54442D18, double %258) #145 %267 = tail call double @llvm.nvvm.fma.rn.d(double %265, double 0x3C91A62633145C00, double %266) #145 %268 = tail call double @llvm.nvvm.fma.rn.d(double %265, double 0x397B839A252049C0, double %267) #145 %269 = tail call double @llvm.nvvm.fabs.d(double %258) #145 %270 = fcmp ult double %269, 0x41E0000000000000 br i1 %270, label %__internal_trig_reduction_kerneld.exit.i.i57, label %271 271: ; preds = %235 %272 = call fastcc double @__internal_trig_reduction_slowpathd(double %258, ptr nonnull %q.i.i.i44) #145 %.pre20 = load i32, ptr %q.i.i.i44, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i57 __internal_trig_reduction_kerneld.exit.i.i57: ; preds = %271, %235 %273 = phi i32 [ %.pre20, %271 ], [ %263, %235 ] %t.i.i.i43.0 = phi double [ %272, %271 ], [ %268, %235 ] %274 = and i32 %273, 3 %275 = uitofp i32 %274 to double %276 = fadd double %t.i.i.i43.0, 0xC002D97C7F3321D2 %277 = fmul double %275, 0x3FF921FB54442D18 %278 = fadd double %276, %277 %279 = tail call i32 @llvm.nvvm.d2i.lo(double %278) #145 %280 = tail call i32 @llvm.nvvm.d2i.hi(double %278) #145 %281 = and i32 %280, 2147483647 %282 = icmp eq i32 %281, 2146435072 %283 = icmp eq i32 %279, 0 %284 = select i1 %282, i1 %283, i1 false br i1 %284, label %285, label %287 285: ; preds = %__internal_trig_reduction_kerneld.exit.i.i57 %286 = tail call double @llvm.nvvm.mul.rn.d(double %278, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i.i62 287: ; preds = %__internal_trig_reduction_kerneld.exit.i.i57 %288 = fmul double %278, 0x3FE45F306DC9C883 %289 = tail call i32 @llvm.nvvm.d2i.rn(double %288) #145 store i32 %289, ptr %q.i.i.i.i14, align 4 %290 = sitofp i32 %289 to double %291 = fneg double %290 %292 = tail call double @llvm.nvvm.fma.rn.d(double %291, double 0x3FF921FB54442D18, double %278) #145 %293 = tail call double @llvm.nvvm.fma.rn.d(double %291, double 0x3C91A62633145C00, double %292) #145 %294 = tail call double @llvm.nvvm.fma.rn.d(double %291, double 0x397B839A252049C0, double %293) #145 %295 = tail call double @llvm.nvvm.fabs.d(double %278) #145 %296 = fcmp ult double %295, 0x41E0000000000000 br i1 %296, label %__internal_trig_reduction_kerneld.exit.i.i.i62, label %297 297: ; preds = %287 %298 = call fastcc double @__internal_trig_reduction_slowpathd(double %278, ptr nonnull %q.i.i.i.i14) #145 %.pre25 = load i32, ptr %q.i.i.i.i14, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i62 __internal_trig_reduction_kerneld.exit.i.i.i62: ; preds = %287, %297, %285 %i.i.i.i41.0 = phi i32 [ 0, %285 ], [ %.pre25, %297 ], [ %289, %287 ] %z.i.i.i40.0 = phi double [ %286, %285 ], [ %298, %297 ], [ %294, %287 ] %299 = add nsw i32 %i.i.i.i41.0, 1 %300 = and i32 %299, 1 %301 = shl nuw nsw i32 %300, 3 %302 = zext i32 %301 to i64 %303 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %302 %304 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.i40.0, double %z.i.i.i40.0) #145 %.not = icmp eq i32 %300, 0 %305 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %306 = getelementptr inbounds double, ptr addrspace(1) %303, i64 1 %307 = load double, ptr addrspace(1) %306, align 8 %308 = tail call double @llvm.nvvm.fma.rn.d(double %305, double %304, double %307) #145 %309 = getelementptr inbounds double, ptr addrspace(1) %303, i64 2 %310 = load double, ptr addrspace(1) %309, align 8 %311 = tail call double @llvm.nvvm.fma.rn.d(double %308, double %304, double %310) #145 %312 = getelementptr inbounds double, ptr addrspace(1) %303, i64 3 %313 = load double, ptr addrspace(1) %312, align 8 %314 = tail call double @llvm.nvvm.fma.rn.d(double %311, double %304, double %313) #145 %315 = getelementptr inbounds double, ptr addrspace(1) %303, i64 4 %316 = load double, ptr addrspace(1) %315, align 8 %317 = tail call double @llvm.nvvm.fma.rn.d(double %314, double %304, double %316) #145 %318 = getelementptr inbounds double, ptr addrspace(1) %303, i64 5 %319 = load double, ptr addrspace(1) %318, align 8 %320 = tail call double @llvm.nvvm.fma.rn.d(double %317, double %304, double %319) #145 %321 = getelementptr inbounds double, ptr addrspace(1) %303, i64 6 %322 = load double, ptr addrspace(1) %321, align 8 %323 = tail call double @llvm.nvvm.fma.rn.d(double %320, double %304, double %322) #145 %324 = tail call double @llvm.nvvm.fma.rn.d(double %323, double %z.i.i.i40.0, double %z.i.i.i40.0) #145 %325 = tail call double @llvm.nvvm.fma.rn.d(double %323, double %304, double 1.000000e+00) #145 %spec.select35 = select i1 %.not, double %324, double %325 %326 = and i32 %299, 2 %.not43 = icmp eq i32 %326, 0 %327 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select35, double -1.000000e+00, double 0.000000e+00) #145 %.113 = select i1 %.not43, double %spec.select35, double %327 %328 = fmul double %261, %.113 br label %__nv_j1.exit __nv_j1.exit: ; preds = %189, %__internal_trig_reduction_kerneld.exit.i.i.i62, %__nv_isinfd.exit.i56, %210, %170 %r.i50.3 = phi double [ %186, %170 ], [ %207, %189 ], [ %228, %210 ], [ %328, %__internal_trig_reduction_kerneld.exit.i.i.i62 ], [ 0.000000e+00, %__nv_isinfd.exit.i56 ] %329 = fcmp olt double %a, 0.000000e+00 %330 = fneg double %r.i50.3 %r.i50.4 = select i1 %329, double %330, double %r.i50.3 %331 = fcmp olt double %168, 1.000000e-30 %332 = fmul double %a, 5.000000e-01 %r.i50.5 = select i1 %331, double %332, double %r.i50.4 br label %__nv_j0.exit 333: ; preds = %0 %334 = icmp slt i32 %n, 0 br i1 %334, label %__nv_j0.exit, label %335 335: ; preds = %333 %336 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %337 = sitofp i32 %n to double %338 = fadd double %337, -1.000000e+00 %339 = fcmp ogt double %336, %338 %340 = fdiv double 2.000000e+00, %a br i1 %339, label %341, label %675 341: ; preds = %335 %342 = fcmp ugt double %336, 0x400353AABAD7B784 br i1 %342, label %360, label %343 343: ; preds = %341 %344 = tail call double @llvm.nvvm.fma.rn.d(double 0x3D020E4ADCDE2AD3, double %336, double 0xBD4DD167A0DC3F55) #145 %345 = tail call double @llvm.nvvm.fma.rn.d(double %344, double %336, double 0x3D5503F5A491E487) #145 %346 = tail call double @llvm.nvvm.fma.rn.d(double %345, double %336, double 0x3DC1F29940C2403A) #145 %347 = tail call double @llvm.nvvm.fma.rn.d(double %346, double %336, double 0x3D84CF9302EACDEF) #145 %348 = tail call double @llvm.nvvm.fma.rn.d(double %347, double %336, double 0xBE384A53DBBCA436) #145 %349 = tail call double @llvm.nvvm.fma.rn.d(double %348, double %336, double 0x3D9779BEE4F63BCC) #145 %350 = tail call double @llvm.nvvm.fma.rn.d(double %349, double %336, double 0x3EA6C160E414F3F0) #145 %351 = tail call double @llvm.nvvm.fma.rn.d(double %350, double %336, double 0x3D8F3D2F12430699) #145 %352 = tail call double @llvm.nvvm.fma.rn.d(double %351, double %336, double 0xBF0C71C72C0CED04) #145 %353 = tail call double @llvm.nvvm.fma.rn.d(double %352, double %336, double 0x3D659BCA506F1128) #145 %354 = tail call double @llvm.nvvm.fma.rn.d(double %353, double %336, double 0x3F65555555506982) #145 %355 = tail call double @llvm.nvvm.fma.rn.d(double %354, double %336, double 0x3D15BA0B425F1BFB) #145 %356 = tail call double @llvm.nvvm.fma.rn.d(double %355, double %336, double 0xBFB0000000000065) #145 %357 = tail call double @llvm.nvvm.fma.rn.d(double %356, double %336, double 0x3C8729A7253FB679) #145 %358 = tail call double @llvm.nvvm.fma.rn.d(double %357, double %336, double 5.000000e-01) #145 %359 = fmul double %336, %358 br label %__nv_j1.exit126 360: ; preds = %341 %361 = fcmp ugt double %336, 0x4015B1D0574614EA br i1 %361, label %381, label %362 362: ; preds = %360 %363 = fadd double %336, 0xC00EA75575AF6F09 %364 = fadd double %363, 0x3CA60155A9D1B256 %365 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCF8D3CDBB60175E, double %364, double 0x3D41011A1DF02DAD) #145 %366 = tail call double @llvm.nvvm.fma.rn.d(double %365, double %364, double 0x3D76013AC1E5E222) #145 %367 = tail call double @llvm.nvvm.fma.rn.d(double %366, double %364, double 0xBDBEC315D96D5F03) #145 %368 = tail call double @llvm.nvvm.fma.rn.d(double %367, double %364, double 0xBDF03BE1B4B57207) #145 %369 = tail call double @llvm.nvvm.fma.rn.d(double %368, double %364, double 0x3E345695F8B660F7) #145 %370 = tail call double @llvm.nvvm.fma.rn.d(double %369, double %364, double 0x3E617069FCFCFFF4) #145 %371 = tail call double @llvm.nvvm.fma.rn.d(double %370, double %364, double 0xBEA33825C36745EB) #145 %372 = tail call double @llvm.nvvm.fma.rn.d(double %371, double %364, double 0xBEC9799D4F90931B) #145 %373 = tail call double @llvm.nvvm.fma.rn.d(double %372, double %364, double 0x3F083A06E2F7DF13) #145 %374 = tail call double @llvm.nvvm.fma.rn.d(double %373, double %364, double 0x3F26E4C2D53A7CF6) #145 %375 = tail call double @llvm.nvvm.fma.rn.d(double %374, double %364, double 0xBF624B3409957B1C) #145 %376 = tail call double @llvm.nvvm.fma.rn.d(double %375, double %364, double 0xBF7537544C3325DF) #145 %377 = tail call double @llvm.nvvm.fma.rn.d(double %376, double %364, double 0x3FAB589D1DA138E2) #145 %378 = tail call double @llvm.nvvm.fma.rn.d(double %377, double %364, double 0x3FAAE8A39F51AD13) #145 %379 = tail call double @llvm.nvvm.fma.rn.d(double %378, double %364, double 0xBFD9C6CF582CBF7F) #145 %380 = fmul double %364, %379 br label %__nv_j1.exit126 381: ; preds = %360 %382 = fcmp ugt double %336, 0x40213065E54C1AA9 br i1 %382, label %__nv_isinfd.exit.i117, label %383 383: ; preds = %381 %384 = fadd double %336, 0xC01C0FF5F3B47250 %385 = fadd double %384, 0x3C9B226D9D243827 %386 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CF3EB867515FAD6, double %385, double 0xBD40E8363DB649A9) #145 %387 = tail call double @llvm.nvvm.fma.rn.d(double %386, double %385, double 0xBD73B7DD4A6608FB) #145 %388 = tail call double @llvm.nvvm.fma.rn.d(double %387, double %385, double 0x3DBEC5E01482C750) #145 %389 = tail call double @llvm.nvvm.fma.rn.d(double %388, double %385, double 0x3DEC62BB9E882103) #145 %390 = tail call double @llvm.nvvm.fma.rn.d(double %389, double %385, double 0xBE34462EED732A23) #145 %391 = tail call double @llvm.nvvm.fma.rn.d(double %390, double %385, double 0xBE5D48DCAD7DC59B) #145 %392 = tail call double @llvm.nvvm.fma.rn.d(double %391, double %385, double 0x3EA3026DF29167E9) #145 %393 = tail call double @llvm.nvvm.fma.rn.d(double %392, double %385, double 0x3EC4255B0119666C) #145 %394 = tail call double @llvm.nvvm.fma.rn.d(double %393, double %385, double 0xBF0796A751B32693) #145 %395 = tail call double @llvm.nvvm.fma.rn.d(double %394, double %385, double 0xBF207358BBDBA284) #145 %396 = tail call double @llvm.nvvm.fma.rn.d(double %395, double %385, double 0x3F613FBC7D6927B1) #145 %397 = tail call double @llvm.nvvm.fma.rn.d(double %396, double %385, double 0x3F69A4B292E3DD75) #145 %398 = tail call double @llvm.nvvm.fma.rn.d(double %397, double %385, double 0xBFA80C83BDEEE4FB) #145 %399 = tail call double @llvm.nvvm.fma.rn.d(double %398, double %385, double 0xBF95E70DC60362BF) #145 %400 = tail call double @llvm.nvvm.fma.rn.d(double %399, double %385, double 0x3FD33518B3874E8A) #145 %401 = fmul double %385, %400 br label %__nv_j1.exit126 __nv_isinfd.exit.i117: ; preds = %381 %402 = tail call i32 @llvm.nvvm.d2i.lo(double %336) #145 %403 = tail call i32 @llvm.nvvm.d2i.hi(double %336) #145 %404 = and i32 %403, 2147483647 %405 = icmp eq i32 %404, 2146435072 %406 = icmp eq i32 %402, 0 %407 = select i1 %405, i1 %406, i1 false br i1 %407, label %__nv_j1.exit126, label %408 408: ; preds = %__nv_isinfd.exit.i117 %409 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %336) #145 %410 = fneg double %336 %411 = tail call double @llvm.nvvm.fma.rn.d(double %410, double %409, double 1.000000e+00) #145 %412 = tail call double @llvm.nvvm.fma.rn.d(double %411, double %411, double %411) #145 %413 = tail call double @llvm.nvvm.fma.rn.d(double %412, double %409, double %409) #145 %414 = fmul double %413, %413 %415 = tail call double @llvm.nvvm.fma.rn.d(double 0x40CD02EA3F2F6751, double %414, double 0xC099C06322A3F8BE) #145 %416 = tail call double @llvm.nvvm.fma.rn.d(double %415, double %414, double 0x405B89354DA77324) #145 %417 = tail call double @llvm.nvvm.fma.rn.d(double %416, double %414, double 0xC01E352294653188) #145 %418 = tail call double @llvm.nvvm.fma.rn.d(double %417, double %414, double 0x3FE9BC7DB16BD7A7) #145 %419 = tail call double @llvm.nvvm.fma.rn.d(double %418, double %414, double 0xBFC8BFE1C3A4F741) #145 %420 = tail call double @llvm.nvvm.fma.rn.d(double %419, double %414, double 0x3FC7FFFFF0D00BE2) #145 %421 = tail call double @llvm.nvvm.fma.rn.d(double %420, double %414, double 0x3FF00000000068CC) #145 %422 = tail call double @llvm.nvvm.fma.rn.d(double 0xC18DA26B212FDC9A, double %414, double 0x415A30AC6857BEE0) #145 %423 = tail call double @llvm.nvvm.fma.rn.d(double %422, double %414, double 0xC11764222AD7C910) #145 %424 = tail call double @llvm.nvvm.fma.rn.d(double %423, double %414, double 0x40CEB02E0C306857) #145 %425 = tail call double @llvm.nvvm.fma.rn.d(double %424, double %414, double 0xC08351859FA2B23B) #145 %426 = tail call double @llvm.nvvm.fma.rn.d(double %425, double %414, double 0x403E65A07AF51F42) #145 %427 = tail call double @llvm.nvvm.fma.rn.d(double %426, double %414, double 0xC002F2B817F77A57) #145 %428 = tail call double @llvm.nvvm.fma.rn.d(double %427, double %414, double 0x3FD7BCC34DA069FD) #145 %429 = tail call double @llvm.nvvm.fma.rn.d(double %428, double %414, double 0xBFC4FFFFF8A44463) #145 %430 = tail call double @llvm.nvvm.fma.rn.d(double %429, double %414, double 0x3FD7FFFFFFFF5CD7) #145 %431 = tail call double @llvm.nvvm.fma.rn.d(double %430, double %413, double %336) #145 %432 = tail call double @llvm.nvvm.rsqrt.approx.d(double %336) #145 %433 = fmul double %432, 0x3FE9884533D43651 %434 = fmul double %433, %421 %435 = fmul double %431, 0x3FE45F306DC9C883 %436 = tail call i32 @llvm.nvvm.d2i.rn(double %435) #145 store i32 %436, ptr %q.i.i.i105, align 4 %437 = sitofp i32 %436 to double %438 = fneg double %437 %439 = tail call double @llvm.nvvm.fma.rn.d(double %438, double 0x3FF921FB54442D18, double %431) #145 %440 = tail call double @llvm.nvvm.fma.rn.d(double %438, double 0x3C91A62633145C00, double %439) #145 %441 = tail call double @llvm.nvvm.fma.rn.d(double %438, double 0x397B839A252049C0, double %440) #145 %442 = tail call double @llvm.nvvm.fabs.d(double %431) #145 %443 = fcmp ult double %442, 0x41E0000000000000 br i1 %443, label %__internal_trig_reduction_kerneld.exit.i.i118, label %444 444: ; preds = %408 %445 = call fastcc double @__internal_trig_reduction_slowpathd(double %431, ptr nonnull %q.i.i.i105) #145 %.pre = load i32, ptr %q.i.i.i105, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i118 __internal_trig_reduction_kerneld.exit.i.i118: ; preds = %444, %408 %446 = phi i32 [ %.pre, %444 ], [ %436, %408 ] %t.i.i.i104.0 = phi double [ %445, %444 ], [ %441, %408 ] %447 = and i32 %446, 3 %448 = uitofp i32 %447 to double %449 = fadd double %t.i.i.i104.0, 0xC002D97C7F3321D2 %450 = fmul double %448, 0x3FF921FB54442D18 %451 = fadd double %449, %450 %452 = tail call i32 @llvm.nvvm.d2i.lo(double %451) #145 %453 = tail call i32 @llvm.nvvm.d2i.hi(double %451) #145 %454 = and i32 %453, 2147483647 %455 = icmp eq i32 %454, 2146435072 %456 = icmp eq i32 %452, 0 %457 = select i1 %455, i1 %456, i1 false br i1 %457, label %458, label %460 458: ; preds = %__internal_trig_reduction_kerneld.exit.i.i118 %459 = tail call double @llvm.nvvm.mul.rn.d(double %451, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i.i123 460: ; preds = %__internal_trig_reduction_kerneld.exit.i.i118 %461 = fmul double %451, 0x3FE45F306DC9C883 %462 = tail call i32 @llvm.nvvm.d2i.rn(double %461) #145 store i32 %462, ptr %q.i.i.i.i75, align 4 %463 = sitofp i32 %462 to double %464 = fneg double %463 %465 = tail call double @llvm.nvvm.fma.rn.d(double %464, double 0x3FF921FB54442D18, double %451) #145 %466 = tail call double @llvm.nvvm.fma.rn.d(double %464, double 0x3C91A62633145C00, double %465) #145 %467 = tail call double @llvm.nvvm.fma.rn.d(double %464, double 0x397B839A252049C0, double %466) #145 %468 = tail call double @llvm.nvvm.fabs.d(double %451) #145 %469 = fcmp ult double %468, 0x41E0000000000000 br i1 %469, label %__internal_trig_reduction_kerneld.exit.i.i.i123, label %470 470: ; preds = %460 %471 = call fastcc double @__internal_trig_reduction_slowpathd(double %451, ptr nonnull %q.i.i.i.i75) #145 %.pre7 = load i32, ptr %q.i.i.i.i75, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i123 __internal_trig_reduction_kerneld.exit.i.i.i123: ; preds = %460, %470, %458 %i.i.i.i102.0 = phi i32 [ 0, %458 ], [ %.pre7, %470 ], [ %462, %460 ] %z.i.i.i101.0 = phi double [ %459, %458 ], [ %471, %470 ], [ %467, %460 ] %472 = add nsw i32 %i.i.i.i102.0, 1 %473 = and i32 %472, 1 %474 = shl nuw nsw i32 %473, 3 %475 = zext i32 %474 to i64 %476 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %475 %477 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.i101.0, double %z.i.i.i101.0) #145 %.not47 = icmp eq i32 %473, 0 %478 = select i1 %.not47, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %479 = getelementptr inbounds double, ptr addrspace(1) %476, i64 1 %480 = load double, ptr addrspace(1) %479, align 8 %481 = tail call double @llvm.nvvm.fma.rn.d(double %478, double %477, double %480) #145 %482 = getelementptr inbounds double, ptr addrspace(1) %476, i64 2 %483 = load double, ptr addrspace(1) %482, align 8 %484 = tail call double @llvm.nvvm.fma.rn.d(double %481, double %477, double %483) #145 %485 = getelementptr inbounds double, ptr addrspace(1) %476, i64 3 %486 = load double, ptr addrspace(1) %485, align 8 %487 = tail call double @llvm.nvvm.fma.rn.d(double %484, double %477, double %486) #145 %488 = getelementptr inbounds double, ptr addrspace(1) %476, i64 4 %489 = load double, ptr addrspace(1) %488, align 8 %490 = tail call double @llvm.nvvm.fma.rn.d(double %487, double %477, double %489) #145 %491 = getelementptr inbounds double, ptr addrspace(1) %476, i64 5 %492 = load double, ptr addrspace(1) %491, align 8 %493 = tail call double @llvm.nvvm.fma.rn.d(double %490, double %477, double %492) #145 %494 = getelementptr inbounds double, ptr addrspace(1) %476, i64 6 %495 = load double, ptr addrspace(1) %494, align 8 %496 = tail call double @llvm.nvvm.fma.rn.d(double %493, double %477, double %495) #145 %497 = tail call double @llvm.nvvm.fma.rn.d(double %496, double %z.i.i.i101.0, double %z.i.i.i101.0) #145 %498 = tail call double @llvm.nvvm.fma.rn.d(double %496, double %477, double 1.000000e+00) #145 %spec.select36 = select i1 %.not47, double %497, double %498 %499 = and i32 %472, 2 %.not48 = icmp eq i32 %499, 0 %500 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select36, double -1.000000e+00, double 0.000000e+00) #145 %.120 = select i1 %.not48, double %spec.select36, double %500 %501 = fmul double %434, %.120 br label %__nv_j1.exit126 __nv_j1.exit126: ; preds = %362, %__internal_trig_reduction_kerneld.exit.i.i.i123, %__nv_isinfd.exit.i117, %383, %343 %r.i111.3 = phi double [ %359, %343 ], [ %380, %362 ], [ %401, %383 ], [ %501, %__internal_trig_reduction_kerneld.exit.i.i.i123 ], [ 0.000000e+00, %__nv_isinfd.exit.i117 ] %502 = fcmp olt double %a, 0.000000e+00 %503 = fneg double %r.i111.3 %r.i111.4 = select i1 %502, double %503, double %r.i111.3 %504 = fcmp olt double %336, 1.000000e-30 %505 = fmul double %a, 5.000000e-01 %r.i111.5 = select i1 %504, double %505, double %r.i111.4 %506 = fcmp ugt double %336, 0x400FB319F277BBE5 br i1 %506, label %527, label %507 507: ; preds = %__nv_j1.exit126 %508 = fadd double %336, 0xC0033D152E971B40 %509 = fadd double %508, 0x3CA0F539D7DA258E %510 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCC0D18564C48C61, double %509, double 0xBCFCF8F9A8C294BC) #145 %511 = tail call double @llvm.nvvm.fma.rn.d(double %510, double %509, double 0x3D3FAB983CAE498B) #145 %512 = tail call double @llvm.nvvm.fma.rn.d(double %511, double %509, double 0x3D7CD7C018579B88) #145 %513 = tail call double @llvm.nvvm.fma.rn.d(double %512, double %509, double 0xBDBBDD2342D64FDD) #145 %514 = tail call double @llvm.nvvm.fma.rn.d(double %513, double %509, double 0xBDF5C2D9416B1E2B) #145 %515 = tail call double @llvm.nvvm.fma.rn.d(double %514, double %509, double 0x3E32951D73174DD5) #145 %516 = tail call double @llvm.nvvm.fma.rn.d(double %515, double %509, double 0x3E67FF99802CAEB5) #145 %517 = tail call double @llvm.nvvm.fma.rn.d(double %516, double %509, double 0xBEA1CCE305C4C9F7) #145 %518 = tail call double @llvm.nvvm.fma.rn.d(double %517, double %509, double 0xBED232C77E29E1BB) #145 %519 = tail call double @llvm.nvvm.fma.rn.d(double %518, double %509, double 0x3F06ED3B9F0EF757) #145 %520 = tail call double @llvm.nvvm.fma.rn.d(double %519, double %509, double 0x3F315382BA096A62) #145 %521 = tail call double @llvm.nvvm.fma.rn.d(double %520, double %509, double 0xBF61F992590D1AE4) #145 %522 = tail call double @llvm.nvvm.fma.rn.d(double %521, double %509, double 0xBF81BB1CBE1A465F) #145 %523 = tail call double @llvm.nvvm.fma.rn.d(double %522, double %509, double 0x3FACFAE864368D84) #145 %524 = tail call double @llvm.nvvm.fma.rn.d(double %523, double %509, double 0x3FBBA1DEEA0294A3) #145 %525 = tail call double @llvm.nvvm.fma.rn.d(double %524, double %509, double 0xBFE09CDB36551280) #145 %526 = fmul double %509, %525 br label %.lr.ph.preheader 527: ; preds = %__nv_j1.exit126 %528 = fcmp ugt double %336, 0x401C58FD1A62F5EC br i1 %528, label %549, label %529 529: ; preds = %527 %530 = fadd double %336, 0xC016148F5B2C2E45 %531 = fadd double %530, 0xBC975054CD60A517 %532 = tail call double @llvm.nvvm.fma.rn.d(double 0x3CBCB0A8F126B343, double %531, double 0x3CF83FD1F333EB61) #145 %533 = tail call double @llvm.nvvm.fma.rn.d(double %532, double %531, double 0xBD4100E33E3FB413) #145 %534 = tail call double @llvm.nvvm.fma.rn.d(double %533, double %531, double 0xBD7846076D004627) #145 %535 = tail call double @llvm.nvvm.fma.rn.d(double %534, double %531, double 0x3DBE2F1D4F90720D) #145 %536 = tail call double @llvm.nvvm.fma.rn.d(double %535, double %531, double 0x3DF1D03B1E4A119B) #145 %537 = tail call double @llvm.nvvm.fma.rn.d(double %536, double %531, double 0xBE341D72B1B3BCE9) #145 %538 = tail call double @llvm.nvvm.fma.rn.d(double %537, double %531, double 0xBE62DA37CE2A9EF8) #145 %539 = tail call double @llvm.nvvm.fma.rn.d(double %538, double %531, double 0x3EA32E6D9974F763) #145 %540 = tail call double @llvm.nvvm.fma.rn.d(double %539, double %531, double 0x3ECAD77D744A1879) #145 %541 = tail call double @llvm.nvvm.fma.rn.d(double %540, double %531, double 0xBF0863F481A37337) #145 %542 = tail call double @llvm.nvvm.fma.rn.d(double %541, double %531, double 0xBF26F641F418F0F4) #145 %543 = tail call double @llvm.nvvm.fma.rn.d(double %542, double %531, double 0x3F627E31FE9A969E) #145 %544 = tail call double @llvm.nvvm.fma.rn.d(double %543, double %531, double 0x3F72F7FFE9025628) #145 %545 = tail call double @llvm.nvvm.fma.rn.d(double %544, double %531, double 0xBFAB2150CB41E8BF) #145 %546 = tail call double @llvm.nvvm.fma.rn.d(double %545, double %531, double 0xBF9F8F72E7A848DE) #145 %547 = tail call double @llvm.nvvm.fma.rn.d(double %546, double %531, double 0x3FD5C6E60A097823) #145 %548 = fmul double %531, %547 br label %.lr.ph.preheader 549: ; preds = %527 %550 = fcmp ugt double %336, 0x402471FCB6A7A8C0 br i1 %550, label %__nv_isinfd.exit.i179, label %551 551: ; preds = %549 %552 = fadd double %336, 0xC0214EB56CCCDECA %553 = fadd double %552, 0x3CB51970714C7C25 %554 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCBDB7FFCF659E24, double %553, double 0xBCF4B3A71AAAC629) #145 %555 = tail call double @llvm.nvvm.fma.rn.d(double %554, double %553, double 0x3D417EC150ECDCE7) #145 %556 = tail call double @llvm.nvvm.fma.rn.d(double %555, double %553, double 0x3D7438F5EA1D10B2) #145 %557 = tail call double @llvm.nvvm.fma.rn.d(double %556, double %553, double 0xBDBEDAE7EC2C9E87) #145 %558 = tail call double @llvm.nvvm.fma.rn.d(double %557, double %553, double 0xBDECADD2C4B91F58) #145 %559 = tail call double @llvm.nvvm.fma.rn.d(double %558, double %553, double 0x3E34582C8EE12204) #145 %560 = tail call double @llvm.nvvm.fma.rn.d(double %559, double %553, double 0x3E5CEDA451DD20F8) #145 %561 = tail call double @llvm.nvvm.fma.rn.d(double %560, double %553, double 0xBEA30E8CC3165E2F) #145 %562 = tail call double @llvm.nvvm.fma.rn.d(double %561, double %553, double 0xBEC3324842BB1A2E) #145 %563 = tail call double @llvm.nvvm.fma.rn.d(double %562, double %553, double 0x3F07800BC54FBDDB) #145 %564 = tail call double @llvm.nvvm.fma.rn.d(double %563, double %553, double 0x3F1D79605276949A) #145 %565 = tail call double @llvm.nvvm.fma.rn.d(double %564, double %553, double 0xBF60E0D60385A629) #145 %566 = tail call double @llvm.nvvm.fma.rn.d(double %565, double %553, double 0xBF648E63600D82F3) #145 %567 = tail call double @llvm.nvvm.fma.rn.d(double %566, double %553, double 0x3FA68B984EC6493A) #145 %568 = tail call double @llvm.nvvm.fma.rn.d(double %567, double %553, double 0x3F900F7FCF183E0B) #145 %569 = tail call double @llvm.nvvm.fma.rn.d(double %568, double %553, double 0xBFD15F7977A772D4) #145 %570 = fmul double %553, %569 br label %.lr.ph.preheader __nv_isinfd.exit.i179: ; preds = %549 %571 = tail call i32 @llvm.nvvm.d2i.lo(double %336) #145 %572 = tail call i32 @llvm.nvvm.d2i.hi(double %336) #145 %573 = and i32 %572, 2147483647 %574 = icmp ne i32 %573, 2146435072 %575 = icmp ne i32 %571, 0 %576 = select i1 %574, i1 true, i1 %575 br i1 %576, label %577, label %.lr.ph.preheader 577: ; preds = %__nv_isinfd.exit.i179 %578 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %336) #145 %579 = fneg double %336 %580 = tail call double @llvm.nvvm.fma.rn.d(double %579, double %578, double 1.000000e+00) #145 %581 = tail call double @llvm.nvvm.fma.rn.d(double %580, double %580, double %580) #145 %582 = tail call double @llvm.nvvm.fma.rn.d(double %581, double %578, double %578) #145 %583 = fmul double %582, %582 %584 = tail call double @llvm.nvvm.fma.rn.d(double 0xC0D115CB8C11A9DC, double %583, double 0x409927467A655012) #145 %585 = tail call double @llvm.nvvm.fma.rn.d(double %584, double %583, double 0xC05751787E247BD4) #145 %586 = tail call double @llvm.nvvm.fma.rn.d(double %585, double %583, double 0x401704C4E5FC36B2) #145 %587 = tail call double @llvm.nvvm.fma.rn.d(double %586, double %583, double 0xBFE15B747A2FD531) #145 %588 = tail call double @llvm.nvvm.fma.rn.d(double %587, double %583, double 0x3FBA7FEACF6CB79B) #145 %589 = tail call double @llvm.nvvm.fma.rn.d(double %588, double %583, double 0xBFAFFFFFEDDCF548) #145 %590 = tail call double @llvm.nvvm.fma.rn.d(double %589, double %583, double 0x3FEFFFFFFFFFC9E5) #145 %591 = tail call double @llvm.nvvm.fma.rn.d(double 0xC14602FE1C34685E, double %583, double 0x410ECD4523B12B84) #145 %592 = tail call double @llvm.nvvm.fma.rn.d(double %591, double %583, double 0xC0C7A2FC1972F05A) #145 %593 = tail call double @llvm.nvvm.fma.rn.d(double %592, double %583, double 0x407EBA131F7E5BEB) #145 %594 = tail call double @llvm.nvvm.fma.rn.d(double %593, double %583, double 0xC0373B92E6E7CC7D) #145 %595 = tail call double @llvm.nvvm.fma.rn.d(double %594, double %583, double 0x3FFA31BEE63A2F08) #145 %596 = tail call double @llvm.nvvm.fma.rn.d(double %595, double %583, double 0xBFCAD320104D5D05) #145 %597 = tail call double @llvm.nvvm.fma.rn.d(double %596, double %583, double 0x3FB0AAAA9C76D07E) #145 %598 = tail call double @llvm.nvvm.fma.rn.d(double %597, double %583, double 0xBFBFFFFFFFFDACEC) #145 %599 = tail call double @llvm.nvvm.fma.rn.d(double %598, double %582, double %336) #145 %600 = tail call double @llvm.nvvm.rsqrt.approx.d(double %336) #145 %601 = fmul double %600, 0x3FE9884533D43651 %602 = fmul double %601, %590 %603 = fmul double %599, 0x3FE45F306DC9C883 %604 = tail call i32 @llvm.nvvm.d2i.rn(double %603) #145 store i32 %604, ptr %q.i.i.i167, align 4 %605 = sitofp i32 %604 to double %606 = fneg double %605 %607 = tail call double @llvm.nvvm.fma.rn.d(double %606, double 0x3FF921FB54442D18, double %599) #145 %608 = tail call double @llvm.nvvm.fma.rn.d(double %606, double 0x3C91A62633145C00, double %607) #145 %609 = tail call double @llvm.nvvm.fma.rn.d(double %606, double 0x397B839A252049C0, double %608) #145 %610 = tail call double @llvm.nvvm.fabs.d(double %599) #145 %611 = fcmp ult double %610, 0x41E0000000000000 br i1 %611, label %__internal_trig_reduction_kerneld.exit.i.i180, label %612 612: ; preds = %577 %613 = call fastcc double @__internal_trig_reduction_slowpathd(double %599, ptr nonnull %q.i.i.i167) #145 %.pre11 = load i32, ptr %q.i.i.i167, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i180 __internal_trig_reduction_kerneld.exit.i.i180: ; preds = %612, %577 %614 = phi i32 [ %.pre11, %612 ], [ %604, %577 ] %t.i.i.i166.0 = phi double [ %613, %612 ], [ %609, %577 ] %615 = and i32 %614, 3 %616 = uitofp i32 %615 to double %617 = fadd double %t.i.i.i166.0, 0xBFE921FB54442D18 %618 = fmul double %616, 0x3FF921FB54442D18 %619 = fadd double %617, %618 %620 = tail call i32 @llvm.nvvm.d2i.lo(double %619) #145 %621 = tail call i32 @llvm.nvvm.d2i.hi(double %619) #145 %622 = and i32 %621, 2147483647 %623 = icmp eq i32 %622, 2146435072 %624 = icmp eq i32 %620, 0 %625 = select i1 %623, i1 %624, i1 false br i1 %625, label %626, label %628 626: ; preds = %__internal_trig_reduction_kerneld.exit.i.i180 %627 = tail call double @llvm.nvvm.mul.rn.d(double %619, double 0.000000e+00) #145 br label %__internal_trig_reduction_kerneld.exit.i.i.i185 628: ; preds = %__internal_trig_reduction_kerneld.exit.i.i180 %629 = fmul double %619, 0x3FE45F306DC9C883 %630 = tail call i32 @llvm.nvvm.d2i.rn(double %629) #145 store i32 %630, ptr %q.i.i.i.i137, align 4 %631 = sitofp i32 %630 to double %632 = fneg double %631 %633 = tail call double @llvm.nvvm.fma.rn.d(double %632, double 0x3FF921FB54442D18, double %619) #145 %634 = tail call double @llvm.nvvm.fma.rn.d(double %632, double 0x3C91A62633145C00, double %633) #145 %635 = tail call double @llvm.nvvm.fma.rn.d(double %632, double 0x397B839A252049C0, double %634) #145 %636 = tail call double @llvm.nvvm.fabs.d(double %619) #145 %637 = fcmp ult double %636, 0x41E0000000000000 br i1 %637, label %__internal_trig_reduction_kerneld.exit.i.i.i185, label %638 638: ; preds = %628 %639 = call fastcc double @__internal_trig_reduction_slowpathd(double %619, ptr nonnull %q.i.i.i.i137) #145 %.pre16 = load i32, ptr %q.i.i.i.i137, align 4 br label %__internal_trig_reduction_kerneld.exit.i.i.i185 __internal_trig_reduction_kerneld.exit.i.i.i185: ; preds = %628, %638, %626 %i.i.i.i164.0 = phi i32 [ 0, %626 ], [ %.pre16, %638 ], [ %630, %628 ] %z.i.i.i163.0 = phi double [ %627, %626 ], [ %639, %638 ], [ %635, %628 ] %640 = add nsw i32 %i.i.i.i164.0, 1 %641 = and i32 %640, 1 %642 = shl nuw nsw i32 %641, 3 %643 = zext i32 %642 to i64 %644 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %643 %645 = tail call double @llvm.nvvm.mul.rn.d(double %z.i.i.i163.0, double %z.i.i.i163.0) #145 %.not49 = icmp eq i32 %641, 0 %646 = select i1 %.not49, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %647 = getelementptr inbounds double, ptr addrspace(1) %644, i64 1 %648 = load double, ptr addrspace(1) %647, align 8 %649 = tail call double @llvm.nvvm.fma.rn.d(double %646, double %645, double %648) #145 %650 = getelementptr inbounds double, ptr addrspace(1) %644, i64 2 %651 = load double, ptr addrspace(1) %650, align 8 %652 = tail call double @llvm.nvvm.fma.rn.d(double %649, double %645, double %651) #145 %653 = getelementptr inbounds double, ptr addrspace(1) %644, i64 3 %654 = load double, ptr addrspace(1) %653, align 8 %655 = tail call double @llvm.nvvm.fma.rn.d(double %652, double %645, double %654) #145 %656 = getelementptr inbounds double, ptr addrspace(1) %644, i64 4 %657 = load double, ptr addrspace(1) %656, align 8 %658 = tail call double @llvm.nvvm.fma.rn.d(double %655, double %645, double %657) #145 %659 = getelementptr inbounds double, ptr addrspace(1) %644, i64 5 %660 = load double, ptr addrspace(1) %659, align 8 %661 = tail call double @llvm.nvvm.fma.rn.d(double %658, double %645, double %660) #145 %662 = getelementptr inbounds double, ptr addrspace(1) %644, i64 6 %663 = load double, ptr addrspace(1) %662, align 8 %664 = tail call double @llvm.nvvm.fma.rn.d(double %661, double %645, double %663) #145 %665 = tail call double @llvm.nvvm.fma.rn.d(double %664, double %z.i.i.i163.0, double %z.i.i.i163.0) #145 %666 = tail call double @llvm.nvvm.fma.rn.d(double %664, double %645, double 1.000000e+00) #145 %spec.select37 = select i1 %.not49, double %665, double %666 %667 = and i32 %640, 2 %.not50 = icmp eq i32 %667, 0 %668 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select37, double -1.000000e+00, double 0.000000e+00) #145 %.127 = select i1 %.not50, double %spec.select37, double %668 %669 = fmul double %602, %.127 br label %.lr.ph.preheader .lr.ph.preheader: ; preds = %507, %551, %__nv_isinfd.exit.i179, %__internal_trig_reduction_kerneld.exit.i.i.i185, %529 %r.i173.3 = phi double [ %526, %507 ], [ %548, %529 ], [ %570, %551 ], [ %669, %__internal_trig_reduction_kerneld.exit.i.i.i185 ], [ 0.000000e+00, %__nv_isinfd.exit.i179 ] br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %jim1.060 = phi double [ %ji.059, %.lr.ph ], [ %r.i173.3, %.lr.ph.preheader ] %ji.059 = phi double [ %673, %.lr.ph ], [ %r.i111.5, %.lr.ph.preheader ] %i.058 = phi i32 [ %674, %.lr.ph ], [ 1, %.lr.ph.preheader ] %670 = sitofp i32 %i.058 to double %671 = fmul double %340, %670 %672 = fneg double %jim1.060 %673 = tail call double @llvm.nvvm.fma.rn.d(double %671, double %ji.059, double %672) #145 %674 = add nuw nsw i32 %i.058, 1 %exitcond.not = icmp eq i32 %674, %n br i1 %exitcond.not, label %__nv_j0.exit.loopexit, label %.lr.ph 675: ; preds = %335 %676 = mul nsw i32 %n, 60 %677 = sitofp i32 %676 to double %678 = tail call double @llvm.nvvm.sqrt.rn.d(double %677) #145 %679 = fptosi double %678 to i32 %680 = add nsw i32 %679, %n %681 = and i32 %680, -2 %682 = icmp sgt i32 %681, 0 br i1 %682, label %__nv_fabsf.exit.preheader, label %__nv_j0.exit __nv_fabsf.exit.preheader: ; preds = %675 br label %__nv_fabsf.exit __nv_fabsf.exit: ; preds = %__nv_fabsf.exit.preheader, %696 %ji1.055 = phi double [ %jim12.0, %696 ], [ 1.000000e+00, %__nv_fabsf.exit.preheader ] %i.154 = phi i32 [ %697, %696 ], [ %681, %__nv_fabsf.exit.preheader ] %sum.053 = phi double [ %sum.2, %696 ], [ 0.000000e+00, %__nv_fabsf.exit.preheader ] %lambda.052 = phi double [ %spec.select38, %696 ], [ 0.000000e+00, %__nv_fabsf.exit.preheader ] %jip1.151 = phi double [ %jip1.2, %696 ], [ 0.000000e+00, %__nv_fabsf.exit.preheader ] %683 = sitofp i32 %i.154 to double %684 = fmul double %340, %683 %685 = fneg double %jip1.151 %686 = tail call double @llvm.nvvm.fma.rn.d(double %684, double %ji1.055, double %685) #145 %687 = fptrunc double %686 to float %688 = tail call float @llvm.nvvm.fabs.f(float %687) #145 %689 = fpext float %688 to double %690 = fcmp ogt double %689, 1.000000e+15 br i1 %690, label %691, label %696 691: ; preds = %__nv_fabsf.exit %692 = fmul double %686, 1.000000e-15 %693 = fmul double %ji1.055, 1.000000e-15 %694 = fmul double %lambda.052, 1.000000e-15 %695 = fmul double %sum.053, 1.000000e-15 br label %696 696: ; preds = %691, %__nv_fabsf.exit %jip1.2 = phi double [ %693, %691 ], [ %ji1.055, %__nv_fabsf.exit ] %lambda.1 = phi double [ %694, %691 ], [ %lambda.052, %__nv_fabsf.exit ] %sum.1 = phi double [ %695, %691 ], [ %sum.053, %__nv_fabsf.exit ] %jim12.0 = phi double [ %692, %691 ], [ %686, %__nv_fabsf.exit ] %697 = add nsw i32 %i.154, -1 %698 = icmp eq i32 %697, %n %spec.select38 = select i1 %698, double %jim12.0, double %lambda.1 %699 = and i32 %i.154, 1 %.not46 = icmp eq i32 %699, 0 %700 = fmul double %jim12.0, 2.000000e+00 %701 = select i1 %.not46, double -0.000000e+00, double %700 %sum.2 = fadd double %sum.1, %701 %702 = icmp sgt i32 %i.154, 1 br i1 %702, label %__nv_fabsf.exit, label %._crit_edge.loopexit ._crit_edge.loopexit: ; preds = %696 %jim12.0.lcssa = phi double [ %jim12.0, %696 ] %spec.select38.lcssa = phi double [ %spec.select38, %696 ] %sum.2.lcssa = phi double [ %sum.2, %696 ] %703 = fsub double %sum.2.lcssa, %jim12.0.lcssa %704 = fdiv double %spec.select38.lcssa, %703 br label %__nv_j0.exit __nv_j0.exit.loopexit: ; preds = %.lr.ph %.lcssa = phi double [ %673, %.lr.ph ] br label %__nv_j0.exit __nv_j0.exit: ; preds = %__nv_j0.exit.loopexit, %675, %._crit_edge.loopexit, %333, %4, %48, %__nv_isinfd.exit.i, %__internal_trig_reduction_kerneld.exit.i.i.i, %26, %__nv_j1.exit %.01 = phi double [ %r.i50.5, %__nv_j1.exit ], [ %23, %4 ], [ %45, %26 ], [ %67, %48 ], [ %166, %__internal_trig_reduction_kerneld.exit.i.i.i ], [ 0.000000e+00, %__nv_isinfd.exit.i ], [ 0xFFF8000000000000, %333 ], [ %704, %._crit_edge.loopexit ], [ -0.000000e+00, %675 ], [ %.lcssa, %__nv_j0.exit.loopexit ] ret double %.01 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_erf(double %a) unnamed_addr #123 { __internal_mexpm1.exit: %0 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %1 = tail call double @llvm.nvvm.fma.rn.d(double 0xBCF0679AFBA6F279, double %0, double 0x3D47088FDB46FA5F) #145 %2 = tail call double @llvm.nvvm.fma.rn.d(double %1, double %0, double 0xBD8DF9F9B976A9B2) #145 %3 = tail call double @llvm.nvvm.fma.rn.d(double %2, double %0, double 0x3DC7F1F5590CC332) #145 %4 = tail call double @llvm.nvvm.fma.rn.d(double %3, double %0, double 0xBDFA28A3CD2D56C4) #145 %5 = tail call double @llvm.nvvm.fma.rn.d(double %4, double %0, double 0x3E2485EE67835925) #145 %6 = tail call double @llvm.nvvm.fma.rn.d(double %5, double %0, double 0xBE476DB45919F583) #145 %7 = tail call double @llvm.nvvm.fma.rn.d(double %6, double %0, double 0x3E62D698D98C8D71) #145 %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double %0, double 0xBE720A2C7155D5C6) #145 %9 = tail call double @llvm.nvvm.fma.rn.d(double %8, double %0, double 0xBE41D29B37CA1397) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double %9, double %0, double 0x3EA2EF6CC0F67A49) #145 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %0, double 0xBEC102B892333B6F) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %0, double 0x3ECA30375BA9A84E) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %0, double 0x3ECAAD18DEDEA43E) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %0, double 0xBEFF05355BC5B225) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %0, double 0x3F10E37A3108BC8B) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %0, double 0x3EFB292D828E5CB2) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %0, double 0xBF4356626EBF9BFA) #145 %18 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %0, double 0x3F5BCA68F73D6AFC) #145 %19 = tail call double @llvm.nvvm.fma.rn.d(double %18, double %0, double 0xBF2B6B69EBBC280B) #145 %20 = tail call double @llvm.nvvm.fma.rn.d(double %19, double %0, double 0xBF9396685912A453) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %0, double 0x3FBA4F4E2A1ABEF8) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %0, double 0x3FE45F306DC9C8BB) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %0, double 0x3FC06EBA8214DB69) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %0, double %0) #145 %25 = fsub double %0, %24 %26 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %0, double %25) #145 %27 = fneg double %24 %28 = fneg double %26 %29 = fptrunc double %27 to float %30 = fmul float %29, 0x3FF7154760000000 %31 = tail call float @llvm.nvvm.round.f(float %30) #145 %32 = fpext float %31 to double %33 = fneg double %32 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double 0x3FE62E42FEFA39EF, double %27) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E5AE904A4741B81, double %34, double 0x3E928A27F89B6999) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %34, double 0x3EC71DE715FF7E07) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %34, double 0x3EFA019A6B0AC45A) #145 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %34, double 0x3F2A01A017EED94F) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %34, double 0x3F56C16C17F2A71B) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %39, double %34, double 0x3F811111111173C4) #145 %41 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %34, double 0x3FA555555555211A) #145 %42 = tail call double @llvm.nvvm.fma.rn.d(double %41, double %34, double 0x3FC5555555555540) #145 %43 = tail call double @llvm.nvvm.fma.rn.d(double %42, double %34, double 0x3FE0000000000005) #145 %44 = fmul double %34, %43 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %34, double %28) #145 %46 = fadd double %34, %45 %47 = tail call float @llvm.nvvm.ex2.approx.ftz.f(float %31) #145 %48 = fpext float %47 to double %49 = fsub double 1.000000e+00, %48 %50 = fneg double %46 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %48, double %49) #145 %52 = fcmp oge double %0, 0x4017AFB48DC96626 %poly.0 = select i1 %52, double 1.000000e+00, double %51 %53 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %54 = tail call i32 @llvm.nvvm.d2i.lo(double %poly.0) #145 %55 = tail call i32 @llvm.nvvm.d2i.hi(double %poly.0) #145 %56 = and i32 %53, -2147483648 %57 = or i32 %55, %56 %58 = tail call double @llvm.nvvm.lohi.i2d(i32 %54, i32 %57) #145 ret double %58 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_erfinv(double %a) unnamed_addr #124 { __internal_fast_icmp_abs_lt.exit: %0 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %1 = bitcast i32 %0 to float %2 = tail call float @llvm.nvvm.fabs.f(float %1) #145 %3 = fcmp olt float %2, 1.875000e+00 br i1 %3, label %4, label %113 4: ; preds = %__internal_fast_icmp_abs_lt.exit %5 = fneg double %a %6 = tail call double @llvm.nvvm.fma.rn.d(double %a, double %5, double 1.000000e+00) #145 %7 = tail call i32 @llvm.nvvm.d2i.hi(double %6) #145 %8 = tail call i32 @llvm.nvvm.d2i.lo(double %6) #145 %9 = lshr i32 %7, 20 %10 = and i32 %9, 2046 %11 = add nuw i32 %10, 2147482626 %12 = tail call double @llvm.nvvm.lohi.i2d(i32 %11, i32 1127219200) #145 %13 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %14 = fsub double %12, %13 %15 = and i32 %7, -2145386497 %16 = or i32 %15, 1071644672 %17 = tail call double @llvm.nvvm.lohi.i2d(i32 %8, i32 %16) #145 %18 = fadd double %17, -1.000000e+00 %19 = fadd double %17, 1.000000e+00 %20 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %19) #145 %21 = fneg double %19 %22 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %20, double 1.000000e+00) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %22, double %22) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %20, double %20) #145 %25 = fmul double %18, %24 %26 = tail call double @llvm.nvvm.fma.rn.d(double -2.000000e+00, double %25, double %18) #145 %27 = fneg double %25 %28 = tail call double @llvm.nvvm.fma.rn.d(double %27, double %18, double %26) #145 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %24, double %25) #145 %30 = fmul double %29, %29 %31 = tail call double @llvm.nvvm.fma.rn.d(double 0x3FB5C5C218C775C9, double %30, double 0x3FA55CF59CDC5D89) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %30, double 0x3FAEFD18CF6EBB9C) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %30, double 0x3FB10682EDCB8D1B) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %30, double 0x3FB3B1DD3AC7FC96) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %30, double 0x3FB745CB459B54A6) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %30, double 0x3FBC71C741A0669F) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %30, double 0x3FC249249209112E) #145 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %30, double 0x3FC99999999A06C1) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %30, double 0x3FD5555555555535) #145 %40 = fmul double %30, %39 %41 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %29, double %29) #145 %42 = fadd double %41, %41 %43 = tail call double @llvm.nvvm.fma.rn.d(double %14, double 0x3FE62E42FEFA39EF, double %42) #145 %44 = tail call i32 @llvm.nvvm.d2i.hi(double %43) #145 %45 = icmp ult i32 %44, -1072103424 br i1 %45, label %46, label %70 46: ; preds = %4 %47 = fsub double -3.125000e+00, %43 %48 = tail call double @llvm.nvvm.fma.rn.d(double 0xBBB135D2E746E627, double %47, double 0xBC08DDF93324D327) #145 %49 = tail call double @llvm.nvvm.fma.rn.d(double %48, double %47, double 0x3C37B83EEF0B7C9F) #145 %50 = tail call double @llvm.nvvm.fma.rn.d(double %49, double %47, double 0x3C69BA72CD589B91) #145 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %47, double 0xBCA33689090A6B96) #145 %52 = tail call double @llvm.nvvm.fma.rn.d(double %51, double %47, double 0x3C782E11898132E0) #145 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double %47, double 0x3CFDE4ACFD9E26BA) #145 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %47, double 0xBD26D33EED66C487) #145 %55 = tail call double @llvm.nvvm.fma.rn.d(double %54, double %47, double 0xBD36F2167040D8E2) #145 %56 = tail call double @llvm.nvvm.fma.rn.d(double %55, double %47, double 0x3D872A22C2D77E20) #145 %57 = tail call double @llvm.nvvm.fma.rn.d(double %56, double %47, double 0xBDAC8859C4E5C0AF) #145 %58 = tail call double @llvm.nvvm.fma.rn.d(double %57, double %47, double 0xBDCDC583D118A561) #145 %59 = tail call double @llvm.nvvm.fma.rn.d(double %58, double %47, double 0x3E120F47CCF46B3C) #145 %60 = tail call double @llvm.nvvm.fma.rn.d(double %59, double %47, double 0xBE31A9E38DC84D60) #145 %61 = tail call double @llvm.nvvm.fma.rn.d(double %60, double %47, double 0xBE5F36CD6D3D46A9) #145 %62 = tail call double @llvm.nvvm.fma.rn.d(double %61, double %47, double 0x3E9C6B4F5D03B787) #145 %63 = tail call double @llvm.nvvm.fma.rn.d(double %62, double %47, double 0xBEB6E8A5434AE8A2) #145 %64 = tail call double @llvm.nvvm.fma.rn.d(double %63, double %47, double 0xBEED1D1F7B8736F6) #145 %65 = tail call double @llvm.nvvm.fma.rn.d(double %64, double %47, double 0x3F2879C2A212F024) #145 %66 = tail call double @llvm.nvvm.fma.rn.d(double %65, double %47, double 0xBF4845769484FCA8) #145 %67 = tail call double @llvm.nvvm.fma.rn.d(double %66, double %47, double 0xBF78B6C33114F909) #145 %68 = tail call double @llvm.nvvm.fma.rn.d(double %67, double %47, double 0x3FCEBD80D9B13E28) #145 %69 = tail call double @llvm.nvvm.fma.rn.d(double %68, double %47, double 0x3FFA755E7C99AE86) #145 br label %117 70: ; preds = %4 %71 = fneg double %43 %72 = tail call double @llvm.nvvm.sqrt.rn.d(double %71) #145 %73 = tail call i32 @llvm.nvvm.d2i.hi(double %72) #145 %74 = icmp slt i32 %73, 1074790400 br i1 %74, label %75, label %95 75: ; preds = %70 %76 = fadd double %72, -3.250000e+00 %77 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E23040F87DBD932, double %76, double 0x3E785CBE52878635) #145 %78 = tail call double @llvm.nvvm.fma.rn.d(double %77, double %76, double 0xBE92777453DD3955) #145 %79 = tail call double @llvm.nvvm.fma.rn.d(double %78, double %76, double 0x3E5395ABCD554C6C) #145 %80 = tail call double @llvm.nvvm.fma.rn.d(double %79, double %76, double 0x3EB936388A3790AD) #145 %81 = tail call double @llvm.nvvm.fma.rn.d(double %80, double %76, double 0xBED0D5DB812B5083) #145 %82 = tail call double @llvm.nvvm.fma.rn.d(double %81, double %76, double 0x3EC8860CD5D652F6) #145 %83 = tail call double @llvm.nvvm.fma.rn.d(double %82, double %76, double 0x3EEA29A0CACDFB23) #145 %84 = tail call double @llvm.nvvm.fma.rn.d(double %83, double %76, double 0xBF08CEF1F80281F2) #145 %85 = tail call double @llvm.nvvm.fma.rn.d(double %84, double %76, double 0x3F11E684D0B9188A) #145 %86 = tail call double @llvm.nvvm.fma.rn.d(double %85, double %76, double 0x3EF932CD54C8A222) #145 %87 = tail call double @llvm.nvvm.fma.rn.d(double %86, double %76, double 0xBF37448A89EF8AA3) #145 %88 = tail call double @llvm.nvvm.fma.rn.d(double %87, double %76, double 0x3F4F3CC55AD40C25) #145 %89 = tail call double @llvm.nvvm.fma.rn.d(double %88, double %76, double 0xBF5BA924132F38B1) #145 %90 = tail call double @llvm.nvvm.fma.rn.d(double %89, double %76, double 0x3F6468EECA533CF8) #145 %91 = tail call double @llvm.nvvm.fma.rn.d(double %90, double %76, double 0xBF6EBADABB891BBD) #145 %92 = tail call double @llvm.nvvm.fma.rn.d(double %91, double %76, double 0x3F75FFCFE5B76AFC) #145 %93 = tail call double @llvm.nvvm.fma.rn.d(double %92, double %76, double 0x3FF0158A6D641D39) #145 %94 = tail call double @llvm.nvvm.fma.rn.d(double %93, double %76, double 0x4008ABCC380D5A48) #145 br label %117 95: ; preds = %70 %96 = fadd double %72, -5.000000e+00 %97 = tail call double @llvm.nvvm.fma.rn.d(double 0xBDBDCEC3A7785389, double %96, double 0xBDF18FEEC0E38727) #145 %98 = tail call double @llvm.nvvm.fma.rn.d(double %97, double %96, double 0x3E19E6BF2DDA45E3) #145 %99 = tail call double @llvm.nvvm.fma.rn.d(double %98, double %96, double 0xBE30468FB24E2F5F) #145 %100 = tail call double @llvm.nvvm.fma.rn.d(double %99, double %96, double 0x3E405AC6A8FBA182) #145 %101 = tail call double @llvm.nvvm.fma.rn.d(double %100, double %96, double 0xBE50102E495FB9C0) #145 %102 = tail call double @llvm.nvvm.fma.rn.d(double %101, double %96, double 0x3E5F4C20E1334AF8) #145 %103 = tail call double @llvm.nvvm.fma.rn.d(double %102, double %96, double 0xBE722D220FDF9C3E) #145 %104 = tail call double @llvm.nvvm.fma.rn.d(double %103, double %96, double 0x3E8EBC8BB824CB54) #145 %105 = tail call double @llvm.nvvm.fma.rn.d(double %104, double %96, double 0xBEB0A8D40EA372CC) #145 %106 = tail call double @llvm.nvvm.fma.rn.d(double %105, double %96, double 0x3ED2FBD29D093D2B) #145 %107 = tail call double @llvm.nvvm.fma.rn.d(double %106, double %96, double 0xBEF4A3497E1E0FAC) #145 %108 = tail call double @llvm.nvvm.fma.rn.d(double %107, double %96, double 0x3F13EBF4EB00938F) #145 %109 = tail call double @llvm.nvvm.fma.rn.d(double %108, double %96, double 0xBF2C2F36A8FC5D53) #145 %110 = tail call double @llvm.nvvm.fma.rn.d(double %109, double %96, double 0xBF222EA5DF04047C) #145 %111 = tail call double @llvm.nvvm.fma.rn.d(double %110, double %96, double 0x3FF02A30D1FBA0DC) #145 %112 = tail call double @llvm.nvvm.fma.rn.d(double %111, double %96, double 0x4013664DDD1AD7FB) #145 br label %117 113: ; preds = %__internal_fast_icmp_abs_lt.exit %114 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %115 = fcmp ugt double %114, 0x7FF0000000000000 %116 = fcmp oeq double %114, 1.000000e+00 %. = select i1 %116, double 0x7FF0000000000000, double 0xFFF8000000000000 %r.3 = select i1 %115, double %a, double %. br label %117 117: ; preds = %46, %95, %75, %113 %r.4 = phi double [ %r.3, %113 ], [ %69, %46 ], [ %94, %75 ], [ %112, %95 ] %118 = fmul double %r.4, %a ret double %118 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_erfcinv(double %a) unnamed_addr #125 { %1 = fneg double %a %2 = tail call double @llvm.nvvm.add.rn.d(double 2.000000e+00, double %1) #145 %3 = fcmp oge double %a, 0x3F4FA4D2AD8F904D %4 = fcmp ole double %a, 0x3FFFFC0B65AA4E0E %or.cond = and i1 %3, %4 br i1 %or.cond, label %5, label %68 5: ; preds = %0 %6 = tail call double @llvm.nvvm.mul.rn.d(double %2, double %a) #145 %7 = tail call i32 @llvm.nvvm.d2i.hi(double %6) #145 %8 = tail call i32 @llvm.nvvm.d2i.lo(double %6) #145 %9 = lshr i32 %7, 20 %10 = and i32 %9, 2046 %11 = add nuw i32 %10, 2147482626 %12 = tail call double @llvm.nvvm.lohi.i2d(i32 %11, i32 1127219200) #145 %13 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %14 = fsub double %12, %13 %15 = and i32 %7, -2145386497 %16 = or i32 %15, 1071644672 %17 = tail call double @llvm.nvvm.lohi.i2d(i32 %8, i32 %16) #145 %18 = fadd double %17, -1.000000e+00 %19 = fadd double %17, 1.000000e+00 %20 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %19) #145 %21 = fneg double %19 %22 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %20, double 1.000000e+00) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %22, double %22) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %20, double %20) #145 %25 = fmul double %18, %24 %26 = tail call double @llvm.nvvm.fma.rn.d(double -2.000000e+00, double %25, double %18) #145 %27 = fneg double %25 %28 = tail call double @llvm.nvvm.fma.rn.d(double %27, double %18, double %26) #145 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %24, double %25) #145 %30 = fmul double %29, %29 %31 = tail call double @llvm.nvvm.fma.rn.d(double 0x3FB5C5C218C775C9, double %30, double 0x3FA55CF59CDC5D89) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %30, double 0x3FAEFD18CF6EBB9C) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %30, double 0x3FB10682EDCB8D1B) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %30, double 0x3FB3B1DD3AC7FC96) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %30, double 0x3FB745CB459B54A6) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %30, double 0x3FBC71C741A0669F) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %30, double 0x3FC249249209112E) #145 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %30, double 0x3FC99999999A06C1) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %30, double 0x3FD5555555555535) #145 %40 = fmul double %30, %39 %41 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %29, double %29) #145 %42 = fadd double %41, %41 %43 = tail call double @llvm.nvvm.fma.rn.d(double %14, double 0x3FE62E42FEFA39EF, double %42) #145 %44 = fsub double -3.125000e+00, %43 %45 = tail call double @llvm.nvvm.fma.rn.d(double 0xBBB135D2E746E627, double %44, double 0xBC08DDF93324D327) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %44, double 0x3C37B83EEF0B7C9F) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %44, double 0x3C69BA72CD589B91) #145 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %44, double 0xBCA33689090A6B96) #145 %49 = tail call double @llvm.nvvm.fma.rn.d(double %48, double %44, double 0x3C782E11898132E0) #145 %50 = tail call double @llvm.nvvm.fma.rn.d(double %49, double %44, double 0x3CFDE4ACFD9E26BA) #145 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %44, double 0xBD26D33EED66C487) #145 %52 = tail call double @llvm.nvvm.fma.rn.d(double %51, double %44, double 0xBD36F2167040D8E2) #145 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double %44, double 0x3D872A22C2D77E20) #145 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %44, double 0xBDAC8859C4E5C0AF) #145 %55 = tail call double @llvm.nvvm.fma.rn.d(double %54, double %44, double 0xBDCDC583D118A561) #145 %56 = tail call double @llvm.nvvm.fma.rn.d(double %55, double %44, double 0x3E120F47CCF46B3C) #145 %57 = tail call double @llvm.nvvm.fma.rn.d(double %56, double %44, double 0xBE31A9E38DC84D60) #145 %58 = tail call double @llvm.nvvm.fma.rn.d(double %57, double %44, double 0xBE5F36CD6D3D46A9) #145 %59 = tail call double @llvm.nvvm.fma.rn.d(double %58, double %44, double 0x3E9C6B4F5D03B787) #145 %60 = tail call double @llvm.nvvm.fma.rn.d(double %59, double %44, double 0xBEB6E8A5434AE8A2) #145 %61 = tail call double @llvm.nvvm.fma.rn.d(double %60, double %44, double 0xBEED1D1F7B8736F6) #145 %62 = tail call double @llvm.nvvm.fma.rn.d(double %61, double %44, double 0x3F2879C2A212F024) #145 %63 = tail call double @llvm.nvvm.fma.rn.d(double %62, double %44, double 0xBF4845769484FCA8) #145 %64 = tail call double @llvm.nvvm.fma.rn.d(double %63, double %44, double 0xBF78B6C33114F909) #145 %65 = tail call double @llvm.nvvm.fma.rn.d(double %64, double %44, double 0x3FCEBD80D9B13E28) #145 %66 = tail call double @llvm.nvvm.fma.rn.d(double %65, double %44, double 0x3FFA755E7C99AE86) #145 %67 = tail call double @llvm.nvvm.fma.rn.d(double %66, double %1, double %66) #145 br label %213 68: ; preds = %0 %69 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %70 = icmp sgt i32 %69, 1072693247 %.pre = tail call i32 @llvm.nvvm.d2i.hi(double %2) #145 %spec.select = select i1 %70, i32 %.pre, i32 %69 %spec.select1 = select i1 %70, double %2, double %a %71 = bitcast i32 %spec.select to float %72 = fcmp ult float %71, 0x3D657FE5E0000000 %73 = tail call i32 @llvm.nvvm.d2i.lo(double %spec.select1) #145 br i1 %72, label %135, label %74 74: ; preds = %68 %75 = lshr i32 %spec.select, 20 %76 = and i32 %75, 2046 %77 = add nuw i32 %76, 2147482626 %78 = tail call double @llvm.nvvm.lohi.i2d(i32 %77, i32 1127219200) #145 %79 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %80 = fsub double %78, %79 %81 = and i32 %spec.select, -2145386497 %82 = or i32 %81, 1071644672 %83 = tail call double @llvm.nvvm.lohi.i2d(i32 %73, i32 %82) #145 %84 = fadd double %83, -1.000000e+00 %85 = fadd double %83, 1.000000e+00 %86 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %85) #145 %87 = fneg double %85 %88 = tail call double @llvm.nvvm.fma.rn.d(double %87, double %86, double 1.000000e+00) #145 %89 = tail call double @llvm.nvvm.fma.rn.d(double %88, double %88, double %88) #145 %90 = tail call double @llvm.nvvm.fma.rn.d(double %89, double %86, double %86) #145 %91 = fmul double %84, %90 %92 = tail call double @llvm.nvvm.fma.rn.d(double -2.000000e+00, double %91, double %84) #145 %93 = fneg double %91 %94 = tail call double @llvm.nvvm.fma.rn.d(double %93, double %84, double %92) #145 %95 = tail call double @llvm.nvvm.fma.rn.d(double %94, double %90, double %91) #145 %96 = fmul double %95, %95 %97 = tail call double @llvm.nvvm.fma.rn.d(double 0x3FB5C5C218C775C9, double %96, double 0x3FA55CF59CDC5D89) #145 %98 = tail call double @llvm.nvvm.fma.rn.d(double %97, double %96, double 0x3FAEFD18CF6EBB9C) #145 %99 = tail call double @llvm.nvvm.fma.rn.d(double %98, double %96, double 0x3FB10682EDCB8D1B) #145 %100 = tail call double @llvm.nvvm.fma.rn.d(double %99, double %96, double 0x3FB3B1DD3AC7FC96) #145 %101 = tail call double @llvm.nvvm.fma.rn.d(double %100, double %96, double 0x3FB745CB459B54A6) #145 %102 = tail call double @llvm.nvvm.fma.rn.d(double %101, double %96, double 0x3FBC71C741A0669F) #145 %103 = tail call double @llvm.nvvm.fma.rn.d(double %102, double %96, double 0x3FC249249209112E) #145 %104 = tail call double @llvm.nvvm.fma.rn.d(double %103, double %96, double 0x3FC99999999A06C1) #145 %105 = tail call double @llvm.nvvm.fma.rn.d(double %104, double %96, double 0x3FD5555555555535) #145 %106 = fmul double %96, %105 %107 = tail call double @llvm.nvvm.fma.rn.d(double %106, double %95, double %95) #145 %108 = fadd double %107, %107 %109 = tail call double @llvm.nvvm.fma.rn.d(double %80, double 0x3FE62E42FEFA39EF, double %108) #145 %110 = fneg double %109 %111 = tail call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %110) #146, !srcloc !9 %112 = tail call double @llvm.nvvm.mul.rn.d(double %111, double %111) #145 %113 = fneg double %112 %114 = tail call double @llvm.nvvm.fma.rn.d(double %110, double %113, double 1.000000e+00) #145 %115 = tail call double @llvm.nvvm.fma.rn.d(double 3.750000e-01, double %114, double 5.000000e-01) #145 %116 = tail call double @llvm.nvvm.mul.rn.d(double %114, double %111) #145 %117 = tail call double @llvm.nvvm.fma.rn.d(double %115, double %116, double %111) #145 %118 = tail call double @llvm.nvvm.fma.rn.d(double 0x3FEBE9222591AFAB, double %117, double 0x4000A0E7333839AA) #145 %119 = tail call double @llvm.nvvm.fma.rn.d(double %118, double %117, double 0x4008768CF7E57D5C) #145 %120 = tail call double @llvm.nvvm.fma.rn.d(double %119, double %117, double 0x400B77E7E28DA583) #145 %121 = tail call double @llvm.nvvm.fma.rn.d(double %120, double %117, double 0x3FF34F26A4F99CF9) #145 %122 = tail call double @llvm.nvvm.fma.rn.d(double %121, double %117, double 0x3FC1F674ADB019ED) #145 %123 = tail call double @llvm.nvvm.fma.rn.d(double %122, double %117, double 0x3F75DDAE9506431D) #145 %124 = tail call double @llvm.nvvm.fma.rn.d(double %123, double %117, double 0x3F0ADA49AA32489C) #145 %125 = fadd double %117, 0x4001E90FF51C2197 %126 = tail call double @llvm.nvvm.fma.rn.d(double %125, double %117, double 0x40111EA3A7CF3820) #145 %127 = tail call double @llvm.nvvm.fma.rn.d(double %126, double %117, double 0x4011A0E4A4749594) #145 %128 = tail call double @llvm.nvvm.fma.rn.d(double %127, double %117, double 0x400D4E977D38C14D) #145 %129 = tail call double @llvm.nvvm.fma.rn.d(double %128, double %117, double 0x3FF37FD567EC0D5F) #145 %130 = tail call double @llvm.nvvm.fma.rn.d(double %129, double %117, double 0x3FC1FB9D7F676033) #145 %131 = tail call double @llvm.nvvm.fma.rn.d(double %130, double %117, double 0x3F75DDCDF98946E4) #145 %132 = tail call double @llvm.nvvm.fma.rn.d(double %131, double %117, double 0x3F0ADA42D79D8DBB) #145 %133 = fmul double %117, %132 %134 = fdiv double %124, %133 br label %211 135: ; preds = %68 %136 = icmp slt i32 %spec.select, 1048576 br i1 %136, label %137, label %141 137: ; preds = %135 %138 = fmul double %spec.select1, 0x4350000000000000 %139 = tail call i32 @llvm.nvvm.d2i.hi(double %138) #145 %140 = tail call i32 @llvm.nvvm.d2i.lo(double %138) #145 br label %141 141: ; preds = %137, %135 %.0 = phi double [ %138, %137 ], [ %spec.select1, %135 ] %ihi.i.0 = phi i32 [ %139, %137 ], [ %spec.select, %135 ] %ilo.i.0 = phi i32 [ %140, %137 ], [ %73, %135 ] %e.i.0 = phi i32 [ -1077, %137 ], [ -1023, %135 ] %142 = add i32 %ihi.i.0, -1 %143 = icmp ult i32 %142, 2146435071 br i1 %143, label %144, label %193 144: ; preds = %141 %145 = lshr i32 %ihi.i.0, 20 %146 = add nsw i32 %e.i.0, %145 %147 = and i32 %ihi.i.0, -2146435073 %148 = or i32 %147, 1072693248 %149 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %148) #145 %150 = icmp ugt i32 %148, 1073127582 br i1 %150, label %151, label %157 151: ; preds = %144 %152 = tail call i32 @llvm.nvvm.d2i.lo(double %149) #145 %153 = tail call i32 @llvm.nvvm.d2i.hi(double %149) #145 %154 = add i32 %153, -1048576 %155 = tail call double @llvm.nvvm.lohi.i2d(i32 %152, i32 %154) #145 %156 = add nsw i32 %146, 1 br label %157 157: ; preds = %151, %144 %m.i.0 = phi double [ %155, %151 ], [ %149, %144 ] %e.i.1 = phi i32 [ %156, %151 ], [ %146, %144 ] %158 = fadd double %m.i.0, -1.000000e+00 %159 = fadd double %m.i.0, 1.000000e+00 %160 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %159) #145 %161 = fneg double %159 %162 = tail call double @llvm.nvvm.fma.rn.d(double %161, double %160, double 1.000000e+00) #145 %163 = tail call double @llvm.nvvm.fma.rn.d(double %162, double %162, double %162) #145 %164 = tail call double @llvm.nvvm.fma.rn.d(double %163, double %160, double %160) #145 %165 = fmul double %158, %164 %166 = fadd double %165, %165 %167 = fmul double %166, %166 %168 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %167, double 0x3ED0EE258B7A8B04) #145 %169 = tail call double @llvm.nvvm.fma.rn.d(double %168, double %167, double 0x3EF3B2669F02676F) #145 %170 = tail call double @llvm.nvvm.fma.rn.d(double %169, double %167, double 0x3F1745CBA9AB0956) #145 %171 = tail call double @llvm.nvvm.fma.rn.d(double %170, double %167, double 0x3F3C71C72D1B5154) #145 %172 = tail call double @llvm.nvvm.fma.rn.d(double %171, double %167, double 0x3F624924923BE72D) #145 %173 = tail call double @llvm.nvvm.fma.rn.d(double %172, double %167, double 0x3F8999999999A3C4) #145 %174 = tail call double @llvm.nvvm.fma.rn.d(double %173, double %167, double 0x3FB5555555555554) #145 %175 = fsub double %158, %166 %176 = fmul double %175, 2.000000e+00 %177 = fneg double %166 %178 = tail call double @llvm.nvvm.fma.rn.d(double %177, double %158, double %176) #145 %179 = fmul double %164, %178 %180 = fmul double %167, %174 %181 = tail call double @llvm.nvvm.fma.rn.d(double %180, double %166, double %179) #145 %182 = xor i32 %e.i.1, -2147483648 %183 = tail call double @llvm.nvvm.lohi.i2d(i32 %182, i32 1127219200) #145 %184 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %185 = fsub double %183, %184 %186 = tail call double @llvm.nvvm.fma.rn.d(double %185, double 0x3FE62E42FEFA39EF, double %166) #145 %187 = fneg double %185 %188 = tail call double @llvm.nvvm.fma.rn.d(double %187, double 0x3FE62E42FEFA39EF, double %186) #145 %189 = fsub double %188, %166 %190 = fsub double %181, %189 %191 = tail call double @llvm.nvvm.fma.rn.d(double %185, double 0x3C7ABC9E3B39803F, double %190) #145 %192 = fadd double %186, %191 br label %__nv_log.exit 193: ; preds = %141 %194 = tail call double @llvm.nvvm.fma.rn.d(double %.0, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %195 = tail call i32 @llvm.nvvm.d2i.hi(double %.0) #145 %196 = bitcast i32 %195 to float %197 = fcmp oeq float %196, 0.000000e+00 %q.i.0 = select i1 %197, double 0xFFF0000000000000, double %194 br label %__nv_log.exit __nv_log.exit: ; preds = %157, %193 %q.i.1 = phi double [ %192, %157 ], [ %q.i.0, %193 ] %198 = fneg double %q.i.1 %199 = tail call double @llvm.nvvm.rsqrt.approx.d(double %198) #145 %200 = tail call double @llvm.nvvm.fma.rn.d(double 0x3FE8E2101C71B0BF, double %199, double 0x3FFA2013964E259C) #145 %201 = tail call double @llvm.nvvm.fma.rn.d(double %200, double %199, double 0x3FDABFE90921BE68) #145 %202 = tail call double @llvm.nvvm.fma.rn.d(double %201, double %199, double 0x3F97E41314DE00D4) #145 %203 = tail call double @llvm.nvvm.fma.rn.d(double %202, double %199, double 0x3F311BD487102E94) #145 %204 = fadd double %199, 0x3FF59895C30BAA54 %205 = tail call double @llvm.nvvm.fma.rn.d(double %204, double %199, double 0x3FFAE8E5956A143F) #145 %206 = tail call double @llvm.nvvm.fma.rn.d(double %205, double %199, double 0x3FDACCE85FF7383D) #145 %207 = tail call double @llvm.nvvm.fma.rn.d(double %206, double %199, double 0x3F97E43B6CAC34FE) #145 %208 = tail call double @llvm.nvvm.fma.rn.d(double %207, double %199, double 0x3F311BD08289EB12) #145 %209 = fmul double %199, %208 %210 = fdiv double %203, %209 br label %211 211: ; preds = %__nv_log.exit, %74 %t.0 = phi double [ %134, %74 ], [ %210, %__nv_log.exit ] %212 = fneg double %t.0 %spec.select3 = select i1 %70, double %212, double %t.0 br label %213 213: ; preds = %211, %5 %t.2 = phi double [ %67, %5 ], [ %spec.select3, %211 ] ret double %t.2 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_normcdfinv(double %a) unnamed_addr #126 { %1 = fadd double %a, %a %2 = fneg double %1 %3 = tail call double @llvm.nvvm.add.rn.d(double 2.000000e+00, double %2) #145 %4 = fcmp oge double %1, 0x3F4FA4D2AD8F904D %5 = fcmp ole double %1, 0x3FFFFC0B65AA4E0E %or.cond = and i1 %4, %5 br i1 %or.cond, label %6, label %69 6: ; preds = %0 %7 = tail call double @llvm.nvvm.mul.rn.d(double %3, double %1) #145 %8 = tail call i32 @llvm.nvvm.d2i.hi(double %7) #145 %9 = tail call i32 @llvm.nvvm.d2i.lo(double %7) #145 %10 = lshr i32 %8, 20 %11 = and i32 %10, 2046 %12 = add nuw i32 %11, 2147482626 %13 = tail call double @llvm.nvvm.lohi.i2d(i32 %12, i32 1127219200) #145 %14 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %15 = fsub double %13, %14 %16 = and i32 %8, -2145386497 %17 = or i32 %16, 1071644672 %18 = tail call double @llvm.nvvm.lohi.i2d(i32 %9, i32 %17) #145 %19 = fadd double %18, -1.000000e+00 %20 = fadd double %18, 1.000000e+00 %21 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %20) #145 %22 = fneg double %20 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %21, double 1.000000e+00) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %23, double %23) #145 %25 = tail call double @llvm.nvvm.fma.rn.d(double %24, double %21, double %21) #145 %26 = fmul double %19, %25 %27 = tail call double @llvm.nvvm.fma.rn.d(double -2.000000e+00, double %26, double %19) #145 %28 = fneg double %26 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %19, double %27) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %25, double %26) #145 %31 = fmul double %30, %30 %32 = tail call double @llvm.nvvm.fma.rn.d(double 0x3FB5C5C218C775C9, double %31, double 0x3FA55CF59CDC5D89) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %31, double 0x3FAEFD18CF6EBB9C) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %31, double 0x3FB10682EDCB8D1B) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %31, double 0x3FB3B1DD3AC7FC96) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %31, double 0x3FB745CB459B54A6) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %31, double 0x3FBC71C741A0669F) #145 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %31, double 0x3FC249249209112E) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %31, double 0x3FC99999999A06C1) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %39, double %31, double 0x3FD5555555555535) #145 %41 = fmul double %31, %40 %42 = tail call double @llvm.nvvm.fma.rn.d(double %41, double %30, double %30) #145 %43 = fadd double %42, %42 %44 = tail call double @llvm.nvvm.fma.rn.d(double %15, double 0x3FE62E42FEFA39EF, double %43) #145 %45 = fsub double -3.125000e+00, %44 %46 = tail call double @llvm.nvvm.fma.rn.d(double 0xBBB135D2E746E627, double %45, double 0xBC08DDF93324D327) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %45, double 0x3C37B83EEF0B7C9F) #145 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %45, double 0x3C69BA72CD589B91) #145 %49 = tail call double @llvm.nvvm.fma.rn.d(double %48, double %45, double 0xBCA33689090A6B96) #145 %50 = tail call double @llvm.nvvm.fma.rn.d(double %49, double %45, double 0x3C782E11898132E0) #145 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %45, double 0x3CFDE4ACFD9E26BA) #145 %52 = tail call double @llvm.nvvm.fma.rn.d(double %51, double %45, double 0xBD26D33EED66C487) #145 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double %45, double 0xBD36F2167040D8E2) #145 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %45, double 0x3D872A22C2D77E20) #145 %55 = tail call double @llvm.nvvm.fma.rn.d(double %54, double %45, double 0xBDAC8859C4E5C0AF) #145 %56 = tail call double @llvm.nvvm.fma.rn.d(double %55, double %45, double 0xBDCDC583D118A561) #145 %57 = tail call double @llvm.nvvm.fma.rn.d(double %56, double %45, double 0x3E120F47CCF46B3C) #145 %58 = tail call double @llvm.nvvm.fma.rn.d(double %57, double %45, double 0xBE31A9E38DC84D60) #145 %59 = tail call double @llvm.nvvm.fma.rn.d(double %58, double %45, double 0xBE5F36CD6D3D46A9) #145 %60 = tail call double @llvm.nvvm.fma.rn.d(double %59, double %45, double 0x3E9C6B4F5D03B787) #145 %61 = tail call double @llvm.nvvm.fma.rn.d(double %60, double %45, double 0xBEB6E8A5434AE8A2) #145 %62 = tail call double @llvm.nvvm.fma.rn.d(double %61, double %45, double 0xBEED1D1F7B8736F6) #145 %63 = tail call double @llvm.nvvm.fma.rn.d(double %62, double %45, double 0x3F2879C2A212F024) #145 %64 = tail call double @llvm.nvvm.fma.rn.d(double %63, double %45, double 0xBF4845769484FCA8) #145 %65 = tail call double @llvm.nvvm.fma.rn.d(double %64, double %45, double 0xBF78B6C33114F909) #145 %66 = tail call double @llvm.nvvm.fma.rn.d(double %65, double %45, double 0x3FCEBD80D9B13E28) #145 %67 = tail call double @llvm.nvvm.fma.rn.d(double %66, double %45, double 0x3FFA755E7C99AE86) #145 %68 = tail call double @llvm.nvvm.fma.rn.d(double %67, double %2, double %67) #145 br label %__nv_erfcinv.exit 69: ; preds = %0 %70 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %71 = icmp sgt i32 %70, 1072693247 %.pre = tail call i32 @llvm.nvvm.d2i.hi(double %3) #145 %spec.select = select i1 %71, i32 %.pre, i32 %70 %spec.select1 = select i1 %71, double %3, double %1 %72 = bitcast i32 %spec.select to float %73 = fcmp ult float %72, 0x3D657FE5E0000000 %74 = tail call i32 @llvm.nvvm.d2i.lo(double %spec.select1) #145 br i1 %73, label %136, label %75 75: ; preds = %69 %76 = lshr i32 %spec.select, 20 %77 = and i32 %76, 2046 %78 = add nuw i32 %77, 2147482626 %79 = tail call double @llvm.nvvm.lohi.i2d(i32 %78, i32 1127219200) #145 %80 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %81 = fsub double %79, %80 %82 = and i32 %spec.select, -2145386497 %83 = or i32 %82, 1071644672 %84 = tail call double @llvm.nvvm.lohi.i2d(i32 %74, i32 %83) #145 %85 = fadd double %84, -1.000000e+00 %86 = fadd double %84, 1.000000e+00 %87 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %86) #145 %88 = fneg double %86 %89 = tail call double @llvm.nvvm.fma.rn.d(double %88, double %87, double 1.000000e+00) #145 %90 = tail call double @llvm.nvvm.fma.rn.d(double %89, double %89, double %89) #145 %91 = tail call double @llvm.nvvm.fma.rn.d(double %90, double %87, double %87) #145 %92 = fmul double %85, %91 %93 = tail call double @llvm.nvvm.fma.rn.d(double -2.000000e+00, double %92, double %85) #145 %94 = fneg double %92 %95 = tail call double @llvm.nvvm.fma.rn.d(double %94, double %85, double %93) #145 %96 = tail call double @llvm.nvvm.fma.rn.d(double %95, double %91, double %92) #145 %97 = fmul double %96, %96 %98 = tail call double @llvm.nvvm.fma.rn.d(double 0x3FB5C5C218C775C9, double %97, double 0x3FA55CF59CDC5D89) #145 %99 = tail call double @llvm.nvvm.fma.rn.d(double %98, double %97, double 0x3FAEFD18CF6EBB9C) #145 %100 = tail call double @llvm.nvvm.fma.rn.d(double %99, double %97, double 0x3FB10682EDCB8D1B) #145 %101 = tail call double @llvm.nvvm.fma.rn.d(double %100, double %97, double 0x3FB3B1DD3AC7FC96) #145 %102 = tail call double @llvm.nvvm.fma.rn.d(double %101, double %97, double 0x3FB745CB459B54A6) #145 %103 = tail call double @llvm.nvvm.fma.rn.d(double %102, double %97, double 0x3FBC71C741A0669F) #145 %104 = tail call double @llvm.nvvm.fma.rn.d(double %103, double %97, double 0x3FC249249209112E) #145 %105 = tail call double @llvm.nvvm.fma.rn.d(double %104, double %97, double 0x3FC99999999A06C1) #145 %106 = tail call double @llvm.nvvm.fma.rn.d(double %105, double %97, double 0x3FD5555555555535) #145 %107 = fmul double %97, %106 %108 = tail call double @llvm.nvvm.fma.rn.d(double %107, double %96, double %96) #145 %109 = fadd double %108, %108 %110 = tail call double @llvm.nvvm.fma.rn.d(double %81, double 0x3FE62E42FEFA39EF, double %109) #145 %111 = fneg double %110 %112 = tail call double asm "rsqrt.approx.ftz.f64 $0, $1;", "=d,d"(double %111) #146, !srcloc !9 %113 = tail call double @llvm.nvvm.mul.rn.d(double %112, double %112) #145 %114 = fneg double %113 %115 = tail call double @llvm.nvvm.fma.rn.d(double %111, double %114, double 1.000000e+00) #145 %116 = tail call double @llvm.nvvm.fma.rn.d(double 3.750000e-01, double %115, double 5.000000e-01) #145 %117 = tail call double @llvm.nvvm.mul.rn.d(double %115, double %112) #145 %118 = tail call double @llvm.nvvm.fma.rn.d(double %116, double %117, double %112) #145 %119 = tail call double @llvm.nvvm.fma.rn.d(double 0x3FEBE9222591AFAB, double %118, double 0x4000A0E7333839AA) #145 %120 = tail call double @llvm.nvvm.fma.rn.d(double %119, double %118, double 0x4008768CF7E57D5C) #145 %121 = tail call double @llvm.nvvm.fma.rn.d(double %120, double %118, double 0x400B77E7E28DA583) #145 %122 = tail call double @llvm.nvvm.fma.rn.d(double %121, double %118, double 0x3FF34F26A4F99CF9) #145 %123 = tail call double @llvm.nvvm.fma.rn.d(double %122, double %118, double 0x3FC1F674ADB019ED) #145 %124 = tail call double @llvm.nvvm.fma.rn.d(double %123, double %118, double 0x3F75DDAE9506431D) #145 %125 = tail call double @llvm.nvvm.fma.rn.d(double %124, double %118, double 0x3F0ADA49AA32489C) #145 %126 = fadd double %118, 0x4001E90FF51C2197 %127 = tail call double @llvm.nvvm.fma.rn.d(double %126, double %118, double 0x40111EA3A7CF3820) #145 %128 = tail call double @llvm.nvvm.fma.rn.d(double %127, double %118, double 0x4011A0E4A4749594) #145 %129 = tail call double @llvm.nvvm.fma.rn.d(double %128, double %118, double 0x400D4E977D38C14D) #145 %130 = tail call double @llvm.nvvm.fma.rn.d(double %129, double %118, double 0x3FF37FD567EC0D5F) #145 %131 = tail call double @llvm.nvvm.fma.rn.d(double %130, double %118, double 0x3FC1FB9D7F676033) #145 %132 = tail call double @llvm.nvvm.fma.rn.d(double %131, double %118, double 0x3F75DDCDF98946E4) #145 %133 = tail call double @llvm.nvvm.fma.rn.d(double %132, double %118, double 0x3F0ADA42D79D8DBB) #145 %134 = fmul double %118, %133 %135 = fdiv double %125, %134 br label %212 136: ; preds = %69 %137 = icmp slt i32 %spec.select, 1048576 br i1 %137, label %138, label %142 138: ; preds = %136 %139 = fmul double %spec.select1, 0x4350000000000000 %140 = tail call i32 @llvm.nvvm.d2i.hi(double %139) #145 %141 = tail call i32 @llvm.nvvm.d2i.lo(double %139) #145 br label %142 142: ; preds = %138, %136 %.0 = phi double [ %139, %138 ], [ %spec.select1, %136 ] %ihi.i.i.0 = phi i32 [ %140, %138 ], [ %spec.select, %136 ] %ilo.i.i.0 = phi i32 [ %141, %138 ], [ %74, %136 ] %e.i.i.0 = phi i32 [ -1077, %138 ], [ -1023, %136 ] %143 = add i32 %ihi.i.i.0, -1 %144 = icmp ult i32 %143, 2146435071 br i1 %144, label %145, label %194 145: ; preds = %142 %146 = lshr i32 %ihi.i.i.0, 20 %147 = add nsw i32 %e.i.i.0, %146 %148 = and i32 %ihi.i.i.0, -2146435073 %149 = or i32 %148, 1072693248 %150 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i.0, i32 %149) #145 %151 = icmp ugt i32 %149, 1073127582 br i1 %151, label %152, label %158 152: ; preds = %145 %153 = tail call i32 @llvm.nvvm.d2i.lo(double %150) #145 %154 = tail call i32 @llvm.nvvm.d2i.hi(double %150) #145 %155 = add i32 %154, -1048576 %156 = tail call double @llvm.nvvm.lohi.i2d(i32 %153, i32 %155) #145 %157 = add nsw i32 %147, 1 br label %158 158: ; preds = %152, %145 %m.i.i.0 = phi double [ %156, %152 ], [ %150, %145 ] %e.i.i.1 = phi i32 [ %157, %152 ], [ %147, %145 ] %159 = fadd double %m.i.i.0, -1.000000e+00 %160 = fadd double %m.i.i.0, 1.000000e+00 %161 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %160) #145 %162 = fneg double %160 %163 = tail call double @llvm.nvvm.fma.rn.d(double %162, double %161, double 1.000000e+00) #145 %164 = tail call double @llvm.nvvm.fma.rn.d(double %163, double %163, double %163) #145 %165 = tail call double @llvm.nvvm.fma.rn.d(double %164, double %161, double %161) #145 %166 = fmul double %159, %165 %167 = fadd double %166, %166 %168 = fmul double %167, %167 %169 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %168, double 0x3ED0EE258B7A8B04) #145 %170 = tail call double @llvm.nvvm.fma.rn.d(double %169, double %168, double 0x3EF3B2669F02676F) #145 %171 = tail call double @llvm.nvvm.fma.rn.d(double %170, double %168, double 0x3F1745CBA9AB0956) #145 %172 = tail call double @llvm.nvvm.fma.rn.d(double %171, double %168, double 0x3F3C71C72D1B5154) #145 %173 = tail call double @llvm.nvvm.fma.rn.d(double %172, double %168, double 0x3F624924923BE72D) #145 %174 = tail call double @llvm.nvvm.fma.rn.d(double %173, double %168, double 0x3F8999999999A3C4) #145 %175 = tail call double @llvm.nvvm.fma.rn.d(double %174, double %168, double 0x3FB5555555555554) #145 %176 = fsub double %159, %167 %177 = fmul double %176, 2.000000e+00 %178 = fneg double %167 %179 = tail call double @llvm.nvvm.fma.rn.d(double %178, double %159, double %177) #145 %180 = fmul double %165, %179 %181 = fmul double %168, %175 %182 = tail call double @llvm.nvvm.fma.rn.d(double %181, double %167, double %180) #145 %183 = xor i32 %e.i.i.1, -2147483648 %184 = tail call double @llvm.nvvm.lohi.i2d(i32 %183, i32 1127219200) #145 %185 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %186 = fsub double %184, %185 %187 = tail call double @llvm.nvvm.fma.rn.d(double %186, double 0x3FE62E42FEFA39EF, double %167) #145 %188 = fneg double %186 %189 = tail call double @llvm.nvvm.fma.rn.d(double %188, double 0x3FE62E42FEFA39EF, double %187) #145 %190 = fsub double %189, %167 %191 = fsub double %182, %190 %192 = tail call double @llvm.nvvm.fma.rn.d(double %186, double 0x3C7ABC9E3B39803F, double %191) #145 %193 = fadd double %187, %192 br label %__nv_log.exit.i 194: ; preds = %142 %195 = tail call double @llvm.nvvm.fma.rn.d(double %.0, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %196 = tail call i32 @llvm.nvvm.d2i.hi(double %.0) #145 %197 = bitcast i32 %196 to float %198 = fcmp oeq float %197, 0.000000e+00 %q.i.i.0 = select i1 %198, double 0xFFF0000000000000, double %195 br label %__nv_log.exit.i __nv_log.exit.i: ; preds = %194, %158 %q.i.i.1 = phi double [ %193, %158 ], [ %q.i.i.0, %194 ] %199 = fneg double %q.i.i.1 %200 = tail call double @llvm.nvvm.rsqrt.approx.d(double %199) #145 %201 = tail call double @llvm.nvvm.fma.rn.d(double 0x3FE8E2101C71B0BF, double %200, double 0x3FFA2013964E259C) #145 %202 = tail call double @llvm.nvvm.fma.rn.d(double %201, double %200, double 0x3FDABFE90921BE68) #145 %203 = tail call double @llvm.nvvm.fma.rn.d(double %202, double %200, double 0x3F97E41314DE00D4) #145 %204 = tail call double @llvm.nvvm.fma.rn.d(double %203, double %200, double 0x3F311BD487102E94) #145 %205 = fadd double %200, 0x3FF59895C30BAA54 %206 = tail call double @llvm.nvvm.fma.rn.d(double %205, double %200, double 0x3FFAE8E5956A143F) #145 %207 = tail call double @llvm.nvvm.fma.rn.d(double %206, double %200, double 0x3FDACCE85FF7383D) #145 %208 = tail call double @llvm.nvvm.fma.rn.d(double %207, double %200, double 0x3F97E43B6CAC34FE) #145 %209 = tail call double @llvm.nvvm.fma.rn.d(double %208, double %200, double 0x3F311BD08289EB12) #145 %210 = fmul double %200, %209 %211 = fdiv double %204, %210 br label %212 212: ; preds = %__nv_log.exit.i, %75 %t.i.0 = phi double [ %135, %75 ], [ %211, %__nv_log.exit.i ] %213 = fneg double %t.i.0 %spec.select3 = select i1 %71, double %213, double %t.i.0 br label %__nv_erfcinv.exit __nv_erfcinv.exit: ; preds = %6, %212 %t.i.2 = phi double [ %68, %6 ], [ %spec.select3, %212 ] %214 = fmul double %t.i.2, 0xBCA21165F626CDD5 %215 = tail call double @llvm.nvvm.fma.rn.d(double 0xBFF6A09E667F3BCC, double %t.i.2, double %214) #145 %216 = tail call double @llvm.nvvm.add.rn.d(double %215, double 0.000000e+00) #145 ret double %216 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_erfc(double %a) unnamed_addr #127 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = and i32 %1, 2147483647 %3 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %4 = icmp ult i32 %2, 2146435072 br i1 %4, label %5, label %91 5: ; preds = %0 %6 = tail call double @llvm.nvvm.lohi.i2d(i32 %3, i32 %2) #145 %7 = fadd double %6, -4.000000e+00 %8 = fadd double %6, 4.000000e+00 %9 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %8) #145 %10 = fneg double %8 %11 = tail call double @llvm.nvvm.fma.rn.d(double %10, double %9, double 1.000000e+00) #145 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %11, double %11) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %9, double %9) #145 %14 = fmul double %7, %13 %15 = tail call double @llvm.nvvm.add.rn.d(double %14, double 1.000000e+00) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double -4.000000e+00, double %15, double %6) #145 %17 = fneg double %14 %18 = tail call double @llvm.nvvm.fma.rn.d(double %17, double %6, double %16) #145 %19 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %18, double %14) #145 %20 = tail call double @llvm.nvvm.fma.rn.d(double 0xBDF8774AD4E0BFD7, double %19, double 0xBE44E1C6FD03D328) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %19, double 0xBE4330149F7A56B6) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %19, double 0x3E7BEDDED8376273) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %19, double 0x3E6F9254C3ABF22B) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %19, double 0xBEAB9068C2148CF0) #145 %25 = tail call double @llvm.nvvm.fma.rn.d(double %24, double %19, double 0x3E94C6454DB34009) #145 %26 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %19, double 0x3ED7F1C378F2311D) #145 %27 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %19, double 0xBEE78E051C6D5C58) #145 %28 = tail call double @llvm.nvvm.fma.rn.d(double %27, double %19, double 0xBEF995B4EAD14A90) #145 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %19, double 0x3F23BE27CF0A29B2) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %19, double 0xBF2A1DEF3E81672E) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %19, double 0xBF48D4ABE68C1713) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %19, double 0x3F749C67210DD6B4) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %19, double 0xBF9096238568E357) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %19, double 0x3FA3079EDF8C2DC9) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %19, double 0xBFB0FB06DFF601FC) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %19, double 0x3FB7FEE004DFBCDC) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %19, double 0xBFB9DDB23C3DB8C6) #145 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %19, double 0x3FB16ECEFCFA5FDA) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %19, double 0x3F8F7F5DF66FB6D6) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %39, double %19, double 0xBFC1DF1AD154A29D) #145 %41 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %19, double 0x3FF3BA5916E9FD7F) #145 %42 = tail call double @llvm.nvvm.fma.rn.d(double 2.000000e+00, double %6, double 1.000000e+00) #145 %43 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %42) #145 %44 = fneg double %42 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %43, double 1.000000e+00) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %45, double %45) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %43, double %43) #145 %48 = fmul double %47, %41 %49 = fmul double %48, -2.000000e+00 %50 = tail call double @llvm.nvvm.fma.rn.d(double %6, double %49, double %41) #145 %51 = fneg double %48 %52 = tail call double @llvm.nvvm.add.rn.d(double %50, double %51) #145 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double %47, double %48) #145 %54 = fneg double %6 %55 = fmul double %6, %54 %56 = tail call double @llvm.nvvm.fma.rn.d(double %55, double 0x3FF71547652B82FE, double 0x4338000000000000) #145 %57 = tail call i32 @llvm.nvvm.d2i.lo(double %56) #145 %58 = tail call double @llvm.nvvm.add.rn.d(double %56, double 0xC338000000000000) #145 %59 = tail call double @llvm.nvvm.fma.rn.d(double %58, double 0xBFE62E42FEFA39EF, double %55) #145 %60 = tail call double @llvm.nvvm.fma.rn.d(double %58, double 0xBC7ABC9E3B39803F, double %59) #145 %61 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E5ADE1569CE2BDF, double %60, double 0x3E928AF3FCA213EA) #145 %62 = tail call double @llvm.nvvm.fma.rn.d(double %61, double %60, double 0x3EC71DEE62401315) #145 %63 = tail call double @llvm.nvvm.fma.rn.d(double %62, double %60, double 0x3EFA01997C89EB71) #145 %64 = tail call double @llvm.nvvm.fma.rn.d(double %63, double %60, double 0x3F2A01A014761F65) #145 %65 = tail call double @llvm.nvvm.fma.rn.d(double %64, double %60, double 0x3F56C16C1852B7AF) #145 %66 = tail call double @llvm.nvvm.fma.rn.d(double %65, double %60, double 0x3F81111111122322) #145 %67 = tail call double @llvm.nvvm.fma.rn.d(double %66, double %60, double 0x3FA55555555502A1) #145 %68 = tail call double @llvm.nvvm.fma.rn.d(double %67, double %60, double 0x3FC5555555555511) #145 %69 = tail call double @llvm.nvvm.fma.rn.d(double %68, double %60, double 0x3FE000000000000B) #145 %70 = tail call double @llvm.nvvm.fma.rn.d(double %69, double %60, double 1.000000e+00) #145 %71 = tail call double @llvm.nvvm.fma.rn.d(double %70, double %60, double 1.000000e+00) #145 %72 = sdiv i32 %57, 2 %73 = tail call i32 @llvm.nvvm.d2i.lo(double %71) #145 %74 = tail call i32 @llvm.nvvm.d2i.hi(double %71) #145 %75 = shl i32 %72, 20 %76 = add i32 %74, %75 %77 = tail call double @llvm.nvvm.lohi.i2d(i32 %73, i32 %76) #145 %78 = sub nsw i32 %57, %72 %79 = shl i32 %78, 20 %80 = add nsw i32 %79, 1072693248 %81 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %80) #145 %82 = fmul double %81, %77 %83 = fneg double %55 %84 = tail call double @llvm.nvvm.fma.rn.d(double %54, double %6, double %83) #145 %85 = tail call double @llvm.nvvm.fma.rn.d(double %82, double %84, double %82) #145 %86 = fmul double %85, %53 %87 = icmp ugt i32 %2, 1077624832 %spec.select = select i1 %87, double 0.000000e+00, double %86 %88 = icmp slt i32 %1, 0 %89 = fsub double 2.000000e+00, %spec.select %90 = select i1 %88, double %89, double %spec.select br label %97 91: ; preds = %0 %92 = icmp eq i32 %2, 2146435072 %93 = icmp eq i32 %3, 0 %or.cond = select i1 %92, i1 %93, i1 false %94 = icmp slt i32 %1, 0 %95 = select i1 %94, double 2.000000e+00, double 0.000000e+00 %96 = fadd double %a, %a %t1.1 = select i1 %or.cond, double %95, double %96 br label %97 97: ; preds = %91, %5 %t1.2 = phi double [ %90, %5 ], [ %t1.1, %91 ] ret double %t1.2 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_erfcx(double %a) unnamed_addr #128 { __internal_fast_icmp_abs_lt.exit: %0 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %1 = bitcast i32 %0 to float %2 = tail call float @llvm.nvvm.fabs.f(float %1) #145 %3 = fcmp olt float %2, 3.000000e+00 br i1 %3, label %4, label %55 4: ; preds = %__internal_fast_icmp_abs_lt.exit %5 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %6 = and i32 %0, 2147483647 %7 = tail call double @llvm.nvvm.lohi.i2d(i32 %5, i32 %6) #145 %8 = fadd double %7, -4.000000e+00 %9 = fadd double %7, 4.000000e+00 %10 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %9) #145 %11 = fneg double %9 %12 = tail call double @llvm.nvvm.fma.rn.d(double %11, double %10, double 1.000000e+00) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %12, double %12) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %10, double %10) #145 %15 = fmul double %8, %14 %16 = tail call double @llvm.nvvm.add.rn.d(double %15, double 1.000000e+00) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double -4.000000e+00, double %16, double %7) #145 %18 = fneg double %15 %19 = tail call double @llvm.nvvm.fma.rn.d(double %18, double %7, double %17) #145 %20 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %19, double %15) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double 0xBDF8774AD4E0BFD7, double %20, double 0xBE44E1C6FD03D328) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %20, double 0xBE4330149F7A56B6) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %20, double 0x3E7BEDDED8376273) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %20, double 0x3E6F9254C3ABF22B) #145 %25 = tail call double @llvm.nvvm.fma.rn.d(double %24, double %20, double 0xBEAB9068C2148CF0) #145 %26 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %20, double 0x3E94C6454DB34009) #145 %27 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %20, double 0x3ED7F1C378F2311D) #145 %28 = tail call double @llvm.nvvm.fma.rn.d(double %27, double %20, double 0xBEE78E051C6D5C58) #145 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %20, double 0xBEF995B4EAD14A90) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %20, double 0x3F23BE27CF0A29B2) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %20, double 0xBF2A1DEF3E81672E) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %20, double 0xBF48D4ABE68C1713) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %20, double 0x3F749C67210DD6B4) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %20, double 0xBF9096238568E357) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %20, double 0x3FA3079EDF8C2DC9) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double %35, double %20, double 0xBFB0FB06DFF601FC) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %20, double 0x3FB7FEE004DFBCDC) #145 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %20, double 0xBFB9DDB23C3DB8C6) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %20, double 0x3FB16ECEFCFA5FDA) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %39, double %20, double 0x3F8F7F5DF66FB6D6) #145 %41 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %20, double 0xBFC1DF1AD154A29D) #145 %42 = tail call double @llvm.nvvm.fma.rn.d(double %41, double %20, double 0x3FF3BA5916E9FD7F) #145 %43 = tail call double @llvm.nvvm.fma.rn.d(double 2.000000e+00, double %7, double 1.000000e+00) #145 %44 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %43) #145 %45 = fneg double %43 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %44, double 1.000000e+00) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %46, double %46) #145 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %44, double %44) #145 %49 = fmul double %48, %42 %50 = fmul double %49, -2.000000e+00 %51 = tail call double @llvm.nvvm.fma.rn.d(double %7, double %50, double %42) #145 %52 = fneg double %49 %53 = tail call double @llvm.nvvm.add.rn.d(double %51, double %52) #145 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %48, double %49) #145 br label %65 55: ; preds = %__internal_fast_icmp_abs_lt.exit %56 = fdiv double 1.000000e+00, %a %57 = fmul double %56, %56 %58 = tail call double @llvm.nvvm.fma.rn.d(double 0xC03D880000000000, double %57, double 6.562500e+00) #145 %59 = tail call double @llvm.nvvm.fma.rn.d(double %58, double %57, double -1.875000e+00) #145 %60 = tail call double @llvm.nvvm.fma.rn.d(double %59, double %57, double 7.500000e-01) #145 %61 = tail call double @llvm.nvvm.fma.rn.d(double %60, double %57, double -5.000000e-01) #145 %62 = tail call double @llvm.nvvm.fma.rn.d(double %61, double %57, double 1.000000e+00) #145 %63 = fmul double %56, 0x3FE20DD750429B6D %64 = fmul double %63, %62 br label %65 65: ; preds = %55, %4 %t1.0 = phi double [ %54, %4 ], [ %64, %55 ] %66 = icmp slt i32 %0, 0 br i1 %66, label %__internal_fast_icmp_abs_lt.exit3.i, label %111 __internal_fast_icmp_abs_lt.exit3.i: ; preds = %65 %67 = fmul double %a, %a %68 = fneg double %67 %69 = tail call double @llvm.nvvm.fma.rn.d(double %a, double %a, double %68) #145 %70 = tail call double @llvm.nvvm.fma.rn.d(double %67, double 0x3FF71547652B82FE, double 0x4338000000000000) #145 %71 = tail call i32 @llvm.nvvm.d2i.lo(double %70) #145 %72 = tail call double @llvm.nvvm.add.rn.d(double %70, double 0xC338000000000000) #145 %73 = tail call double @llvm.nvvm.fma.rn.d(double %72, double 0xBFE62E42FEFA39EF, double %67) #145 %74 = tail call double @llvm.nvvm.fma.rn.d(double %72, double 0xBC7ABC9E3B39803F, double %73) #145 %75 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E5ADE1569CE2BDF, double %74, double 0x3E928AF3FCA213EA) #145 %76 = tail call double @llvm.nvvm.fma.rn.d(double %75, double %74, double 0x3EC71DEE62401315) #145 %77 = tail call double @llvm.nvvm.fma.rn.d(double %76, double %74, double 0x3EFA01997C89EB71) #145 %78 = tail call double @llvm.nvvm.fma.rn.d(double %77, double %74, double 0x3F2A01A014761F65) #145 %79 = tail call double @llvm.nvvm.fma.rn.d(double %78, double %74, double 0x3F56C16C1852B7AF) #145 %80 = tail call double @llvm.nvvm.fma.rn.d(double %79, double %74, double 0x3F81111111122322) #145 %81 = tail call double @llvm.nvvm.fma.rn.d(double %80, double %74, double 0x3FA55555555502A1) #145 %82 = tail call double @llvm.nvvm.fma.rn.d(double %81, double %74, double 0x3FC5555555555511) #145 %83 = tail call double @llvm.nvvm.fma.rn.d(double %82, double %74, double 0x3FE000000000000B) #145 %84 = tail call double @llvm.nvvm.fma.rn.d(double %83, double %74, double 1.000000e+00) #145 %85 = tail call double @llvm.nvvm.fma.rn.d(double %84, double %74, double 1.000000e+00) #145 %86 = tail call i32 @llvm.nvvm.d2i.lo(double %85) #145 %87 = tail call i32 @llvm.nvvm.d2i.hi(double %85) #145 %88 = shl i32 %71, 20 %89 = add i32 %87, %88 %90 = tail call double @llvm.nvvm.lohi.i2d(i32 %86, i32 %89) #145 %91 = tail call i32 @llvm.nvvm.d2i.hi(double %67) #145 %92 = bitcast i32 %91 to float %93 = tail call float @llvm.nvvm.fabs.f(float %92) #145 %94 = fcmp olt float %93, 0x4010C46560000000 br i1 %94, label %__nv_exp.exit, label %__internal_fast_icmp_abs_lt.exit.i __internal_fast_icmp_abs_lt.exit.i: ; preds = %__internal_fast_icmp_abs_lt.exit3.i %95 = fadd double %67, 0x7FF0000000000000 %96 = fcmp olt float %93, 0x4010E90000000000 br i1 %96, label %97, label %__nv_exp.exit 97: ; preds = %__internal_fast_icmp_abs_lt.exit.i %98 = sdiv i32 %71, 2 %99 = shl i32 %98, 20 %100 = add i32 %87, %99 %101 = tail call double @llvm.nvvm.lohi.i2d(i32 %86, i32 %100) #145 %102 = sub nsw i32 %71, %98 %103 = shl i32 %102, 20 %104 = add nsw i32 %103, 1072693248 %105 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %104) #145 %106 = fmul double %105, %101 br label %__nv_exp.exit __nv_exp.exit: ; preds = %__internal_fast_icmp_abs_lt.exit.i, %97, %__internal_fast_icmp_abs_lt.exit3.i %z.i.2 = phi double [ %90, %__internal_fast_icmp_abs_lt.exit3.i ], [ %106, %97 ], [ %95, %__internal_fast_icmp_abs_lt.exit.i ] %107 = fadd double %z.i.2, %z.i.2 %108 = tail call double @llvm.nvvm.fma.rn.d(double %107, double %69, double %107) #145 %109 = fsub double %108, %t1.0 %110 = fcmp oeq double %107, 0x7FF0000000000000 %t1.1 = select i1 %110, double 0x7FF0000000000000, double %109 br label %111 111: ; preds = %__nv_exp.exit, %65 %t1.2 = phi double [ %t1.1, %__nv_exp.exit ], [ %t1.0, %65 ] ret double %t1.2 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_normcdf(double %a) unnamed_addr #129 { %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = fcmp ogt double %1, 3.850000e+01 br i1 %2, label %3, label %11 3: ; preds = %0 %4 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %5 = tail call i32 @llvm.nvvm.d2i.lo(double 3.850000e+01) #145 %6 = tail call i32 @llvm.nvvm.d2i.hi(double 3.850000e+01) #145 %7 = and i32 %4, -2147483648 %8 = and i32 %6, 2147483647 %9 = or i32 %7, %8 %10 = tail call double @llvm.nvvm.lohi.i2d(i32 %5, i32 %9) #145 br label %11 11: ; preds = %3, %0 %.0 = phi double [ %10, %3 ], [ %a, %0 ] %12 = tail call double @llvm.nvvm.mul.rn.d(double %.0, double 0xBFE6A09E667F3BCD) #145 %13 = fneg double %12 %14 = tail call double @llvm.nvvm.fma.rn.d(double %.0, double 0xBFE6A09E667F3BCD, double %13) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %.0, double 0x3C8BDD3413B26456, double %14) #145 %16 = tail call double @llvm.nvvm.add.rn.d(double %12, double %15) #145 %17 = tail call i32 @llvm.nvvm.d2i.hi(double %16) #145 %18 = and i32 %17, 2147483647 %19 = tail call i32 @llvm.nvvm.d2i.lo(double %16) #145 %20 = icmp ult i32 %18, 2146435072 br i1 %20, label %21, label %107 21: ; preds = %11 %22 = tail call double @llvm.nvvm.lohi.i2d(i32 %19, i32 %18) #145 %23 = fadd double %22, -4.000000e+00 %24 = fadd double %22, 4.000000e+00 %25 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %24) #145 %26 = fneg double %24 %27 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %25, double 1.000000e+00) #145 %28 = tail call double @llvm.nvvm.fma.rn.d(double %27, double %27, double %27) #145 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %25, double %25) #145 %30 = fmul double %23, %29 %31 = tail call double @llvm.nvvm.add.rn.d(double %30, double 1.000000e+00) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double -4.000000e+00, double %31, double %22) #145 %33 = fneg double %30 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %22, double %32) #145 %35 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %34, double %30) #145 %36 = tail call double @llvm.nvvm.fma.rn.d(double 0xBDF8774AD4E0BFD7, double %35, double 0xBE44E1C6FD03D328) #145 %37 = tail call double @llvm.nvvm.fma.rn.d(double %36, double %35, double 0xBE4330149F7A56B6) #145 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %35, double 0x3E7BEDDED8376273) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %35, double 0x3E6F9254C3ABF22B) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %39, double %35, double 0xBEAB9068C2148CF0) #145 %41 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %35, double 0x3E94C6454DB34009) #145 %42 = tail call double @llvm.nvvm.fma.rn.d(double %41, double %35, double 0x3ED7F1C378F2311D) #145 %43 = tail call double @llvm.nvvm.fma.rn.d(double %42, double %35, double 0xBEE78E051C6D5C58) #145 %44 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %35, double 0xBEF995B4EAD14A90) #145 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %35, double 0x3F23BE27CF0A29B2) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %35, double 0xBF2A1DEF3E81672E) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %35, double 0xBF48D4ABE68C1713) #145 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %35, double 0x3F749C67210DD6B4) #145 %49 = tail call double @llvm.nvvm.fma.rn.d(double %48, double %35, double 0xBF9096238568E357) #145 %50 = tail call double @llvm.nvvm.fma.rn.d(double %49, double %35, double 0x3FA3079EDF8C2DC9) #145 %51 = tail call double @llvm.nvvm.fma.rn.d(double %50, double %35, double 0xBFB0FB06DFF601FC) #145 %52 = tail call double @llvm.nvvm.fma.rn.d(double %51, double %35, double 0x3FB7FEE004DFBCDC) #145 %53 = tail call double @llvm.nvvm.fma.rn.d(double %52, double %35, double 0xBFB9DDB23C3DB8C6) #145 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %35, double 0x3FB16ECEFCFA5FDA) #145 %55 = tail call double @llvm.nvvm.fma.rn.d(double %54, double %35, double 0x3F8F7F5DF66FB6D6) #145 %56 = tail call double @llvm.nvvm.fma.rn.d(double %55, double %35, double 0xBFC1DF1AD154A29D) #145 %57 = tail call double @llvm.nvvm.fma.rn.d(double %56, double %35, double 0x3FF3BA5916E9FD7F) #145 %58 = tail call double @llvm.nvvm.fma.rn.d(double 2.000000e+00, double %22, double 1.000000e+00) #145 %59 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %58) #145 %60 = fneg double %58 %61 = tail call double @llvm.nvvm.fma.rn.d(double %60, double %59, double 1.000000e+00) #145 %62 = tail call double @llvm.nvvm.fma.rn.d(double %61, double %61, double %61) #145 %63 = tail call double @llvm.nvvm.fma.rn.d(double %62, double %59, double %59) #145 %64 = fmul double %63, %57 %65 = fmul double %64, -2.000000e+00 %66 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %65, double %57) #145 %67 = fneg double %64 %68 = tail call double @llvm.nvvm.add.rn.d(double %66, double %67) #145 %69 = tail call double @llvm.nvvm.fma.rn.d(double %68, double %63, double %64) #145 %70 = fneg double %22 %71 = fmul double %22, %70 %72 = tail call double @llvm.nvvm.fma.rn.d(double %71, double 0x3FF71547652B82FE, double 0x4338000000000000) #145 %73 = tail call i32 @llvm.nvvm.d2i.lo(double %72) #145 %74 = tail call double @llvm.nvvm.add.rn.d(double %72, double 0xC338000000000000) #145 %75 = tail call double @llvm.nvvm.fma.rn.d(double %74, double 0xBFE62E42FEFA39EF, double %71) #145 %76 = tail call double @llvm.nvvm.fma.rn.d(double %74, double 0xBC7ABC9E3B39803F, double %75) #145 %77 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E5ADE1569CE2BDF, double %76, double 0x3E928AF3FCA213EA) #145 %78 = tail call double @llvm.nvvm.fma.rn.d(double %77, double %76, double 0x3EC71DEE62401315) #145 %79 = tail call double @llvm.nvvm.fma.rn.d(double %78, double %76, double 0x3EFA01997C89EB71) #145 %80 = tail call double @llvm.nvvm.fma.rn.d(double %79, double %76, double 0x3F2A01A014761F65) #145 %81 = tail call double @llvm.nvvm.fma.rn.d(double %80, double %76, double 0x3F56C16C1852B7AF) #145 %82 = tail call double @llvm.nvvm.fma.rn.d(double %81, double %76, double 0x3F81111111122322) #145 %83 = tail call double @llvm.nvvm.fma.rn.d(double %82, double %76, double 0x3FA55555555502A1) #145 %84 = tail call double @llvm.nvvm.fma.rn.d(double %83, double %76, double 0x3FC5555555555511) #145 %85 = tail call double @llvm.nvvm.fma.rn.d(double %84, double %76, double 0x3FE000000000000B) #145 %86 = tail call double @llvm.nvvm.fma.rn.d(double %85, double %76, double 1.000000e+00) #145 %87 = tail call double @llvm.nvvm.fma.rn.d(double %86, double %76, double 1.000000e+00) #145 %88 = sdiv i32 %73, 2 %89 = tail call i32 @llvm.nvvm.d2i.lo(double %87) #145 %90 = tail call i32 @llvm.nvvm.d2i.hi(double %87) #145 %91 = shl i32 %88, 20 %92 = add i32 %90, %91 %93 = tail call double @llvm.nvvm.lohi.i2d(i32 %89, i32 %92) #145 %94 = sub nsw i32 %73, %88 %95 = shl i32 %94, 20 %96 = add nsw i32 %95, 1072693248 %97 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %96) #145 %98 = fmul double %97, %93 %99 = fneg double %71 %100 = tail call double @llvm.nvvm.fma.rn.d(double %70, double %22, double %99) #145 %101 = tail call double @llvm.nvvm.fma.rn.d(double %98, double %100, double %98) #145 %102 = fmul double %101, %69 %103 = icmp ugt i32 %18, 1077624832 %spec.select = select i1 %103, double 0.000000e+00, double %102 %104 = icmp slt i32 %17, 0 %105 = fsub double 2.000000e+00, %spec.select %106 = select i1 %104, double %105, double %spec.select br label %__nv_erfc.exit 107: ; preds = %11 %108 = icmp eq i32 %18, 2146435072 %109 = icmp eq i32 %19, 0 %or.cond = select i1 %108, i1 %109, i1 false %110 = icmp slt i32 %17, 0 %111 = select i1 %110, double 2.000000e+00, double 0.000000e+00 %112 = fadd double %16, %16 %t1.i.1 = select i1 %or.cond, double %111, double %112 br label %__nv_erfc.exit __nv_erfc.exit: ; preds = %21, %107 %t1.i.2 = phi double [ %106, %21 ], [ %t1.i.1, %107 ] %113 = tail call i32 @llvm.nvvm.d2i.hi(double %.0) #145 %114 = icmp ugt i32 %113, -1074790400 br i1 %114, label %115, label %121 115: ; preds = %__nv_erfc.exit %116 = fsub double %12, %16 %117 = tail call double @llvm.nvvm.add.rn.d(double %116, double %15) #145 %118 = fmul double %16, -2.000000e+00 %119 = fmul double %118, %t1.i.2 %120 = tail call double @llvm.nvvm.fma.rn.d(double %119, double %117, double %t1.i.2) #145 br label %121 121: ; preds = %115, %__nv_erfc.exit %z.0 = phi double [ %120, %115 ], [ %t1.i.2, %__nv_erfc.exit ] %122 = fmul double %z.0, 5.000000e-01 ret double %122 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_tgamma(double %a) unnamed_addr #130 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = bitcast i32 %1 to float %3 = fcmp ult double %a, 0.000000e+00 br i1 %3, label %207, label %4 4: ; preds = %0 %5 = fcmp olt float %2, 2.250000e+00 br i1 %5, label %6, label %37 6: ; preds = %4 %7 = fcmp oge float %2, 2.187500e+00 %8 = tail call double @llvm.nvvm.fma.rn.d(double %a, double 1.000000e+00, double -1.000000e+00) #145 %9 = fadd double %a, -1.000000e+00 %s.0 = select i1 %7, double %8, double 1.000000e+00 %t.0 = select i1 %7, double %9, double %a %10 = fcmp oge float %2, 2.062500e+00 %11 = fneg double %s.0 %12 = tail call double @llvm.nvvm.fma.rn.d(double %t.0, double %s.0, double %11) #145 %13 = fadd double %t.0, -1.000000e+00 %s.1 = select i1 %10, double %12, double %s.0 %t.1 = select i1 %10, double %13, double %t.0 %14 = fcmp oge float %2, 1.937500e+00 %15 = fneg double %s.1 %16 = tail call double @llvm.nvvm.fma.rn.d(double %t.1, double %s.1, double %15) #145 %17 = fadd double %t.1, -1.000000e+00 %s.2 = select i1 %14, double %16, double %s.1 %t.2 = select i1 %14, double %17, double %t.1 %18 = fcmp oge float %2, 1.750000e+00 %19 = fadd double %t.2, -1.000000e+00 %t.3 = select i1 %18, double %19, double %t.2 %20 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E381B4960FCF5C9, double %t.3, double 0xBE8AF7049AE8A594) #145 %21 = tail call double @llvm.nvvm.fma.rn.d(double %20, double %t.3, double 0x3EB301D46D4B22F5) #145 %22 = tail call double @llvm.nvvm.fma.rn.d(double %21, double %t.3, double 0xBEB50272AEED0FC4) #145 %23 = tail call double @llvm.nvvm.fma.rn.d(double %22, double %t.3, double 0xBEF51CE1A40516F8) #145 %24 = tail call double @llvm.nvvm.fma.rn.d(double %23, double %t.3, double 0x3F20C8AA7419084C) #145 %25 = tail call double @llvm.nvvm.fma.rn.d(double %24, double %t.3, double 0xBF2C3650196BAD8A) #145 %26 = tail call double @llvm.nvvm.fma.rn.d(double %25, double %t.3, double 0xBF531711365A3E26) #145 %27 = tail call double @llvm.nvvm.fma.rn.d(double %26, double %t.3, double 0x3F7D919C52A7DF35) #145 %28 = tail call double @llvm.nvvm.fma.rn.d(double %27, double %t.3, double 0xBF83B4AF28386F4D) #145 %29 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %t.3, double 0xBFA59AF103C37B4D) #145 %30 = tail call double @llvm.nvvm.fma.rn.d(double %29, double %t.3, double 0x3FC5512320B439EF) #145 %31 = tail call double @llvm.nvvm.fma.rn.d(double %30, double %t.3, double 0xBFA5815E8FA26F4F) #145 %32 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %t.3, double 0xBFE4FCF4026AFA2B) #145 %33 = tail call double @llvm.nvvm.fma.rn.d(double %32, double %t.3, double 0x3FE2788CFC6FB619) #145 %34 = tail call double @llvm.nvvm.fma.rn.d(double %33, double %t.3, double 1.000000e+00) #145 %35 = select i1 %18, double 1.000000e+00, double %a %t.4 = fmul double %35, %34 %36 = fdiv double %s.2, %t.4 br label %358 37: ; preds = %4 %38 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %39 = lshr i32 %1, 20 %40 = icmp ult i32 %1, 1048576 br i1 %40, label %41, label %47 41: ; preds = %37 %42 = fmul double %a, 0x4350000000000000 %43 = tail call i32 @llvm.nvvm.d2i.hi(double %42) #145 %44 = tail call i32 @llvm.nvvm.d2i.lo(double %42) #145 %45 = lshr i32 %43, 20 %46 = add nsw i32 %45, -54 br label %47 47: ; preds = %41, %37 %ilo.i.i26.0 = phi i32 [ %44, %41 ], [ %38, %37 ] %ihi.i.i27.0 = phi i32 [ %43, %41 ], [ %1, %37 ] %expo.i.i.0 = phi i32 [ %46, %41 ], [ %39, %37 ] %48 = add nsw i32 %expo.i.i.0, -1023 %49 = and i32 %ihi.i.i27.0, -2146435073 %50 = or i32 %49, 1072693248 %51 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.i26.0, i32 %50) #145 %52 = icmp ugt i32 %50, 1073127582 br i1 %52, label %53, label %__internal_log_ext_prec.exit.i 53: ; preds = %47 %54 = tail call i32 @llvm.nvvm.d2i.lo(double %51) #145 %55 = tail call i32 @llvm.nvvm.d2i.hi(double %51) #145 %56 = add i32 %55, -1048576 %57 = tail call double @llvm.nvvm.lohi.i2d(i32 %54, i32 %56) #145 %58 = add nsw i32 %expo.i.i.0, -1022 br label %__internal_log_ext_prec.exit.i __internal_log_ext_prec.exit.i: ; preds = %53, %47 %m.i.i.0 = phi double [ %57, %53 ], [ %51, %47 ] %expo.i.i.1 = phi i32 [ %58, %53 ], [ %48, %47 ] %59 = fadd double %m.i.i.0, -1.000000e+00 %60 = fadd double %m.i.i.0, 1.000000e+00 %61 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %60) #145 %62 = fneg double %60 %63 = tail call double @llvm.nvvm.fma.rn.d(double %62, double %61, double 1.000000e+00) #145 %64 = tail call double @llvm.nvvm.fma.rn.d(double %63, double %63, double %63) #145 %65 = tail call double @llvm.nvvm.fma.rn.d(double %64, double %61, double %61) #145 %66 = fmul double %59, %65 %67 = fadd double %66, %66 %68 = fmul double %67, %67 %69 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB0F5FF7D2CAFE2, double %68, double 0x3ED0F5D241AD3B5A) #145 %70 = tail call double @llvm.nvvm.fma.rn.d(double %69, double %68, double 0x3EF3B20A75488A3F) #145 %71 = tail call double @llvm.nvvm.fma.rn.d(double %70, double %68, double 0x3F1745CDE4FAECD5) #145 %72 = tail call double @llvm.nvvm.fma.rn.d(double %71, double %68, double 0x3F3C71C7258A578B) #145 %73 = tail call double @llvm.nvvm.fma.rn.d(double %72, double %68, double 0x3F6249249242B910) #145 %74 = tail call double @llvm.nvvm.fma.rn.d(double %73, double %68, double 0x3F89999999999DFB) #145 %75 = fmul double %68, %74 %76 = fsub double %59, %67 %77 = fmul double %76, 2.000000e+00 %78 = fneg double %67 %79 = tail call double @llvm.nvvm.fma.rn.d(double %78, double %59, double %77) #145 %80 = fmul double %65, %79 %81 = fadd double %75, 0x3FB5555555555555 %82 = fsub double 0x3FB5555555555555, %81 %83 = fadd double %75, %82 %84 = fadd double %83, 0.000000e+00 %85 = fadd double %84, 0xBC46A4CB00B9E7B0 %86 = fadd double %81, %85 %87 = fsub double %81, %86 %88 = fadd double %85, %87 %89 = tail call double @llvm.nvvm.mul.rn.d(double %67, double %67) #145 %90 = fneg double %89 %91 = tail call double @llvm.nvvm.fma.rn.d(double %67, double %67, double %90) #145 %92 = tail call i32 @llvm.nvvm.d2i.lo(double %80) #145 %93 = tail call i32 @llvm.nvvm.d2i.hi(double %80) #145 %94 = add i32 %93, 1048576 %95 = tail call double @llvm.nvvm.lohi.i2d(i32 %92, i32 %94) #145 %96 = tail call double @llvm.nvvm.fma.rn.d(double %67, double %95, double %91) #145 %97 = tail call double @llvm.nvvm.mul.rn.d(double %89, double %67) #145 %98 = fneg double %97 %99 = tail call double @llvm.nvvm.fma.rn.d(double %89, double %67, double %98) #145 %100 = tail call double @llvm.nvvm.fma.rn.d(double %89, double %80, double %99) #145 %101 = tail call double @llvm.nvvm.fma.rn.d(double %96, double %67, double %100) #145 %102 = tail call double @llvm.nvvm.mul.rn.d(double %86, double %97) #145 %103 = fneg double %102 %104 = tail call double @llvm.nvvm.fma.rn.d(double %86, double %97, double %103) #145 %105 = tail call double @llvm.nvvm.fma.rn.d(double %86, double %101, double %104) #145 %106 = tail call double @llvm.nvvm.fma.rn.d(double %88, double %97, double %105) #145 %107 = fadd double %102, %106 %108 = fsub double %102, %107 %109 = fadd double %106, %108 %110 = fadd double %67, %107 %111 = fsub double %67, %110 %112 = fadd double %107, %111 %113 = fadd double %109, %112 %114 = fadd double %80, %113 %115 = fadd double %110, %114 %116 = fsub double %110, %115 %117 = fadd double %114, %116 %118 = xor i32 %expo.i.i.1, -2147483648 %119 = tail call double @llvm.nvvm.lohi.i2d(i32 %118, i32 1127219200) #145 %120 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %121 = fsub double %119, %120 %122 = tail call double @llvm.nvvm.fma.rn.d(double %121, double 0x3FE62E42FEFA39EF, double %115) #145 %123 = fneg double %121 %124 = tail call double @llvm.nvvm.fma.rn.d(double %123, double 0x3FE62E42FEFA39EF, double %122) #145 %125 = fsub double %124, %115 %126 = fsub double %117, %125 %127 = tail call double @llvm.nvvm.fma.rn.d(double %121, double 0x3C7ABC9E3B39803F, double %126) #145 %128 = fadd double %122, %127 %129 = fsub double %122, %128 %130 = fadd double %127, %129 %131 = fadd double %a, -5.000000e-01 %132 = tail call double @llvm.nvvm.mul.rn.d(double %128, double %131) #145 %133 = fneg double %132 %134 = tail call double @llvm.nvvm.fma.rn.d(double %128, double %131, double %133) #145 %135 = tail call double @llvm.nvvm.fma.rn.d(double %130, double %131, double %134) #145 %136 = fadd double %132, %135 %137 = fsub double %132, %136 %138 = fadd double %135, %137 %139 = fsub double %136, %a %140 = fsub double %136, %139 %141 = fsub double %140, %a %142 = fadd double %138, %141 %143 = fadd double %139, %142 %144 = fsub double %139, %143 %145 = fadd double %142, %144 %146 = tail call double @llvm.nvvm.fma.rn.d(double %143, double 0x3FF71547652B82FE, double 0x4338000000000000) #145 %147 = tail call i32 @llvm.nvvm.d2i.lo(double %146) #145 %148 = tail call double @llvm.nvvm.add.rn.d(double %146, double 0xC338000000000000) #145 %149 = tail call double @llvm.nvvm.fma.rn.d(double %148, double 0xBFE62E42FEFA39EF, double %143) #145 %150 = tail call double @llvm.nvvm.fma.rn.d(double %148, double 0xBC7ABC9E3B39803F, double %149) #145 %151 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E5ADE1569CE2BDF, double %150, double 0x3E928AF3FCA213EA) #145 %152 = tail call double @llvm.nvvm.fma.rn.d(double %151, double %150, double 0x3EC71DEE62401315) #145 %153 = tail call double @llvm.nvvm.fma.rn.d(double %152, double %150, double 0x3EFA01997C89EB71) #145 %154 = tail call double @llvm.nvvm.fma.rn.d(double %153, double %150, double 0x3F2A01A014761F65) #145 %155 = tail call double @llvm.nvvm.fma.rn.d(double %154, double %150, double 0x3F56C16C1852B7AF) #145 %156 = tail call double @llvm.nvvm.fma.rn.d(double %155, double %150, double 0x3F81111111122322) #145 %157 = tail call double @llvm.nvvm.fma.rn.d(double %156, double %150, double 0x3FA55555555502A1) #145 %158 = tail call double @llvm.nvvm.fma.rn.d(double %157, double %150, double 0x3FC5555555555511) #145 %159 = tail call double @llvm.nvvm.fma.rn.d(double %158, double %150, double 0x3FE000000000000B) #145 %160 = tail call double @llvm.nvvm.fma.rn.d(double %159, double %150, double 1.000000e+00) #145 %161 = tail call double @llvm.nvvm.fma.rn.d(double %160, double %150, double 1.000000e+00) #145 %162 = tail call i32 @llvm.nvvm.d2i.lo(double %161) #145 %163 = tail call i32 @llvm.nvvm.d2i.hi(double %161) #145 %164 = shl i32 %147, 20 %165 = add i32 %163, %164 %166 = tail call double @llvm.nvvm.lohi.i2d(i32 %162, i32 %165) #145 %167 = tail call i32 @llvm.nvvm.d2i.hi(double %143) #145 %168 = bitcast i32 %167 to float %169 = tail call float @llvm.nvvm.fabs.f(float %168) #145 %170 = fcmp olt float %169, 0x4010C46560000000 br i1 %170, label %__nv_exp.exit.i, label %__internal_fast_icmp_abs_lt.exit.i.i __internal_fast_icmp_abs_lt.exit.i.i: ; preds = %__internal_log_ext_prec.exit.i %171 = fcmp olt double %143, 0.000000e+00 %172 = fadd double %143, 0x7FF0000000000000 %z.i5.i.0 = select i1 %171, double 0.000000e+00, double %172 %173 = fcmp olt float %169, 0x4010E90000000000 br i1 %173, label %174, label %__nv_exp.exit.i 174: ; preds = %__internal_fast_icmp_abs_lt.exit.i.i %175 = sdiv i32 %147, 2 %176 = shl i32 %175, 20 %177 = add i32 %163, %176 %178 = tail call double @llvm.nvvm.lohi.i2d(i32 %162, i32 %177) #145 %179 = sub nsw i32 %147, %175 %180 = shl i32 %179, 20 %181 = add nsw i32 %180, 1072693248 %182 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %181) #145 %183 = fmul double %182, %178 br label %__nv_exp.exit.i __nv_exp.exit.i: ; preds = %__internal_fast_icmp_abs_lt.exit.i.i, %174, %__internal_log_ext_prec.exit.i %z.i5.i.2 = phi double [ %166, %__internal_log_ext_prec.exit.i ], [ %183, %174 ], [ %z.i5.i.0, %__internal_fast_icmp_abs_lt.exit.i.i ] %184 = tail call double @llvm.nvvm.fma.rn.d(double %145, double %z.i5.i.2, double %z.i5.i.2) #145 %185 = fmul double %184, 0xBCAA6A0D6F814637 %186 = tail call double @llvm.nvvm.fma.rn.d(double %184, double 0x40040D931FF62706, double %185) #145 %187 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %a) #145 %188 = fneg double %a %189 = tail call double @llvm.nvvm.fma.rn.d(double %188, double %187, double 1.000000e+00) #145 %190 = tail call double @llvm.nvvm.fma.rn.d(double %189, double %189, double %189) #145 %191 = tail call double @llvm.nvvm.fma.rn.d(double %190, double %187, double %187) #145 %192 = tail call double @llvm.nvvm.fma.rn.d(double 0xBF64BEE47C38A637, double %191, double 0x3F73C25DA81303D5) #145 %193 = tail call double @llvm.nvvm.fma.rn.d(double %192, double %191, double 0xBF6B7C37A96CFC72) #145 %194 = tail call double @llvm.nvvm.fma.rn.d(double %193, double %191, double 0x3F35A85ABDE1E324) #145 %195 = tail call double @llvm.nvvm.fma.rn.d(double %194, double %191, double 0x3F4A8B28F07B3F05) #145 %196 = tail call double @llvm.nvvm.fma.rn.d(double %195, double %191, double 0xBF0A15D1D45A282F) #145 %197 = tail call double @llvm.nvvm.fma.rn.d(double %196, double %191, double 0xBF4367D3468CB5BE) #145 %198 = tail call double @llvm.nvvm.fma.rn.d(double %197, double %191, double 0x3F12471B0E9F1005) #145 %199 = tail call double @llvm.nvvm.fma.rn.d(double %198, double %191, double 0x3F49B1004744D5C4) #145 %200 = tail call double @llvm.nvvm.fma.rn.d(double %199, double %191, double 0xBF2E13CE69AB4B7F) #145 %201 = tail call double @llvm.nvvm.fma.rn.d(double %200, double %191, double 0xBF65F7268ECF8A01) #145 %202 = tail call double @llvm.nvvm.fma.rn.d(double %201, double %191, double 0x3F6C71C71C71ACE0) #145 %203 = tail call double @llvm.nvvm.fma.rn.d(double %202, double %191, double 0x3FB5555555555556) #145 %204 = fmul double %191, %203 %205 = tail call double @llvm.nvvm.fma.rn.d(double %204, double %186, double %186) #145 %206 = fcmp oge double %a, 0x406573FAE561F648 %r.i.0 = select i1 %206, double 0x7FF0000000000000, double %205 br label %358 207: ; preds = %0 %208 = fcmp olt double %a, 0.000000e+00 br i1 %208, label %209, label %356 209: ; preds = %207 %210 = tail call double @llvm.nvvm.trunc.d(double %a) #145 %211 = fcmp oeq double %210, %a br i1 %211, label %358, label %212 212: ; preds = %209 %213 = fcmp ogt float %2, -2.250000e+00 br i1 %213, label %214, label %244 214: ; preds = %212 %215 = fcmp ole float %2, -2.187500e+00 %216 = tail call double @llvm.nvvm.fma.rn.d(double %a, double %a, double %a) #145 %217 = fadd double %a, 1.000000e+00 %s.4 = select i1 %215, double %216, double %a %t.5 = select i1 %215, double %217, double %a %218 = fcmp ole float %2, -2.062500e+00 %219 = tail call double @llvm.nvvm.fma.rn.d(double %t.5, double %s.4, double %s.4) #145 %220 = fadd double %t.5, 1.000000e+00 %s.5 = select i1 %218, double %219, double %s.4 %t.6 = select i1 %218, double %220, double %t.5 %221 = fcmp ole float %2, -1.937500e+00 %222 = tail call double @llvm.nvvm.fma.rn.d(double %t.6, double %s.5, double %s.5) #145 %223 = fadd double %t.6, 1.000000e+00 %s.6 = select i1 %221, double %222, double %s.5 %t.7 = select i1 %221, double %223, double %t.6 %224 = fcmp ole float %2, -1.750000e+00 %225 = tail call double @llvm.nvvm.fma.rn.d(double %t.7, double %s.6, double %s.6) #145 %226 = fadd double %t.7, 1.000000e+00 %s.7 = select i1 %224, double %225, double %s.6 %t.8 = select i1 %224, double %226, double %t.7 %227 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E381B4960FCF5C9, double %t.8, double 0xBE8AF7049AE8A594) #145 %228 = tail call double @llvm.nvvm.fma.rn.d(double %227, double %t.8, double 0x3EB301D46D4B22F5) #145 %229 = tail call double @llvm.nvvm.fma.rn.d(double %228, double %t.8, double 0xBEB50272AEED0FC4) #145 %230 = tail call double @llvm.nvvm.fma.rn.d(double %229, double %t.8, double 0xBEF51CE1A40516F8) #145 %231 = tail call double @llvm.nvvm.fma.rn.d(double %230, double %t.8, double 0x3F20C8AA7419084C) #145 %232 = tail call double @llvm.nvvm.fma.rn.d(double %231, double %t.8, double 0xBF2C3650196BAD8A) #145 %233 = tail call double @llvm.nvvm.fma.rn.d(double %232, double %t.8, double 0xBF531711365A3E26) #145 %234 = tail call double @llvm.nvvm.fma.rn.d(double %233, double %t.8, double 0x3F7D919C52A7DF35) #145 %235 = tail call double @llvm.nvvm.fma.rn.d(double %234, double %t.8, double 0xBF83B4AF28386F4D) #145 %236 = tail call double @llvm.nvvm.fma.rn.d(double %235, double %t.8, double 0xBFA59AF103C37B4D) #145 %237 = tail call double @llvm.nvvm.fma.rn.d(double %236, double %t.8, double 0x3FC5512320B439EF) #145 %238 = tail call double @llvm.nvvm.fma.rn.d(double %237, double %t.8, double 0xBFA5815E8FA26F4F) #145 %239 = tail call double @llvm.nvvm.fma.rn.d(double %238, double %t.8, double 0xBFE4FCF4026AFA2B) #145 %240 = tail call double @llvm.nvvm.fma.rn.d(double %239, double %t.8, double 0x3FE2788CFC6FB619) #145 %241 = tail call double @llvm.nvvm.fma.rn.d(double %240, double %t.8, double 1.000000e+00) #145 %242 = fmul double %s.7, %241 %243 = fdiv double 1.000000e+00, %242 br label %358 244: ; preds = %212 %245 = fcmp ogt float %2, 0xC00CE40000000000 br i1 %245, label %__internal_sin_cos_kerneld.exit.i, label %349 __internal_sin_cos_kerneld.exit.i: ; preds = %244 %246 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %247 = add i32 %1, 1048576 %248 = tail call double @llvm.nvvm.lohi.i2d(i32 %246, i32 %247) #145 %249 = tail call double @llvm.nvvm.round.d(double %248) #145 %250 = fptosi double %249 to i64 %251 = trunc i64 %250 to i32 %252 = fneg double %249 %253 = tail call double @llvm.nvvm.fma.rn.d(double %252, double 5.000000e-01, double %a) #145 %254 = fmul double %253, 0x3CA1A62633145C07 %255 = tail call double @llvm.nvvm.fma.rn.d(double %253, double 0x400921FB54442D18, double %254) #145 %256 = and i32 %251, 1 %257 = shl nuw nsw i32 %256, 3 %258 = zext i32 %257 to i64 %259 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %258 %260 = tail call double @llvm.nvvm.mul.rn.d(double %255, double %255) #145 %.not = icmp eq i32 %256, 0 %261 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %262 = getelementptr inbounds double, ptr addrspace(1) %259, i64 1 %263 = load double, ptr addrspace(1) %262, align 8 %264 = tail call double @llvm.nvvm.fma.rn.d(double %261, double %260, double %263) #145 %265 = getelementptr inbounds double, ptr addrspace(1) %259, i64 2 %266 = load double, ptr addrspace(1) %265, align 8 %267 = tail call double @llvm.nvvm.fma.rn.d(double %264, double %260, double %266) #145 %268 = getelementptr inbounds double, ptr addrspace(1) %259, i64 3 %269 = load double, ptr addrspace(1) %268, align 8 %270 = tail call double @llvm.nvvm.fma.rn.d(double %267, double %260, double %269) #145 %271 = getelementptr inbounds double, ptr addrspace(1) %259, i64 4 %272 = load double, ptr addrspace(1) %271, align 8 %273 = tail call double @llvm.nvvm.fma.rn.d(double %270, double %260, double %272) #145 %274 = getelementptr inbounds double, ptr addrspace(1) %259, i64 5 %275 = load double, ptr addrspace(1) %274, align 8 %276 = tail call double @llvm.nvvm.fma.rn.d(double %273, double %260, double %275) #145 %277 = getelementptr inbounds double, ptr addrspace(1) %259, i64 6 %278 = load double, ptr addrspace(1) %277, align 8 %279 = tail call double @llvm.nvvm.fma.rn.d(double %276, double %260, double %278) #145 %280 = tail call double @llvm.nvvm.fma.rn.d(double %279, double %255, double %255) #145 %281 = tail call double @llvm.nvvm.fma.rn.d(double %279, double %260, double 1.000000e+00) #145 %spec.select = select i1 %.not, double %280, double %281 %282 = and i32 %251, 2 %.not7 = icmp eq i32 %282, 0 %283 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select, double -1.000000e+00, double 0.000000e+00) #145 %.1 = select i1 %.not7, double %spec.select, double %283 %284 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %285 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %284) #145 %286 = fneg double %284 %287 = tail call double @llvm.nvvm.fma.rn.d(double %286, double %285, double 1.000000e+00) #145 %288 = tail call double @llvm.nvvm.fma.rn.d(double %287, double %287, double %287) #145 %289 = tail call double @llvm.nvvm.fma.rn.d(double %288, double %285, double %285) #145 %290 = tail call double @llvm.nvvm.fma.rn.d(double 0xBF64BEE47C38A637, double %289, double 0x3F73C25DA81303D5) #145 %291 = tail call double @llvm.nvvm.fma.rn.d(double %290, double %289, double 0xBF6B7C37A96CFC72) #145 %292 = tail call double @llvm.nvvm.fma.rn.d(double %291, double %289, double 0x3F35A85ABDE1E324) #145 %293 = tail call double @llvm.nvvm.fma.rn.d(double %292, double %289, double 0x3F4A8B28F07B3F05) #145 %294 = tail call double @llvm.nvvm.fma.rn.d(double %293, double %289, double 0xBF0A15D1D45A282F) #145 %295 = tail call double @llvm.nvvm.fma.rn.d(double %294, double %289, double 0xBF4367D3468CB5BE) #145 %296 = tail call double @llvm.nvvm.fma.rn.d(double %295, double %289, double 0x3F12471B0E9F1005) #145 %297 = tail call double @llvm.nvvm.fma.rn.d(double %296, double %289, double 0x3F49B1004744D5C4) #145 %298 = tail call double @llvm.nvvm.fma.rn.d(double %297, double %289, double 0xBF2E13CE69AB4B7F) #145 %299 = tail call double @llvm.nvvm.fma.rn.d(double %298, double %289, double 0xBF65F7268ECF8A01) #145 %300 = tail call double @llvm.nvvm.fma.rn.d(double %299, double %289, double 0x3F6C71C71C71ACE0) #145 %301 = tail call double @llvm.nvvm.fma.rn.d(double %300, double %289, double 0x3FB5555555555556) #145 %302 = fmul double %289, %301 %303 = tail call double @llvm.nvvm.fma.rn.d(double %302, double %.1, double %.1) #145 %304 = fmul double %284, %303 %305 = tail call double @llvm.nvvm.fma.rn.d(double %284, double 0x3FF71547652B82FE, double 0x4338000000000000) #145 %306 = tail call i32 @llvm.nvvm.d2i.lo(double %305) #145 %307 = tail call double @llvm.nvvm.add.rn.d(double %305, double 0xC338000000000000) #145 %308 = tail call double @llvm.nvvm.fma.rn.d(double %307, double 0xBFE62E42FEFA39EF, double %284) #145 %309 = tail call double @llvm.nvvm.fma.rn.d(double %307, double 0xBC7ABC9E3B39803F, double %308) #145 %310 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E5ADE1569CE2BDF, double %309, double 0x3E928AF3FCA213EA) #145 %311 = tail call double @llvm.nvvm.fma.rn.d(double %310, double %309, double 0x3EC71DEE62401315) #145 %312 = tail call double @llvm.nvvm.fma.rn.d(double %311, double %309, double 0x3EFA01997C89EB71) #145 %313 = tail call double @llvm.nvvm.fma.rn.d(double %312, double %309, double 0x3F2A01A014761F65) #145 %314 = tail call double @llvm.nvvm.fma.rn.d(double %313, double %309, double 0x3F56C16C1852B7AF) #145 %315 = tail call double @llvm.nvvm.fma.rn.d(double %314, double %309, double 0x3F81111111122322) #145 %316 = tail call double @llvm.nvvm.fma.rn.d(double %315, double %309, double 0x3FA55555555502A1) #145 %317 = tail call double @llvm.nvvm.fma.rn.d(double %316, double %309, double 0x3FC5555555555511) #145 %318 = tail call double @llvm.nvvm.fma.rn.d(double %317, double %309, double 0x3FE000000000000B) #145 %319 = tail call double @llvm.nvvm.fma.rn.d(double %318, double %309, double 1.000000e+00) #145 %320 = tail call double @llvm.nvvm.fma.rn.d(double %319, double %309, double 1.000000e+00) #145 %321 = tail call i32 @llvm.abs.i32(i32 %306, i1 false) %322 = icmp slt i32 %321, 1023 br i1 %322, label %323, label %326 323: ; preds = %__internal_sin_cos_kerneld.exit.i %324 = shl i32 %306, 20 %325 = add i32 %324, 1072693248 br label %__internal_exp_kernel.exit 326: ; preds = %__internal_sin_cos_kerneld.exit.i %327 = add nsw i32 %306, 2046 %328 = shl i32 %327, 19 %329 = and i32 %328, -1048576 %330 = shl i32 %327, 20 %331 = sub i32 %330, %329 %332 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %329) #145 %333 = fmul double %332, %320 br label %__internal_exp_kernel.exit __internal_exp_kernel.exit: ; preds = %323, %326 %.0 = phi double [ %320, %323 ], [ %333, %326 ] %k.i.i.0 = phi i32 [ %325, %323 ], [ %331, %326 ] %334 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %k.i.i.0) #145 %335 = fmul double %.0, %334 %336 = fmul double %335, 0xBC9A6A0D6F814637 %337 = tail call double @llvm.nvvm.fma.rn.d(double %335, double 0x3FF40D931FF62706, double %336) #145 %338 = fdiv double %337, %304 %339 = fadd double %284, -5.000000e-01 %340 = fcmp ole float %2, 0xC00C3C8000000000 %341 = tail call i32 @llvm.nvvm.d2i.lo(double %339) #145 %342 = tail call i32 @llvm.nvvm.d2i.hi(double %339) #145 %343 = add i32 %342, -1048576 %344 = tail call double @llvm.nvvm.lohi.i2d(i32 %341, i32 %343) #145 %t.9 = select i1 %340, double %344, double %339 %345 = fneg double %t.9 %346 = tail call fastcc double @__internal_accurate_pow(double %284, double %345) %347 = select i1 %340, double %346, double 1.000000e+00 %s.8 = fmul double %347, %338 %348 = fmul double %346, %s.8 br label %358 349: ; preds = %244 %350 = tail call double @llvm.nvvm.floor.d(double %a) #145 %351 = fmul double %350, 5.000000e-01 %352 = tail call double @llvm.nvvm.floor.d(double %351) #145 %353 = fmul double %352, 2.000000e+00 %354 = fsub double %350, %353 %355 = fcmp oeq double %354, 1.000000e+00 %. = select i1 %355, double -0.000000e+00, double 0.000000e+00 br label %358 356: ; preds = %207 %357 = fadd double %a, %a br label %358 358: ; preds = %356, %214, %349, %__internal_exp_kernel.exit, %209, %6, %__nv_exp.exit.i %s.13 = phi double [ %36, %6 ], [ %r.i.0, %__nv_exp.exit.i ], [ %357, %356 ], [ 0xFFF8000000000000, %209 ], [ %243, %214 ], [ %348, %__internal_exp_kernel.exit ], [ %., %349 ] ret double %s.13 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_lgamma(double %a) unnamed_addr #131 { %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = fcmp ugt double %1, 0x7FF0000000000000 br i1 %2, label %120, label %3 3: ; preds = %0 %4 = tail call fastcc double @__internal_lgamma_pos(double %1) %5 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %6 = icmp slt i32 %5, 0 br i1 %6, label %7, label %122 7: ; preds = %3 %8 = tail call double @llvm.nvvm.trunc.d(double %1) #145 %9 = fcmp oeq double %1, %8 br i1 %9, label %122, label %10 10: ; preds = %7 %11 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %12 = icmp slt i32 %11, 1006632960 br i1 %12, label %54, label %__internal_sin_cos_kerneld.exit.i __internal_sin_cos_kerneld.exit.i: ; preds = %10 %13 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %14 = add nuw i32 %11, 1048576 %15 = tail call double @llvm.nvvm.lohi.i2d(i32 %13, i32 %14) #145 %16 = tail call double @llvm.nvvm.round.d(double %15) #145 %17 = fptosi double %16 to i64 %18 = trunc i64 %17 to i32 %19 = fneg double %16 %20 = tail call double @llvm.nvvm.fma.rn.d(double %19, double 5.000000e-01, double %1) #145 %21 = fmul double %20, 0x3CA1A62633145C07 %22 = tail call double @llvm.nvvm.fma.rn.d(double %20, double 0x400921FB54442D18, double %21) #145 %23 = and i32 %18, 1 %24 = shl nuw nsw i32 %23, 3 %25 = zext i32 %24 to i64 %26 = getelementptr inbounds double, ptr addrspace(1) @__cudart_sin_cos_coeffs, i64 %25 %27 = tail call double @llvm.nvvm.mul.rn.d(double %22, double %22) #145 %.not = icmp eq i32 %23, 0 %28 = select i1 %.not, double 0x3DE5DB65F9785EBA, double 0xBDA8FF8320FD8164 %29 = getelementptr inbounds double, ptr addrspace(1) %26, i64 1 %30 = load double, ptr addrspace(1) %29, align 8 %31 = tail call double @llvm.nvvm.fma.rn.d(double %28, double %27, double %30) #145 %32 = getelementptr inbounds double, ptr addrspace(1) %26, i64 2 %33 = load double, ptr addrspace(1) %32, align 8 %34 = tail call double @llvm.nvvm.fma.rn.d(double %31, double %27, double %33) #145 %35 = getelementptr inbounds double, ptr addrspace(1) %26, i64 3 %36 = load double, ptr addrspace(1) %35, align 8 %37 = tail call double @llvm.nvvm.fma.rn.d(double %34, double %27, double %36) #145 %38 = getelementptr inbounds double, ptr addrspace(1) %26, i64 4 %39 = load double, ptr addrspace(1) %38, align 8 %40 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %27, double %39) #145 %41 = getelementptr inbounds double, ptr addrspace(1) %26, i64 5 %42 = load double, ptr addrspace(1) %41, align 8 %43 = tail call double @llvm.nvvm.fma.rn.d(double %40, double %27, double %42) #145 %44 = getelementptr inbounds double, ptr addrspace(1) %26, i64 6 %45 = load double, ptr addrspace(1) %44, align 8 %46 = tail call double @llvm.nvvm.fma.rn.d(double %43, double %27, double %45) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %22, double %22) #145 %48 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %27, double 1.000000e+00) #145 %spec.select = select i1 %.not, double %47, double %48 %49 = and i32 %18, 2 %.not8 = icmp eq i32 %49, 0 %50 = tail call double @llvm.nvvm.fma.rn.d(double %spec.select, double -1.000000e+00, double 0.000000e+00) #145 %.1 = select i1 %.not8, double %spec.select, double %50 %51 = tail call double @llvm.nvvm.fabs.d(double %.1) #145 %52 = fmul double %1, %51 %53 = fdiv double 0x400921FB54442D18, %52 %.pre = tail call i32 @llvm.nvvm.d2i.hi(double %53) #145 br label %54 54: ; preds = %10, %__internal_sin_cos_kerneld.exit.i %.pre-phi = phi i32 [ %.pre, %__internal_sin_cos_kerneld.exit.i ], [ %11, %10 ] %u.0 = phi double [ %53, %__internal_sin_cos_kerneld.exit.i ], [ %1, %10 ] %55 = tail call i32 @llvm.nvvm.d2i.lo(double %u.0) #145 %56 = icmp slt i32 %.pre-phi, 1048576 br i1 %56, label %57, label %61 57: ; preds = %54 %58 = fmul double %u.0, 0x4350000000000000 %59 = tail call i32 @llvm.nvvm.d2i.hi(double %58) #145 %60 = tail call i32 @llvm.nvvm.d2i.lo(double %58) #145 br label %61 61: ; preds = %57, %54 %.0 = phi double [ %58, %57 ], [ %u.0, %54 ] %ihi.i.0 = phi i32 [ %59, %57 ], [ %.pre-phi, %54 ] %ilo.i.0 = phi i32 [ %60, %57 ], [ %55, %54 ] %e.i.0 = phi i32 [ -1077, %57 ], [ -1023, %54 ] %62 = add i32 %ihi.i.0, -1 %63 = icmp ult i32 %62, 2146435071 br i1 %63, label %64, label %113 64: ; preds = %61 %65 = lshr i32 %ihi.i.0, 20 %66 = add nsw i32 %e.i.0, %65 %67 = and i32 %ihi.i.0, -2146435073 %68 = or i32 %67, 1072693248 %69 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %68) #145 %70 = icmp ugt i32 %68, 1073127582 br i1 %70, label %71, label %77 71: ; preds = %64 %72 = tail call i32 @llvm.nvvm.d2i.lo(double %69) #145 %73 = tail call i32 @llvm.nvvm.d2i.hi(double %69) #145 %74 = add i32 %73, -1048576 %75 = tail call double @llvm.nvvm.lohi.i2d(i32 %72, i32 %74) #145 %76 = add nsw i32 %66, 1 br label %77 77: ; preds = %71, %64 %m.i.0 = phi double [ %75, %71 ], [ %69, %64 ] %e.i.1 = phi i32 [ %76, %71 ], [ %66, %64 ] %78 = fadd double %m.i.0, -1.000000e+00 %79 = fadd double %m.i.0, 1.000000e+00 %80 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %79) #145 %81 = fneg double %79 %82 = tail call double @llvm.nvvm.fma.rn.d(double %81, double %80, double 1.000000e+00) #145 %83 = tail call double @llvm.nvvm.fma.rn.d(double %82, double %82, double %82) #145 %84 = tail call double @llvm.nvvm.fma.rn.d(double %83, double %80, double %80) #145 %85 = fmul double %78, %84 %86 = fadd double %85, %85 %87 = fmul double %86, %86 %88 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %87, double 0x3ED0EE258B7A8B04) #145 %89 = tail call double @llvm.nvvm.fma.rn.d(double %88, double %87, double 0x3EF3B2669F02676F) #145 %90 = tail call double @llvm.nvvm.fma.rn.d(double %89, double %87, double 0x3F1745CBA9AB0956) #145 %91 = tail call double @llvm.nvvm.fma.rn.d(double %90, double %87, double 0x3F3C71C72D1B5154) #145 %92 = tail call double @llvm.nvvm.fma.rn.d(double %91, double %87, double 0x3F624924923BE72D) #145 %93 = tail call double @llvm.nvvm.fma.rn.d(double %92, double %87, double 0x3F8999999999A3C4) #145 %94 = tail call double @llvm.nvvm.fma.rn.d(double %93, double %87, double 0x3FB5555555555554) #145 %95 = fsub double %78, %86 %96 = fmul double %95, 2.000000e+00 %97 = fneg double %86 %98 = tail call double @llvm.nvvm.fma.rn.d(double %97, double %78, double %96) #145 %99 = fmul double %84, %98 %100 = fmul double %87, %94 %101 = tail call double @llvm.nvvm.fma.rn.d(double %100, double %86, double %99) #145 %102 = xor i32 %e.i.1, -2147483648 %103 = tail call double @llvm.nvvm.lohi.i2d(i32 %102, i32 1127219200) #145 %104 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %105 = fsub double %103, %104 %106 = tail call double @llvm.nvvm.fma.rn.d(double %105, double 0x3FE62E42FEFA39EF, double %86) #145 %107 = fneg double %105 %108 = tail call double @llvm.nvvm.fma.rn.d(double %107, double 0x3FE62E42FEFA39EF, double %106) #145 %109 = fsub double %108, %86 %110 = fsub double %101, %109 %111 = tail call double @llvm.nvvm.fma.rn.d(double %105, double 0x3C7ABC9E3B39803F, double %110) #145 %112 = fadd double %106, %111 br label %__nv_log.exit 113: ; preds = %61 %114 = tail call double @llvm.nvvm.fma.rn.d(double %.0, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %115 = tail call i32 @llvm.nvvm.d2i.hi(double %.0) #145 %116 = bitcast i32 %115 to float %117 = fcmp oeq float %116, 0.000000e+00 %q.i.0 = select i1 %117, double 0xFFF0000000000000, double %114 br label %__nv_log.exit __nv_log.exit: ; preds = %77, %113 %q.i.1 = phi double [ %112, %77 ], [ %q.i.0, %113 ] %118 = fneg double %q.i.1 %119 = fsub double %q.i.1, %4 %t.0 = select i1 %12, double %118, double %119 br label %122 120: ; preds = %0 %121 = fadd double %a, %a br label %122 122: ; preds = %3, %7, %__nv_log.exit, %120 %t.3 = phi double [ %121, %120 ], [ %4, %3 ], [ %t.0, %__nv_log.exit ], [ 0x7FF0000000000000, %7 ] ret double %t.3 } ; Function Attrs: mustprogress nofree noinline nosync nounwind readnone willreturn define internal fastcc double @__internal_lgamma_pos(double %a) unnamed_addr #116 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = icmp sgt i32 %1, 1074266111 br i1 %2, label %3, label %100 3: ; preds = %0 %4 = icmp ugt i32 %1, 1075838975 br i1 %4, label %5, label %82 5: ; preds = %3 %6 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %a) #145 %7 = fneg double %a %8 = tail call double @llvm.nvvm.fma.rn.d(double %7, double %6, double 1.000000e+00) #145 %9 = tail call double @llvm.nvvm.fma.rn.d(double %8, double %8, double %8) #145 %10 = tail call double @llvm.nvvm.fma.rn.d(double %9, double %6, double %6) #145 %11 = fmul double %10, %10 %12 = tail call double @llvm.nvvm.fma.rn.d(double 0xBF5AC321034783F9, double %11, double 0x3F4B68B992738FBF) #145 %13 = tail call double @llvm.nvvm.fma.rn.d(double %12, double %11, double 0xBF4380D01E4F7B8C) #145 %14 = tail call double @llvm.nvvm.fma.rn.d(double %13, double %11, double 0x3F4A019FA29F7264) #145 %15 = tail call double @llvm.nvvm.fma.rn.d(double %14, double %11, double 0xBF66C16C16B2ACEC) #145 %16 = tail call double @llvm.nvvm.fma.rn.d(double %15, double %11, double 0x3FB5555555555545) #145 %17 = tail call double @llvm.nvvm.fma.rn.d(double %16, double %10, double 0x3FED67F1C864BEAE) #145 %18 = icmp ult i32 %1, 2146435072 br i1 %18, label %19, label %69 19: ; preds = %5 %20 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %21 = lshr i32 %1, 20 %22 = add nsw i32 %21, -1023 %23 = and i32 %1, -2146435073 %24 = or i32 %23, 1072693248 %25 = tail call double @llvm.nvvm.lohi.i2d(i32 %20, i32 %24) #145 %26 = icmp ugt i32 %24, 1073127582 br i1 %26, label %27, label %33 27: ; preds = %19 %28 = tail call i32 @llvm.nvvm.d2i.lo(double %25) #145 %29 = tail call i32 @llvm.nvvm.d2i.hi(double %25) #145 %30 = add i32 %29, -1048576 %31 = tail call double @llvm.nvvm.lohi.i2d(i32 %28, i32 %30) #145 %32 = add nsw i32 %21, -1022 br label %33 33: ; preds = %27, %19 %m.i10.0 = phi double [ %31, %27 ], [ %25, %19 ] %e.i22.1 = phi i32 [ %32, %27 ], [ %22, %19 ] %34 = fadd double %m.i10.0, -1.000000e+00 %35 = fadd double %m.i10.0, 1.000000e+00 %36 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %35) #145 %37 = fneg double %35 %38 = tail call double @llvm.nvvm.fma.rn.d(double %37, double %36, double 1.000000e+00) #145 %39 = tail call double @llvm.nvvm.fma.rn.d(double %38, double %38, double %38) #145 %40 = tail call double @llvm.nvvm.fma.rn.d(double %39, double %36, double %36) #145 %41 = fmul double %34, %40 %42 = fadd double %41, %41 %43 = fmul double %42, %42 %44 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %43, double 0x3ED0EE258B7A8B04) #145 %45 = tail call double @llvm.nvvm.fma.rn.d(double %44, double %43, double 0x3EF3B2669F02676F) #145 %46 = tail call double @llvm.nvvm.fma.rn.d(double %45, double %43, double 0x3F1745CBA9AB0956) #145 %47 = tail call double @llvm.nvvm.fma.rn.d(double %46, double %43, double 0x3F3C71C72D1B5154) #145 %48 = tail call double @llvm.nvvm.fma.rn.d(double %47, double %43, double 0x3F624924923BE72D) #145 %49 = tail call double @llvm.nvvm.fma.rn.d(double %48, double %43, double 0x3F8999999999A3C4) #145 %50 = tail call double @llvm.nvvm.fma.rn.d(double %49, double %43, double 0x3FB5555555555554) #145 %51 = fsub double %34, %42 %52 = fmul double %51, 2.000000e+00 %53 = fneg double %42 %54 = tail call double @llvm.nvvm.fma.rn.d(double %53, double %34, double %52) #145 %55 = fmul double %40, %54 %56 = fmul double %43, %50 %57 = tail call double @llvm.nvvm.fma.rn.d(double %56, double %42, double %55) #145 %58 = xor i32 %e.i22.1, -2147483648 %59 = tail call double @llvm.nvvm.lohi.i2d(i32 %58, i32 1127219200) #145 %60 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %61 = fsub double %59, %60 %62 = tail call double @llvm.nvvm.fma.rn.d(double %61, double 0x3FE62E42FEFA39EF, double %42) #145 %63 = fneg double %61 %64 = tail call double @llvm.nvvm.fma.rn.d(double %63, double 0x3FE62E42FEFA39EF, double %62) #145 %65 = fsub double %64, %42 %66 = fsub double %57, %65 %67 = tail call double @llvm.nvvm.fma.rn.d(double %61, double 0x3C7ABC9E3B39803F, double %66) #145 %68 = fadd double %62, %67 br label %__nv_log.exit23 69: ; preds = %5 %70 = tail call double @llvm.nvvm.fma.rn.d(double %a, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %71 = bitcast i32 %1 to float %72 = fcmp oeq float %71, 0.000000e+00 %q.i16.0 = select i1 %72, double 0xFFF0000000000000, double %70 br label %__nv_log.exit23 __nv_log.exit23: ; preds = %33, %69 %q.i16.1 = phi double [ %68, %33 ], [ %q.i16.0, %69 ] %73 = tail call i32 @llvm.nvvm.d2i.lo(double %q.i16.1) #145 %74 = tail call i32 @llvm.nvvm.d2i.hi(double %q.i16.1) #145 %75 = add i32 %74, -1048576 %76 = tail call double @llvm.nvvm.lohi.i2d(i32 %73, i32 %75) #145 %77 = fadd double %a, -5.000000e-01 %78 = tail call double @llvm.nvvm.fma.rn.d(double %76, double %77, double %17) #145 %79 = tail call double @llvm.nvvm.fma.rn.d(double %76, double %77, double %7) #145 %80 = fadd double %79, %78 %81 = fcmp oeq double %a, 0x7FF0000000000000 %t.0 = select i1 %81, double 0x7FF0000000000000, double %80 br label %231 82: ; preds = %3 %83 = fadd double %a, -3.000000e+00 %84 = tail call double @llvm.nvvm.fma.rn.d(double 0xC0AF7040BB18FB05, double %83, double 0xC1122B7730207EF3) #145 %85 = tail call double @llvm.nvvm.fma.rn.d(double %84, double %83, double 0xC1585A0DB81DE7D0) #145 %86 = tail call double @llvm.nvvm.fma.rn.d(double %85, double %83, double 0xC18A992B8BA94677) #145 %87 = tail call double @llvm.nvvm.fma.rn.d(double %86, double %83, double 0xC1AAC5CB6957CC20) #145 %88 = tail call double @llvm.nvvm.fma.rn.d(double %87, double %83, double 0xC1BC0E2B308774BE) #145 %89 = tail call double @llvm.nvvm.fma.rn.d(double %88, double %83, double 0xC1C6BA13DCAE7F67) #145 %90 = tail call double @llvm.nvvm.fma.rn.d(double %89, double %83, double 0xC1CCF33B9C3D120C) #145 %91 = fadd double %83, 0xC08FF62E0BE189FE %92 = tail call double @llvm.nvvm.fma.rn.d(double %91, double %83, double 0xC10074FACE10C93F) #145 %93 = tail call double @llvm.nvvm.fma.rn.d(double %92, double %83, double 0xC151B662F8D75791) #145 %94 = tail call double @llvm.nvvm.fma.rn.d(double %93, double %83, double 0xC18EE64AB4D207F7) #145 %95 = tail call double @llvm.nvvm.fma.rn.d(double %94, double %83, double 0xC1B9051687C9951A) #145 %96 = tail call double @llvm.nvvm.fma.rn.d(double %95, double %83, double 0xC1D2B866BF0B853D) #145 %97 = tail call double @llvm.nvvm.fma.rn.d(double %96, double %83, double 0xC1D4E2130E9DC133) #145 %98 = fdiv double %90, %97 %99 = fadd double %83, %98 br label %231 100: ; preds = %0 %101 = icmp sgt i32 %1, 1073217535 br i1 %101, label %102, label %124 102: ; preds = %100 %103 = fadd double %a, -2.000000e+00 %104 = tail call double @llvm.nvvm.fma.rn.d(double 0x3E452636124338B3, double %103, double 0xBE71FA71D78C0EE2) #145 %105 = tail call double @llvm.nvvm.fma.rn.d(double %104, double %103, double 0x3E8D111F31E61306) #145 %106 = tail call double @llvm.nvvm.fma.rn.d(double %105, double %103, double 0xBEA0502BBE1B2706) #145 %107 = tail call double @llvm.nvvm.fma.rn.d(double %106, double %103, double 0x3EB06850B2970292) #145 %108 = tail call double @llvm.nvvm.fma.rn.d(double %107, double %103, double 0xBEC108474875033D) #145 %109 = tail call double @llvm.nvvm.fma.rn.d(double %108, double %103, double 0x3ED24ACCC62909DC) #145 %110 = tail call double @llvm.nvvm.fma.rn.d(double %109, double %103, double 0xBEE3CB25209E63BE) #145 %111 = tail call double @llvm.nvvm.fma.rn.d(double %110, double %103, double 0x3EF581CBBC8CDC7B) #145 %112 = tail call double @llvm.nvvm.fma.rn.d(double %111, double %103, double 0xBF078E04B85C7597) #145 %113 = tail call double @llvm.nvvm.fma.rn.d(double %112, double %103, double 0x3F1A12730CF45051) #145 %114 = tail call double @llvm.nvvm.fma.rn.d(double %113, double %103, double 0xBF2D3FD354062012) #145 %115 = tail call double @llvm.nvvm.fma.rn.d(double %114, double %103, double 0x3F40B36B0B4DE323) #145 %116 = tail call double @llvm.nvvm.fma.rn.d(double %115, double %103, double 0xBF538AC5C6D0317A) #145 %117 = tail call double @llvm.nvvm.fma.rn.d(double %116, double %103, double 0x3F67ADD6EAAB19FC) #145 %118 = tail call double @llvm.nvvm.fma.rn.d(double %117, double %103, double 0xBF7E404FC20E4D5B) #145 %119 = tail call double @llvm.nvvm.fma.rn.d(double %118, double %103, double 0x3F951322AC7DA390) #145 %120 = tail call double @llvm.nvvm.fma.rn.d(double %119, double %103, double 0xBFB13E001A5578A3) #145 %121 = tail call double @llvm.nvvm.fma.rn.d(double %120, double %103, double 0x3FD4A34CC4A60FA3) #145 %122 = tail call double @llvm.nvvm.fma.rn.d(double %121, double %103, double 0x3FDB0EE6072093CF) #145 %123 = fmul double %103, %122 br label %231 124: ; preds = %100 %125 = icmp sgt i32 %1, 1072064101 br i1 %125, label %126, label %150 126: ; preds = %124 %127 = fsub double 1.000000e+00, %a %128 = tail call double @llvm.nvvm.fma.rn.d(double 0x3F881F6D2A4C4310, double %127, double 0x3FA3EB504359EB88) #145 %129 = tail call double @llvm.nvvm.fma.rn.d(double %128, double %127, double 0x3FAE35D8DEB06317) #145 %130 = tail call double @llvm.nvvm.fma.rn.d(double %129, double %127, double 0x3FAED469A8B6ECCE) #145 %131 = tail call double @llvm.nvvm.fma.rn.d(double %130, double %127, double 0x3FACC1B1C357BEFE) #145 %132 = tail call double @llvm.nvvm.fma.rn.d(double %131, double %127, double 0x3FAD7154DB67F79F) #145 %133 = tail call double @llvm.nvvm.fma.rn.d(double %132, double %127, double 0x3FAFCC622CF2F7BB) #145 %134 = tail call double @llvm.nvvm.fma.rn.d(double %133, double %127, double 0x3FB11747A4D1CC43) #145 %135 = tail call double @llvm.nvvm.fma.rn.d(double %134, double %127, double 0x3FB24CE16A21B8AC) #145 %136 = tail call double @llvm.nvvm.fma.rn.d(double %135, double %127, double 0x3FB3B1C21A7BCB00) #145 %137 = tail call double @llvm.nvvm.fma.rn.d(double %136, double %127, double 0x3FB556723452ED57) #145 %138 = tail call double @llvm.nvvm.fma.rn.d(double %137, double %127, double 0x3FB748C00891544F) #145 %139 = tail call double @llvm.nvvm.fma.rn.d(double %138, double %127, double 0x3FB9A0207808CF40) #145 %140 = tail call double @llvm.nvvm.fma.rn.d(double %139, double %127, double 0x3FBC80673B8AE26B) #145 %141 = tail call double @llvm.nvvm.fma.rn.d(double %140, double %127, double 0x3FC010B364B7E555) #145 %142 = tail call double @llvm.nvvm.fma.rn.d(double %141, double %127, double 0x3FC2703A1D239658) #145 %143 = tail call double @llvm.nvvm.fma.rn.d(double %142, double %127, double 0x3FC5B40CB1137E6E) #145 %144 = tail call double @llvm.nvvm.fma.rn.d(double %143, double %127, double 0x3FCA8B9C17AC4F03) #145 %145 = tail call double @llvm.nvvm.fma.rn.d(double %144, double %127, double 0x3FD151322AC7CB52) #145 %146 = tail call double @llvm.nvvm.fma.rn.d(double %145, double %127, double 0x3FD9A4D55BEAB1D4) #145 %147 = tail call double @llvm.nvvm.fma.rn.d(double %146, double %127, double 0x3FEA51A6625307D6) #145 %148 = tail call double @llvm.nvvm.fma.rn.d(double %147, double %127, double 0x3FE2788CFC6FB619) #145 %149 = fmul double %127, %148 br label %231 150: ; preds = %124 %151 = tail call double @llvm.nvvm.fma.rn.d(double 0xBE7844988BFE6590, double %a, double 0x3EA7B77CEB0625E8) #145 %152 = tail call double @llvm.nvvm.fma.rn.d(double %151, double %a, double 0xBE998C69C8710CC4) #145 %153 = tail call double @llvm.nvvm.fma.rn.d(double %152, double %a, double 0xBEF6527A5A11CF6E) #145 %154 = tail call double @llvm.nvvm.fma.rn.d(double %153, double %a, double 0x3F20EC2950B1B5DE) #145 %155 = tail call double @llvm.nvvm.fma.rn.d(double %154, double %a, double 0xBF2C4D80C24BA278) #145 %156 = tail call double @llvm.nvvm.fma.rn.d(double %155, double %a, double 0xBF5315B4E8CC0D09) #145 %157 = tail call double @llvm.nvvm.fma.rn.d(double %156, double %a, double 0x3F7D917F15D50020) #145 %158 = tail call double @llvm.nvvm.fma.rn.d(double %157, double %a, double 0xBF83B4ABB41CB6FA) #145 %159 = tail call double @llvm.nvvm.fma.rn.d(double %158, double %a, double 0xBFA59AF1275B7120) #145 %160 = tail call double @llvm.nvvm.fma.rn.d(double %159, double %a, double 0x3FC5512321A168A0) #145 %161 = tail call double @llvm.nvvm.fma.rn.d(double %160, double %a, double 0xBFA5815E8FDCE74C) #145 %162 = tail call double @llvm.nvvm.fma.rn.d(double %161, double %a, double 0xBFE4FCF4026ADD1A) #145 %163 = tail call double @llvm.nvvm.fma.rn.d(double %162, double %a, double 0x3FE2788CFC6FB5C8) #145 %164 = fmul double %163, %a %165 = tail call double @llvm.nvvm.fma.rn.d(double %164, double %a, double %a) #145 %166 = tail call i32 @llvm.nvvm.d2i.hi(double %165) #145 %167 = tail call i32 @llvm.nvvm.d2i.lo(double %165) #145 %168 = icmp slt i32 %166, 1048576 br i1 %168, label %169, label %173 169: ; preds = %150 %170 = fmul double %165, 0x4350000000000000 %171 = tail call i32 @llvm.nvvm.d2i.hi(double %170) #145 %172 = tail call i32 @llvm.nvvm.d2i.lo(double %170) #145 br label %173 173: ; preds = %169, %150 %.0 = phi double [ %170, %169 ], [ %165, %150 ] %ihi.i.0 = phi i32 [ %171, %169 ], [ %166, %150 ] %ilo.i.0 = phi i32 [ %172, %169 ], [ %167, %150 ] %e.i.0 = phi i32 [ -1077, %169 ], [ -1023, %150 ] %174 = add i32 %ihi.i.0, -1 %175 = icmp ult i32 %174, 2146435071 br i1 %175, label %176, label %225 176: ; preds = %173 %177 = lshr i32 %ihi.i.0, 20 %178 = add nsw i32 %e.i.0, %177 %179 = and i32 %ihi.i.0, -2146435073 %180 = or i32 %179, 1072693248 %181 = tail call double @llvm.nvvm.lohi.i2d(i32 %ilo.i.0, i32 %180) #145 %182 = icmp ugt i32 %180, 1073127582 br i1 %182, label %183, label %189 183: ; preds = %176 %184 = tail call i32 @llvm.nvvm.d2i.lo(double %181) #145 %185 = tail call i32 @llvm.nvvm.d2i.hi(double %181) #145 %186 = add i32 %185, -1048576 %187 = tail call double @llvm.nvvm.lohi.i2d(i32 %184, i32 %186) #145 %188 = add nsw i32 %178, 1 br label %189 189: ; preds = %183, %176 %m.i.0 = phi double [ %187, %183 ], [ %181, %176 ] %e.i.1 = phi i32 [ %188, %183 ], [ %178, %176 ] %190 = fadd double %m.i.0, -1.000000e+00 %191 = fadd double %m.i.0, 1.000000e+00 %192 = tail call double @llvm.nvvm.rcp.approx.ftz.d(double %191) #145 %193 = fneg double %191 %194 = tail call double @llvm.nvvm.fma.rn.d(double %193, double %192, double 1.000000e+00) #145 %195 = tail call double @llvm.nvvm.fma.rn.d(double %194, double %194, double %194) #145 %196 = tail call double @llvm.nvvm.fma.rn.d(double %195, double %192, double %192) #145 %197 = fmul double %190, %196 %198 = fadd double %197, %197 %199 = fmul double %198, %198 %200 = tail call double @llvm.nvvm.fma.rn.d(double 0x3EB1380B3AE80F1E, double %199, double 0x3ED0EE258B7A8B04) #145 %201 = tail call double @llvm.nvvm.fma.rn.d(double %200, double %199, double 0x3EF3B2669F02676F) #145 %202 = tail call double @llvm.nvvm.fma.rn.d(double %201, double %199, double 0x3F1745CBA9AB0956) #145 %203 = tail call double @llvm.nvvm.fma.rn.d(double %202, double %199, double 0x3F3C71C72D1B5154) #145 %204 = tail call double @llvm.nvvm.fma.rn.d(double %203, double %199, double 0x3F624924923BE72D) #145 %205 = tail call double @llvm.nvvm.fma.rn.d(double %204, double %199, double 0x3F8999999999A3C4) #145 %206 = tail call double @llvm.nvvm.fma.rn.d(double %205, double %199, double 0x3FB5555555555554) #145 %207 = fsub double %190, %198 %208 = fmul double %207, 2.000000e+00 %209 = fneg double %198 %210 = tail call double @llvm.nvvm.fma.rn.d(double %209, double %190, double %208) #145 %211 = fmul double %196, %210 %212 = fmul double %199, %206 %213 = tail call double @llvm.nvvm.fma.rn.d(double %212, double %198, double %211) #145 %214 = xor i32 %e.i.1, -2147483648 %215 = tail call double @llvm.nvvm.lohi.i2d(i32 %214, i32 1127219200) #145 %216 = tail call double @llvm.nvvm.lohi.i2d(i32 -2147483648, i32 1127219200) #145 %217 = fsub double %215, %216 %218 = tail call double @llvm.nvvm.fma.rn.d(double %217, double 0x3FE62E42FEFA39EF, double %198) #145 %219 = fneg double %217 %220 = tail call double @llvm.nvvm.fma.rn.d(double %219, double 0x3FE62E42FEFA39EF, double %218) #145 %221 = fsub double %220, %198 %222 = fsub double %213, %221 %223 = tail call double @llvm.nvvm.fma.rn.d(double %217, double 0x3C7ABC9E3B39803F, double %222) #145 %224 = fadd double %218, %223 br label %__nv_log.exit 225: ; preds = %173 %226 = tail call double @llvm.nvvm.fma.rn.d(double %.0, double 0x7FF0000000000000, double 0x7FF0000000000000) #145 %227 = tail call i32 @llvm.nvvm.d2i.hi(double %.0) #145 %228 = bitcast i32 %227 to float %229 = fcmp oeq float %228, 0.000000e+00 %q.i.0 = select i1 %229, double 0xFFF0000000000000, double %226 br label %__nv_log.exit __nv_log.exit: ; preds = %189, %225 %q.i.1 = phi double [ %224, %189 ], [ %q.i.0, %225 ] %230 = fneg double %q.i.1 br label %231 231: ; preds = %102, %__nv_log.exit, %126, %__nv_log.exit23, %82 %t.4 = phi double [ %t.0, %__nv_log.exit23 ], [ %99, %82 ], [ %123, %102 ], [ %149, %126 ], [ %230, %__nv_log.exit ] ret double %t.4 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_ldexp(double %a, i32 "enzyme_inactive" %b) unnamed_addr #132 { %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = tail call i32 @llvm.smin.i32(i32 %b, i32 2200) %3 = tail call i32 @llvm.smax.i32(i32 %2, i32 -2200) %4 = fcmp oeq double %1, 0.000000e+00 %5 = fcmp oeq double %1, 0x7FF0000000000000 %or.cond = or i1 %4, %5 %6 = icmp eq i32 %3, 0 %or.cond1 = select i1 %or.cond, i1 true, i1 %6 br i1 %or.cond1, label %7, label %10 7: ; preds = %0 %8 = fcmp ogt double %1, 0.000000e+00 %9 = select i1 %8, double -0.000000e+00, double %a %.0 = fadd double %9, %a br label %44 10: ; preds = %0 %11 = tail call i32 @llvm.abs.i32(i32 %3, i1 true) %12 = icmp ult i32 %11, 1022 br i1 %12, label %13, label %18 13: ; preds = %10 %14 = shl i32 %3, 20 %15 = add i32 %14, 1072693248 %16 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %15) #145 %17 = fmul double %16, %a br label %44 18: ; preds = %10 %19 = icmp ult i32 %11, 2044 %.lhs.trunc = trunc i32 %3 to i16 br i1 %19, label %20, label %31 20: ; preds = %18 %21 = sdiv i16 %.lhs.trunc, 2 %.sext = sext i16 %21 to i32 %22 = shl nsw i32 %.sext, 20 %23 = add i32 %22, 1072693248 %24 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %23) #145 %25 = fmul double %24, %a %26 = sub nsw i32 %3, %.sext %27 = shl i32 %26, 20 %28 = add i32 %27, 1072693248 %29 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %28) #145 %30 = fmul double %25, %29 br label %44 31: ; preds = %18 %32 = sdiv i16 %.lhs.trunc, 4 %.sext3 = sext i16 %32 to i32 %33 = shl nsw i32 %.sext3, 20 %34 = add nsw i32 %33, 1072693248 %35 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %34) #145 %36 = fmul double %35, %a %37 = fmul double %35, %36 %38 = fmul double %35, %37 %.neg = mul nsw i32 %.sext3, 4093 %39 = add nsw i32 %.neg, %3 %40 = shl i32 %39, 20 %41 = add i32 %40, 1072693248 %42 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %41) #145 %43 = fmul double %42, %38 br label %44 44: ; preds = %13, %31, %20, %7 %.3 = phi double [ %.0, %7 ], [ %17, %13 ], [ %30, %20 ], [ %43, %31 ] ret double %.3 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_scalbn(double %a, i32 "enzyme_inactive" %b) unnamed_addr #133 { %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = tail call i32 @llvm.smin.i32(i32 %b, i32 2200) %3 = tail call i32 @llvm.smax.i32(i32 %2, i32 -2200) %4 = fcmp oeq double %1, 0.000000e+00 %5 = fcmp oeq double %1, 0x7FF0000000000000 %or.cond = or i1 %4, %5 %6 = icmp eq i32 %3, 0 %or.cond1 = select i1 %or.cond, i1 true, i1 %6 br i1 %or.cond1, label %7, label %10 7: ; preds = %0 %8 = fcmp ogt double %1, 0.000000e+00 %9 = select i1 %8, double -0.000000e+00, double %a %.0 = fadd double %9, %a br label %__nv_ldexp.exit 10: ; preds = %0 %11 = tail call i32 @llvm.abs.i32(i32 %3, i1 true) %12 = icmp ult i32 %11, 1022 br i1 %12, label %13, label %18 13: ; preds = %10 %14 = shl i32 %3, 20 %15 = add i32 %14, 1072693248 %16 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %15) #145 %17 = fmul double %16, %a br label %__nv_ldexp.exit 18: ; preds = %10 %19 = icmp ult i32 %11, 2044 %.lhs.trunc = trunc i32 %3 to i16 br i1 %19, label %20, label %31 20: ; preds = %18 %21 = sdiv i16 %.lhs.trunc, 2 %.sext = sext i16 %21 to i32 %22 = shl nsw i32 %.sext, 20 %23 = add i32 %22, 1072693248 %24 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %23) #145 %25 = fmul double %24, %a %26 = sub nsw i32 %3, %.sext %27 = shl i32 %26, 20 %28 = add i32 %27, 1072693248 %29 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %28) #145 %30 = fmul double %25, %29 br label %__nv_ldexp.exit 31: ; preds = %18 %32 = sdiv i16 %.lhs.trunc, 4 %.sext3 = sext i16 %32 to i32 %33 = shl nsw i32 %.sext3, 20 %34 = add nsw i32 %33, 1072693248 %35 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %34) #145 %36 = fmul double %35, %a %37 = fmul double %35, %36 %38 = fmul double %35, %37 %.neg = mul nsw i32 %.sext3, 4093 %39 = add nsw i32 %.neg, %3 %40 = shl i32 %39, 20 %41 = add i32 %40, 1072693248 %42 = tail call double @llvm.nvvm.lohi.i2d(i32 0, i32 %41) #145 %43 = fmul double %42, %38 br label %__nv_ldexp.exit __nv_ldexp.exit: ; preds = %13, %31, %20, %7 %.3 = phi double [ %.0, %7 ], [ %17, %13 ], [ %30, %20 ], [ %43, %31 ] ret double %.3 } ; Function Attrs: alwaysinline argmemonly mustprogress nofree nosync nounwind willreturn writeonly define internal fastcc double @__nv_frexp(double %a, ptr nocapture writeonly "enzyme_inactive" %b) unnamed_addr #134 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = and i32 %1, 2146435072 %3 = icmp eq i32 %2, 0 %4 = fmul double %a, 0x4350000000000000 %5 = tail call i32 @llvm.nvvm.d2i.hi(double %4) #145 %6 = and i32 %5, 2146435072 %7 = add nsw i32 %6, -56623104 %.0 = select i1 %3, double %4, double %a %expo.0 = select i1 %3, i32 %7, i32 %2 %8 = fcmp oeq double %.0, 0.000000e+00 %9 = icmp eq i32 %expo.0, 2146435072 %or.cond = select i1 %8, i1 true, i1 %9 br i1 %or.cond, label %10, label %12 10: ; preds = %0 %11 = fadd double %.0, %.0 br label %19 12: ; preds = %0 %13 = bitcast double %.0 to i64 %14 = and i64 %13, -9218868437227405313 %15 = or i64 %14, 4602678819172646912 %16 = bitcast i64 %15 to double %17 = add nsw i32 %expo.0, -1071644672 %18 = ashr exact i32 %17, 20 br label %19 19: ; preds = %12, %10 %.1 = phi double [ %11, %10 ], [ %16, %12 ] %expo.1 = phi i32 [ 0, %10 ], [ %18, %12 ] store i32 %expo.1, ptr %b, align 4 ret double %.1 } ; Function Attrs: alwaysinline argmemonly mustprogress nofree nosync nounwind willreturn writeonly define internal fastcc double @__nv_modf(double %a, ptr nocapture writeonly "enzyme_inactive" %b) unnamed_addr #135 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = and i32 %1, 2146435072 %.not = icmp eq i32 %2, 2146435072 br i1 %.not, label %__nv_isinfd.exit, label %3 3: ; preds = %0 %4 = tail call double @llvm.nvvm.trunc.d(double %a) #145 store double %4, ptr %b, align 8 %5 = fsub double %a, %4 %6 = tail call i32 @llvm.nvvm.d2i.lo(double %5) #145 %7 = tail call i32 @llvm.nvvm.d2i.hi(double %5) #145 %8 = and i32 %1, -2147483648 %9 = or i32 %7, %8 %10 = tail call double @llvm.nvvm.lohi.i2d(i32 %6, i32 %9) #145 br label %24 __nv_isinfd.exit: ; preds = %0 %11 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %12 = and i32 %1, 2147483647 %13 = icmp eq i32 %12, 2146435072 %14 = icmp eq i32 %11, 0 %15 = select i1 %13, i1 %14, i1 false br i1 %15, label %16, label %22 16: ; preds = %__nv_isinfd.exit store double %a, ptr %b, align 8 %17 = tail call i32 @llvm.nvvm.d2i.lo(double 0.000000e+00) #145 %18 = tail call i32 @llvm.nvvm.d2i.hi(double 0.000000e+00) #145 %19 = and i32 %1, -2147483648 %20 = or i32 %19, %18 %21 = tail call double @llvm.nvvm.lohi.i2d(i32 %17, i32 %20) #145 br label %24 22: ; preds = %__nv_isinfd.exit %23 = fadd double %a, %a store double %23, ptr %b, align 8 br label %24 24: ; preds = %16, %22, %3 %.1 = phi double [ %10, %3 ], [ %21, %16 ], [ %23, %22 ] ret double %.1 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_fmod(double %a, double %b) unnamed_addr #136 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = and i32 %1, 2147483647 %3 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %4 = tail call i32 @llvm.nvvm.d2i.hi(double %b) #145 %5 = and i32 %4, 2147483647 %6 = tail call i32 @llvm.nvvm.d2i.lo(double %b) #145 %7 = tail call double @llvm.nvvm.lohi.i2d(i32 %3, i32 %2) #145 %8 = tail call double @llvm.nvvm.lohi.i2d(i32 %6, i32 %5) #145 %9 = icmp ugt i32 %2, 2146435071 %10 = icmp ugt i32 %5, 2146435071 %or.cond = select i1 %9, i1 true, i1 %10 br i1 %or.cond, label %11, label %16 11: ; preds = %0 %12 = fcmp ole double %7, 0x7FF0000000000000 %13 = fcmp ole double %8, 0x7FF0000000000000 %or.cond5 = select i1 %12, i1 %13, i1 false %14 = fcmp oeq double %7, 0x7FF0000000000000 %.a = select i1 %14, double 0xFFF8000000000000, double %a %15 = tail call double @llvm.nvvm.add.rn.d(double %a, double %b) #145 %.8 = select i1 %or.cond5, double %.a, double %15 br label %78 16: ; preds = %0 %17 = fcmp oeq double %8, 0.000000e+00 br i1 %17, label %78, label %18 18: ; preds = %16 %19 = fcmp ult double %7, %8 br i1 %19, label %78, label %20 20: ; preds = %18 %21 = tail call i32 @llvm.nvvm.d2i.hi(double %7) #145 %22 = lshr i32 %21, 20 %23 = tail call i32 @llvm.nvvm.d2i.hi(double %8) #145 %24 = lshr i32 %23, 20 %25 = icmp ult i32 %21, 1048576 %26 = fmul double %7, 0x4350000000000000 %27 = tail call i32 @llvm.nvvm.d2i.hi(double %26) #145 %28 = lshr i32 %27, 20 %29 = add nsw i32 %28, -54 %.9 = select i1 %25, double %26, double %7 %expoa.0 = select i1 %25, i32 %29, i32 %22 %30 = icmp ult i32 %23, 1048576 %31 = fmul double %8, 0x4350000000000000 %32 = tail call i32 @llvm.nvvm.d2i.hi(double %31) #145 %33 = lshr i32 %32, 20 %34 = add nsw i32 %33, -54 %.0 = select i1 %30, double %31, double %8 %expob.0 = select i1 %30, i32 %34, i32 %24 %35 = bitcast double %.9 to i64 %36 = bitcast double %.0 to i64 %37 = and i64 %35, 4503599627370495 %38 = or i64 %37, 4503599627370496 %39 = and i64 %36, 4503599627370495 %40 = or i64 %39, 4503599627370496 %41 = sub nsw i32 %expoa.0, %expob.0 br label %42 42: ; preds = %42, %20 %ia.0 = phi i64 [ %38, %20 ], [ %47, %42 ] %expob.1 = phi i32 [ %41, %20 ], [ %48, %42 ] %43 = sub i64 %ia.0, %40 %44 = bitcast i64 %43 to double %45 = tail call i32 @llvm.nvvm.d2i.hi(double %44) #145 %46 = icmp slt i32 %45, 0 %spec.select = select i1 %46, i64 %ia.0, i64 %43 %47 = shl i64 %spec.select, 1 %48 = add nsw i32 %expob.1, -1 %49 = icmp sgt i32 %expob.1, 0 br i1 %49, label %42, label %50 50: ; preds = %42 %spec.select.lcssa = phi i64 [ %spec.select, %42 ] %51 = and i64 %spec.select.lcssa, 9223372036854775807 %.not = icmp eq i64 %51, 0 br i1 %.not, label %71, label %52 52: ; preds = %50 %53 = bitcast i64 %51 to double %54 = fmul double %53, 0x4350000000000000 %55 = tail call i32 @llvm.nvvm.d2i.hi(double %54) #145 %56 = lshr i32 %55, 20 %57 = sub nsw i32 55, %56 %58 = sub nsw i32 %expob.0, %57 %59 = zext i32 %57 to i64 %60 = shl i64 %51, %59 %61 = icmp slt i32 %58, 1 br i1 %61, label %62, label %66 62: ; preds = %52 %63 = sub nsw i32 1, %58 %64 = zext i32 %63 to i64 %65 = lshr i64 %60, %64 br label %71 66: ; preds = %52 %67 = add nuw nsw i32 %58, 4095 %68 = zext i32 %67 to i64 %69 = shl i64 %68, 52 %70 = add i64 %69, %60 br label %71 71: ; preds = %62, %66, %50 %ia.3 = phi i64 [ 0, %50 ], [ %65, %62 ], [ %70, %66 ] %72 = bitcast i64 %ia.3 to double %73 = tail call i32 @llvm.nvvm.d2i.lo(double %72) #145 %74 = tail call i32 @llvm.nvvm.d2i.hi(double %72) #145 %75 = and i32 %1, -2147483648 %76 = or i32 %74, %75 %77 = tail call double @llvm.nvvm.lohi.i2d(i32 %73, i32 %76) #145 br label %78 78: ; preds = %11, %71, %18, %16 %.12 = phi double [ %.8, %11 ], [ 0xFFF8000000000000, %16 ], [ %77, %71 ], [ %a, %18 ] ret double %.12 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_remainder(double %a, double %b) unnamed_addr #137 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = and i32 %1, 2147483647 %3 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %4 = tail call i32 @llvm.nvvm.d2i.hi(double %b) #145 %5 = and i32 %4, 2147483647 %6 = tail call i32 @llvm.nvvm.d2i.lo(double %b) #145 %7 = tail call double @llvm.nvvm.lohi.i2d(i32 %3, i32 %2) #145 %8 = tail call double @llvm.nvvm.lohi.i2d(i32 %6, i32 %5) #145 %9 = icmp ugt i32 %2, 2146435071 %10 = icmp ugt i32 %5, 2146435071 %or.cond = select i1 %9, i1 true, i1 %10 br i1 %or.cond, label %11, label %16 11: ; preds = %0 %12 = fcmp ole double %7, 0x7FF0000000000000 %13 = fcmp ole double %8, 0x7FF0000000000000 %or.cond5 = select i1 %12, i1 %13, i1 false %14 = fcmp oeq double %7, 0x7FF0000000000000 %.a = select i1 %14, double 0xFFF8000000000000, double %a %15 = tail call double @llvm.nvvm.add.rn.d(double %a, double %b) #145 %.9 = select i1 %or.cond5, double %.a, double %15 br label %87 16: ; preds = %0 %17 = fcmp oeq double %8, 0.000000e+00 br i1 %17, label %87, label %18 18: ; preds = %16 %19 = fcmp ult double %7, %8 br i1 %19, label %73, label %20 20: ; preds = %18 %21 = tail call i32 @llvm.nvvm.d2i.hi(double %7) #145 %22 = lshr i32 %21, 20 %23 = tail call i32 @llvm.nvvm.d2i.hi(double %8) #145 %24 = lshr i32 %23, 20 %25 = icmp ult i32 %21, 1048576 %26 = fmul double %7, 0x4350000000000000 %27 = tail call i32 @llvm.nvvm.d2i.hi(double %26) #145 %28 = lshr i32 %27, 20 %29 = add nsw i32 %28, -54 %.10 = select i1 %25, double %26, double %7 %expoa.0 = select i1 %25, i32 %29, i32 %22 %30 = icmp ult i32 %23, 1048576 %31 = fmul double %8, 0x4350000000000000 %32 = tail call i32 @llvm.nvvm.d2i.hi(double %31) #145 %33 = lshr i32 %32, 20 %34 = add nsw i32 %33, -54 %t7.0 = select i1 %30, double %31, double %8 %expob.0 = select i1 %30, i32 %34, i32 %24 %35 = bitcast double %.10 to i64 %36 = bitcast double %t7.0 to i64 %37 = and i64 %35, 4503599627370495 %38 = or i64 %37, 4503599627370496 %39 = and i64 %36, 4503599627370495 %40 = or i64 %39, 4503599627370496 %41 = sub nsw i32 %expoa.0, %expob.0 br label %42 42: ; preds = %42, %20 %ia.0 = phi i64 [ %38, %20 ], [ %47, %42 ] %expob.1 = phi i32 [ %41, %20 ], [ %48, %42 ] %43 = sub i64 %ia.0, %40 %44 = bitcast i64 %43 to double %45 = tail call i32 @llvm.nvvm.d2i.hi(double %44) #145 %46 = and i32 %45, -2147483648 %.not = icmp eq i32 %46, 0 %spec.select = select i1 %.not, i64 %43, i64 %ia.0 %47 = shl i64 %spec.select, 1 %48 = add nsw i32 %expob.1, -1 %49 = icmp sgt i32 %expob.1, 0 br i1 %49, label %42, label %50 50: ; preds = %42 %.lcssa = phi i32 [ %46, %42 ] %spec.select.lcssa = phi i64 [ %spec.select, %42 ] %51 = and i64 %spec.select.lcssa, 9223372036854775807 %.not16 = icmp eq i64 %51, 0 br i1 %.not16, label %71, label %52 52: ; preds = %50 %53 = bitcast i64 %51 to double %54 = fmul double %53, 0x4350000000000000 %55 = tail call i32 @llvm.nvvm.d2i.hi(double %54) #145 %56 = lshr i32 %55, 20 %57 = sub nsw i32 55, %56 %58 = sub nsw i32 %expob.0, %57 %59 = zext i32 %57 to i64 %60 = shl i64 %51, %59 %61 = icmp slt i32 %58, 1 br i1 %61, label %62, label %66 62: ; preds = %52 %63 = sub nsw i32 1, %58 %64 = zext i32 %63 to i64 %65 = lshr i64 %60, %64 br label %71 66: ; preds = %52 %67 = add nuw nsw i32 %58, 4095 %68 = zext i32 %67 to i64 %69 = shl i64 %68, 52 %70 = add i64 %69, %60 br label %71 71: ; preds = %62, %66, %50 %ia.3 = phi i64 [ 0, %50 ], [ %65, %62 ], [ %70, %66 ] %72 = bitcast i64 %ia.3 to double br label %73 73: ; preds = %71, %18 %.11 = phi double [ %72, %71 ], [ %7, %18 ] %nquot0.0 = phi i32 [ %.lcssa, %71 ], [ 1, %18 ] %74 = fadd double %.11, %.11 %75 = fcmp ogt double %74, %8 br i1 %75, label %79, label %76 76: ; preds = %73 %77 = fcmp une double %74, %8 %78 = icmp ne i32 %nquot0.0, 0 %or.cond6 = select i1 %77, i1 true, i1 %78 br i1 %or.cond6, label %81, label %79 79: ; preds = %76, %73 %80 = fsub double %.11, %8 br label %81 81: ; preds = %79, %76 %.12 = phi double [ %80, %79 ], [ %.11, %76 ] %82 = and i32 %1, -2147483648 %83 = tail call i32 @llvm.nvvm.d2i.hi(double %.12) #145 %84 = xor i32 %83, %82 %85 = tail call i32 @llvm.nvvm.d2i.lo(double %.12) #145 %86 = tail call double @llvm.nvvm.lohi.i2d(i32 %85, i32 %84) #145 br label %87 87: ; preds = %11, %16, %81 %.14 = phi double [ %.9, %11 ], [ %86, %81 ], [ 0xFFF8000000000000, %16 ] ret double %.14 } ; Function Attrs: alwaysinline argmemonly nofree nosync nounwind writeonly define internal fastcc double @__nv_remquo(double %a, double %b, ptr nocapture writeonly %c) unnamed_addr #138 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = tail call i32 @llvm.nvvm.d2i.hi(double %b) #145 %3 = xor i32 %2, %1 %.lobit.neg = ashr i32 %3, 31 %4 = and i32 %1, 2147483647 %5 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %6 = and i32 %2, 2147483647 %7 = tail call i32 @llvm.nvvm.d2i.lo(double %b) #145 %8 = tail call double @llvm.nvvm.lohi.i2d(i32 %5, i32 %4) #145 %9 = tail call double @llvm.nvvm.lohi.i2d(i32 %7, i32 %6) #145 %10 = icmp ugt i32 %4, 2146435071 %11 = icmp ugt i32 %6, 2146435071 %or.cond = select i1 %10, i1 true, i1 %11 br i1 %or.cond, label %12, label %17 12: ; preds = %0 %13 = fcmp ole double %8, 0x7FF0000000000000 %14 = fcmp ole double %9, 0x7FF0000000000000 %or.cond5 = select i1 %13, i1 %14, i1 false %15 = fcmp oeq double %8, 0x7FF0000000000000 %.a = select i1 %15, double 0xFFF8000000000000, double %a %16 = tail call double @llvm.nvvm.add.rn.d(double %a, double %b) #145 %.9 = select i1 %or.cond5, double %.a, double %16 br label %93 17: ; preds = %0 %18 = fcmp oeq double %9, 0.000000e+00 br i1 %18, label %93, label %19 19: ; preds = %17 %20 = fcmp ult double %8, %9 br i1 %20, label %74, label %21 21: ; preds = %19 %22 = tail call i32 @llvm.nvvm.d2i.hi(double %8) #145 %23 = lshr i32 %22, 20 %24 = tail call i32 @llvm.nvvm.d2i.hi(double %9) #145 %25 = lshr i32 %24, 20 %26 = icmp ult i32 %22, 1048576 %27 = fmul double %8, 0x4350000000000000 %28 = tail call i32 @llvm.nvvm.d2i.hi(double %27) #145 %29 = lshr i32 %28, 20 %30 = add nsw i32 %29, -54 %.10 = select i1 %26, double %27, double %8 %expoa.0 = select i1 %26, i32 %30, i32 %23 %31 = icmp ult i32 %24, 1048576 %32 = fmul double %9, 0x4350000000000000 %33 = tail call i32 @llvm.nvvm.d2i.hi(double %32) #145 %34 = lshr i32 %33, 20 %35 = add nsw i32 %34, -54 %t10.0 = select i1 %31, double %32, double %9 %expob.0 = select i1 %31, i32 %35, i32 %25 %36 = bitcast double %.10 to i64 %37 = bitcast double %t10.0 to i64 %38 = and i64 %36, 4503599627370495 %39 = or i64 %38, 4503599627370496 %40 = and i64 %37, 4503599627370495 %41 = or i64 %40, 4503599627370496 %42 = sub nsw i32 %expoa.0, %expob.0 br label %43 43: ; preds = %43, %21 %nquot4.0 = phi i32 [ -1, %21 ], [ %48, %43 ] %ia.0 = phi i64 [ %39, %21 ], [ %47, %43 ] %expob.1 = phi i32 [ %42, %21 ], [ %49, %43 ] %44 = sub i64 %ia.0, %41 %45 = bitcast i64 %44 to double %46 = tail call i32 @llvm.nvvm.d2i.hi(double %45) #145 %.not17 = icmp slt i32 %46, 0 %spec.select = select i1 %.not17, i64 %ia.0, i64 %44 %47 = shl i64 %spec.select, 1 %48 = tail call i32 @llvm.fshl.i32(i32 %nquot4.0, i32 %46, i32 1) %49 = add nsw i32 %expob.1, -1 %50 = icmp sgt i32 %expob.1, 0 br i1 %50, label %43, label %51 51: ; preds = %43 %spec.select.lcssa = phi i64 [ %spec.select, %43 ] %.lcssa = phi i32 [ %48, %43 ] %52 = and i64 %spec.select.lcssa, 9223372036854775807 %.not = icmp eq i64 %52, 0 br i1 %.not, label %72, label %53 53: ; preds = %51 %54 = bitcast i64 %52 to double %55 = fmul double %54, 0x4350000000000000 %56 = tail call i32 @llvm.nvvm.d2i.hi(double %55) #145 %57 = lshr i32 %56, 20 %58 = sub nsw i32 55, %57 %59 = sub nsw i32 %expob.0, %58 %60 = zext i32 %58 to i64 %61 = shl i64 %52, %60 %62 = icmp slt i32 %59, 1 br i1 %62, label %63, label %67 63: ; preds = %53 %64 = sub nsw i32 1, %59 %65 = zext i32 %64 to i64 %66 = lshr i64 %61, %65 br label %72 67: ; preds = %53 %68 = add nuw nsw i32 %59, 4095 %69 = zext i32 %68 to i64 %70 = shl i64 %69, 52 %71 = add i64 %70, %61 br label %72 72: ; preds = %63, %67, %51 %ia.3 = phi i64 [ 0, %51 ], [ %66, %63 ], [ %71, %67 ] %73 = bitcast i64 %ia.3 to double %phi.bo = xor i32 %.lcssa, -1 br label %74 74: ; preds = %72, %19 %.11 = phi double [ %73, %72 ], [ %8, %19 ] %nquot4.1 = phi i32 [ %phi.bo, %72 ], [ 0, %19 ] %75 = fadd double %.11, %.11 %76 = fcmp ogt double %75, %9 br i1 %76, label %81, label %77 77: ; preds = %74 %78 = fcmp oeq double %75, %9 %79 = and i32 %nquot4.1, 1 %80 = icmp ne i32 %79, 0 %or.cond7 = select i1 %78, i1 %80, i1 false br i1 %or.cond7, label %81, label %84 81: ; preds = %77, %74 %82 = add i32 %nquot4.1, 1 %83 = fsub double %.11, %9 br label %84 84: ; preds = %81, %77 %.12 = phi double [ %83, %81 ], [ %.11, %77 ] %quot3.0 = phi i32 [ %82, %81 ], [ %nquot4.1, %77 ] %85 = and i32 %1, -2147483648 %86 = tail call i32 @llvm.nvvm.d2i.hi(double %.12) #145 %87 = xor i32 %86, %85 %88 = tail call i32 @llvm.nvvm.d2i.lo(double %.12) #145 %89 = tail call double @llvm.nvvm.lohi.i2d(i32 %88, i32 %87) #145 %90 = and i32 %quot3.0, 7 %91 = xor i32 %90, %.lobit.neg %92 = sub nsw i32 %91, %.lobit.neg br label %93 93: ; preds = %84, %17, %12 %.14 = phi double [ %.9, %12 ], [ %89, %84 ], [ 0xFFF8000000000000, %17 ] %quot3.2 = phi i32 [ 0, %12 ], [ %92, %84 ], [ 0, %17 ] store i32 %quot3.2, ptr %c, align 4 ret double %.14 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_round(double %a) unnamed_addr #139 { %1 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %2 = tail call i32 @llvm.nvvm.d2i.lo(double 5.000000e-01) #145 %3 = tail call i32 @llvm.nvvm.d2i.hi(double 5.000000e-01) #145 %4 = and i32 %1, -2147483648 %5 = or i32 %4, %3 %6 = tail call double @llvm.nvvm.lohi.i2d(i32 %2, i32 %5) #145 %7 = tail call double @llvm.nvvm.add.rz.d(double %a, double %6) #145 %8 = tail call double @llvm.nvvm.trunc.d(double %7) #145 ret double %8 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn declare double @llvm.nvvm.add.rz.d(double %0, double %1) #7 ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc i32 @__nv_ilogb(double %a) unnamed_addr #140 { %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = fcmp ugt double %1, 0x7FF0000000000000 br i1 %2, label %24, label %__nv_isinfd.exit __nv_isinfd.exit: ; preds = %0 %3 = tail call i32 @llvm.nvvm.d2i.lo(double %a) #145 %4 = tail call i32 @llvm.nvvm.d2i.hi(double %a) #145 %5 = and i32 %4, 2147483647 %6 = icmp eq i32 %5, 2146435072 %7 = icmp eq i32 %3, 0 %8 = select i1 %6, i1 %7, i1 false br i1 %8, label %24, label %9 9: ; preds = %__nv_isinfd.exit %10 = fcmp oeq double %a, 0.000000e+00 br i1 %10, label %24, label %11 11: ; preds = %9 %12 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %13 = icmp ugt i32 %12, 1048575 br i1 %13, label %14, label %17 14: ; preds = %11 %15 = lshr i32 %12, 20 %16 = add nsw i32 %15, -1023 br label %24 17: ; preds = %11 %18 = zext i32 %12 to i64 %19 = shl nuw nsw i64 %18, 32 %20 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %21 = zext i32 %20 to i64 %22 = or i64 %19, %21 %ctlz = tail call i64 @llvm.ctlz.i64(i64 %22, i1 false), !range !19 %ctlz.trunc = trunc i64 %ctlz to i32 %23 = sub nuw nsw i32 -1011, %ctlz.trunc br label %24 24: ; preds = %9, %__nv_isinfd.exit, %0, %17, %14 %.0 = phi i32 [ %16, %14 ], [ %23, %17 ], [ -2147483648, %0 ], [ 2147483647, %__nv_isinfd.exit ], [ -2147483648, %9 ] ret i32 %.0 } ; Function Attrs: alwaysinline mustprogress nofree nosync nounwind readnone willreturn define internal fastcc double @__nv_logb(double %a) unnamed_addr #141 { %1 = tail call double @llvm.nvvm.fabs.d(double %a) #145 %2 = fcmp ugt double %1, 0x7FF0000000000000 br i1 %2, label %3, label %5 3: ; preds = %0 %4 = fadd double %a, %a br label %24 5: ; preds = %0 %6 = fcmp oeq double %1, 0x7FF0000000000000 br i1 %6, label %24, label %7 7: ; preds = %5 %8 = fcmp oeq double %1, 0.000000e+00 br i1 %8, label %24, label %9 9: ; preds = %7 %10 = tail call i32 @llvm.nvvm.d2i.hi(double %1) #145 %11 = icmp ugt i32 %10, 1048575 br i1 %11, label %12, label %16 12: ; preds = %9 %13 = lshr i32 %10, 20 %14 = add nsw i32 %13, -1023 %15 = sitofp i32 %14 to double br label %24 16: ; preds = %9 %17 = zext i32 %10 to i64 %18 = shl nuw nsw i64 %17, 32 %19 = tail call i32 @llvm.nvvm.d2i.lo(double %1) #145 %20 = zext i32 %19 to i64 %21 = or i64 %18, %20 %ctlz = tail call i64 @llvm.ctlz.i64(i64 %21, i1 false), !range !19 %ctlz.trunc = trunc i64 %ctlz to i32 %22 = sub nuw nsw i32 -1011, %ctlz.trunc %23 = sitofp i32 %22 to double br label %24 24: ; preds = %7, %5, %16, %12, %3 %.0 = phi double [ %4, %3 ], [ %15, %12 ], [ %23, %16 ], [ 0x7FF0000000000000, %5 ], [ 0xFFF0000000000000, %7 ] ret double %.0 } ; Function Attrs: alwaysinline nofree nosync nounwind readnone define internal fastcc double @__nv_fdim(double %a, double %b) unnamed_addr #142 { %1 = tail call double asm "sub.rn.f64 $0, $1, $2;", "=d,d,d"(double %a, double %b) #146, !srcloc !23 %2 = fcmp ole double %a, %b %t.0 = select i1 %2, double 0.000000e+00, double %1 ret double %t.0 } ; Function Attrs: mustprogress nofree noinline norecurse nounwind willreturn define internal fastcc void @diffe_Z11square_implPdS_(ptr nocapture noundef nonnull readonly %x_in, ptr nocapture %"x_in'", ptr nocapture noundef nonnull %x_out, ptr nocapture readonly %"x_out'") unnamed_addr #143 { entry: tail call fastcc void @diffe_ZL9AtomicAddIdET_RS0_RKS0_(ptr align 8 %x_out, ptr align 8 %"x_out'", ptr align 8 %x_in, ptr align 8 %"x_in'") ret void } ; Function Attrs: mustprogress nofree noinline norecurse nounwind willreturn define internal fastcc void @diffe_ZL9AtomicAddIdET_RS0_RKS0_(ptr nocapture noundef nonnull align 8 dereferenceable(8) %dest, ptr nocapture readonly align 8 %"dest'", ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %val, ptr nocapture align 8 %"val'") unnamed_addr #143 { entry: %0 = load double, ptr %val, align 8, !alias.scope !24, !noalias !27 %1 = tail call fastcc double @diffe_ZL9atomicAddPdd(ptr nonnull %dest, ptr %"dest'", double %0) %2 = atomicrmw fadd ptr %"val'", double %1 monotonic, align 8 ret void } ; Function Attrs: mustprogress nofree noinline norecurse nounwind willreturn define internal fastcc double @diffe_ZL9atomicAddPdd(ptr nocapture noundef %address, ptr nocapture readonly %"address'", double noundef %val) unnamed_addr #143 { entry: %0 = atomicrmw fadd ptr %address, double %val seq_cst, align 8 %1 = load atomic double, ptr %"address'" seq_cst, align 8 ret double %1 } ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.abs.i32(i32 %0, i1 immarg %1) #144 ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn declare i64 @llvm.abs.i64(i64 %0, i1 immarg %1) #144 ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn declare i64 @llvm.smax.i64(i64 %0, i64 %1) #144 ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn declare i64 @llvm.smin.i64(i64 %0, i64 %1) #144 ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.smax.i32(i32 %0, i32 %1) #144 ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.smin.i32(i32 %0, i32 %1) #144 ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.fshl.i32(i32 %0, i32 %1, i32 %2) #144 ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn declare i64 @llvm.umax.i64(i64 %0, i64 %1) #144 ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn declare i64 @llvm.umin.i64(i64 %0, i64 %1) #144 ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.umax.i32(i32 %0, i32 %1) #144 ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn declare i32 @llvm.umin.i32(i32 %0, i32 %1) #144 ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn declare i64 @llvm.fshl.i64(i64 %0, i64 %1, i64 %2) #144 attributes #0 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #1 = { alwaysinline convergent mustprogress nofree nosync nounwind readnone willreturn "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #2 = { alwaysinline mustprogress nofree norecurse nosync nounwind readnone willreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #3 = { alwaysinline nofree nosync nounwind readnone "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #4 = { alwaysinline mustprogress nofree norecurse nosync nounwind readnone willreturn "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #5 = { alwaysinline argmemonly convergent mustprogress nofree nosync nounwind willreturn writeonly "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #6 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #7 = { mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn } attributes #8 = { alwaysinline argmemonly convergent mustprogress nofree nounwind readonly willreturn "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #9 = { alwaysinline argmemonly convergent mustprogress nofree nosync nounwind readonly willreturn "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #10 = { alwaysinline argmemonly convergent mustprogress nofree nosync nounwind writeonly "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #11 = { alwaysinline argmemonly convergent mustprogress nounwind writeonly "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #12 = { alwaysinline argmemonly nounwind writeonly "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #13 = { alwaysinline argmemonly mustprogress nofree nosync nounwind willreturn writeonly "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #14 = { convergent mustprogress noinline nounwind optnone "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #15 = { convergent mustprogress noinline norecurse nounwind optnone "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #16 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="fabsf" "frame-pointer"="all" "implements"="llvm.fabs.f32" "implements2"="fabsf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #17 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="fabs" "frame-pointer"="all" "implements"="llvm.fabs.f64" "implements2"="fabs" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #18 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="fmaxf" "frame-pointer"="all" "implements"="llvm.fmax.f32" "implements2"="fmaxf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #19 = { mustprogress nocallback nofree nosync nounwind readnone willreturn } attributes #20 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="fmax" "frame-pointer"="all" "implements"="llvm.fmax.f64" "implements2"="fmax" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #21 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="exp2f" "frame-pointer"="all" "implements"="llvm.exp2.f32" "implements2"="exp2f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #22 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="sqrtf" "frame-pointer"="all" "implements"="llvm.sqrt.f32" "implements2"="sqrtf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #23 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="sqrt" "frame-pointer"="all" "implements"="llvm.sqrt.f64" "implements2"="sqrt" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #24 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="sinf" "frame-pointer"="all" "implements"="llvm.sin.f32" "implements2"="sinf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #25 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="cosf" "frame-pointer"="all" "implements"="llvm.cos.f32" "implements2"="cosf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #26 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="tanf" "frame-pointer"="all" "implements"="llvm.tan.f32" "implements2"="tanf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #27 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="log2f" "frame-pointer"="all" "implements"="llvm.log2.f32" "implements2"="log2f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #28 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="expf" "frame-pointer"="all" "implements"="llvm.exp.f32" "implements2"="expf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #29 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="exp10f" "frame-pointer"="all" "implements"="llvm.exp10.f32" "implements2"="exp10f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #30 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="coshf" "frame-pointer"="all" "implements"="llvm.cosh.f32" "implements2"="coshf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #31 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="sinhf" "frame-pointer"="all" "implements"="llvm.sinh.f32" "implements2"="sinhf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #32 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="tanhf" "frame-pointer"="all" "implements"="llvm.tanh.f32" "implements2"="tanhf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #33 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="atan2f" "frame-pointer"="all" "implements"="llvm.atan2.f32" "implements2"="atan2f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #34 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="atanf" "frame-pointer"="all" "implements"="llvm.atan.f32" "implements2"="atanf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #35 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="asinf" "frame-pointer"="all" "implements"="llvm.asin.f32" "implements2"="asinf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #36 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="acosf" "frame-pointer"="all" "implements"="llvm.acos.f32" "implements2"="acosf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #37 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="logf" "frame-pointer"="all" "implements"="llvm.log.f32" "implements2"="logf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #38 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="log10f" "frame-pointer"="all" "implements"="llvm.log10.f32" "implements2"="log10f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #39 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="log1pf" "frame-pointer"="all" "implements"="llvm.log1p.f32" "implements2"="log1pf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #40 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="acoshf" "frame-pointer"="all" "implements"="llvm.acosh.f32" "implements2"="acoshf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #41 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="asinhf" "frame-pointer"="all" "implements"="llvm.asinh.f32" "implements2"="asinhf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #42 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="atanhf" "frame-pointer"="all" "implements"="llvm.atanh.f32" "implements2"="atanhf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #43 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="expm1f" "frame-pointer"="all" "implements"="llvm.expm1.f32" "implements2"="expm1f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #44 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="hypotf" "frame-pointer"="all" "implements"="llvm.hypot.f32" "implements2"="hypotf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #45 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="rhypotf" "frame-pointer"="all" "implements"="llvm.rhypot.f32" "implements2"="rhypotf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #46 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="norm3df" "frame-pointer"="all" "implements"="llvm.norm3d.f32" "implements2"="norm3df" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #47 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="rnorm3df" "frame-pointer"="all" "implements"="llvm.rnorm3d.f32" "implements2"="rnorm3df" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #48 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="norm4df" "frame-pointer"="all" "implements"="llvm.norm4d.f32" "implements2"="norm4df" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #49 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="rnorm4df" "frame-pointer"="all" "implements"="llvm.rnorm4d.f32" "implements2"="rnorm4df" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #50 = { alwaysinline argmemonly nofree nosync nounwind readonly "disable-tail-calls"="false" "enzyme_math"="normf" "frame-pointer"="all" "implements"="llvm.norm.f32" "implements2"="normf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #51 = { alwaysinline argmemonly nofree nosync nounwind readonly "disable-tail-calls"="false" "enzyme_math"="rnormf" "frame-pointer"="all" "implements"="llvm.rnorm.f32" "implements2"="rnormf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #52 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="cbrtf" "frame-pointer"="all" "implements"="llvm.cbrt.f32" "implements2"="cbrtf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #53 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="rcbrtf" "frame-pointer"="all" "implements"="llvm.rcbrt.f32" "implements2"="rcbrtf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #54 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="j0f" "frame-pointer"="all" "implements"="llvm.j0.f32" "implements2"="j0f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #55 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="j1f" "frame-pointer"="all" "implements"="llvm.j1.f32" "implements2"="j1f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #56 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="y0f" "frame-pointer"="all" "implements"="llvm.y0.f32" "implements2"="y0f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #57 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="y1f" "frame-pointer"="all" "implements"="llvm.y1.f32" "implements2"="y1f" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #58 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="ynf" "frame-pointer"="all" "implements"="llvm.yn.f32" "implements2"="ynf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #59 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="jnf" "frame-pointer"="all" "implements"="llvm.jn.f32" "implements2"="jnf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #60 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="erff" "frame-pointer"="all" "implements"="llvm.erf.f32" "implements2"="erff" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #61 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="erfinvf" "frame-pointer"="all" "implements"="llvm.erfinv.f32" "implements2"="erfinvf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #62 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="erfcf" "frame-pointer"="all" "implements"="llvm.erfc.f32" "implements2"="erfcf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #63 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="erfcxf" "frame-pointer"="all" "implements"="llvm.erfcx.f32" "implements2"="erfcxf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #64 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="erfcinvf" "frame-pointer"="all" "implements"="llvm.erfcinv.f32" "implements2"="erfcinvf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #65 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="normcdfinvf" "frame-pointer"="all" "implements"="llvm.normcdfinv.f32" "implements2"="normcdfinvf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #66 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="normcdff" "frame-pointer"="all" "implements"="llvm.normcdf.f32" "implements2"="normcdff" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #67 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="lgammaf" "frame-pointer"="all" "implements"="llvm.lgamma.f32" "implements2"="lgammaf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #68 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="ldexpf" "frame-pointer"="all" "implements"="llvm.ldexp.f32" "implements2"="ldexpf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #69 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="scalbnf" "frame-pointer"="all" "implements"="llvm.scalbn.f32" "implements2"="scalbnf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #70 = { alwaysinline argmemonly mustprogress nofree nosync nounwind willreturn writeonly "disable-tail-calls"="false" "enzyme_math"="frexpf" "frame-pointer"="all" "implements"="llvm.frexp.f32" "implements2"="frexpf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #71 = { alwaysinline argmemonly mustprogress nofree nosync nounwind willreturn writeonly "disable-tail-calls"="false" "enzyme_math"="modff" "frame-pointer"="all" "implements"="llvm.modf.f32" "implements2"="modff" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #72 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="fmodf" "frame-pointer"="all" "implements"="llvm.fmod.f32" "implements2"="fmodf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #73 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="remainderf" "frame-pointer"="all" "implements"="llvm.remainder.f32" "implements2"="remainderf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #74 = { alwaysinline argmemonly nounwind writeonly "disable-tail-calls"="false" "enzyme_math"="remquof" "frame-pointer"="all" "implements"="llvm.remquo.f32" "implements2"="remquof" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #75 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="powif" "frame-pointer"="all" "implements"="llvm.powi.f32" "implements2"="powif" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #76 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="powi" "frame-pointer"="all" "implements"="llvm.powi.f64" "implements2"="powi" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #77 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="powf" "frame-pointer"="all" "implements"="llvm.pow.f32" "implements2"="powf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #78 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="tgammaf" "frame-pointer"="all" "implements"="llvm.tgamma.f32" "implements2"="tgammaf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #79 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="roundf" "frame-pointer"="all" "implements"="llvm.round.f32" "implements2"="roundf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #80 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="fdimf" "frame-pointer"="all" "implements"="llvm.fdim.f32" "implements2"="fdimf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #81 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="ilogbf" "frame-pointer"="all" "implements"="llvm.ilogb.f32" "implements2"="ilogbf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #82 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="logbf" "frame-pointer"="all" "implements"="llvm.logb.f32" "implements2"="logbf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #83 = { argmemonly noinline nounwind writeonly "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #84 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="sin" "frame-pointer"="all" "implements"="llvm.sin.f64" "implements2"="sin" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #85 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="cos" "frame-pointer"="all" "implements"="llvm.cos.f64" "implements2"="cos" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #86 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="tan" "frame-pointer"="all" "implements"="llvm.tan.f64" "implements2"="tan" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #87 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="log" "frame-pointer"="all" "implements"="llvm.log.f64" "implements2"="log" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #88 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="log2" "frame-pointer"="all" "implements"="llvm.log2.f64" "implements2"="log2" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #89 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="log10" "frame-pointer"="all" "implements"="llvm.log10.f64" "implements2"="log10" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #90 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="log1p" "frame-pointer"="all" "implements"="llvm.log1p.f64" "implements2"="log1p" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #91 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="exp" "frame-pointer"="all" "implements"="llvm.exp.f64" "implements2"="exp" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #92 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="exp2" "frame-pointer"="all" "implements"="llvm.exp2.f64" "implements2"="exp2" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #93 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="exp10" "frame-pointer"="all" "implements"="llvm.exp10.f64" "implements2"="exp10" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #94 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="expm1" "frame-pointer"="all" "implements"="llvm.expm1.f64" "implements2"="expm1" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #95 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="cosh" "frame-pointer"="all" "implements"="llvm.cosh.f64" "implements2"="cosh" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #96 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="sinh" "frame-pointer"="all" "implements"="llvm.sinh.f64" "implements2"="sinh" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #97 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="tanh" "frame-pointer"="all" "implements"="llvm.tanh.f64" "implements2"="tanh" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #98 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="atan2" "frame-pointer"="all" "implements"="llvm.atan2.f64" "implements2"="atan2" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #99 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="atan" "frame-pointer"="all" "implements"="llvm.atan.f64" "implements2"="atan" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #100 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="asin" "frame-pointer"="all" "implements"="llvm.asin.f64" "implements2"="asin" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #101 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="acos" "frame-pointer"="all" "implements"="llvm.acos.f64" "implements2"="acos" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #102 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="acosh" "frame-pointer"="all" "implements"="llvm.acosh.f64" "implements2"="acosh" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #103 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="asinh" "frame-pointer"="all" "implements"="llvm.asinh.f64" "implements2"="asinh" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #104 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="atanh" "frame-pointer"="all" "implements"="llvm.atanh.f64" "implements2"="atanh" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #105 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="hypot" "frame-pointer"="all" "implements"="llvm.hypot.f64" "implements2"="hypot" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #106 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="rhypot" "frame-pointer"="all" "implements"="llvm.rhypot.f64" "implements2"="rhypot" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #107 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="norm3d" "frame-pointer"="all" "implements"="llvm.norm3d.f64" "implements2"="norm3d" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #108 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="rnorm3d" "frame-pointer"="all" "implements"="llvm.rnorm3d.f64" "implements2"="rnorm3d" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #109 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="norm4d" "frame-pointer"="all" "implements"="llvm.norm4d.f64" "implements2"="norm4d" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #110 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="rnorm4d" "frame-pointer"="all" "implements"="llvm.rnorm4d.f64" "implements2"="rnorm4d" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #111 = { alwaysinline argmemonly nofree nounwind readonly "disable-tail-calls"="false" "enzyme_math"="norm" "frame-pointer"="all" "implements"="llvm.norm.f64" "implements2"="norm" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #112 = { alwaysinline argmemonly nofree nosync nounwind readonly "disable-tail-calls"="false" "enzyme_math"="rnorm" "frame-pointer"="all" "implements"="llvm.rnorm.f64" "implements2"="rnorm" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #113 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="cbrt" "frame-pointer"="all" "implements"="llvm.cbrt.f64" "implements2"="cbrt" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #114 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="rcbrt" "frame-pointer"="all" "implements"="llvm.rcbrt.f64" "implements2"="rcbrt" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #115 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="pow" "frame-pointer"="all" "implements"="llvm.pow.f64" "implements2"="pow" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #116 = { mustprogress nofree noinline nosync nounwind readnone willreturn "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #117 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="j0" "frame-pointer"="all" "implements"="llvm.j0.f64" "implements2"="j0" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #118 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="j1" "frame-pointer"="all" "implements"="llvm.j1.f64" "implements2"="j1" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #119 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="y0" "frame-pointer"="all" "implements"="llvm.y0.f64" "implements2"="y0" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #120 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="y1" "frame-pointer"="all" "implements"="llvm.y1.f64" "implements2"="y1" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #121 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="yn" "frame-pointer"="all" "implements"="llvm.yn.f64" "implements2"="yn" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #122 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="jn" "frame-pointer"="all" "implements"="llvm.jn.f64" "implements2"="jn" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #123 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="erf" "frame-pointer"="all" "implements"="llvm.erf.f64" "implements2"="erf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #124 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="erfinv" "frame-pointer"="all" "implements"="llvm.erfinv.f64" "implements2"="erfinv" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #125 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="erfcinv" "frame-pointer"="all" "implements"="llvm.erfcinv.f64" "implements2"="erfcinv" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #126 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="normcdfinv" "frame-pointer"="all" "implements"="llvm.normcdfinv.f64" "implements2"="normcdfinv" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #127 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="erfc" "frame-pointer"="all" "implements"="llvm.erfc.f64" "implements2"="erfc" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #128 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="erfcx" "frame-pointer"="all" "implements"="llvm.erfcx.f64" "implements2"="erfcx" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #129 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="normcdf" "frame-pointer"="all" "implements"="llvm.normcdf.f64" "implements2"="normcdf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #130 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="tgamma" "frame-pointer"="all" "implements"="llvm.tgamma.f64" "implements2"="tgamma" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #131 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="lgamma" "frame-pointer"="all" "implements"="llvm.lgamma.f64" "implements2"="lgamma" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #132 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="ldexp" "frame-pointer"="all" "implements"="llvm.ldexp.f64" "implements2"="ldexp" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #133 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="scalbn" "frame-pointer"="all" "implements"="llvm.scalbn.f64" "implements2"="scalbn" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #134 = { alwaysinline argmemonly mustprogress nofree nosync nounwind willreturn writeonly "disable-tail-calls"="false" "enzyme_math"="frexp" "frame-pointer"="all" "implements"="llvm.frexp.f64" "implements2"="frexp" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #135 = { alwaysinline argmemonly mustprogress nofree nosync nounwind willreturn writeonly "disable-tail-calls"="false" "enzyme_math"="modf" "frame-pointer"="all" "implements"="llvm.modf.f64" "implements2"="modf" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #136 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="fmod" "frame-pointer"="all" "implements"="llvm.fmod.f64" "implements2"="fmod" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #137 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="remainder" "frame-pointer"="all" "implements"="llvm.remainder.f64" "implements2"="remainder" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #138 = { alwaysinline argmemonly nofree nosync nounwind writeonly "disable-tail-calls"="false" "enzyme_math"="remquo" "frame-pointer"="all" "implements"="llvm.remquo.f64" "implements2"="remquo" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #139 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="round" "frame-pointer"="all" "implements"="llvm.round.f64" "implements2"="round" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #140 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="ilogb" "frame-pointer"="all" "implements"="llvm.ilogb.f64" "implements2"="ilogb" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #141 = { alwaysinline mustprogress nofree nosync nounwind readnone willreturn "disable-tail-calls"="false" "enzyme_math"="logb" "frame-pointer"="all" "implements"="llvm.logb.f64" "implements2"="logb" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #142 = { alwaysinline nofree nosync nounwind readnone "disable-tail-calls"="false" "enzyme_math"="fdim" "frame-pointer"="all" "implements"="llvm.fdim.f64" "implements2"="fdim" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-trapping-math"="true" "prev_linkage"="7" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #143 = { mustprogress nofree noinline norecurse nounwind willreturn "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="sm_80" "target-features"="+ptx75,+sm_80" } attributes #144 = { nocallback nofree nosync nounwind readnone speculatable willreturn } attributes #145 = { nounwind } attributes #146 = { nounwind readnone } attributes #147 = { convergent nounwind } !llvm.module.flags = !{!0, !1, !2, !3} !nvvm.annotations = !{!4, !5} !llvm.ident = !{!6, !7} !nvvmir.version = !{!8} !0 = !{i32 2, !"SDK Version", [2 x i32] [i32 11, i32 5]} !1 = !{i32 1, !"wchar_size", i32 4} !2 = !{i32 4, !"nvvm-reflect-ftz", i32 0} !3 = !{i32 7, !"frame-pointer", i32 2} !4 = !{ptr @_Z6squarePdS_, !"kernel", i32 1} !5 = !{ptr @_Z11square_gradPdS_S_S_, !"kernel", i32 1} !6 = !{!"clang version 15.0.2 (git@github.com:llvm/llvm-project 10a54971b0d34f3b68b3213bcf82079dc2d00ae9)"} !7 = !{!"clang version 3.8.0 (tags/RELEASE_380/final)"} !8 = !{i32 2, i32 0} !9 = !{i32 150730} !10 = !{i32 21287} !11 = !{i32 33119, i32 33123, i32 33168, i32 33213} !12 = distinct !{!12, !13} !13 = !{!"llvm.loop.unroll.count", i32 1} !14 = !{i32 9183} !15 = !{i32 0, i32 33} !16 = !{i32 157179, i32 157183, i32 157252, i32 157300, i32 157348, i32 157396, i32 157444, i32 157492, i32 157540, i32 157588, i32 157636, i32 157684, i32 157732, i32 157780, i32 157828, i32 157876, i32 157924} !17 = distinct !{!17, !13} !18 = !{i32 154913, i32 154917, i32 154988, i32 155030, i32 155072, i32 155114, i32 155156, i32 155198, i32 155240, i32 155282, i32 155324, i32 155366, i32 155408} !19 = !{i64 0, i64 65} !20 = !{i32 155954, i32 155958, i32 156017, i32 156064, i32 156111, i32 156158, i32 156205, i32 156252, i32 156299, i32 156346, i32 156393, i32 156440, i32 156487, i32 156534, i32 156581, i32 156628} !21 = !{i32 153715, i32 153719, i32 153790, i32 153832, i32 153874, i32 153916, i32 153958, i32 154000, i32 154042, i32 154084, i32 154126, i32 154168, i32 154210} !22 = !{i32 151109} !23 = !{i32 286834} !24 = !{!25} !25 = distinct !{!25, !26, !"primal"} !26 = distinct !{!26, !" diff: %val"} !27 = !{!28} !28 = distinct !{!28, !26, !"shadow_0"}
Become a Patron
Sponsor on GitHub
Donate via PayPal
Compiler Explorer Shop
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
CE on Bluesky
Statistics
Changelog
Version tree