Package evaluation to test JacobiElliptic on Julia 1.12.7-DEV.44 (6ed4c45b10*) started at 2026-06-24T14:40:08.230 ################################################################################ # Set-up # Installing PkgEval dependencies (TestEnv)... Activating project at `~/.julia/environments/v1.12` Set-up completed after 5.02s ################################################################################ # Installation # Installing JacobiElliptic... Resolving package versions... Installed NaNMath ────────────── v1.1.4 Installed DiffRules ──────────── v1.16.0 Installed CommonSubexpressions ─ v0.3.1 Installed LogExpFunctions ────── v1.0.1 Installed SpecialFunctions ───── v2.8.0 Installed OpenSpecFun_jll ────── v0.5.6+0 Installed ForwardDiff ────────── v1.4.1 Installed IrrationalConstants ── v0.2.6 Installed MacroTools ─────────── v0.5.16 Installed JacobiElliptic ─────── v0.3.9 Installed DiffResults ────────── v1.1.0 Installed DocStringExtensions ── v0.9.5 Installed JLLWrappers ────────── v1.8.0 Installed Preferences ────────── v1.5.2 Installed StaticArrays ───────── v1.9.18 Installed StaticArraysCore ───── v1.4.4 Installed PrecompileTools ────── v1.3.4 Installing 1 artifacts Installed artifact OpenSpecFun 194.9 KiB Updating `~/.julia/environments/v1.12/Project.toml` [2a8b799e] + JacobiElliptic v0.3.9 Updating `~/.julia/environments/v1.12/Manifest.toml` [bbf7d656] + CommonSubexpressions v0.3.1 [163ba53b] + DiffResults v1.1.0 [b552c78f] + DiffRules v1.16.0 [ffbed154] + DocStringExtensions v0.9.5 [f6369f11] + ForwardDiff v1.4.1 [92d709cd] + IrrationalConstants v0.2.6 [692b3bcd] + JLLWrappers v1.8.0 [2a8b799e] + JacobiElliptic v0.3.9 [2ab3a3ac] + LogExpFunctions v1.0.1 [1914dd2f] + MacroTools v0.5.16 [77ba4419] + NaNMath v1.1.4 [aea7be01] + PrecompileTools v1.3.4 [21216c6a] + Preferences v1.5.2 [276daf66] + SpecialFunctions v2.8.0 [90137ffa] + StaticArrays v1.9.18 [1e83bf80] + StaticArraysCore v1.4.4 [efe28fd5] + OpenSpecFun_jll v0.5.6+0 [56f22d72] + Artifacts v1.11.0 [ade2ca70] + Dates v1.11.0 [8f399da3] + Libdl v1.11.0 [37e2e46d] + LinearAlgebra v1.12.0 [de0858da] + Printf v1.11.0 [9a3f8284] + Random v1.11.0 [ea8e919c] + SHA v0.7.0 [fa267f1f] + TOML v1.0.3 [4ec0a83e] + Unicode v1.11.0 [e66e0078] + CompilerSupportLibraries_jll v1.3.0+1 [4536629a] + OpenBLAS_jll v0.3.29+0 [05823500] + OpenLibm_jll v0.8.7+0 [8e850b90] + libblastrampoline_jll v5.15.0+0 Installation completed after 4.6s ################################################################################ # Precompilation # Precompiling PkgEval dependencies... Precompiling packages... 1869.0 ms ✓ TestEnv 1 dependency successfully precompiled in 2 seconds. 26 already precompiled. 24 dependencies precompiled but different versions are currently loaded (ArgTools, Base64, Dates, Downloads, JuliaSyntaxHighlighting, LibCURL, LibCURL_jll, LibGit2, LibGit2_jll, LibSSH2_jll, Logging, Markdown, MozillaCACerts_jll, NetworkOptions, OpenSSL_jll, Pkg, Printf, StyledStrings, TOML, Tar, UUIDs, Zlib_jll, nghttp2_jll and p7zip_jll). Restart julia to access the new versions. Otherwise, 1 dependent of these packages may trigger further precompilation to work with the unexpected versions. Precompiling package dependencies... Precompiling packages... 2127.3 ms ✓ OrderedCollections 1073.7 ms ✓ FillArrays 424.0 ms ✓ DataValueInterfaces 454.4 ms ✓ Richardson 502.5 ms ✓ StructIO 426.1 ms ✓ RealDot 587.8 ms ✓ AbstractFFTs 427.8 ms ✓ Reexport 745.3 ms ✓ EnzymeCore 624.4 ms ✓ DocStringExtensions 620.4 ms ✓ Statistics 480.6 ms ✓ ExprTools 2602.0 ms ✓ IrrationalConstants 1935.9 ms ✓ ConstructionBase 495.7 ms ✓ Adapt 413.0 ms ✓ IteratorInterfaceExtensions 2237.6 ms ✓ UnsafeAtomics 473.8 ms ✓ DataAPI 3846.4 ms ✓ MacroTools 1780.6 ms ✓ CEnum 916.2 ms ✓ RandomNumbers 554.1 ms ✓ StaticArraysCore 698.5 ms ✓ TranscodingStreams 508.1 ms ✓ HashArrayMappedTries 1975.2 ms ✓ NaNMath 543.9 ms ✓ DelimitedFiles 726.5 ms ✓ SparseInverseSubset 648.5 ms ✓ Requires 1934.7 ms ✓ BFloat16s 942.1 ms ✓ GenericLinearAlgebra 490.8 ms ✓ Scratch 2099.4 ms ✓ Compat 640.4 ms ✓ Preferences 576.5 ms ✓ Readables 836.8 ms ✓ FillArrays → FillArraysSparseArraysExt 2122.6 ms ✓ AbstractFFTs → AbstractFFTsTestExt 2437.7 ms ✓ ObjectFile 764.3 ms ✓ Statistics → SparseArraysExt 486.7 ms ✓ FillArrays → FillArraysStatisticsExt 740.9 ms ✓ LogExpFunctions 465.2 ms ✓ ConstructionBase → ConstructionBaseLinearAlgebraExt 745.4 ms ✓ Adapt → AdaptSparseArraysExt 650.7 ms ✓ GPUArraysCore 445.7 ms ✓ EnzymeCore → AdaptExt 411.7 ms ✓ TableTraits 541.5 ms ✓ Atomix 859.9 ms ✓ CommonSubexpressions 3580.5 ms ✓ IRTools 1033.3 ms ✓ Random123 481.2 ms ✓ DiffResults 497.0 ms ✓ ScopedValues 488.5 ms ✓ Compat → CompatLinearAlgebraExt 570.3 ms ✓ PrecompileTools 731.7 ms ✓ JLLWrappers 7438.3 ms ✓ ObjectiveC 2337.4 ms ✓ Tables 2772.4 ms ✓ ChainRulesCore 9151.0 ms ✓ StaticArrays 2287.2 ms ✓ Enzyme_jll 754.5 ms ✓ LibTracyClient_jll 2287.8 ms ✓ LLVMExtra_jll 759.9 ms ✓ Bzip2_jll 2295.5 ms ✓ LLVMDowngrader_jll 765.5 ms ✓ OpenSpecFun_jll 763.6 ms ✓ OpenBLAS32_jll 2240.3 ms ✓ StructArrays 1340.1 ms ✓ ZygoteRules 2113.2 ms ✓ ChainRulesCore → ChainRulesCoreSparseArraysExt 514.5 ms ✓ AbstractFFTs → AbstractFFTsChainRulesCoreExt 712.7 ms ✓ EnzymeCore → EnzymeCoreChainRulesCoreExt 1858.7 ms ✓ LogExpFunctions → LogExpFunctionsChainRulesCoreExt 2128.9 ms ✓ StaticArrays → StaticArraysChainRulesCoreExt 753.5 ms ✓ StaticArrays → StaticArraysStatisticsExt 778.5 ms ✓ FillArrays → FillArraysStaticArraysExt 758.6 ms ✓ ConstructionBase → ConstructionBaseStaticArraysExt 734.1 ms ✓ Adapt → AdaptStaticArraysExt 1391.5 ms ✓ Tracy 10586.1 ms ✓ LLVM 540.0 ms ✓ CodecBzip2 3124.1 ms ✓ SpecialFunctions 817.2 ms ✓ FLINT_jll 795.7 ms ✓ StructArrays → StructArraysSparseArraysExt 482.9 ms ✓ StructArrays → StructArraysAdaptExt 529.8 ms ✓ StructArrays → StructArraysLinearAlgebraExt 2231.4 ms ✓ StructArrays → StructArraysStaticArraysExt 2859.5 ms ✓ FiniteDifferences 5922.6 ms ✓ KernelAbstractions 2276.3 ms ✓ GPUToolbox 2200.0 ms ✓ LLVM → BFloat16sExt 28280.1 ms ✓ GPUCompiler 2772.2 ms ✓ UnsafeAtomics → UnsafeAtomicsLLVM 2264.4 ms ✓ SpecialFunctions → SpecialFunctionsChainRulesCoreExt 738.0 ms ✓ DiffRules 5332.5 ms ✓ ArbNumerics 8334.9 ms ✓ ChainRules 1548.9 ms ✓ KernelAbstractions → SparseArraysExt 1085.5 ms ✓ KernelAbstractions → LinearAlgebraExt 1160.4 ms ✓ KernelAbstractions → EnzymeExt 1281.9 ms ✓ StructArrays → StructArraysGPUArraysCoreExt 65738.3 ms ✓ Enzyme 5158.7 ms ✓ ForwardDiff 8959.2 ms ✓ GPUArrays 15256.2 ms ✓ Enzyme → EnzymeSpecialFunctionsExt 14172.6 ms ✓ Enzyme → EnzymeLogExpFunctionsExt 14955.7 ms ✓ Enzyme → EnzymeStaticArraysExt 14580.4 ms ✓ Enzyme → EnzymeChainRulesCoreExt 14196.2 ms ✓ Enzyme → EnzymeBFloat16sExt 14100.6 ms ✓ Enzyme → EnzymeGPUArraysCoreExt 905.7 ms ✓ ForwardDiff → ForwardDiffStaticArraysExt 37034.1 ms ✓ Zygote 29025.5 ms ✓ Metal 16277.6 ms ✓ EnzymeTestUtils 3388.0 ms ✓ JacobiElliptic 5232.3 ms ✓ Metal → SpecialFunctionsExt 4935.8 ms ✓ Atomix → AtomixMetalExt 14707.8 ms ✓ EnzymeTestUtils → EnzymeTestUtilsGPUArraysCoreExt 15313.5 ms ✓ JacobiElliptic → JacobiEllipticEnzymeExt 5686.5 ms ✓ JacobiElliptic → JacobiEllipticZygoteExt 6389.3 ms ? JacobiElliptic → JacobiEllipticMetalExt 2366.2 ms ✓ JacobiElliptic → JacobiEllipticForwardDiffExt 119 dependencies successfully precompiled in 495 seconds. 38 already precompiled. 24 dependencies precompiled but different versions are currently loaded (ArgTools, Base64, Dates, Downloads, JuliaSyntaxHighlighting, LibCURL, LibCURL_jll, LibGit2, LibGit2_jll, LibSSH2_jll, Logging, Markdown, MozillaCACerts_jll, NetworkOptions, OpenSSL_jll, Pkg, Printf, StyledStrings, TOML, Tar, UUIDs, Zlib_jll, nghttp2_jll and p7zip_jll). Restart julia to access the new versions. Otherwise, 77 dependents of these packages may trigger further precompilation to work with the unexpected versions. 1 dependencies failed but may be precompilable after restarting julia 2 dependencies had output during precompilation: ┌ Readables │ WARNING: method definition for readable at /home/pkgeval/.julia/packages/Readables/M8BHX/src/Readables.jl:125 declares type variable F but does not use it. │ WARNING: method definition for readable at /home/pkgeval/.julia/packages/Readables/M8BHX/src/Readables.jl:140 declares type variable F but does not use it. │ WARNING: method definition for readable at /home/pkgeval/.julia/packages/Readables/M8BHX/src/Readables.jl:165 declares type variable F but does not use it. └ ┌ JacobiElliptic → JacobiEllipticMetalExt │ WARNING: Method definition _am(A, B, C) where {A, B, C} in module CarlsonAlg at /home/pkgeval/.julia/packages/JacobiElliptic/DNY74/src/common.jl:5 overwritten in module JacobiEllipticMetalExt at /home/pkgeval/.julia/packages/JacobiElliptic/DNY74/ext/JacobiEllipticMetalExt.jl:6. │ ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation. └ Precompilation completed after 518.67s ################################################################################ # Testing # Testing JacobiElliptic Test Could not use exact versions of packages in manifest. Re-resolving dependencies Updating `/tmp/jl_grkmU2/Project.toml` [7e558dbc] + ArbNumerics v1.6.3 [7da242da] ↑ Enzyme v0.11.19 ⇒ v0.13.166 [12d8515a] + EnzymeTestUtils v0.2.8 [f6369f11] ↑ ForwardDiff v0.10.36 ⇒ v1.4.1 [2a8b799e] + JacobiElliptic v0.3.9 [dde4c033] + Metal v1.9.3 [276daf66] ↑ SpecialFunctions v2.3.1 ⇒ v2.8.0 [e88e6eb3] ↑ Zygote v0.6.69 ⇒ v0.7.11 [8dfed614] ~ Test ⇒ v1.11.0 Updating `/tmp/jl_grkmU2/Manifest.toml` [79e6a3ab] ↑ Adapt v4.0.3 ⇒ v4.6.1 [7e558dbc] + ArbNumerics v1.6.3 [a9b6321e] + Atomix v1.1.3 [ab4f0b2a] + BFloat16s v0.6.1 [082447d4] ↑ ChainRules v1.63.0 ⇒ v1.73.0 [d360d2e6] ↑ ChainRulesCore v1.23.0 ⇒ v1.26.1 [523fee87] + CodecBzip2 v0.8.5 [bbf7d656] ↑ CommonSubexpressions v0.3.0 ⇒ v0.3.1 [34da2185] ↑ Compat v4.14.0 ⇒ v4.18.1 [187b0558] ↑ ConstructionBase v1.5.4 ⇒ v1.6.0 [b552c78f] ↑ DiffRules v1.15.1 ⇒ v1.16.0 [ffbed154] ↑ DocStringExtensions v0.9.3 ⇒ v0.9.5 [7da242da] ↑ Enzyme v0.11.19 ⇒ v0.13.166 [f151be2c] ↑ EnzymeCore v0.6.5 ⇒ v0.8.20 [12d8515a] + EnzymeTestUtils v0.2.8 [1a297f60] ↑ FillArrays v1.9.3 ⇒ v1.16.0 [26cc04aa] + FiniteDifferences v0.12.34 [f6369f11] ↑ ForwardDiff v0.10.36 ⇒ v1.4.1 [0c68f7d7] ↑ GPUArrays v10.0.2 ⇒ v11.5.8 [46192b85] ↑ GPUArraysCore v0.1.6 ⇒ v0.2.0 ⌅ [61eb1bfa] ↑ GPUCompiler v0.25.0 ⇒ v1.15.2 ⌅ [096a3bc2] + GPUToolbox v1.1.1 [14197337] + GenericLinearAlgebra v0.4.0 [076d061b] + HashArrayMappedTries v0.2.0 [7869d1d1] ↑ IRTools v0.4.12 ⇒ v0.4.17 [92d709cd] ↑ IrrationalConstants v0.2.2 ⇒ v0.2.6 [692b3bcd] ↑ JLLWrappers v1.5.0 ⇒ v1.8.0 [2a8b799e] + JacobiElliptic v0.3.9 [63c18a36] + KernelAbstractions v0.9.41 [929cbde3] ↑ LLVM v6.6.0 ⇒ v9.10.0 [2ab3a3ac] ↑ LogExpFunctions v0.3.27 ⇒ v1.0.1 [1914dd2f] ↑ MacroTools v0.5.13 ⇒ v0.5.16 [dde4c033] + Metal v1.9.3 [77ba4419] ↑ NaNMath v1.0.2 ⇒ v1.1.4 [d8793406] ↑ ObjectFile v0.4.1 ⇒ v0.5.0 ⌅ [e86c9b32] + ObjectiveC v3.4.2 ⌅ [bac558e1] ↑ OrderedCollections v1.6.3 ⇒ v1.8.2 [aea7be01] ↑ PrecompileTools v1.2.1 ⇒ v1.3.4 [21216c6a] ↑ Preferences v1.4.3 ⇒ v1.5.2 [74087812] + Random123 v1.7.1 [e6cf234a] + RandomNumbers v1.6.0 [0d4725de] + Readables v0.3.3 [ae029012] ↑ Requires v1.3.0 ⇒ v1.3.1 [708f8203] + Richardson v1.4.3 [7e506255] + ScopedValues v1.6.2 [6c6a2e73] ↑ Scratch v1.2.1 ⇒ v1.3.0 [276daf66] ↑ SpecialFunctions v2.3.1 ⇒ v2.8.0 [90137ffa] + StaticArrays v1.9.18 [1e83bf80] ↑ StaticArraysCore v1.4.2 ⇒ v1.4.4 [10745b16] ↑ Statistics v1.10.0 ⇒ v1.11.1 [09ab397b] ↑ StructArrays v0.6.18 ⇒ v0.7.3 [53d494c1] ↑ StructIO v0.3.0 ⇒ v0.3.1 [bd369af6] ↑ Tables v1.11.1 ⇒ v1.12.1 [a759f4b9] - TimerOutputs v0.5.23 [e689c965] + Tracy v0.1.6 [3bb67fe8] + TranscodingStreams v0.11.3 [013be700] + UnsafeAtomics v0.3.1 [e88e6eb3] ↑ Zygote v0.6.69 ⇒ v0.7.11 [700de1a5] ↑ ZygoteRules v0.2.5 ⇒ v0.2.7 [6e34b625] + Bzip2_jll v1.0.9+0 [7cc45869] ↑ Enzyme_jll v0.0.102+0 ⇒ v0.0.274+0 [e134572f] + FLINT_jll v301.500.0+0 ⌅ [f52de702] + LLVMDowngrader_jll v0.6.0+2 [dad2f222] ↑ LLVMExtra_jll v0.0.29+0 ⇒ v0.0.43+1 [ad6e5548] + LibTracyClient_jll v0.13.1+0 [c8ffd9c3] - MbedTLS_jll v2.28.2+1 [656ef2d0] + OpenBLAS32_jll v0.3.33+1 [efe28fd5] ↑ OpenSpecFun_jll v0.5.5+0 ⇒ v0.5.6+0 [0dad84c5] ↑ ArgTools v1.1.1 ⇒ v1.1.2 [56f22d72] ~ Artifacts ⇒ v1.11.0 [2a0f44e3] ~ Base64 ⇒ v1.11.0 [ade2ca70] ~ Dates ⇒ v1.11.0 [8ba89e20] ~ Distributed ⇒ v1.11.0 [f43a241f] ↑ Downloads v1.6.0 ⇒ v1.7.0 [7b1f6079] ~ FileWatching ⇒ v1.11.0 [b77e0a4c] ~ InteractiveUtils ⇒ v1.11.0 [ac6e5ff7] + JuliaSyntaxHighlighting v1.12.0 [4af54fe1] ~ LazyArtifacts ⇒ v1.11.0 [76f85450] ~ LibGit2 ⇒ v1.11.0 [8f399da3] ~ Libdl ⇒ v1.11.0 [37e2e46d] ~ LinearAlgebra ⇒ v1.12.0 [56ddb016] ~ Logging ⇒ v1.11.0 [d6f4376e] ~ Markdown ⇒ v1.11.0 [a63ad114] ~ Mmap ⇒ v1.11.0 [ca575930] ↑ NetworkOptions v1.2.0 ⇒ v1.3.0 [44cfe95a] ↑ Pkg v1.10.0 ⇒ v1.12.1 [de0858da] ~ Printf ⇒ v1.11.0 [3fa0cd96] - REPL [9a3f8284] ~ Random ⇒ v1.11.0 [9e88b42a] ~ Serialization ⇒ v1.11.0 [6462fe0b] ~ Sockets ⇒ v1.11.0 [2f01184e] ↑ SparseArrays v1.10.0 ⇒ v1.12.0 [f489334b] + StyledStrings v1.11.0 [8dfed614] ~ Test ⇒ v1.11.0 [cf7118a7] ~ UUIDs ⇒ v1.11.0 [4ec0a83e] ~ Unicode ⇒ v1.11.0 [e66e0078] ↑ CompilerSupportLibraries_jll v1.0.5+1 ⇒ v1.3.0+1 [781609d7] + GMP_jll v6.3.0+2 [deac9b47] ↑ LibCURL_jll v8.4.0+0 ⇒ v8.15.0+0 [e37daf67] ↑ LibGit2_jll v1.6.4+0 ⇒ v1.9.0+0 [29816b5a] ↑ LibSSH2_jll v1.11.0+1 ⇒ v1.11.3+1 [3a97d323] + MPFR_jll v4.2.2+0 [14a3606d] ↑ MozillaCACerts_jll v2023.1.10 ⇒ v2025.11.4 [4536629a] ↑ OpenBLAS_jll v0.3.23+2 ⇒ v0.3.29+0 [05823500] ↑ OpenLibm_jll v0.8.1+2 ⇒ v0.8.7+0 [458c3c95] + OpenSSL_jll v3.5.6+0 [bea87d4a] ↑ SuiteSparse_jll v7.2.1+1 ⇒ v7.8.3+2 [83775a58] ↑ Zlib_jll v1.2.13+1 ⇒ v1.3.1+2 [8e850b90] ↑ libblastrampoline_jll v5.8.0+1 ⇒ v5.15.0+0 [8e850ede] ↑ nghttp2_jll v1.52.0+1 ⇒ v1.64.0+1 [3f19e933] ↑ p7zip_jll v17.4.0+2 ⇒ v17.7.0+0 Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated -m` Test Successfully re-resolved Status `/tmp/jl_grkmU2/Project.toml` [7e558dbc] ArbNumerics v1.6.3 [8bb1440f] DelimitedFiles v1.9.1 [7da242da] Enzyme v0.13.166 [12d8515a] EnzymeTestUtils v0.2.8 [f6369f11] ForwardDiff v1.4.1 [2a8b799e] JacobiElliptic v0.3.9 [dde4c033] Metal v1.9.3 [276daf66] SpecialFunctions v2.8.0 [e88e6eb3] Zygote v0.7.11 [8dfed614] Test v1.11.0 Status `/tmp/jl_grkmU2/Manifest.toml` [621f4979] AbstractFFTs v1.5.0 [79e6a3ab] Adapt v4.6.1 [7e558dbc] ArbNumerics v1.6.3 [a9b6321e] Atomix v1.1.3 [ab4f0b2a] BFloat16s v0.6.1 [fa961155] CEnum v0.5.0 [082447d4] ChainRules v1.73.0 [d360d2e6] ChainRulesCore v1.26.1 [523fee87] CodecBzip2 v0.8.5 [bbf7d656] CommonSubexpressions v0.3.1 [34da2185] Compat v4.18.1 [187b0558] ConstructionBase v1.6.0 [9a962f9c] DataAPI v1.16.0 [e2d170a0] DataValueInterfaces v1.0.0 [8bb1440f] DelimitedFiles v1.9.1 [163ba53b] DiffResults v1.1.0 [b552c78f] DiffRules v1.16.0 [ffbed154] DocStringExtensions v0.9.5 [7da242da] Enzyme v0.13.166 [f151be2c] EnzymeCore v0.8.20 [12d8515a] EnzymeTestUtils v0.2.8 [e2ba6199] ExprTools v0.1.10 [1a297f60] FillArrays v1.16.0 [26cc04aa] FiniteDifferences v0.12.34 [f6369f11] ForwardDiff v1.4.1 [0c68f7d7] GPUArrays v11.5.8 [46192b85] GPUArraysCore v0.2.0 ⌅ [61eb1bfa] GPUCompiler v1.15.2 ⌅ [096a3bc2] GPUToolbox v1.1.1 [14197337] GenericLinearAlgebra v0.4.0 [076d061b] HashArrayMappedTries v0.2.0 [7869d1d1] IRTools v0.4.17 [92d709cd] IrrationalConstants v0.2.6 [82899510] IteratorInterfaceExtensions v1.0.0 [692b3bcd] JLLWrappers v1.8.0 [2a8b799e] JacobiElliptic v0.3.9 [63c18a36] KernelAbstractions v0.9.41 [929cbde3] LLVM v9.10.0 [2ab3a3ac] LogExpFunctions v1.0.1 [1914dd2f] MacroTools v0.5.16 [dde4c033] Metal v1.9.3 [77ba4419] NaNMath v1.1.4 [d8793406] ObjectFile v0.5.0 ⌅ [e86c9b32] ObjectiveC v3.4.2 ⌅ [bac558e1] OrderedCollections v1.8.2 [aea7be01] PrecompileTools v1.3.4 [21216c6a] Preferences v1.5.2 [74087812] Random123 v1.7.1 [e6cf234a] RandomNumbers v1.6.0 [0d4725de] Readables v0.3.3 [c1ae055f] RealDot v0.1.0 [189a3867] Reexport v1.2.2 [ae029012] Requires v1.3.1 [708f8203] Richardson v1.4.3 [7e506255] ScopedValues v1.6.2 [6c6a2e73] Scratch v1.3.0 [dc90abb0] SparseInverseSubset v0.1.2 [276daf66] SpecialFunctions v2.8.0 [90137ffa] StaticArrays v1.9.18 [1e83bf80] StaticArraysCore v1.4.4 [10745b16] Statistics v1.11.1 [09ab397b] StructArrays v0.7.3 [53d494c1] StructIO v0.3.1 [3783bdb8] TableTraits v1.0.1 [bd369af6] Tables v1.12.1 [e689c965] Tracy v0.1.6 [3bb67fe8] TranscodingStreams v0.11.3 [013be700] UnsafeAtomics v0.3.1 [e88e6eb3] Zygote v0.7.11 [700de1a5] ZygoteRules v0.2.7 [6e34b625] Bzip2_jll v1.0.9+0 [7cc45869] Enzyme_jll v0.0.274+0 [e134572f] FLINT_jll v301.500.0+0 ⌅ [f52de702] LLVMDowngrader_jll v0.6.0+2 [dad2f222] LLVMExtra_jll v0.0.43+1 [ad6e5548] LibTracyClient_jll v0.13.1+0 [656ef2d0] OpenBLAS32_jll v0.3.33+1 [efe28fd5] OpenSpecFun_jll v0.5.6+0 [0dad84c5] ArgTools v1.1.2 [56f22d72] Artifacts v1.11.0 [2a0f44e3] Base64 v1.11.0 [ade2ca70] Dates v1.11.0 [8ba89e20] Distributed v1.11.0 [f43a241f] Downloads v1.7.0 [7b1f6079] FileWatching v1.11.0 [b77e0a4c] InteractiveUtils v1.11.0 [ac6e5ff7] JuliaSyntaxHighlighting v1.12.0 [4af54fe1] LazyArtifacts v1.11.0 [b27032c2] LibCURL v0.6.4 [76f85450] LibGit2 v1.11.0 [8f399da3] Libdl v1.11.0 [37e2e46d] LinearAlgebra v1.12.0 [56ddb016] Logging v1.11.0 [d6f4376e] Markdown v1.11.0 [a63ad114] Mmap v1.11.0 [ca575930] NetworkOptions v1.3.0 [44cfe95a] Pkg v1.12.1 [de0858da] Printf v1.11.0 [9a3f8284] Random v1.11.0 [ea8e919c] SHA v0.7.0 [9e88b42a] Serialization v1.11.0 [6462fe0b] Sockets v1.11.0 [2f01184e] SparseArrays v1.12.0 [f489334b] StyledStrings v1.11.0 [4607b0f0] SuiteSparse [fa267f1f] TOML v1.0.3 [a4e569a6] Tar v1.10.0 [8dfed614] Test v1.11.0 [cf7118a7] UUIDs v1.11.0 [4ec0a83e] Unicode v1.11.0 [e66e0078] CompilerSupportLibraries_jll v1.3.0+1 [781609d7] GMP_jll v6.3.0+2 [deac9b47] LibCURL_jll v8.15.0+0 [e37daf67] LibGit2_jll v1.9.0+0 [29816b5a] LibSSH2_jll v1.11.3+1 [3a97d323] MPFR_jll v4.2.2+0 [14a3606d] MozillaCACerts_jll v2025.11.4 [4536629a] OpenBLAS_jll v0.3.29+0 [05823500] OpenLibm_jll v0.8.7+0 [458c3c95] OpenSSL_jll v3.5.6+0 [bea87d4a] SuiteSparse_jll v7.8.3+2 [83775a58] Zlib_jll v1.3.1+2 [8e850b90] libblastrampoline_jll v5.15.0+0 [8e850ede] nghttp2_jll v1.64.0+1 [3f19e933] p7zip_jll v17.7.0+0 Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. Testing Running tests... Test Summary: | Pass Total Time alg:JacobiElliptic.CarlsonAlg | 78242 78242 13.8s Test Summary: | Pass Total Time alg:JacobiElliptic.FukushimaAlg | 78242 78242 9.9s Test Summary: | Pass Total Time NaNs | 13 13 0.4s Test Summary: | Pass Total Time Negative arguments | 40 40 0.0s Test Summary: | Pass Total Time alg = JacobiElliptic.CarlsonAlg | 4926 4926 1.6s Test Summary: | Pass Total Time alg = JacobiElliptic.FukushimaAlg | 4926 4926 0.1s Test Summary: | Pass Total Time JacobiElliptic | 6789 6789 0.2s Test Summary: | Pass Total Time specialfunctions | 5 5 0.0s test_reverse: F with return activity Active on (::Float64, Active), (::Float64, Const): Error During Test at /home/pkgeval/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:84 Got exception outside of a @test EnzymeNoDerivativeError: Current scope: ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_90737(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #21 !dbg !3423 { top: %pgcstack = call ptr @julia.get_pgcstack() #27 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !17 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !21 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #27, !dbg !3424 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !3425 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !3428 br i1 %.not, label %L9, label %L5, !dbg !3429 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !3430 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !3432 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !3433 %2 = lshr exact i64 %1, 52, !dbg !3436 %3 = add nsw i64 %2, -1024, !dbg !3438 %4 = icmp ugt i64 %3, 11, !dbg !3440 br i1 %4, label %L111, label %L22, !dbg !3439 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !3442 %6 = icmp ne i64 %1, 0, !dbg !3446 %7 = icmp eq i64 %5, 0, !dbg !3450 %.not38 = or i1 %6, %7, !dbg !3449 %8 = or disjoint i64 %5, 4503599627370496, !dbg !3449 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !3449 %9 = shl nuw i64 %value_phi, %3, !dbg !3453 %10 = urem i64 %9, 7074237752028440, !dbg !3454 %.not39 = icmp eq i64 %10, 0, !dbg !3455 br i1 %.not39, label %common.ret, label %L75, !dbg !3457 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #27, !dbg !3458, !range !2534 %12 = add nsw i64 %11, -11, !dbg !3460 %13 = shl i64 %10, %12, !dbg !3461 %14 = and i64 %13, 4503599627370495, !dbg !3464 %15 = shl nuw nsw i64 %11, 52, !dbg !3466 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !3466 %17 = or disjoint i64 %16, %14, !dbg !3469 %18 = bitcast i64 %17 to double, !dbg !3470 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !3472 %20 = icmp ne i64 %1, 0, !dbg !3476 %21 = icmp eq i64 %19, 0, !dbg !3480 %.not44 = or i1 %20, %21, !dbg !3479 %22 = or disjoint i64 %19, 4503599627370496, !dbg !3479 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !3479 %23 = add nsw i64 %2, -1024, !dbg !3483 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #27, !dbg !3485 %25 = lshr exact i64 7074237752028440, %24, !dbg !3488 %26 = sub nsw i64 %23, %24, !dbg !3490 %27 = add nuw nsw i64 %24, 1023, !dbg !3492 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #27, !dbg !3494 %29 = shl nuw i64 %value_phi15, %28, !dbg !3497 %30 = urem i64 %29, %25, !dbg !3499 %.not50 = icmp eq i64 %30, 0, !dbg !3500 br i1 %.not50, label %common.ret, label %L171, !dbg !3502 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !3503 %.not51 = icmp eq i64 %31, 0, !dbg !3505 br i1 %.not51, label %L173, label %L213.preheader, !dbg !3507 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !3508 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !3510 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !3510 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #27, !dbg !3511, !range !2534 %33 = add nsw i64 %32, -11, !dbg !3512 %34 = shl i64 %30, %33, !dbg !3513 %35 = sub nsw i64 %27, %33, !dbg !3516 %36 = icmp slt i64 %35, 0, !dbg !3518 br i1 %36, label %L200, label %L187, !dbg !3520 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !3521 %38 = shl nuw i64 %35, 52, !dbg !3523 %39 = add nuw i64 %38, 4503599627370496, !dbg !3523 %40 = and i64 %39, 9218868437227405312, !dbg !3526 %41 = or disjoint i64 %40, %37, !dbg !3528 br label %L209, !dbg !3528 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !3529 %43 = lshr i64 %34, %42, !dbg !3531 %44 = and i64 %43, 4503599627370495, !dbg !3533 br label %L209, !dbg !3533 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !3534 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !3536 %iv.next = add nuw nsw i64 %iv, 1, !dbg !3536 %46 = add i64 %31, %45, !dbg !3536 %47 = add i64 %46, -14, !dbg !3536 %48 = shl i64 %value_phi2854, 14, !dbg !3538 %49 = urem i64 %48, %25, !dbg !3540 %.not52 = icmp ugt i64 %47, 14, !dbg !3508 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !3510 L221.loopexit: ; preds = %L217 br label %L221, !dbg !3541 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !3541 %51 = urem i64 %50, %25, !dbg !3543 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #27, !dbg !3544, !range !2534 %53 = add nsw i64 %52, -11, !dbg !3546 %54 = shl i64 %51, %53, !dbg !3547 %55 = sub nsw i64 %27, %53, !dbg !3550 %56 = icmp slt i64 %55, 0, !dbg !3552 br i1 %56, label %L250, label %L237, !dbg !3554 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !3555 %58 = shl i64 %55, 52, !dbg !3557 %59 = add i64 %58, 4503599627370496, !dbg !3557 %60 = and i64 %59, 9218868437227405312, !dbg !3560 %61 = or disjoint i64 %60, %57, !dbg !3562 br label %L259, !dbg !3562 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !3563 %63 = lshr i64 %54, %62, !dbg !3565 %64 = icmp ugt i64 %62, 63, !dbg !3565 %65 = and i64 %63, 4503599627370495, !dbg !3567 %66 = select i1 %64, i64 0, i64 %65, !dbg !3567 br label %L259, !dbg !3567 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !3568 br label %common.ret } ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_90737(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #21 !dbg !3423 { top: %pgcstack = call ptr @julia.get_pgcstack() #27 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !17 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !21 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #27, !dbg !3424 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !3425 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !3428 br i1 %.not, label %L9, label %L5, !dbg !3429 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !3430 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !3432 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !3433 %2 = lshr exact i64 %1, 52, !dbg !3436 %3 = add nsw i64 %2, -1024, !dbg !3438 %4 = icmp ugt i64 %3, 11, !dbg !3440 br i1 %4, label %L111, label %L22, !dbg !3439 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !3442 %6 = icmp ne i64 %1, 0, !dbg !3446 %7 = icmp eq i64 %5, 0, !dbg !3450 %.not38 = or i1 %6, %7, !dbg !3449 %8 = or disjoint i64 %5, 4503599627370496, !dbg !3449 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !3449 %9 = shl nuw i64 %value_phi, %3, !dbg !3453 %10 = urem i64 %9, 7074237752028440, !dbg !3454 %.not39 = icmp eq i64 %10, 0, !dbg !3455 br i1 %.not39, label %common.ret, label %L75, !dbg !3457 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #27, !dbg !3458, !range !2534 %12 = add nsw i64 %11, -11, !dbg !3460 %13 = shl i64 %10, %12, !dbg !3461 %14 = and i64 %13, 4503599627370495, !dbg !3464 %15 = shl nuw nsw i64 %11, 52, !dbg !3466 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !3466 %17 = or disjoint i64 %16, %14, !dbg !3469 %18 = bitcast i64 %17 to double, !dbg !3470 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !3472 %20 = icmp ne i64 %1, 0, !dbg !3476 %21 = icmp eq i64 %19, 0, !dbg !3480 %.not44 = or i1 %20, %21, !dbg !3479 %22 = or disjoint i64 %19, 4503599627370496, !dbg !3479 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !3479 %23 = add nsw i64 %2, -1024, !dbg !3483 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #27, !dbg !3485 %25 = lshr exact i64 7074237752028440, %24, !dbg !3488 %26 = sub nsw i64 %23, %24, !dbg !3490 %27 = add nuw nsw i64 %24, 1023, !dbg !3492 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #27, !dbg !3494 %29 = shl nuw i64 %value_phi15, %28, !dbg !3497 %30 = urem i64 %29, %25, !dbg !3499 %.not50 = icmp eq i64 %30, 0, !dbg !3500 br i1 %.not50, label %common.ret, label %L171, !dbg !3502 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !3503 %.not51 = icmp eq i64 %31, 0, !dbg !3505 br i1 %.not51, label %L173, label %L213.preheader, !dbg !3507 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !3508 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !3510 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !3510 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #27, !dbg !3511, !range !2534 %33 = add nsw i64 %32, -11, !dbg !3512 %34 = shl i64 %30, %33, !dbg !3513 %35 = sub nsw i64 %27, %33, !dbg !3516 %36 = icmp slt i64 %35, 0, !dbg !3518 br i1 %36, label %L200, label %L187, !dbg !3520 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !3521 %38 = shl nuw i64 %35, 52, !dbg !3523 %39 = add nuw i64 %38, 4503599627370496, !dbg !3523 %40 = and i64 %39, 9218868437227405312, !dbg !3526 %41 = or disjoint i64 %40, %37, !dbg !3528 br label %L209, !dbg !3528 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !3529 %43 = lshr i64 %34, %42, !dbg !3531 %44 = and i64 %43, 4503599627370495, !dbg !3533 br label %L209, !dbg !3533 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !3534 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !3536 %iv.next = add nuw nsw i64 %iv, 1, !dbg !3536 %46 = add i64 %31, %45, !dbg !3536 %47 = add i64 %46, -14, !dbg !3536 %48 = shl i64 %value_phi2854, 14, !dbg !3538 %49 = urem i64 %48, %25, !dbg !3540 %.not52 = icmp ugt i64 %47, 14, !dbg !3508 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !3510 L221.loopexit: ; preds = %L217 br label %L221, !dbg !3541 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !3541 %51 = urem i64 %50, %25, !dbg !3543 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #27, !dbg !3544, !range !2534 %53 = add nsw i64 %52, -11, !dbg !3546 %54 = shl i64 %51, %53, !dbg !3547 %55 = sub nsw i64 %27, %53, !dbg !3550 %56 = icmp slt i64 %55, 0, !dbg !3552 br i1 %56, label %L250, label %L237, !dbg !3554 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !3555 %58 = shl i64 %55, 52, !dbg !3557 %59 = add i64 %58, 4503599627370496, !dbg !3557 %60 = and i64 %59, 9218868437227405312, !dbg !3560 %61 = or disjoint i64 %60, %57, !dbg !3562 br label %L259, !dbg !3562 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !3563 %63 = lshr i64 %54, %62, !dbg !3565 %64 = icmp ugt i64 %62, 63, !dbg !3565 %65 = and i64 %63, 4503599627370495, !dbg !3567 %66 = select i1 %64, i64 0, i64 %65, !dbg !3567 br label %L259, !dbg !3567 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !3568 br label %common.ret } constantarg[double %"x::Float64"] = 0 type: {[-1]:Float@double} - vals: {} constantinst[ %pgcstack = call ptr @julia.get_pgcstack() #27] = 1 val:1 type: {[-1]:Pointer, [-1,16]:Pointer} constantinst[ %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16] = 1 val:1 type: {[-1]:Pointer, [-1,0]:Pointer} constantinst[ %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !17] = 1 val:1 type: {[-1]:Pointer} constantinst[ %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16] = 1 val:1 type: {[-1]:Pointer} constantinst[ %safepoint = load ptr, ptr %0, align 8, !tbaa !21] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ call void @julia.safepoint(ptr %safepoint) #27, !dbg !23] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !24] = 0 val:0 type: {[-1]:Float@double} constantinst[ %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !30] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not, label %L9, label %L5, !dbg !33] = 1 val:1 type: {} constantinst[ %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !34] = 1 val:1 type: {[-1]:Integer} constantinst[ %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64"] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ ret double %common.ret.op, !dbg !37] = 1 val:1 type: {} constantinst[ %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !38] = 1 val:1 type: {} constantinst[ %2 = lshr exact i64 %1, 52, !dbg !43] = 1 val:1 type: {[-1]:Integer} constantinst[ %3 = add nsw i64 %2, -1024, !dbg !46] = 1 val:1 type: {[-1]:Integer} constantinst[ %4 = icmp ugt i64 %3, 11, !dbg !49] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %4, label %L111, label %L22, !dbg !48] = 1 val:1 type: {} constantinst[ %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !51] = 0 val:0 type: {} constantinst[ %6 = icmp ne i64 %1, 0, !dbg !57] = 1 val:1 type: {[-1]:Integer} constantinst[ %7 = icmp eq i64 %5, 0, !dbg !65] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not38 = or i1 %6, %7, !dbg !64] = 1 val:1 type: {[-1]:Integer} constantinst[ %8 = or disjoint i64 %5, 4503599627370496, !dbg !64] = 0 val:0 type: {} constantinst[ %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !64] = 0 val:0 type: {} constantinst[ %9 = shl nuw i64 %value_phi, %3, !dbg !70] = 0 val:0 type: {} constantinst[ %10 = urem i64 %9, 7074237752028440, !dbg !72] = 0 val:0 type: {} constantinst[ %.not39 = icmp eq i64 %10, 0, !dbg !73] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not39, label %common.ret, label %L75, !dbg !77] = 1 val:1 type: {} constantinst[ %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #27, !dbg !78, !range !81] = 1 val:1 type: {[-1]:Integer} constantinst[ %12 = add nsw i64 %11, -11, !dbg !82] = 1 val:1 type: {[-1]:Integer} constantinst[ %13 = shl i64 %10, %12, !dbg !83] = 0 val:0 type: {} constantinst[ %14 = and i64 %13, 4503599627370495, !dbg !86] = 0 val:0 type: {} constantinst[ %15 = shl nuw nsw i64 %11, 52, !dbg !88] = 1 val:1 type: {[-1]:Integer} constantinst[ %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !88] = 1 val:1 type: {[-1]:Anything} constantinst[ %17 = or disjoint i64 %16, %14, !dbg !91] = 0 val:0 type: {[-1]:Float@double} constantinst[ %18 = bitcast i64 %17 to double, !dbg !93] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !95] = 0 val:0 type: {} constantinst[ %20 = icmp ne i64 %1, 0, !dbg !99] = 1 val:1 type: {[-1]:Integer} constantinst[ %21 = icmp eq i64 %19, 0, !dbg !103] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not44 = or i1 %20, %21, !dbg !102] = 1 val:1 type: {[-1]:Integer} constantinst[ %22 = or disjoint i64 %19, 4503599627370496, !dbg !102] = 0 val:0 type: {} constantinst[ %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !102] = 0 val:0 type: {} constantinst[ %23 = add nsw i64 %2, -1024, !dbg !106] = 1 val:1 type: {[-1]:Integer} constantinst[ %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #27, !dbg !108] = 1 val:1 type: {[-1]:Integer} constantinst[ %25 = lshr exact i64 7074237752028440, %24, !dbg !113] = 1 val:1 type: {[-1]:Anything} constantinst[ %26 = sub nsw i64 %23, %24, !dbg !115] = 1 val:1 type: {[-1]:Integer} constantinst[ %27 = add nuw nsw i64 %24, 1023, !dbg !117] = 1 val:1 type: {[-1]:Integer} constantinst[ %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #27, !dbg !120] = 1 val:1 type: {[-1]:Integer} constantinst[ %29 = shl nuw i64 %value_phi15, %28, !dbg !123] = 0 val:0 type: {} constantinst[ %30 = urem i64 %29, %25, !dbg !125] = 0 val:0 type: {} constantinst[ %.not50 = icmp eq i64 %30, 0, !dbg !126] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not50, label %common.ret, label %L171, !dbg !128] = 1 val:1 type: {} constantinst[ %31 = sub nsw i64 %26, %28, !dbg !129] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not51 = icmp eq i64 %31, 0, !dbg !131] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not51, label %L173, label %L213.preheader, !dbg !133] = 1 val:1 type: {} constantinst[ %.not5253 = icmp ugt i64 %31, 14, !dbg !134] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not5253, label %L217.preheader, label %L221, !dbg !137] = 1 val:1 type: {} constantinst[ br label %L217, !dbg !137] = 1 val:1 type: {} constantinst[ %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #27, !dbg !138, !range !81] = 1 val:1 type: {[-1]:Integer} constantinst[ %33 = add nsw i64 %32, -11, !dbg !139] = 1 val:1 type: {[-1]:Integer} constantinst[ %34 = shl i64 %30, %33, !dbg !140] = 0 val:0 type: {} constantinst[ %35 = sub nsw i64 %27, %33, !dbg !143] = 1 val:1 type: {[-1]:Integer} constantinst[ %36 = icmp slt i64 %35, 0, !dbg !145] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %36, label %L200, label %L187, !dbg !148] = 1 val:1 type: {} constantinst[ %37 = and i64 %34, 4503599627370495, !dbg !149] = 0 val:0 type: {} constantinst[ %38 = shl nuw i64 %35, 52, !dbg !151] = 1 val:1 type: {[-1]:Integer} constantinst[ %39 = add nuw i64 %38, 4503599627370496, !dbg !151] = 1 val:1 type: {[-1]:Anything} constantinst[ %40 = and i64 %39, 9218868437227405312, !dbg !154] = 1 val:1 type: {[-1]:Anything} constantinst[ %41 = or disjoint i64 %40, %37, !dbg !156] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !156] = 1 val:1 type: {} constantinst[ %42 = sub nsw i64 0, %35, !dbg !157] = 1 val:1 type: {[-1]:Anything} constantinst[ %43 = lshr i64 %34, %42, !dbg !159] = 0 val:0 type: {} constantinst[ %44 = and i64 %43, 4503599627370495, !dbg !161] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !161] = 1 val:1 type: {} constantinst[ %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !162] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ]] = 0 val:0 type: {} constantinst[ %45 = mul i64 %iv, -14, !dbg !164] = 1 val:1 type: {[-1]:Integer} constantinst[ %iv.next = add nuw nsw i64 %iv, 1, !dbg !164] = 1 val:1 type: {[-1]:Integer} constantinst[ %46 = add i64 %31, %45, !dbg !164] = 1 val:1 type: {[-1]:Integer} constantinst[ %47 = add i64 %46, -14, !dbg !164] = 1 val:1 type: {[-1]:Integer} constantinst[ %48 = shl i64 %value_phi2854, 14, !dbg !166] = 0 val:0 type: {} constantinst[ %49 = urem i64 %48, %25, !dbg !168] = 0 val:0 type: {} constantinst[ %.not52 = icmp ugt i64 %47, 14, !dbg !134] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not52, label %L217, label %L221.loopexit, !dbg !137] = 1 val:1 type: {} constantinst[ br label %L221, !dbg !169] = 1 val:1 type: {} constantinst[ %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ]] = 0 val:0 type: {} constantinst[ %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !169] = 0 val:0 type: {} constantinst[ %51 = urem i64 %50, %25, !dbg !171] = 0 val:0 type: {} constantinst[ %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #27, !dbg !172, !range !81] = 1 val:1 type: {[-1]:Integer} constantinst[ %53 = add nsw i64 %52, -11, !dbg !174] = 1 val:1 type: {[-1]:Integer} constantinst[ %54 = shl i64 %51, %53, !dbg !175] = 0 val:0 type: {} constantinst[ %55 = sub nsw i64 %27, %53, !dbg !178] = 1 val:1 type: {[-1]:Integer} constantinst[ %56 = icmp slt i64 %55, 0, !dbg !180] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %56, label %L250, label %L237, !dbg !182] = 1 val:1 type: {} constantinst[ %57 = and i64 %54, 4503599627370495, !dbg !183] = 0 val:0 type: {} constantinst[ %58 = shl i64 %55, 52, !dbg !185] = 1 val:1 type: {[-1]:Integer} constantinst[ %59 = add i64 %58, 4503599627370496, !dbg !185] = 1 val:1 type: {[-1]:Anything} constantinst[ %60 = and i64 %59, 9218868437227405312, !dbg !188] = 1 val:1 type: {[-1]:Anything} constantinst[ %61 = or disjoint i64 %60, %57, !dbg !190] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !190] = 1 val:1 type: {} constantinst[ %62 = sub nsw i64 0, %55, !dbg !191] = 1 val:1 type: {[-1]:Anything} constantinst[ %63 = lshr i64 %54, %62, !dbg !193] = 0 val:0 type: {} constantinst[ %64 = icmp ugt i64 %62, 63, !dbg !193] = 1 val:1 type: {[-1]:Integer} constantinst[ %65 = and i64 %63, 4503599627370495, !dbg !195] = 0 val:0 type: {[-1]:Float@double} constantinst[ %66 = select i1 %64, i64 0, i64 %65, !dbg !195] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !195] = 1 val:1 type: {} constantinst[ %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !196] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} cannot handle unknown binary operator: %17 = or disjoint i64 %16, %14, !dbg !91 Stacktrace: [1] | @ ./int.jl:378 [2] _to_float @ ./float.jl:526 [3] rem_internal @ ./float.jl:552 Failure within method: rem_internal(::Float64, ::Float64) @ Base float.jl:533 Hint: catch this exception as `err` and call `code_typed(err)` to inspect the surrounding code. Stacktrace: [1] | @ ./int.jl:378 [inlined] [2] _to_float @ ./float.jl:526 [inlined] [3] rem_internal @ ./float.jl:552 [4] rem @ ./float.jl:601 [inlined] [5] mod @ ./float.jl:610 [inlined] [6] _F @ ~/.julia/packages/JacobiElliptic/DNY74/src/Carlson.jl:40 [inlined] [7] F @ ~/.julia/packages/JacobiElliptic/DNY74/src/Carlson.jl:68 [inlined] [8] call_with_kwargs @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:10 [inlined] [9] diffejulia_call_with_kwargs_90709wrap @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:0 [10] macro expansion @ ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6886 [inlined] [11] enzyme_call(::Val{false}, ::Ptr{Nothing}, ::Type{Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.F)}, Active{Float64}, Const{Float64}}, 1, Tuple{Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64}}}, ::Val{1}, ::Val{false}, ::Type{Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.F)}, Active{Float64}, Const{Float64}}}, ::Type{Active{Float64}}, ::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Type{Tuple{Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64}}, ::Const{@NamedTuple{}}, ::Const{typeof(JacobiElliptic.CarlsonAlg.F)}, ::Active{Float64}, ::Const{Float64}, ::Float64, ::Tuple{Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6356 [12] (::Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.F)}, Active{Float64}, Const{Float64}}, 1, Tuple{Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64}})(::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Const{@NamedTuple{}}, ::Vararg{Any}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6272 [13] macro expansion @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:131 [inlined] [14] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [15] test_reverse(::typeof(JacobiElliptic.CarlsonAlg.F), ::Type, ::Tuple{Float64, UnionAll}, ::Vararg{Tuple{Float64, UnionAll}}; rng::Random.TaskLocalRNG, fdm::FiniteDifferences.AdaptedFiniteDifferenceMethod{5, 1, FiniteDifferences.UnadaptedFiniteDifferenceMethod{7, 5}}, fkwargs::@NamedTuple{}, rtol::Float64, atol::Float64, testset_name::Nothing, runtime_activity::Bool, output_tangent::Nothing) @ EnzymeTestUtils ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:86 [16] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:1889 [17] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [18] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:17 [inlined] [19] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [20] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:25 [inlined] [21] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [22] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:84 [inlined] [23] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [24] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:131 [inlined] [25] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [26] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/runtests.jl:10 [27] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [28] top-level scope @ none:6 [29] eval(m::Module, e::Any) @ Core ./boot.jl:489 [30] exec_options(opts::Base.JLOptions) @ Base ./client.jl:283 [31] _start() @ Base ./client.jl:550 test_reverse: F with return activity Active on (::Float64, Active), (::Float64, Active): Error During Test at /home/pkgeval/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:84 Got exception outside of a @test EnzymeNoDerivativeError: Current scope: ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_91206(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #21 !dbg !3423 { top: %pgcstack = call ptr @julia.get_pgcstack() #27 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !17 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !21 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #27, !dbg !3424 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !3425 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !3428 br i1 %.not, label %L9, label %L5, !dbg !3429 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !3430 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !3432 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !3433 %2 = lshr exact i64 %1, 52, !dbg !3436 %3 = add nsw i64 %2, -1024, !dbg !3438 %4 = icmp ugt i64 %3, 11, !dbg !3440 br i1 %4, label %L111, label %L22, !dbg !3439 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !3442 %6 = icmp ne i64 %1, 0, !dbg !3446 %7 = icmp eq i64 %5, 0, !dbg !3450 %.not38 = or i1 %6, %7, !dbg !3449 %8 = or disjoint i64 %5, 4503599627370496, !dbg !3449 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !3449 %9 = shl nuw i64 %value_phi, %3, !dbg !3453 %10 = urem i64 %9, 7074237752028440, !dbg !3454 %.not39 = icmp eq i64 %10, 0, !dbg !3455 br i1 %.not39, label %common.ret, label %L75, !dbg !3457 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #27, !dbg !3458, !range !2534 %12 = add nsw i64 %11, -11, !dbg !3460 %13 = shl i64 %10, %12, !dbg !3461 %14 = and i64 %13, 4503599627370495, !dbg !3464 %15 = shl nuw nsw i64 %11, 52, !dbg !3466 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !3466 %17 = or disjoint i64 %16, %14, !dbg !3469 %18 = bitcast i64 %17 to double, !dbg !3470 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !3472 %20 = icmp ne i64 %1, 0, !dbg !3476 %21 = icmp eq i64 %19, 0, !dbg !3480 %.not44 = or i1 %20, %21, !dbg !3479 %22 = or disjoint i64 %19, 4503599627370496, !dbg !3479 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !3479 %23 = add nsw i64 %2, -1024, !dbg !3483 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #27, !dbg !3485 %25 = lshr exact i64 7074237752028440, %24, !dbg !3488 %26 = sub nsw i64 %23, %24, !dbg !3490 %27 = add nuw nsw i64 %24, 1023, !dbg !3492 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #27, !dbg !3494 %29 = shl nuw i64 %value_phi15, %28, !dbg !3497 %30 = urem i64 %29, %25, !dbg !3499 %.not50 = icmp eq i64 %30, 0, !dbg !3500 br i1 %.not50, label %common.ret, label %L171, !dbg !3502 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !3503 %.not51 = icmp eq i64 %31, 0, !dbg !3505 br i1 %.not51, label %L173, label %L213.preheader, !dbg !3507 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !3508 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !3510 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !3510 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #27, !dbg !3511, !range !2534 %33 = add nsw i64 %32, -11, !dbg !3512 %34 = shl i64 %30, %33, !dbg !3513 %35 = sub nsw i64 %27, %33, !dbg !3516 %36 = icmp slt i64 %35, 0, !dbg !3518 br i1 %36, label %L200, label %L187, !dbg !3520 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !3521 %38 = shl nuw i64 %35, 52, !dbg !3523 %39 = add nuw i64 %38, 4503599627370496, !dbg !3523 %40 = and i64 %39, 9218868437227405312, !dbg !3526 %41 = or disjoint i64 %40, %37, !dbg !3528 br label %L209, !dbg !3528 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !3529 %43 = lshr i64 %34, %42, !dbg !3531 %44 = and i64 %43, 4503599627370495, !dbg !3533 br label %L209, !dbg !3533 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !3534 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !3536 %iv.next = add nuw nsw i64 %iv, 1, !dbg !3536 %46 = add i64 %31, %45, !dbg !3536 %47 = add i64 %46, -14, !dbg !3536 %48 = shl i64 %value_phi2854, 14, !dbg !3538 %49 = urem i64 %48, %25, !dbg !3540 %.not52 = icmp ugt i64 %47, 14, !dbg !3508 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !3510 L221.loopexit: ; preds = %L217 br label %L221, !dbg !3541 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !3541 %51 = urem i64 %50, %25, !dbg !3543 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #27, !dbg !3544, !range !2534 %53 = add nsw i64 %52, -11, !dbg !3546 %54 = shl i64 %51, %53, !dbg !3547 %55 = sub nsw i64 %27, %53, !dbg !3550 %56 = icmp slt i64 %55, 0, !dbg !3552 br i1 %56, label %L250, label %L237, !dbg !3554 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !3555 %58 = shl i64 %55, 52, !dbg !3557 %59 = add i64 %58, 4503599627370496, !dbg !3557 %60 = and i64 %59, 9218868437227405312, !dbg !3560 %61 = or disjoint i64 %60, %57, !dbg !3562 br label %L259, !dbg !3562 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !3563 %63 = lshr i64 %54, %62, !dbg !3565 %64 = icmp ugt i64 %62, 63, !dbg !3565 %65 = and i64 %63, 4503599627370495, !dbg !3567 %66 = select i1 %64, i64 0, i64 %65, !dbg !3567 br label %L259, !dbg !3567 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !3568 br label %common.ret } ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_91206(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #21 !dbg !3423 { top: %pgcstack = call ptr @julia.get_pgcstack() #27 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !17 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !21 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #27, !dbg !3424 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !3425 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !3428 br i1 %.not, label %L9, label %L5, !dbg !3429 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !3430 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !3432 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !3433 %2 = lshr exact i64 %1, 52, !dbg !3436 %3 = add nsw i64 %2, -1024, !dbg !3438 %4 = icmp ugt i64 %3, 11, !dbg !3440 br i1 %4, label %L111, label %L22, !dbg !3439 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !3442 %6 = icmp ne i64 %1, 0, !dbg !3446 %7 = icmp eq i64 %5, 0, !dbg !3450 %.not38 = or i1 %6, %7, !dbg !3449 %8 = or disjoint i64 %5, 4503599627370496, !dbg !3449 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !3449 %9 = shl nuw i64 %value_phi, %3, !dbg !3453 %10 = urem i64 %9, 7074237752028440, !dbg !3454 %.not39 = icmp eq i64 %10, 0, !dbg !3455 br i1 %.not39, label %common.ret, label %L75, !dbg !3457 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #27, !dbg !3458, !range !2534 %12 = add nsw i64 %11, -11, !dbg !3460 %13 = shl i64 %10, %12, !dbg !3461 %14 = and i64 %13, 4503599627370495, !dbg !3464 %15 = shl nuw nsw i64 %11, 52, !dbg !3466 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !3466 %17 = or disjoint i64 %16, %14, !dbg !3469 %18 = bitcast i64 %17 to double, !dbg !3470 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !3472 %20 = icmp ne i64 %1, 0, !dbg !3476 %21 = icmp eq i64 %19, 0, !dbg !3480 %.not44 = or i1 %20, %21, !dbg !3479 %22 = or disjoint i64 %19, 4503599627370496, !dbg !3479 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !3479 %23 = add nsw i64 %2, -1024, !dbg !3483 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #27, !dbg !3485 %25 = lshr exact i64 7074237752028440, %24, !dbg !3488 %26 = sub nsw i64 %23, %24, !dbg !3490 %27 = add nuw nsw i64 %24, 1023, !dbg !3492 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #27, !dbg !3494 %29 = shl nuw i64 %value_phi15, %28, !dbg !3497 %30 = urem i64 %29, %25, !dbg !3499 %.not50 = icmp eq i64 %30, 0, !dbg !3500 br i1 %.not50, label %common.ret, label %L171, !dbg !3502 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !3503 %.not51 = icmp eq i64 %31, 0, !dbg !3505 br i1 %.not51, label %L173, label %L213.preheader, !dbg !3507 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !3508 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !3510 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !3510 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #27, !dbg !3511, !range !2534 %33 = add nsw i64 %32, -11, !dbg !3512 %34 = shl i64 %30, %33, !dbg !3513 %35 = sub nsw i64 %27, %33, !dbg !3516 %36 = icmp slt i64 %35, 0, !dbg !3518 br i1 %36, label %L200, label %L187, !dbg !3520 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !3521 %38 = shl nuw i64 %35, 52, !dbg !3523 %39 = add nuw i64 %38, 4503599627370496, !dbg !3523 %40 = and i64 %39, 9218868437227405312, !dbg !3526 %41 = or disjoint i64 %40, %37, !dbg !3528 br label %L209, !dbg !3528 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !3529 %43 = lshr i64 %34, %42, !dbg !3531 %44 = and i64 %43, 4503599627370495, !dbg !3533 br label %L209, !dbg !3533 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !3534 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !3536 %iv.next = add nuw nsw i64 %iv, 1, !dbg !3536 %46 = add i64 %31, %45, !dbg !3536 %47 = add i64 %46, -14, !dbg !3536 %48 = shl i64 %value_phi2854, 14, !dbg !3538 %49 = urem i64 %48, %25, !dbg !3540 %.not52 = icmp ugt i64 %47, 14, !dbg !3508 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !3510 L221.loopexit: ; preds = %L217 br label %L221, !dbg !3541 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !3541 %51 = urem i64 %50, %25, !dbg !3543 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #27, !dbg !3544, !range !2534 %53 = add nsw i64 %52, -11, !dbg !3546 %54 = shl i64 %51, %53, !dbg !3547 %55 = sub nsw i64 %27, %53, !dbg !3550 %56 = icmp slt i64 %55, 0, !dbg !3552 br i1 %56, label %L250, label %L237, !dbg !3554 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !3555 %58 = shl i64 %55, 52, !dbg !3557 %59 = add i64 %58, 4503599627370496, !dbg !3557 %60 = and i64 %59, 9218868437227405312, !dbg !3560 %61 = or disjoint i64 %60, %57, !dbg !3562 br label %L259, !dbg !3562 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !3563 %63 = lshr i64 %54, %62, !dbg !3565 %64 = icmp ugt i64 %62, 63, !dbg !3565 %65 = and i64 %63, 4503599627370495, !dbg !3567 %66 = select i1 %64, i64 0, i64 %65, !dbg !3567 br label %L259, !dbg !3567 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !3568 br label %common.ret } constantarg[double %"x::Float64"] = 0 type: {[-1]:Float@double} - vals: {} constantinst[ %pgcstack = call ptr @julia.get_pgcstack() #27] = 1 val:1 type: {[-1]:Pointer, [-1,16]:Pointer} constantinst[ %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16] = 1 val:1 type: {[-1]:Pointer, [-1,0]:Pointer} constantinst[ %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !17] = 1 val:1 type: {[-1]:Pointer} constantinst[ %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16] = 1 val:1 type: {[-1]:Pointer} constantinst[ %safepoint = load ptr, ptr %0, align 8, !tbaa !21] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ call void @julia.safepoint(ptr %safepoint) #27, !dbg !23] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !24] = 0 val:0 type: {[-1]:Float@double} constantinst[ %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !30] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not, label %L9, label %L5, !dbg !33] = 1 val:1 type: {} constantinst[ %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !34] = 1 val:1 type: {[-1]:Integer} constantinst[ %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64"] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ ret double %common.ret.op, !dbg !37] = 1 val:1 type: {} constantinst[ %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !38] = 1 val:1 type: {} constantinst[ %2 = lshr exact i64 %1, 52, !dbg !43] = 1 val:1 type: {[-1]:Integer} constantinst[ %3 = add nsw i64 %2, -1024, !dbg !46] = 1 val:1 type: {[-1]:Integer} constantinst[ %4 = icmp ugt i64 %3, 11, !dbg !49] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %4, label %L111, label %L22, !dbg !48] = 1 val:1 type: {} constantinst[ %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !51] = 0 val:0 type: {} constantinst[ %6 = icmp ne i64 %1, 0, !dbg !57] = 1 val:1 type: {[-1]:Integer} constantinst[ %7 = icmp eq i64 %5, 0, !dbg !65] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not38 = or i1 %6, %7, !dbg !64] = 1 val:1 type: {[-1]:Integer} constantinst[ %8 = or disjoint i64 %5, 4503599627370496, !dbg !64] = 0 val:0 type: {} constantinst[ %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !64] = 0 val:0 type: {} constantinst[ %9 = shl nuw i64 %value_phi, %3, !dbg !70] = 0 val:0 type: {} constantinst[ %10 = urem i64 %9, 7074237752028440, !dbg !72] = 0 val:0 type: {} constantinst[ %.not39 = icmp eq i64 %10, 0, !dbg !73] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not39, label %common.ret, label %L75, !dbg !77] = 1 val:1 type: {} constantinst[ %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #27, !dbg !78, !range !81] = 1 val:1 type: {[-1]:Integer} constantinst[ %12 = add nsw i64 %11, -11, !dbg !82] = 1 val:1 type: {[-1]:Integer} constantinst[ %13 = shl i64 %10, %12, !dbg !83] = 0 val:0 type: {} constantinst[ %14 = and i64 %13, 4503599627370495, !dbg !86] = 0 val:0 type: {} constantinst[ %15 = shl nuw nsw i64 %11, 52, !dbg !88] = 1 val:1 type: {[-1]:Integer} constantinst[ %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !88] = 1 val:1 type: {[-1]:Anything} constantinst[ %17 = or disjoint i64 %16, %14, !dbg !91] = 0 val:0 type: {[-1]:Float@double} constantinst[ %18 = bitcast i64 %17 to double, !dbg !93] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !95] = 0 val:0 type: {} constantinst[ %20 = icmp ne i64 %1, 0, !dbg !99] = 1 val:1 type: {[-1]:Integer} constantinst[ %21 = icmp eq i64 %19, 0, !dbg !103] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not44 = or i1 %20, %21, !dbg !102] = 1 val:1 type: {[-1]:Integer} constantinst[ %22 = or disjoint i64 %19, 4503599627370496, !dbg !102] = 0 val:0 type: {} constantinst[ %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !102] = 0 val:0 type: {} constantinst[ %23 = add nsw i64 %2, -1024, !dbg !106] = 1 val:1 type: {[-1]:Integer} constantinst[ %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #27, !dbg !108] = 1 val:1 type: {[-1]:Integer} constantinst[ %25 = lshr exact i64 7074237752028440, %24, !dbg !113] = 1 val:1 type: {[-1]:Anything} constantinst[ %26 = sub nsw i64 %23, %24, !dbg !115] = 1 val:1 type: {[-1]:Integer} constantinst[ %27 = add nuw nsw i64 %24, 1023, !dbg !117] = 1 val:1 type: {[-1]:Integer} constantinst[ %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #27, !dbg !120] = 1 val:1 type: {[-1]:Integer} constantinst[ %29 = shl nuw i64 %value_phi15, %28, !dbg !123] = 0 val:0 type: {} constantinst[ %30 = urem i64 %29, %25, !dbg !125] = 0 val:0 type: {} constantinst[ %.not50 = icmp eq i64 %30, 0, !dbg !126] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not50, label %common.ret, label %L171, !dbg !128] = 1 val:1 type: {} constantinst[ %31 = sub nsw i64 %26, %28, !dbg !129] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not51 = icmp eq i64 %31, 0, !dbg !131] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not51, label %L173, label %L213.preheader, !dbg !133] = 1 val:1 type: {} constantinst[ %.not5253 = icmp ugt i64 %31, 14, !dbg !134] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not5253, label %L217.preheader, label %L221, !dbg !137] = 1 val:1 type: {} constantinst[ br label %L217, !dbg !137] = 1 val:1 type: {} constantinst[ %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #27, !dbg !138, !range !81] = 1 val:1 type: {[-1]:Integer} constantinst[ %33 = add nsw i64 %32, -11, !dbg !139] = 1 val:1 type: {[-1]:Integer} constantinst[ %34 = shl i64 %30, %33, !dbg !140] = 0 val:0 type: {} constantinst[ %35 = sub nsw i64 %27, %33, !dbg !143] = 1 val:1 type: {[-1]:Integer} constantinst[ %36 = icmp slt i64 %35, 0, !dbg !145] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %36, label %L200, label %L187, !dbg !148] = 1 val:1 type: {} constantinst[ %37 = and i64 %34, 4503599627370495, !dbg !149] = 0 val:0 type: {} constantinst[ %38 = shl nuw i64 %35, 52, !dbg !151] = 1 val:1 type: {[-1]:Integer} constantinst[ %39 = add nuw i64 %38, 4503599627370496, !dbg !151] = 1 val:1 type: {[-1]:Anything} constantinst[ %40 = and i64 %39, 9218868437227405312, !dbg !154] = 1 val:1 type: {[-1]:Anything} constantinst[ %41 = or disjoint i64 %40, %37, !dbg !156] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !156] = 1 val:1 type: {} constantinst[ %42 = sub nsw i64 0, %35, !dbg !157] = 1 val:1 type: {[-1]:Anything} constantinst[ %43 = lshr i64 %34, %42, !dbg !159] = 0 val:0 type: {} constantinst[ %44 = and i64 %43, 4503599627370495, !dbg !161] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !161] = 1 val:1 type: {} constantinst[ %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !162] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ]] = 0 val:0 type: {} constantinst[ %45 = mul i64 %iv, -14, !dbg !164] = 1 val:1 type: {[-1]:Integer} constantinst[ %iv.next = add nuw nsw i64 %iv, 1, !dbg !164] = 1 val:1 type: {[-1]:Integer} constantinst[ %46 = add i64 %31, %45, !dbg !164] = 1 val:1 type: {[-1]:Integer} constantinst[ %47 = add i64 %46, -14, !dbg !164] = 1 val:1 type: {[-1]:Integer} constantinst[ %48 = shl i64 %value_phi2854, 14, !dbg !166] = 0 val:0 type: {} constantinst[ %49 = urem i64 %48, %25, !dbg !168] = 0 val:0 type: {} constantinst[ %.not52 = icmp ugt i64 %47, 14, !dbg !134] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not52, label %L217, label %L221.loopexit, !dbg !137] = 1 val:1 type: {} constantinst[ br label %L221, !dbg !169] = 1 val:1 type: {} constantinst[ %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ]] = 0 val:0 type: {} constantinst[ %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !169] = 0 val:0 type: {} constantinst[ %51 = urem i64 %50, %25, !dbg !171] = 0 val:0 type: {} constantinst[ %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #27, !dbg !172, !range !81] = 1 val:1 type: {[-1]:Integer} constantinst[ %53 = add nsw i64 %52, -11, !dbg !174] = 1 val:1 type: {[-1]:Integer} constantinst[ %54 = shl i64 %51, %53, !dbg !175] = 0 val:0 type: {} constantinst[ %55 = sub nsw i64 %27, %53, !dbg !178] = 1 val:1 type: {[-1]:Integer} constantinst[ %56 = icmp slt i64 %55, 0, !dbg !180] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %56, label %L250, label %L237, !dbg !182] = 1 val:1 type: {} constantinst[ %57 = and i64 %54, 4503599627370495, !dbg !183] = 0 val:0 type: {} constantinst[ %58 = shl i64 %55, 52, !dbg !185] = 1 val:1 type: {[-1]:Integer} constantinst[ %59 = add i64 %58, 4503599627370496, !dbg !185] = 1 val:1 type: {[-1]:Anything} constantinst[ %60 = and i64 %59, 9218868437227405312, !dbg !188] = 1 val:1 type: {[-1]:Anything} constantinst[ %61 = or disjoint i64 %60, %57, !dbg !190] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !190] = 1 val:1 type: {} constantinst[ %62 = sub nsw i64 0, %55, !dbg !191] = 1 val:1 type: {[-1]:Anything} constantinst[ %63 = lshr i64 %54, %62, !dbg !193] = 0 val:0 type: {} constantinst[ %64 = icmp ugt i64 %62, 63, !dbg !193] = 1 val:1 type: {[-1]:Integer} constantinst[ %65 = and i64 %63, 4503599627370495, !dbg !195] = 0 val:0 type: {[-1]:Float@double} constantinst[ %66 = select i1 %64, i64 0, i64 %65, !dbg !195] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !195] = 1 val:1 type: {} constantinst[ %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !196] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} cannot handle unknown binary operator: %17 = or disjoint i64 %16, %14, !dbg !91 Stacktrace: [1] | @ ./int.jl:378 [2] _to_float @ ./float.jl:526 [3] rem_internal @ ./float.jl:552 Failure within method: rem_internal(::Float64, ::Float64) @ Base float.jl:533 Hint: catch this exception as `err` and call `code_typed(err)` to inspect the surrounding code. Stacktrace: [1] | @ ./int.jl:378 [inlined] [2] _to_float @ ./float.jl:526 [inlined] [3] rem_internal @ ./float.jl:552 [4] rem @ ./float.jl:601 [inlined] [5] mod @ ./float.jl:610 [inlined] [6] _F @ ~/.julia/packages/JacobiElliptic/DNY74/src/Carlson.jl:40 [inlined] [7] F @ ~/.julia/packages/JacobiElliptic/DNY74/src/Carlson.jl:68 [inlined] [8] call_with_kwargs @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:10 [inlined] [9] diffejulia_call_with_kwargs_91178wrap @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:0 [10] macro expansion @ ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6886 [inlined] [11] enzyme_call(::Val{false}, ::Ptr{Nothing}, ::Type{Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.F)}, Active{Float64}, Active{Float64}}, 1, Tuple{Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Float64, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64}}}, ::Val{1}, ::Val{false}, ::Type{Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.F)}, Active{Float64}, Active{Float64}}}, ::Type{Active{Float64}}, ::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Type{Tuple{Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Float64, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64}}, ::Const{@NamedTuple{}}, ::Const{typeof(JacobiElliptic.CarlsonAlg.F)}, ::Active{Float64}, ::Active{Float64}, ::Float64, ::Tuple{Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Float64, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6356 [12] (::Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.F)}, Active{Float64}, Active{Float64}}, 1, Tuple{Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Float64, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Tuple{Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64, Float64, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Core.LLVMPtr{Nothing, 0}, Float64}})(::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Const{@NamedTuple{}}, ::Vararg{Any}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6272 [13] macro expansion @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:131 [inlined] [14] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [15] test_reverse(::typeof(JacobiElliptic.CarlsonAlg.F), ::Type, ::Tuple{Float64, UnionAll}, ::Vararg{Tuple{Float64, UnionAll}}; rng::Random.TaskLocalRNG, fdm::FiniteDifferences.AdaptedFiniteDifferenceMethod{5, 1, FiniteDifferences.UnadaptedFiniteDifferenceMethod{7, 5}}, fkwargs::@NamedTuple{}, rtol::Float64, atol::Float64, testset_name::Nothing, runtime_activity::Bool, output_tangent::Nothing) @ EnzymeTestUtils ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:86 [16] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:1889 [17] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [18] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:17 [inlined] [19] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [20] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:25 [inlined] [21] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [22] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:84 [inlined] [23] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [24] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:131 [inlined] [25] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [26] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/runtests.jl:10 [27] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [28] top-level scope @ none:6 [29] eval(m::Module, e::Any) @ Core ./boot.jl:489 [30] exec_options(opts::Base.JLOptions) @ Base ./client.jl:283 [31] _start() @ Base ./client.jl:550 test_reverse: E with return activity Active on (::Float64, Active), (::Float64, Const): Error During Test at /home/pkgeval/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:84 Got exception outside of a @test EnzymeNoDerivativeError: Current scope: ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_94871(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #23 !dbg !4001 { top: %pgcstack = call ptr @julia.get_pgcstack() #28 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !20 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !24 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #28, !dbg !4002 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !4003 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !4006 br i1 %.not, label %L9, label %L5, !dbg !4007 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !4008 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !4010 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !4011 %2 = lshr exact i64 %1, 52, !dbg !4014 %3 = add nsw i64 %2, -1024, !dbg !4016 %4 = icmp ugt i64 %3, 11, !dbg !4018 br i1 %4, label %L111, label %L22, !dbg !4017 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !4020 %6 = icmp ne i64 %1, 0, !dbg !4024 %7 = icmp eq i64 %5, 0, !dbg !4028 %.not38 = or i1 %6, %7, !dbg !4027 %8 = or disjoint i64 %5, 4503599627370496, !dbg !4027 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !4027 %9 = shl nuw i64 %value_phi, %3, !dbg !4031 %10 = urem i64 %9, 7074237752028440, !dbg !4032 %.not39 = icmp eq i64 %10, 0, !dbg !4033 br i1 %.not39, label %common.ret, label %L75, !dbg !4035 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #28, !dbg !4036, !range !2603 %12 = add nsw i64 %11, -11, !dbg !4038 %13 = shl i64 %10, %12, !dbg !4039 %14 = and i64 %13, 4503599627370495, !dbg !4042 %15 = shl nuw nsw i64 %11, 52, !dbg !4044 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !4044 %17 = or disjoint i64 %16, %14, !dbg !4047 %18 = bitcast i64 %17 to double, !dbg !4048 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !4050 %20 = icmp ne i64 %1, 0, !dbg !4054 %21 = icmp eq i64 %19, 0, !dbg !4058 %.not44 = or i1 %20, %21, !dbg !4057 %22 = or disjoint i64 %19, 4503599627370496, !dbg !4057 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !4057 %23 = add nsw i64 %2, -1024, !dbg !4061 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #28, !dbg !4063 %25 = lshr exact i64 7074237752028440, %24, !dbg !4066 %26 = sub nsw i64 %23, %24, !dbg !4068 %27 = add nuw nsw i64 %24, 1023, !dbg !4070 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #28, !dbg !4072 %29 = shl nuw i64 %value_phi15, %28, !dbg !4075 %30 = urem i64 %29, %25, !dbg !4077 %.not50 = icmp eq i64 %30, 0, !dbg !4078 br i1 %.not50, label %common.ret, label %L171, !dbg !4080 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !4081 %.not51 = icmp eq i64 %31, 0, !dbg !4083 br i1 %.not51, label %L173, label %L213.preheader, !dbg !4085 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !4086 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !4088 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !4088 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #28, !dbg !4089, !range !2603 %33 = add nsw i64 %32, -11, !dbg !4090 %34 = shl i64 %30, %33, !dbg !4091 %35 = sub nsw i64 %27, %33, !dbg !4094 %36 = icmp slt i64 %35, 0, !dbg !4096 br i1 %36, label %L200, label %L187, !dbg !4098 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !4099 %38 = shl nuw i64 %35, 52, !dbg !4101 %39 = add nuw i64 %38, 4503599627370496, !dbg !4101 %40 = and i64 %39, 9218868437227405312, !dbg !4104 %41 = or disjoint i64 %40, %37, !dbg !4106 br label %L209, !dbg !4106 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !4107 %43 = lshr i64 %34, %42, !dbg !4109 %44 = and i64 %43, 4503599627370495, !dbg !4111 br label %L209, !dbg !4111 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !4112 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !4114 %iv.next = add nuw nsw i64 %iv, 1, !dbg !4114 %46 = add i64 %31, %45, !dbg !4114 %47 = add i64 %46, -14, !dbg !4114 %48 = shl i64 %value_phi2854, 14, !dbg !4116 %49 = urem i64 %48, %25, !dbg !4118 %.not52 = icmp ugt i64 %47, 14, !dbg !4086 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !4088 L221.loopexit: ; preds = %L217 br label %L221, !dbg !4119 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !4119 %51 = urem i64 %50, %25, !dbg !4121 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #28, !dbg !4122, !range !2603 %53 = add nsw i64 %52, -11, !dbg !4124 %54 = shl i64 %51, %53, !dbg !4125 %55 = sub nsw i64 %27, %53, !dbg !4128 %56 = icmp slt i64 %55, 0, !dbg !4130 br i1 %56, label %L250, label %L237, !dbg !4132 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !4133 %58 = shl i64 %55, 52, !dbg !4135 %59 = add i64 %58, 4503599627370496, !dbg !4135 %60 = and i64 %59, 9218868437227405312, !dbg !4138 %61 = or disjoint i64 %60, %57, !dbg !4140 br label %L259, !dbg !4140 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !4141 %63 = lshr i64 %54, %62, !dbg !4143 %64 = icmp ugt i64 %62, 63, !dbg !4143 %65 = and i64 %63, 4503599627370495, !dbg !4145 %66 = select i1 %64, i64 0, i64 %65, !dbg !4145 br label %L259, !dbg !4145 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !4146 br label %common.ret } ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_94871(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #23 !dbg !4001 { top: %pgcstack = call ptr @julia.get_pgcstack() #28 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !20 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !24 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #28, !dbg !4002 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !4003 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !4006 br i1 %.not, label %L9, label %L5, !dbg !4007 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !4008 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !4010 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !4011 %2 = lshr exact i64 %1, 52, !dbg !4014 %3 = add nsw i64 %2, -1024, !dbg !4016 %4 = icmp ugt i64 %3, 11, !dbg !4018 br i1 %4, label %L111, label %L22, !dbg !4017 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !4020 %6 = icmp ne i64 %1, 0, !dbg !4024 %7 = icmp eq i64 %5, 0, !dbg !4028 %.not38 = or i1 %6, %7, !dbg !4027 %8 = or disjoint i64 %5, 4503599627370496, !dbg !4027 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !4027 %9 = shl nuw i64 %value_phi, %3, !dbg !4031 %10 = urem i64 %9, 7074237752028440, !dbg !4032 %.not39 = icmp eq i64 %10, 0, !dbg !4033 br i1 %.not39, label %common.ret, label %L75, !dbg !4035 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #28, !dbg !4036, !range !2603 %12 = add nsw i64 %11, -11, !dbg !4038 %13 = shl i64 %10, %12, !dbg !4039 %14 = and i64 %13, 4503599627370495, !dbg !4042 %15 = shl nuw nsw i64 %11, 52, !dbg !4044 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !4044 %17 = or disjoint i64 %16, %14, !dbg !4047 %18 = bitcast i64 %17 to double, !dbg !4048 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !4050 %20 = icmp ne i64 %1, 0, !dbg !4054 %21 = icmp eq i64 %19, 0, !dbg !4058 %.not44 = or i1 %20, %21, !dbg !4057 %22 = or disjoint i64 %19, 4503599627370496, !dbg !4057 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !4057 %23 = add nsw i64 %2, -1024, !dbg !4061 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #28, !dbg !4063 %25 = lshr exact i64 7074237752028440, %24, !dbg !4066 %26 = sub nsw i64 %23, %24, !dbg !4068 %27 = add nuw nsw i64 %24, 1023, !dbg !4070 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #28, !dbg !4072 %29 = shl nuw i64 %value_phi15, %28, !dbg !4075 %30 = urem i64 %29, %25, !dbg !4077 %.not50 = icmp eq i64 %30, 0, !dbg !4078 br i1 %.not50, label %common.ret, label %L171, !dbg !4080 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !4081 %.not51 = icmp eq i64 %31, 0, !dbg !4083 br i1 %.not51, label %L173, label %L213.preheader, !dbg !4085 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !4086 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !4088 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !4088 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #28, !dbg !4089, !range !2603 %33 = add nsw i64 %32, -11, !dbg !4090 %34 = shl i64 %30, %33, !dbg !4091 %35 = sub nsw i64 %27, %33, !dbg !4094 %36 = icmp slt i64 %35, 0, !dbg !4096 br i1 %36, label %L200, label %L187, !dbg !4098 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !4099 %38 = shl nuw i64 %35, 52, !dbg !4101 %39 = add nuw i64 %38, 4503599627370496, !dbg !4101 %40 = and i64 %39, 9218868437227405312, !dbg !4104 %41 = or disjoint i64 %40, %37, !dbg !4106 br label %L209, !dbg !4106 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !4107 %43 = lshr i64 %34, %42, !dbg !4109 %44 = and i64 %43, 4503599627370495, !dbg !4111 br label %L209, !dbg !4111 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !4112 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !4114 %iv.next = add nuw nsw i64 %iv, 1, !dbg !4114 %46 = add i64 %31, %45, !dbg !4114 %47 = add i64 %46, -14, !dbg !4114 %48 = shl i64 %value_phi2854, 14, !dbg !4116 %49 = urem i64 %48, %25, !dbg !4118 %.not52 = icmp ugt i64 %47, 14, !dbg !4086 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !4088 L221.loopexit: ; preds = %L217 br label %L221, !dbg !4119 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !4119 %51 = urem i64 %50, %25, !dbg !4121 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #28, !dbg !4122, !range !2603 %53 = add nsw i64 %52, -11, !dbg !4124 %54 = shl i64 %51, %53, !dbg !4125 %55 = sub nsw i64 %27, %53, !dbg !4128 %56 = icmp slt i64 %55, 0, !dbg !4130 br i1 %56, label %L250, label %L237, !dbg !4132 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !4133 %58 = shl i64 %55, 52, !dbg !4135 %59 = add i64 %58, 4503599627370496, !dbg !4135 %60 = and i64 %59, 9218868437227405312, !dbg !4138 %61 = or disjoint i64 %60, %57, !dbg !4140 br label %L259, !dbg !4140 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !4141 %63 = lshr i64 %54, %62, !dbg !4143 %64 = icmp ugt i64 %62, 63, !dbg !4143 %65 = and i64 %63, 4503599627370495, !dbg !4145 %66 = select i1 %64, i64 0, i64 %65, !dbg !4145 br label %L259, !dbg !4145 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !4146 br label %common.ret } constantarg[double %"x::Float64"] = 0 type: {[-1]:Float@double} - vals: {} constantinst[ %pgcstack = call ptr @julia.get_pgcstack() #28] = 1 val:1 type: {[-1]:Pointer, [-1,16]:Pointer} constantinst[ %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16] = 1 val:1 type: {[-1]:Pointer, [-1,0]:Pointer} constantinst[ %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !15] = 1 val:1 type: {[-1]:Pointer} constantinst[ %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16] = 1 val:1 type: {[-1]:Pointer} constantinst[ %safepoint = load ptr, ptr %0, align 8, !tbaa !19] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ call void @julia.safepoint(ptr %safepoint) #28, !dbg !21] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !22] = 0 val:0 type: {[-1]:Float@double} constantinst[ %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !28] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not, label %L9, label %L5, !dbg !31] = 1 val:1 type: {} constantinst[ %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !32] = 1 val:1 type: {[-1]:Integer} constantinst[ %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64"] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ ret double %common.ret.op, !dbg !35] = 1 val:1 type: {} constantinst[ %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !36] = 1 val:1 type: {} constantinst[ %2 = lshr exact i64 %1, 52, !dbg !41] = 1 val:1 type: {[-1]:Integer} constantinst[ %3 = add nsw i64 %2, -1024, !dbg !44] = 1 val:1 type: {[-1]:Integer} constantinst[ %4 = icmp ugt i64 %3, 11, !dbg !47] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %4, label %L111, label %L22, !dbg !46] = 1 val:1 type: {} constantinst[ %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !49] = 0 val:0 type: {} constantinst[ %6 = icmp ne i64 %1, 0, !dbg !55] = 1 val:1 type: {[-1]:Integer} constantinst[ %7 = icmp eq i64 %5, 0, !dbg !63] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not38 = or i1 %6, %7, !dbg !62] = 1 val:1 type: {[-1]:Integer} constantinst[ %8 = or disjoint i64 %5, 4503599627370496, !dbg !62] = 0 val:0 type: {} constantinst[ %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !62] = 0 val:0 type: {} constantinst[ %9 = shl nuw i64 %value_phi, %3, !dbg !68] = 0 val:0 type: {} constantinst[ %10 = urem i64 %9, 7074237752028440, !dbg !70] = 0 val:0 type: {} constantinst[ %.not39 = icmp eq i64 %10, 0, !dbg !71] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not39, label %common.ret, label %L75, !dbg !75] = 1 val:1 type: {} constantinst[ %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #28, !dbg !76, !range !79] = 1 val:1 type: {[-1]:Integer} constantinst[ %12 = add nsw i64 %11, -11, !dbg !80] = 1 val:1 type: {[-1]:Integer} constantinst[ %13 = shl i64 %10, %12, !dbg !81] = 0 val:0 type: {} constantinst[ %14 = and i64 %13, 4503599627370495, !dbg !84] = 0 val:0 type: {} constantinst[ %15 = shl nuw nsw i64 %11, 52, !dbg !86] = 1 val:1 type: {[-1]:Integer} constantinst[ %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !86] = 1 val:1 type: {[-1]:Anything} constantinst[ %17 = or disjoint i64 %16, %14, !dbg !89] = 0 val:0 type: {[-1]:Float@double} constantinst[ %18 = bitcast i64 %17 to double, !dbg !91] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !93] = 0 val:0 type: {} constantinst[ %20 = icmp ne i64 %1, 0, !dbg !97] = 1 val:1 type: {[-1]:Integer} constantinst[ %21 = icmp eq i64 %19, 0, !dbg !101] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not44 = or i1 %20, %21, !dbg !100] = 1 val:1 type: {[-1]:Integer} constantinst[ %22 = or disjoint i64 %19, 4503599627370496, !dbg !100] = 0 val:0 type: {} constantinst[ %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !100] = 0 val:0 type: {} constantinst[ %23 = add nsw i64 %2, -1024, !dbg !104] = 1 val:1 type: {[-1]:Integer} constantinst[ %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #28, !dbg !106] = 1 val:1 type: {[-1]:Integer} constantinst[ %25 = lshr exact i64 7074237752028440, %24, !dbg !111] = 1 val:1 type: {[-1]:Anything} constantinst[ %26 = sub nsw i64 %23, %24, !dbg !113] = 1 val:1 type: {[-1]:Integer} constantinst[ %27 = add nuw nsw i64 %24, 1023, !dbg !115] = 1 val:1 type: {[-1]:Integer} constantinst[ %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #28, !dbg !118] = 1 val:1 type: {[-1]:Integer} constantinst[ %29 = shl nuw i64 %value_phi15, %28, !dbg !121] = 0 val:0 type: {} constantinst[ %30 = urem i64 %29, %25, !dbg !123] = 0 val:0 type: {} constantinst[ %.not50 = icmp eq i64 %30, 0, !dbg !124] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not50, label %common.ret, label %L171, !dbg !126] = 1 val:1 type: {} constantinst[ %31 = sub nsw i64 %26, %28, !dbg !127] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not51 = icmp eq i64 %31, 0, !dbg !129] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not51, label %L173, label %L213.preheader, !dbg !131] = 1 val:1 type: {} constantinst[ %.not5253 = icmp ugt i64 %31, 14, !dbg !132] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not5253, label %L217.preheader, label %L221, !dbg !135] = 1 val:1 type: {} constantinst[ br label %L217, !dbg !135] = 1 val:1 type: {} constantinst[ %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #28, !dbg !136, !range !79] = 1 val:1 type: {[-1]:Integer} constantinst[ %33 = add nsw i64 %32, -11, !dbg !137] = 1 val:1 type: {[-1]:Integer} constantinst[ %34 = shl i64 %30, %33, !dbg !138] = 0 val:0 type: {} constantinst[ %35 = sub nsw i64 %27, %33, !dbg !141] = 1 val:1 type: {[-1]:Integer} constantinst[ %36 = icmp slt i64 %35, 0, !dbg !143] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %36, label %L200, label %L187, !dbg !146] = 1 val:1 type: {} constantinst[ %37 = and i64 %34, 4503599627370495, !dbg !147] = 0 val:0 type: {} constantinst[ %38 = shl nuw i64 %35, 52, !dbg !149] = 1 val:1 type: {[-1]:Integer} constantinst[ %39 = add nuw i64 %38, 4503599627370496, !dbg !149] = 1 val:1 type: {[-1]:Anything} constantinst[ %40 = and i64 %39, 9218868437227405312, !dbg !152] = 1 val:1 type: {[-1]:Anything} constantinst[ %41 = or disjoint i64 %40, %37, !dbg !154] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !154] = 1 val:1 type: {} constantinst[ %42 = sub nsw i64 0, %35, !dbg !155] = 1 val:1 type: {[-1]:Anything} constantinst[ %43 = lshr i64 %34, %42, !dbg !157] = 0 val:0 type: {} constantinst[ %44 = and i64 %43, 4503599627370495, !dbg !159] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !159] = 1 val:1 type: {} constantinst[ %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !160] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ]] = 0 val:0 type: {} constantinst[ %45 = mul i64 %iv, -14, !dbg !162] = 1 val:1 type: {[-1]:Integer} constantinst[ %iv.next = add nuw nsw i64 %iv, 1, !dbg !162] = 1 val:1 type: {[-1]:Integer} constantinst[ %46 = add i64 %31, %45, !dbg !162] = 1 val:1 type: {[-1]:Integer} constantinst[ %47 = add i64 %46, -14, !dbg !162] = 1 val:1 type: {[-1]:Integer} constantinst[ %48 = shl i64 %value_phi2854, 14, !dbg !164] = 0 val:0 type: {} constantinst[ %49 = urem i64 %48, %25, !dbg !166] = 0 val:0 type: {} constantinst[ %.not52 = icmp ugt i64 %47, 14, !dbg !132] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not52, label %L217, label %L221.loopexit, !dbg !135] = 1 val:1 type: {} constantinst[ br label %L221, !dbg !167] = 1 val:1 type: {} constantinst[ %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ]] = 0 val:0 type: {} constantinst[ %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !167] = 0 val:0 type: {} constantinst[ %51 = urem i64 %50, %25, !dbg !169] = 0 val:0 type: {} constantinst[ %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #28, !dbg !170, !range !79] = 1 val:1 type: {[-1]:Integer} constantinst[ %53 = add nsw i64 %52, -11, !dbg !172] = 1 val:1 type: {[-1]:Integer} constantinst[ %54 = shl i64 %51, %53, !dbg !173] = 0 val:0 type: {} constantinst[ %55 = sub nsw i64 %27, %53, !dbg !176] = 1 val:1 type: {[-1]:Integer} constantinst[ %56 = icmp slt i64 %55, 0, !dbg !178] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %56, label %L250, label %L237, !dbg !180] = 1 val:1 type: {} constantinst[ %57 = and i64 %54, 4503599627370495, !dbg !181] = 0 val:0 type: {} constantinst[ %58 = shl i64 %55, 52, !dbg !183] = 1 val:1 type: {[-1]:Integer} constantinst[ %59 = add i64 %58, 4503599627370496, !dbg !183] = 1 val:1 type: {[-1]:Anything} constantinst[ %60 = and i64 %59, 9218868437227405312, !dbg !186] = 1 val:1 type: {[-1]:Anything} constantinst[ %61 = or disjoint i64 %60, %57, !dbg !188] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !188] = 1 val:1 type: {} constantinst[ %62 = sub nsw i64 0, %55, !dbg !189] = 1 val:1 type: {[-1]:Anything} constantinst[ %63 = lshr i64 %54, %62, !dbg !191] = 0 val:0 type: {} constantinst[ %64 = icmp ugt i64 %62, 63, !dbg !191] = 1 val:1 type: {[-1]:Integer} constantinst[ %65 = and i64 %63, 4503599627370495, !dbg !193] = 0 val:0 type: {[-1]:Float@double} constantinst[ %66 = select i1 %64, i64 0, i64 %65, !dbg !193] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !193] = 1 val:1 type: {} constantinst[ %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !194] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} cannot handle unknown binary operator: %17 = or disjoint i64 %16, %14, !dbg !89 Stacktrace: [1] | @ ./int.jl:378 [2] _to_float @ ./float.jl:526 [3] rem_internal @ ./float.jl:552 Failure within method: rem_internal(::Float64, ::Float64) @ Base float.jl:533 Hint: catch this exception as `err` and call `code_typed(err)` to inspect the surrounding code. Stacktrace: [1] | @ ./int.jl:378 [inlined] [2] _to_float @ ./float.jl:526 [inlined] [3] rem_internal @ ./float.jl:552 [4] rem @ ./float.jl:601 [inlined] [5] mod @ ./float.jl:610 [inlined] [6] E @ ~/.julia/packages/JacobiElliptic/DNY74/src/Carlson.jl:108 [inlined] [7] call_with_kwargs @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:10 [inlined] [8] diffejulia_call_with_kwargs_94849wrap @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:0 [9] macro expansion @ ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6886 [inlined] [10] enzyme_call(::Val{false}, ::Ptr{Nothing}, ::Type{Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.E)}, Active{Float64}, Const{Float64}}, 1, @NamedTuple{var"1", var"2"::Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, var"3"::Float64, var"4"::Float64, var"5"::Core.LLVMPtr{Nothing, 0}, var"6"::Core.LLVMPtr{Nothing, 0}, var"7"::Core.LLVMPtr{Nothing, 0}, var"8"::Core.LLVMPtr{Nothing, 0}, var"9"::Core.LLVMPtr{Nothing, 0}, var"10"::Core.LLVMPtr{Nothing, 0}, var"11"::Core.LLVMPtr{Nothing, 0}, var"12"::Core.LLVMPtr{Nothing, 0}, var"13"::Core.LLVMPtr{Nothing, 0}, var"14"::Core.LLVMPtr{Nothing, 0}, var"15"::Core.LLVMPtr{Nothing, 0}, var"16"::Core.LLVMPtr{Nothing, 0}, var"17"::Core.LLVMPtr{Nothing, 0}, var"18"::Core.LLVMPtr{Nothing, 0}, var"19"::Core.LLVMPtr{Nothing, 0}, var"20"::Core.LLVMPtr{Nothing, 0}, var"21"::Core.LLVMPtr{Nothing, 0}, var"22"::Core.LLVMPtr{Nothing, 0}, var"23"::Core.LLVMPtr{Nothing, 0}, var"24"::Core.LLVMPtr{Nothing, 0}, var"25"::Core.LLVMPtr{Nothing, 0}, var"26"::Core.LLVMPtr{Nothing, 0}, var"27"::Core.LLVMPtr{Nothing, 0}, var"28"::Core.LLVMPtr{Nothing, 0}, var"29"::Core.LLVMPtr{Nothing, 0}, var"30"::Core.LLVMPtr{Nothing, 0}, var"31"::Core.LLVMPtr{Nothing, 0}, var"32"::Core.LLVMPtr{Nothing, 0}, var"33"::Core.LLVMPtr{Nothing, 0}, var"34"::Core.LLVMPtr{Nothing, 0}, var"35"::Core.LLVMPtr{Nothing, 0}, var"36"::Core.LLVMPtr{Nothing, 0}}}}, ::Val{1}, ::Val{false}, ::Type{Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.E)}, Active{Float64}, Const{Float64}}}, ::Type{Active{Float64}}, ::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Type{@NamedTuple{var"1", var"2"::Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, var"3"::Float64, var"4"::Float64, var"5"::Core.LLVMPtr{Nothing, 0}, var"6"::Core.LLVMPtr{Nothing, 0}, var"7"::Core.LLVMPtr{Nothing, 0}, var"8"::Core.LLVMPtr{Nothing, 0}, var"9"::Core.LLVMPtr{Nothing, 0}, var"10"::Core.LLVMPtr{Nothing, 0}, var"11"::Core.LLVMPtr{Nothing, 0}, var"12"::Core.LLVMPtr{Nothing, 0}, var"13"::Core.LLVMPtr{Nothing, 0}, var"14"::Core.LLVMPtr{Nothing, 0}, var"15"::Core.LLVMPtr{Nothing, 0}, var"16"::Core.LLVMPtr{Nothing, 0}, var"17"::Core.LLVMPtr{Nothing, 0}, var"18"::Core.LLVMPtr{Nothing, 0}, var"19"::Core.LLVMPtr{Nothing, 0}, var"20"::Core.LLVMPtr{Nothing, 0}, var"21"::Core.LLVMPtr{Nothing, 0}, var"22"::Core.LLVMPtr{Nothing, 0}, var"23"::Core.LLVMPtr{Nothing, 0}, var"24"::Core.LLVMPtr{Nothing, 0}, var"25"::Core.LLVMPtr{Nothing, 0}, var"26"::Core.LLVMPtr{Nothing, 0}, var"27"::Core.LLVMPtr{Nothing, 0}, var"28"::Core.LLVMPtr{Nothing, 0}, var"29"::Core.LLVMPtr{Nothing, 0}, var"30"::Core.LLVMPtr{Nothing, 0}, var"31"::Core.LLVMPtr{Nothing, 0}, var"32"::Core.LLVMPtr{Nothing, 0}, var"33"::Core.LLVMPtr{Nothing, 0}, var"34"::Core.LLVMPtr{Nothing, 0}, var"35"::Core.LLVMPtr{Nothing, 0}, var"36"::Core.LLVMPtr{Nothing, 0}}}, ::Const{@NamedTuple{}}, ::Const{typeof(JacobiElliptic.CarlsonAlg.E)}, ::Active{Float64}, ::Const{Float64}, ::Float64, ::@NamedTuple{var"1", var"2"::Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, var"3"::Float64, var"4"::Float64, var"5"::Core.LLVMPtr{Nothing, 0}, var"6"::Core.LLVMPtr{Nothing, 0}, var"7"::Core.LLVMPtr{Nothing, 0}, var"8"::Core.LLVMPtr{Nothing, 0}, var"9"::Core.LLVMPtr{Nothing, 0}, var"10"::Core.LLVMPtr{Nothing, 0}, var"11"::Core.LLVMPtr{Nothing, 0}, var"12"::Core.LLVMPtr{Nothing, 0}, var"13"::Core.LLVMPtr{Nothing, 0}, var"14"::Core.LLVMPtr{Nothing, 0}, var"15"::Core.LLVMPtr{Nothing, 0}, var"16"::Core.LLVMPtr{Nothing, 0}, var"17"::Core.LLVMPtr{Nothing, 0}, var"18"::Core.LLVMPtr{Nothing, 0}, var"19"::Core.LLVMPtr{Nothing, 0}, var"20"::Core.LLVMPtr{Nothing, 0}, var"21"::Core.LLVMPtr{Nothing, 0}, var"22"::Core.LLVMPtr{Nothing, 0}, var"23"::Core.LLVMPtr{Nothing, 0}, var"24"::Core.LLVMPtr{Nothing, 0}, var"25"::Core.LLVMPtr{Nothing, 0}, var"26"::Core.LLVMPtr{Nothing, 0}, var"27"::Core.LLVMPtr{Nothing, 0}, var"28"::Core.LLVMPtr{Nothing, 0}, var"29"::Core.LLVMPtr{Nothing, 0}, var"30"::Core.LLVMPtr{Nothing, 0}, var"31"::Core.LLVMPtr{Nothing, 0}, var"32"::Core.LLVMPtr{Nothing, 0}, var"33"::Core.LLVMPtr{Nothing, 0}, var"34"::Core.LLVMPtr{Nothing, 0}, var"35"::Core.LLVMPtr{Nothing, 0}, var"36"::Core.LLVMPtr{Nothing, 0}}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6356 [11] (::Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.E)}, Active{Float64}, Const{Float64}}, 1, @NamedTuple{var"1", var"2"::Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, var"3"::Float64, var"4"::Float64, var"5"::Core.LLVMPtr{Nothing, 0}, var"6"::Core.LLVMPtr{Nothing, 0}, var"7"::Core.LLVMPtr{Nothing, 0}, var"8"::Core.LLVMPtr{Nothing, 0}, var"9"::Core.LLVMPtr{Nothing, 0}, var"10"::Core.LLVMPtr{Nothing, 0}, var"11"::Core.LLVMPtr{Nothing, 0}, var"12"::Core.LLVMPtr{Nothing, 0}, var"13"::Core.LLVMPtr{Nothing, 0}, var"14"::Core.LLVMPtr{Nothing, 0}, var"15"::Core.LLVMPtr{Nothing, 0}, var"16"::Core.LLVMPtr{Nothing, 0}, var"17"::Core.LLVMPtr{Nothing, 0}, var"18"::Core.LLVMPtr{Nothing, 0}, var"19"::Core.LLVMPtr{Nothing, 0}, var"20"::Core.LLVMPtr{Nothing, 0}, var"21"::Core.LLVMPtr{Nothing, 0}, var"22"::Core.LLVMPtr{Nothing, 0}, var"23"::Core.LLVMPtr{Nothing, 0}, var"24"::Core.LLVMPtr{Nothing, 0}, var"25"::Core.LLVMPtr{Nothing, 0}, var"26"::Core.LLVMPtr{Nothing, 0}, var"27"::Core.LLVMPtr{Nothing, 0}, var"28"::Core.LLVMPtr{Nothing, 0}, var"29"::Core.LLVMPtr{Nothing, 0}, var"30"::Core.LLVMPtr{Nothing, 0}, var"31"::Core.LLVMPtr{Nothing, 0}, var"32"::Core.LLVMPtr{Nothing, 0}, var"33"::Core.LLVMPtr{Nothing, 0}, var"34"::Core.LLVMPtr{Nothing, 0}, var"35"::Core.LLVMPtr{Nothing, 0}, var"36"::Core.LLVMPtr{Nothing, 0}}})(::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Const{@NamedTuple{}}, ::Vararg{Any}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6272 [12] macro expansion @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:131 [inlined] [13] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [14] test_reverse(::typeof(JacobiElliptic.CarlsonAlg.E), ::Type, ::Tuple{Float64, UnionAll}, ::Vararg{Tuple{Float64, UnionAll}}; rng::Random.TaskLocalRNG, fdm::FiniteDifferences.AdaptedFiniteDifferenceMethod{5, 1, FiniteDifferences.UnadaptedFiniteDifferenceMethod{7, 5}}, fkwargs::@NamedTuple{}, rtol::Float64, atol::Float64, testset_name::Nothing, runtime_activity::Bool, output_tangent::Nothing) @ EnzymeTestUtils ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:86 [15] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:1889 [16] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [17] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:17 [inlined] [18] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [19] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:25 [inlined] [20] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [21] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:136 [inlined] [22] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [23] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:172 [inlined] [24] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [25] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/runtests.jl:10 [26] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [27] top-level scope @ none:6 [28] eval(m::Module, e::Any) @ Core ./boot.jl:489 [29] exec_options(opts::Base.JLOptions) @ Base ./client.jl:283 [30] _start() @ Base ./client.jl:550 test_reverse: E with return activity Active on (::Float64, Active), (::Float64, Active): Error During Test at /home/pkgeval/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:84 Got exception outside of a @test EnzymeNoDerivativeError: Current scope: ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_95009(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #23 !dbg !4015 { top: %pgcstack = call ptr @julia.get_pgcstack() #28 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !20 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !24 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #28, !dbg !4016 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !4017 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !4020 br i1 %.not, label %L9, label %L5, !dbg !4021 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !4022 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !4024 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !4025 %2 = lshr exact i64 %1, 52, !dbg !4028 %3 = add nsw i64 %2, -1024, !dbg !4030 %4 = icmp ugt i64 %3, 11, !dbg !4032 br i1 %4, label %L111, label %L22, !dbg !4031 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !4034 %6 = icmp ne i64 %1, 0, !dbg !4038 %7 = icmp eq i64 %5, 0, !dbg !4042 %.not38 = or i1 %6, %7, !dbg !4041 %8 = or disjoint i64 %5, 4503599627370496, !dbg !4041 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !4041 %9 = shl nuw i64 %value_phi, %3, !dbg !4045 %10 = urem i64 %9, 7074237752028440, !dbg !4046 %.not39 = icmp eq i64 %10, 0, !dbg !4047 br i1 %.not39, label %common.ret, label %L75, !dbg !4049 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #28, !dbg !4050, !range !2603 %12 = add nsw i64 %11, -11, !dbg !4052 %13 = shl i64 %10, %12, !dbg !4053 %14 = and i64 %13, 4503599627370495, !dbg !4056 %15 = shl nuw nsw i64 %11, 52, !dbg !4058 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !4058 %17 = or disjoint i64 %16, %14, !dbg !4061 %18 = bitcast i64 %17 to double, !dbg !4062 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !4064 %20 = icmp ne i64 %1, 0, !dbg !4068 %21 = icmp eq i64 %19, 0, !dbg !4072 %.not44 = or i1 %20, %21, !dbg !4071 %22 = or disjoint i64 %19, 4503599627370496, !dbg !4071 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !4071 %23 = add nsw i64 %2, -1024, !dbg !4075 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #28, !dbg !4077 %25 = lshr exact i64 7074237752028440, %24, !dbg !4080 %26 = sub nsw i64 %23, %24, !dbg !4082 %27 = add nuw nsw i64 %24, 1023, !dbg !4084 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #28, !dbg !4086 %29 = shl nuw i64 %value_phi15, %28, !dbg !4089 %30 = urem i64 %29, %25, !dbg !4091 %.not50 = icmp eq i64 %30, 0, !dbg !4092 br i1 %.not50, label %common.ret, label %L171, !dbg !4094 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !4095 %.not51 = icmp eq i64 %31, 0, !dbg !4097 br i1 %.not51, label %L173, label %L213.preheader, !dbg !4099 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !4100 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !4102 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !4102 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #28, !dbg !4103, !range !2603 %33 = add nsw i64 %32, -11, !dbg !4104 %34 = shl i64 %30, %33, !dbg !4105 %35 = sub nsw i64 %27, %33, !dbg !4108 %36 = icmp slt i64 %35, 0, !dbg !4110 br i1 %36, label %L200, label %L187, !dbg !4112 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !4113 %38 = shl nuw i64 %35, 52, !dbg !4115 %39 = add nuw i64 %38, 4503599627370496, !dbg !4115 %40 = and i64 %39, 9218868437227405312, !dbg !4118 %41 = or disjoint i64 %40, %37, !dbg !4120 br label %L209, !dbg !4120 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !4121 %43 = lshr i64 %34, %42, !dbg !4123 %44 = and i64 %43, 4503599627370495, !dbg !4125 br label %L209, !dbg !4125 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !4126 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !4128 %iv.next = add nuw nsw i64 %iv, 1, !dbg !4128 %46 = add i64 %31, %45, !dbg !4128 %47 = add i64 %46, -14, !dbg !4128 %48 = shl i64 %value_phi2854, 14, !dbg !4130 %49 = urem i64 %48, %25, !dbg !4132 %.not52 = icmp ugt i64 %47, 14, !dbg !4100 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !4102 L221.loopexit: ; preds = %L217 br label %L221, !dbg !4133 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !4133 %51 = urem i64 %50, %25, !dbg !4135 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #28, !dbg !4136, !range !2603 %53 = add nsw i64 %52, -11, !dbg !4138 %54 = shl i64 %51, %53, !dbg !4139 %55 = sub nsw i64 %27, %53, !dbg !4142 %56 = icmp slt i64 %55, 0, !dbg !4144 br i1 %56, label %L250, label %L237, !dbg !4146 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !4147 %58 = shl i64 %55, 52, !dbg !4149 %59 = add i64 %58, 4503599627370496, !dbg !4149 %60 = and i64 %59, 9218868437227405312, !dbg !4152 %61 = or disjoint i64 %60, %57, !dbg !4154 br label %L259, !dbg !4154 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !4155 %63 = lshr i64 %54, %62, !dbg !4157 %64 = icmp ugt i64 %62, 63, !dbg !4157 %65 = and i64 %63, 4503599627370495, !dbg !4159 %66 = select i1 %64, i64 0, i64 %65, !dbg !4159 br label %L259, !dbg !4159 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !4160 br label %common.ret } ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_95009(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #23 !dbg !4015 { top: %pgcstack = call ptr @julia.get_pgcstack() #28 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !20 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !24 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #28, !dbg !4016 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !4017 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !4020 br i1 %.not, label %L9, label %L5, !dbg !4021 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !4022 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !4024 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !4025 %2 = lshr exact i64 %1, 52, !dbg !4028 %3 = add nsw i64 %2, -1024, !dbg !4030 %4 = icmp ugt i64 %3, 11, !dbg !4032 br i1 %4, label %L111, label %L22, !dbg !4031 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !4034 %6 = icmp ne i64 %1, 0, !dbg !4038 %7 = icmp eq i64 %5, 0, !dbg !4042 %.not38 = or i1 %6, %7, !dbg !4041 %8 = or disjoint i64 %5, 4503599627370496, !dbg !4041 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !4041 %9 = shl nuw i64 %value_phi, %3, !dbg !4045 %10 = urem i64 %9, 7074237752028440, !dbg !4046 %.not39 = icmp eq i64 %10, 0, !dbg !4047 br i1 %.not39, label %common.ret, label %L75, !dbg !4049 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #28, !dbg !4050, !range !2603 %12 = add nsw i64 %11, -11, !dbg !4052 %13 = shl i64 %10, %12, !dbg !4053 %14 = and i64 %13, 4503599627370495, !dbg !4056 %15 = shl nuw nsw i64 %11, 52, !dbg !4058 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !4058 %17 = or disjoint i64 %16, %14, !dbg !4061 %18 = bitcast i64 %17 to double, !dbg !4062 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !4064 %20 = icmp ne i64 %1, 0, !dbg !4068 %21 = icmp eq i64 %19, 0, !dbg !4072 %.not44 = or i1 %20, %21, !dbg !4071 %22 = or disjoint i64 %19, 4503599627370496, !dbg !4071 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !4071 %23 = add nsw i64 %2, -1024, !dbg !4075 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #28, !dbg !4077 %25 = lshr exact i64 7074237752028440, %24, !dbg !4080 %26 = sub nsw i64 %23, %24, !dbg !4082 %27 = add nuw nsw i64 %24, 1023, !dbg !4084 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #28, !dbg !4086 %29 = shl nuw i64 %value_phi15, %28, !dbg !4089 %30 = urem i64 %29, %25, !dbg !4091 %.not50 = icmp eq i64 %30, 0, !dbg !4092 br i1 %.not50, label %common.ret, label %L171, !dbg !4094 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !4095 %.not51 = icmp eq i64 %31, 0, !dbg !4097 br i1 %.not51, label %L173, label %L213.preheader, !dbg !4099 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !4100 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !4102 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !4102 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #28, !dbg !4103, !range !2603 %33 = add nsw i64 %32, -11, !dbg !4104 %34 = shl i64 %30, %33, !dbg !4105 %35 = sub nsw i64 %27, %33, !dbg !4108 %36 = icmp slt i64 %35, 0, !dbg !4110 br i1 %36, label %L200, label %L187, !dbg !4112 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !4113 %38 = shl nuw i64 %35, 52, !dbg !4115 %39 = add nuw i64 %38, 4503599627370496, !dbg !4115 %40 = and i64 %39, 9218868437227405312, !dbg !4118 %41 = or disjoint i64 %40, %37, !dbg !4120 br label %L209, !dbg !4120 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !4121 %43 = lshr i64 %34, %42, !dbg !4123 %44 = and i64 %43, 4503599627370495, !dbg !4125 br label %L209, !dbg !4125 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !4126 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !4128 %iv.next = add nuw nsw i64 %iv, 1, !dbg !4128 %46 = add i64 %31, %45, !dbg !4128 %47 = add i64 %46, -14, !dbg !4128 %48 = shl i64 %value_phi2854, 14, !dbg !4130 %49 = urem i64 %48, %25, !dbg !4132 %.not52 = icmp ugt i64 %47, 14, !dbg !4100 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !4102 L221.loopexit: ; preds = %L217 br label %L221, !dbg !4133 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !4133 %51 = urem i64 %50, %25, !dbg !4135 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #28, !dbg !4136, !range !2603 %53 = add nsw i64 %52, -11, !dbg !4138 %54 = shl i64 %51, %53, !dbg !4139 %55 = sub nsw i64 %27, %53, !dbg !4142 %56 = icmp slt i64 %55, 0, !dbg !4144 br i1 %56, label %L250, label %L237, !dbg !4146 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !4147 %58 = shl i64 %55, 52, !dbg !4149 %59 = add i64 %58, 4503599627370496, !dbg !4149 %60 = and i64 %59, 9218868437227405312, !dbg !4152 %61 = or disjoint i64 %60, %57, !dbg !4154 br label %L259, !dbg !4154 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !4155 %63 = lshr i64 %54, %62, !dbg !4157 %64 = icmp ugt i64 %62, 63, !dbg !4157 %65 = and i64 %63, 4503599627370495, !dbg !4159 %66 = select i1 %64, i64 0, i64 %65, !dbg !4159 br label %L259, !dbg !4159 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !4160 br label %common.ret } constantarg[double %"x::Float64"] = 0 type: {[-1]:Float@double} - vals: {} constantinst[ %pgcstack = call ptr @julia.get_pgcstack() #28] = 1 val:1 type: {[-1]:Pointer, [-1,16]:Pointer} constantinst[ %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16] = 1 val:1 type: {[-1]:Pointer, [-1,0]:Pointer} constantinst[ %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !15] = 1 val:1 type: {[-1]:Pointer} constantinst[ %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16] = 1 val:1 type: {[-1]:Pointer} constantinst[ %safepoint = load ptr, ptr %0, align 8, !tbaa !19] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ call void @julia.safepoint(ptr %safepoint) #28, !dbg !21] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !22] = 0 val:0 type: {[-1]:Float@double} constantinst[ %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !28] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not, label %L9, label %L5, !dbg !31] = 1 val:1 type: {} constantinst[ %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !32] = 1 val:1 type: {[-1]:Integer} constantinst[ %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64"] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ ret double %common.ret.op, !dbg !35] = 1 val:1 type: {} constantinst[ %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !36] = 1 val:1 type: {} constantinst[ %2 = lshr exact i64 %1, 52, !dbg !41] = 1 val:1 type: {[-1]:Integer} constantinst[ %3 = add nsw i64 %2, -1024, !dbg !44] = 1 val:1 type: {[-1]:Integer} constantinst[ %4 = icmp ugt i64 %3, 11, !dbg !47] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %4, label %L111, label %L22, !dbg !46] = 1 val:1 type: {} constantinst[ %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !49] = 0 val:0 type: {} constantinst[ %6 = icmp ne i64 %1, 0, !dbg !55] = 1 val:1 type: {[-1]:Integer} constantinst[ %7 = icmp eq i64 %5, 0, !dbg !63] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not38 = or i1 %6, %7, !dbg !62] = 1 val:1 type: {[-1]:Integer} constantinst[ %8 = or disjoint i64 %5, 4503599627370496, !dbg !62] = 0 val:0 type: {} constantinst[ %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !62] = 0 val:0 type: {} constantinst[ %9 = shl nuw i64 %value_phi, %3, !dbg !68] = 0 val:0 type: {} constantinst[ %10 = urem i64 %9, 7074237752028440, !dbg !70] = 0 val:0 type: {} constantinst[ %.not39 = icmp eq i64 %10, 0, !dbg !71] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not39, label %common.ret, label %L75, !dbg !75] = 1 val:1 type: {} constantinst[ %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #28, !dbg !76, !range !79] = 1 val:1 type: {[-1]:Integer} constantinst[ %12 = add nsw i64 %11, -11, !dbg !80] = 1 val:1 type: {[-1]:Integer} constantinst[ %13 = shl i64 %10, %12, !dbg !81] = 0 val:0 type: {} constantinst[ %14 = and i64 %13, 4503599627370495, !dbg !84] = 0 val:0 type: {} constantinst[ %15 = shl nuw nsw i64 %11, 52, !dbg !86] = 1 val:1 type: {[-1]:Integer} constantinst[ %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !86] = 1 val:1 type: {[-1]:Anything} constantinst[ %17 = or disjoint i64 %16, %14, !dbg !89] = 0 val:0 type: {[-1]:Float@double} constantinst[ %18 = bitcast i64 %17 to double, !dbg !91] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !93] = 0 val:0 type: {} constantinst[ %20 = icmp ne i64 %1, 0, !dbg !97] = 1 val:1 type: {[-1]:Integer} constantinst[ %21 = icmp eq i64 %19, 0, !dbg !101] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not44 = or i1 %20, %21, !dbg !100] = 1 val:1 type: {[-1]:Integer} constantinst[ %22 = or disjoint i64 %19, 4503599627370496, !dbg !100] = 0 val:0 type: {} constantinst[ %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !100] = 0 val:0 type: {} constantinst[ %23 = add nsw i64 %2, -1024, !dbg !104] = 1 val:1 type: {[-1]:Integer} constantinst[ %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #28, !dbg !106] = 1 val:1 type: {[-1]:Integer} constantinst[ %25 = lshr exact i64 7074237752028440, %24, !dbg !111] = 1 val:1 type: {[-1]:Anything} constantinst[ %26 = sub nsw i64 %23, %24, !dbg !113] = 1 val:1 type: {[-1]:Integer} constantinst[ %27 = add nuw nsw i64 %24, 1023, !dbg !115] = 1 val:1 type: {[-1]:Integer} constantinst[ %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #28, !dbg !118] = 1 val:1 type: {[-1]:Integer} constantinst[ %29 = shl nuw i64 %value_phi15, %28, !dbg !121] = 0 val:0 type: {} constantinst[ %30 = urem i64 %29, %25, !dbg !123] = 0 val:0 type: {} constantinst[ %.not50 = icmp eq i64 %30, 0, !dbg !124] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not50, label %common.ret, label %L171, !dbg !126] = 1 val:1 type: {} constantinst[ %31 = sub nsw i64 %26, %28, !dbg !127] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not51 = icmp eq i64 %31, 0, !dbg !129] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not51, label %L173, label %L213.preheader, !dbg !131] = 1 val:1 type: {} constantinst[ %.not5253 = icmp ugt i64 %31, 14, !dbg !132] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not5253, label %L217.preheader, label %L221, !dbg !135] = 1 val:1 type: {} constantinst[ br label %L217, !dbg !135] = 1 val:1 type: {} constantinst[ %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #28, !dbg !136, !range !79] = 1 val:1 type: {[-1]:Integer} constantinst[ %33 = add nsw i64 %32, -11, !dbg !137] = 1 val:1 type: {[-1]:Integer} constantinst[ %34 = shl i64 %30, %33, !dbg !138] = 0 val:0 type: {} constantinst[ %35 = sub nsw i64 %27, %33, !dbg !141] = 1 val:1 type: {[-1]:Integer} constantinst[ %36 = icmp slt i64 %35, 0, !dbg !143] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %36, label %L200, label %L187, !dbg !146] = 1 val:1 type: {} constantinst[ %37 = and i64 %34, 4503599627370495, !dbg !147] = 0 val:0 type: {} constantinst[ %38 = shl nuw i64 %35, 52, !dbg !149] = 1 val:1 type: {[-1]:Integer} constantinst[ %39 = add nuw i64 %38, 4503599627370496, !dbg !149] = 1 val:1 type: {[-1]:Anything} constantinst[ %40 = and i64 %39, 9218868437227405312, !dbg !152] = 1 val:1 type: {[-1]:Anything} constantinst[ %41 = or disjoint i64 %40, %37, !dbg !154] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !154] = 1 val:1 type: {} constantinst[ %42 = sub nsw i64 0, %35, !dbg !155] = 1 val:1 type: {[-1]:Anything} constantinst[ %43 = lshr i64 %34, %42, !dbg !157] = 0 val:0 type: {} constantinst[ %44 = and i64 %43, 4503599627370495, !dbg !159] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !159] = 1 val:1 type: {} constantinst[ %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !160] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ]] = 0 val:0 type: {} constantinst[ %45 = mul i64 %iv, -14, !dbg !162] = 1 val:1 type: {[-1]:Integer} constantinst[ %iv.next = add nuw nsw i64 %iv, 1, !dbg !162] = 1 val:1 type: {[-1]:Integer} constantinst[ %46 = add i64 %31, %45, !dbg !162] = 1 val:1 type: {[-1]:Integer} constantinst[ %47 = add i64 %46, -14, !dbg !162] = 1 val:1 type: {[-1]:Integer} constantinst[ %48 = shl i64 %value_phi2854, 14, !dbg !164] = 0 val:0 type: {} constantinst[ %49 = urem i64 %48, %25, !dbg !166] = 0 val:0 type: {} constantinst[ %.not52 = icmp ugt i64 %47, 14, !dbg !132] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not52, label %L217, label %L221.loopexit, !dbg !135] = 1 val:1 type: {} constantinst[ br label %L221, !dbg !167] = 1 val:1 type: {} constantinst[ %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ]] = 0 val:0 type: {} constantinst[ %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !167] = 0 val:0 type: {} constantinst[ %51 = urem i64 %50, %25, !dbg !169] = 0 val:0 type: {} constantinst[ %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #28, !dbg !170, !range !79] = 1 val:1 type: {[-1]:Integer} constantinst[ %53 = add nsw i64 %52, -11, !dbg !172] = 1 val:1 type: {[-1]:Integer} constantinst[ %54 = shl i64 %51, %53, !dbg !173] = 0 val:0 type: {} constantinst[ %55 = sub nsw i64 %27, %53, !dbg !176] = 1 val:1 type: {[-1]:Integer} constantinst[ %56 = icmp slt i64 %55, 0, !dbg !178] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %56, label %L250, label %L237, !dbg !180] = 1 val:1 type: {} constantinst[ %57 = and i64 %54, 4503599627370495, !dbg !181] = 0 val:0 type: {} constantinst[ %58 = shl i64 %55, 52, !dbg !183] = 1 val:1 type: {[-1]:Integer} constantinst[ %59 = add i64 %58, 4503599627370496, !dbg !183] = 1 val:1 type: {[-1]:Anything} constantinst[ %60 = and i64 %59, 9218868437227405312, !dbg !186] = 1 val:1 type: {[-1]:Anything} constantinst[ %61 = or disjoint i64 %60, %57, !dbg !188] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !188] = 1 val:1 type: {} constantinst[ %62 = sub nsw i64 0, %55, !dbg !189] = 1 val:1 type: {[-1]:Anything} constantinst[ %63 = lshr i64 %54, %62, !dbg !191] = 0 val:0 type: {} constantinst[ %64 = icmp ugt i64 %62, 63, !dbg !191] = 1 val:1 type: {[-1]:Integer} constantinst[ %65 = and i64 %63, 4503599627370495, !dbg !193] = 0 val:0 type: {[-1]:Float@double} constantinst[ %66 = select i1 %64, i64 0, i64 %65, !dbg !193] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !193] = 1 val:1 type: {} constantinst[ %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !194] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} cannot handle unknown binary operator: %17 = or disjoint i64 %16, %14, !dbg !89 Stacktrace: [1] | @ ./int.jl:378 [2] _to_float @ ./float.jl:526 [3] rem_internal @ ./float.jl:552 Failure within method: rem_internal(::Float64, ::Float64) @ Base float.jl:533 Hint: catch this exception as `err` and call `code_typed(err)` to inspect the surrounding code. Stacktrace: [1] | @ ./int.jl:378 [inlined] [2] _to_float @ ./float.jl:526 [inlined] [3] rem_internal @ ./float.jl:552 [4] rem @ ./float.jl:601 [inlined] [5] mod @ ./float.jl:610 [inlined] [6] E @ ~/.julia/packages/JacobiElliptic/DNY74/src/Carlson.jl:108 [inlined] [7] call_with_kwargs @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:10 [inlined] [8] diffejulia_call_with_kwargs_94987wrap @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:0 [9] macro expansion @ ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6886 [inlined] [10] enzyme_call(::Val{false}, ::Ptr{Nothing}, ::Type{Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.E)}, Active{Float64}, Active{Float64}}, 1, @NamedTuple{var"1", var"2"::Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, var"3"::Float64, var"4"::Float64, var"5"::Core.LLVMPtr{Nothing, 0}, var"6"::Core.LLVMPtr{Nothing, 0}, var"7"::Core.LLVMPtr{Nothing, 0}, var"8"::Core.LLVMPtr{Nothing, 0}, var"9"::Core.LLVMPtr{Nothing, 0}, var"10"::Core.LLVMPtr{Nothing, 0}, var"11"::Core.LLVMPtr{Nothing, 0}, var"12"::Core.LLVMPtr{Nothing, 0}, var"13"::Core.LLVMPtr{Nothing, 0}, var"14"::Core.LLVMPtr{Nothing, 0}, var"15"::Core.LLVMPtr{Nothing, 0}, var"16"::Core.LLVMPtr{Nothing, 0}, var"17"::Core.LLVMPtr{Nothing, 0}, var"18"::Core.LLVMPtr{Nothing, 0}, var"19"::Core.LLVMPtr{Nothing, 0}, var"20"::Core.LLVMPtr{Nothing, 0}, var"21"::Core.LLVMPtr{Nothing, 0}, var"22"::Core.LLVMPtr{Nothing, 0}, var"23"::Core.LLVMPtr{Nothing, 0}, var"24"::Core.LLVMPtr{Nothing, 0}, var"25"::Core.LLVMPtr{Nothing, 0}, var"26"::Core.LLVMPtr{Nothing, 0}, var"27"::Core.LLVMPtr{Nothing, 0}, var"28"::Core.LLVMPtr{Nothing, 0}, var"29"::Core.LLVMPtr{Nothing, 0}, var"30"::Core.LLVMPtr{Nothing, 0}, var"31"::Core.LLVMPtr{Nothing, 0}, var"32"::Core.LLVMPtr{Nothing, 0}, var"33"::Core.LLVMPtr{Nothing, 0}, var"34"::Core.LLVMPtr{Nothing, 0}, var"35"::Core.LLVMPtr{Nothing, 0}, var"36"::Core.LLVMPtr{Nothing, 0}}}}, ::Val{1}, ::Val{false}, ::Type{Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.E)}, Active{Float64}, Active{Float64}}}, ::Type{Active{Float64}}, ::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Type{@NamedTuple{var"1", var"2"::Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, var"3"::Float64, var"4"::Float64, var"5"::Core.LLVMPtr{Nothing, 0}, var"6"::Core.LLVMPtr{Nothing, 0}, var"7"::Core.LLVMPtr{Nothing, 0}, var"8"::Core.LLVMPtr{Nothing, 0}, var"9"::Core.LLVMPtr{Nothing, 0}, var"10"::Core.LLVMPtr{Nothing, 0}, var"11"::Core.LLVMPtr{Nothing, 0}, var"12"::Core.LLVMPtr{Nothing, 0}, var"13"::Core.LLVMPtr{Nothing, 0}, var"14"::Core.LLVMPtr{Nothing, 0}, var"15"::Core.LLVMPtr{Nothing, 0}, var"16"::Core.LLVMPtr{Nothing, 0}, var"17"::Core.LLVMPtr{Nothing, 0}, var"18"::Core.LLVMPtr{Nothing, 0}, var"19"::Core.LLVMPtr{Nothing, 0}, var"20"::Core.LLVMPtr{Nothing, 0}, var"21"::Core.LLVMPtr{Nothing, 0}, var"22"::Core.LLVMPtr{Nothing, 0}, var"23"::Core.LLVMPtr{Nothing, 0}, var"24"::Core.LLVMPtr{Nothing, 0}, var"25"::Core.LLVMPtr{Nothing, 0}, var"26"::Core.LLVMPtr{Nothing, 0}, var"27"::Core.LLVMPtr{Nothing, 0}, var"28"::Core.LLVMPtr{Nothing, 0}, var"29"::Core.LLVMPtr{Nothing, 0}, var"30"::Core.LLVMPtr{Nothing, 0}, var"31"::Core.LLVMPtr{Nothing, 0}, var"32"::Core.LLVMPtr{Nothing, 0}, var"33"::Core.LLVMPtr{Nothing, 0}, var"34"::Core.LLVMPtr{Nothing, 0}, var"35"::Core.LLVMPtr{Nothing, 0}, var"36"::Core.LLVMPtr{Nothing, 0}}}, ::Const{@NamedTuple{}}, ::Const{typeof(JacobiElliptic.CarlsonAlg.E)}, ::Active{Float64}, ::Active{Float64}, ::Float64, ::@NamedTuple{var"1", var"2"::Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, var"3"::Float64, var"4"::Float64, var"5"::Core.LLVMPtr{Nothing, 0}, var"6"::Core.LLVMPtr{Nothing, 0}, var"7"::Core.LLVMPtr{Nothing, 0}, var"8"::Core.LLVMPtr{Nothing, 0}, var"9"::Core.LLVMPtr{Nothing, 0}, var"10"::Core.LLVMPtr{Nothing, 0}, var"11"::Core.LLVMPtr{Nothing, 0}, var"12"::Core.LLVMPtr{Nothing, 0}, var"13"::Core.LLVMPtr{Nothing, 0}, var"14"::Core.LLVMPtr{Nothing, 0}, var"15"::Core.LLVMPtr{Nothing, 0}, var"16"::Core.LLVMPtr{Nothing, 0}, var"17"::Core.LLVMPtr{Nothing, 0}, var"18"::Core.LLVMPtr{Nothing, 0}, var"19"::Core.LLVMPtr{Nothing, 0}, var"20"::Core.LLVMPtr{Nothing, 0}, var"21"::Core.LLVMPtr{Nothing, 0}, var"22"::Core.LLVMPtr{Nothing, 0}, var"23"::Core.LLVMPtr{Nothing, 0}, var"24"::Core.LLVMPtr{Nothing, 0}, var"25"::Core.LLVMPtr{Nothing, 0}, var"26"::Core.LLVMPtr{Nothing, 0}, var"27"::Core.LLVMPtr{Nothing, 0}, var"28"::Core.LLVMPtr{Nothing, 0}, var"29"::Core.LLVMPtr{Nothing, 0}, var"30"::Core.LLVMPtr{Nothing, 0}, var"31"::Core.LLVMPtr{Nothing, 0}, var"32"::Core.LLVMPtr{Nothing, 0}, var"33"::Core.LLVMPtr{Nothing, 0}, var"34"::Core.LLVMPtr{Nothing, 0}, var"35"::Core.LLVMPtr{Nothing, 0}, var"36"::Core.LLVMPtr{Nothing, 0}}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6356 [11] (::Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.E)}, Active{Float64}, Active{Float64}}, 1, @NamedTuple{var"1", var"2"::Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, var"3"::Float64, var"4"::Float64, var"5"::Core.LLVMPtr{Nothing, 0}, var"6"::Core.LLVMPtr{Nothing, 0}, var"7"::Core.LLVMPtr{Nothing, 0}, var"8"::Core.LLVMPtr{Nothing, 0}, var"9"::Core.LLVMPtr{Nothing, 0}, var"10"::Core.LLVMPtr{Nothing, 0}, var"11"::Core.LLVMPtr{Nothing, 0}, var"12"::Core.LLVMPtr{Nothing, 0}, var"13"::Core.LLVMPtr{Nothing, 0}, var"14"::Core.LLVMPtr{Nothing, 0}, var"15"::Core.LLVMPtr{Nothing, 0}, var"16"::Core.LLVMPtr{Nothing, 0}, var"17"::Core.LLVMPtr{Nothing, 0}, var"18"::Core.LLVMPtr{Nothing, 0}, var"19"::Core.LLVMPtr{Nothing, 0}, var"20"::Core.LLVMPtr{Nothing, 0}, var"21"::Core.LLVMPtr{Nothing, 0}, var"22"::Core.LLVMPtr{Nothing, 0}, var"23"::Core.LLVMPtr{Nothing, 0}, var"24"::Core.LLVMPtr{Nothing, 0}, var"25"::Core.LLVMPtr{Nothing, 0}, var"26"::Core.LLVMPtr{Nothing, 0}, var"27"::Core.LLVMPtr{Nothing, 0}, var"28"::Core.LLVMPtr{Nothing, 0}, var"29"::Core.LLVMPtr{Nothing, 0}, var"30"::Core.LLVMPtr{Nothing, 0}, var"31"::Core.LLVMPtr{Nothing, 0}, var"32"::Core.LLVMPtr{Nothing, 0}, var"33"::Core.LLVMPtr{Nothing, 0}, var"34"::Core.LLVMPtr{Nothing, 0}, var"35"::Core.LLVMPtr{Nothing, 0}, var"36"::Core.LLVMPtr{Nothing, 0}}})(::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Const{@NamedTuple{}}, ::Vararg{Any}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6272 [12] macro expansion @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:131 [inlined] [13] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [14] test_reverse(::typeof(JacobiElliptic.CarlsonAlg.E), ::Type, ::Tuple{Float64, UnionAll}, ::Vararg{Tuple{Float64, UnionAll}}; rng::Random.TaskLocalRNG, fdm::FiniteDifferences.AdaptedFiniteDifferenceMethod{5, 1, FiniteDifferences.UnadaptedFiniteDifferenceMethod{7, 5}}, fkwargs::@NamedTuple{}, rtol::Float64, atol::Float64, testset_name::Nothing, runtime_activity::Bool, output_tangent::Nothing) @ EnzymeTestUtils ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:86 [15] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:1889 [16] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [17] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:17 [inlined] [18] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [19] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:25 [inlined] [20] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [21] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:136 [inlined] [22] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [23] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:172 [inlined] [24] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [25] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/runtests.jl:10 [26] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [27] top-level scope @ none:6 [28] eval(m::Module, e::Any) @ Core ./boot.jl:489 [29] exec_options(opts::Base.JLOptions) @ Base ./client.jl:283 [30] _start() @ Base ./client.jl:550 test_reverse: Pi with return activity Active on (::Float64, Const), (::Float64, Active), (::Float64, Const): Error During Test at /home/pkgeval/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:84 Got exception outside of a @test EnzymeNoDerivativeError: Current scope: ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_110335(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #39 !dbg !6504 { top: %pgcstack = call ptr @julia.get_pgcstack() #47 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !30 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !34 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #47, !dbg !6505 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !6506 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !6509 br i1 %.not, label %L9, label %L5, !dbg !6510 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !6511 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !6513 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !6514 %2 = lshr exact i64 %1, 52, !dbg !6517 %3 = add nsw i64 %2, -1024, !dbg !6519 %4 = icmp ugt i64 %3, 11, !dbg !6521 br i1 %4, label %L111, label %L22, !dbg !6520 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6523 %6 = icmp ne i64 %1, 0, !dbg !6527 %7 = icmp eq i64 %5, 0, !dbg !6531 %.not38 = or i1 %6, %7, !dbg !6530 %8 = or disjoint i64 %5, 4503599627370496, !dbg !6530 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !6530 %9 = shl nuw i64 %value_phi, %3, !dbg !6534 %10 = urem i64 %9, 7074237752028440, !dbg !6535 %.not39 = icmp eq i64 %10, 0, !dbg !6536 br i1 %.not39, label %common.ret, label %L75, !dbg !6538 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #47, !dbg !6539, !range !5559 %12 = add nsw i64 %11, -11, !dbg !6541 %13 = shl i64 %10, %12, !dbg !6542 %14 = and i64 %13, 4503599627370495, !dbg !6545 %15 = shl nuw nsw i64 %11, 52, !dbg !6547 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !6547 %17 = or disjoint i64 %16, %14, !dbg !6550 %18 = bitcast i64 %17 to double, !dbg !6551 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6553 %20 = icmp ne i64 %1, 0, !dbg !6557 %21 = icmp eq i64 %19, 0, !dbg !6561 %.not44 = or i1 %20, %21, !dbg !6560 %22 = or disjoint i64 %19, 4503599627370496, !dbg !6560 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !6560 %23 = add nsw i64 %2, -1024, !dbg !6564 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #47, !dbg !6566 %25 = lshr exact i64 7074237752028440, %24, !dbg !6569 %26 = sub nsw i64 %23, %24, !dbg !6571 %27 = add nuw nsw i64 %24, 1023, !dbg !6573 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #47, !dbg !6575 %29 = shl nuw i64 %value_phi15, %28, !dbg !6578 %30 = urem i64 %29, %25, !dbg !6580 %.not50 = icmp eq i64 %30, 0, !dbg !6581 br i1 %.not50, label %common.ret, label %L171, !dbg !6583 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !6584 %.not51 = icmp eq i64 %31, 0, !dbg !6586 br i1 %.not51, label %L173, label %L213.preheader, !dbg !6588 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !6589 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !6591 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !6591 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #47, !dbg !6592, !range !5559 %33 = add nsw i64 %32, -11, !dbg !6593 %34 = shl i64 %30, %33, !dbg !6594 %35 = sub nsw i64 %27, %33, !dbg !6597 %36 = icmp slt i64 %35, 0, !dbg !6599 br i1 %36, label %L200, label %L187, !dbg !6601 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !6602 %38 = shl nuw i64 %35, 52, !dbg !6604 %39 = add nuw i64 %38, 4503599627370496, !dbg !6604 %40 = and i64 %39, 9218868437227405312, !dbg !6607 %41 = or disjoint i64 %40, %37, !dbg !6609 br label %L209, !dbg !6609 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !6610 %43 = lshr i64 %34, %42, !dbg !6612 %44 = and i64 %43, 4503599627370495, !dbg !6614 br label %L209, !dbg !6614 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !6615 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !6617 %iv.next = add nuw nsw i64 %iv, 1, !dbg !6617 %46 = add i64 %31, %45, !dbg !6617 %47 = add i64 %46, -14, !dbg !6617 %48 = shl i64 %value_phi2854, 14, !dbg !6619 %49 = urem i64 %48, %25, !dbg !6621 %.not52 = icmp ugt i64 %47, 14, !dbg !6589 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !6591 L221.loopexit: ; preds = %L217 br label %L221, !dbg !6622 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !6622 %51 = urem i64 %50, %25, !dbg !6624 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #47, !dbg !6625, !range !5559 %53 = add nsw i64 %52, -11, !dbg !6627 %54 = shl i64 %51, %53, !dbg !6628 %55 = sub nsw i64 %27, %53, !dbg !6631 %56 = icmp slt i64 %55, 0, !dbg !6633 br i1 %56, label %L250, label %L237, !dbg !6635 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !6636 %58 = shl i64 %55, 52, !dbg !6638 %59 = add i64 %58, 4503599627370496, !dbg !6638 %60 = and i64 %59, 9218868437227405312, !dbg !6641 %61 = or disjoint i64 %60, %57, !dbg !6643 br label %L259, !dbg !6643 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !6644 %63 = lshr i64 %54, %62, !dbg !6646 %64 = icmp ugt i64 %62, 63, !dbg !6646 %65 = and i64 %63, 4503599627370495, !dbg !6648 %66 = select i1 %64, i64 0, i64 %65, !dbg !6648 br label %L259, !dbg !6648 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !6649 br label %common.ret } ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_110335(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #39 !dbg !6504 { top: %pgcstack = call ptr @julia.get_pgcstack() #47 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !30 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !34 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #47, !dbg !6505 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !6506 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !6509 br i1 %.not, label %L9, label %L5, !dbg !6510 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !6511 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !6513 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !6514 %2 = lshr exact i64 %1, 52, !dbg !6517 %3 = add nsw i64 %2, -1024, !dbg !6519 %4 = icmp ugt i64 %3, 11, !dbg !6521 br i1 %4, label %L111, label %L22, !dbg !6520 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6523 %6 = icmp ne i64 %1, 0, !dbg !6527 %7 = icmp eq i64 %5, 0, !dbg !6531 %.not38 = or i1 %6, %7, !dbg !6530 %8 = or disjoint i64 %5, 4503599627370496, !dbg !6530 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !6530 %9 = shl nuw i64 %value_phi, %3, !dbg !6534 %10 = urem i64 %9, 7074237752028440, !dbg !6535 %.not39 = icmp eq i64 %10, 0, !dbg !6536 br i1 %.not39, label %common.ret, label %L75, !dbg !6538 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #47, !dbg !6539, !range !5559 %12 = add nsw i64 %11, -11, !dbg !6541 %13 = shl i64 %10, %12, !dbg !6542 %14 = and i64 %13, 4503599627370495, !dbg !6545 %15 = shl nuw nsw i64 %11, 52, !dbg !6547 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !6547 %17 = or disjoint i64 %16, %14, !dbg !6550 %18 = bitcast i64 %17 to double, !dbg !6551 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6553 %20 = icmp ne i64 %1, 0, !dbg !6557 %21 = icmp eq i64 %19, 0, !dbg !6561 %.not44 = or i1 %20, %21, !dbg !6560 %22 = or disjoint i64 %19, 4503599627370496, !dbg !6560 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !6560 %23 = add nsw i64 %2, -1024, !dbg !6564 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #47, !dbg !6566 %25 = lshr exact i64 7074237752028440, %24, !dbg !6569 %26 = sub nsw i64 %23, %24, !dbg !6571 %27 = add nuw nsw i64 %24, 1023, !dbg !6573 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #47, !dbg !6575 %29 = shl nuw i64 %value_phi15, %28, !dbg !6578 %30 = urem i64 %29, %25, !dbg !6580 %.not50 = icmp eq i64 %30, 0, !dbg !6581 br i1 %.not50, label %common.ret, label %L171, !dbg !6583 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !6584 %.not51 = icmp eq i64 %31, 0, !dbg !6586 br i1 %.not51, label %L173, label %L213.preheader, !dbg !6588 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !6589 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !6591 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !6591 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #47, !dbg !6592, !range !5559 %33 = add nsw i64 %32, -11, !dbg !6593 %34 = shl i64 %30, %33, !dbg !6594 %35 = sub nsw i64 %27, %33, !dbg !6597 %36 = icmp slt i64 %35, 0, !dbg !6599 br i1 %36, label %L200, label %L187, !dbg !6601 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !6602 %38 = shl nuw i64 %35, 52, !dbg !6604 %39 = add nuw i64 %38, 4503599627370496, !dbg !6604 %40 = and i64 %39, 9218868437227405312, !dbg !6607 %41 = or disjoint i64 %40, %37, !dbg !6609 br label %L209, !dbg !6609 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !6610 %43 = lshr i64 %34, %42, !dbg !6612 %44 = and i64 %43, 4503599627370495, !dbg !6614 br label %L209, !dbg !6614 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !6615 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !6617 %iv.next = add nuw nsw i64 %iv, 1, !dbg !6617 %46 = add i64 %31, %45, !dbg !6617 %47 = add i64 %46, -14, !dbg !6617 %48 = shl i64 %value_phi2854, 14, !dbg !6619 %49 = urem i64 %48, %25, !dbg !6621 %.not52 = icmp ugt i64 %47, 14, !dbg !6589 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !6591 L221.loopexit: ; preds = %L217 br label %L221, !dbg !6622 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !6622 %51 = urem i64 %50, %25, !dbg !6624 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #47, !dbg !6625, !range !5559 %53 = add nsw i64 %52, -11, !dbg !6627 %54 = shl i64 %51, %53, !dbg !6628 %55 = sub nsw i64 %27, %53, !dbg !6631 %56 = icmp slt i64 %55, 0, !dbg !6633 br i1 %56, label %L250, label %L237, !dbg !6635 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !6636 %58 = shl i64 %55, 52, !dbg !6638 %59 = add i64 %58, 4503599627370496, !dbg !6638 %60 = and i64 %59, 9218868437227405312, !dbg !6641 %61 = or disjoint i64 %60, %57, !dbg !6643 br label %L259, !dbg !6643 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !6644 %63 = lshr i64 %54, %62, !dbg !6646 %64 = icmp ugt i64 %62, 63, !dbg !6646 %65 = and i64 %63, 4503599627370495, !dbg !6648 %66 = select i1 %64, i64 0, i64 %65, !dbg !6648 br label %L259, !dbg !6648 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !6649 br label %common.ret } constantarg[double %"x::Float64"] = 0 type: {[-1]:Float@double} - vals: {} constantinst[ %pgcstack = call ptr @julia.get_pgcstack() #47] = 1 val:1 type: {[-1]:Pointer, [-1,16]:Pointer} constantinst[ %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16] = 1 val:1 type: {[-1]:Pointer, [-1,0]:Pointer} constantinst[ %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !30] = 1 val:1 type: {[-1]:Pointer} constantinst[ %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16] = 1 val:1 type: {[-1]:Pointer} constantinst[ %safepoint = load ptr, ptr %0, align 8, !tbaa !34] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ call void @julia.safepoint(ptr %safepoint) #47, !dbg !36] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !37] = 0 val:0 type: {[-1]:Float@double} constantinst[ %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !43] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not, label %L9, label %L5, !dbg !46] = 1 val:1 type: {} constantinst[ %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !47] = 1 val:1 type: {[-1]:Integer} constantinst[ %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64"] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ ret double %common.ret.op, !dbg !50] = 1 val:1 type: {} constantinst[ %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !51] = 1 val:1 type: {} constantinst[ %2 = lshr exact i64 %1, 52, !dbg !56] = 1 val:1 type: {[-1]:Integer} constantinst[ %3 = add nsw i64 %2, -1024, !dbg !59] = 1 val:1 type: {[-1]:Integer} constantinst[ %4 = icmp ugt i64 %3, 11, !dbg !62] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %4, label %L111, label %L22, !dbg !61] = 1 val:1 type: {} constantinst[ %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !64] = 0 val:0 type: {} constantinst[ %6 = icmp ne i64 %1, 0, !dbg !70] = 1 val:1 type: {[-1]:Integer} constantinst[ %7 = icmp eq i64 %5, 0, !dbg !78] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not38 = or i1 %6, %7, !dbg !77] = 1 val:1 type: {[-1]:Integer} constantinst[ %8 = or disjoint i64 %5, 4503599627370496, !dbg !77] = 0 val:0 type: {} constantinst[ %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !77] = 0 val:0 type: {} constantinst[ %9 = shl nuw i64 %value_phi, %3, !dbg !83] = 0 val:0 type: {} constantinst[ %10 = urem i64 %9, 7074237752028440, !dbg !85] = 0 val:0 type: {} constantinst[ %.not39 = icmp eq i64 %10, 0, !dbg !86] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not39, label %common.ret, label %L75, !dbg !90] = 1 val:1 type: {} constantinst[ %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #47, !dbg !91, !range !94] = 1 val:1 type: {[-1]:Integer} constantinst[ %12 = add nsw i64 %11, -11, !dbg !95] = 1 val:1 type: {[-1]:Integer} constantinst[ %13 = shl i64 %10, %12, !dbg !96] = 0 val:0 type: {} constantinst[ %14 = and i64 %13, 4503599627370495, !dbg !99] = 0 val:0 type: {} constantinst[ %15 = shl nuw nsw i64 %11, 52, !dbg !101] = 1 val:1 type: {[-1]:Integer} constantinst[ %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !101] = 1 val:1 type: {[-1]:Anything} constantinst[ %17 = or disjoint i64 %16, %14, !dbg !104] = 0 val:0 type: {[-1]:Float@double} constantinst[ %18 = bitcast i64 %17 to double, !dbg !106] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !108] = 0 val:0 type: {} constantinst[ %20 = icmp ne i64 %1, 0, !dbg !112] = 1 val:1 type: {[-1]:Integer} constantinst[ %21 = icmp eq i64 %19, 0, !dbg !116] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not44 = or i1 %20, %21, !dbg !115] = 1 val:1 type: {[-1]:Integer} constantinst[ %22 = or disjoint i64 %19, 4503599627370496, !dbg !115] = 0 val:0 type: {} constantinst[ %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !115] = 0 val:0 type: {} constantinst[ %23 = add nsw i64 %2, -1024, !dbg !119] = 1 val:1 type: {[-1]:Integer} constantinst[ %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #47, !dbg !121] = 1 val:1 type: {[-1]:Integer} constantinst[ %25 = lshr exact i64 7074237752028440, %24, !dbg !126] = 1 val:1 type: {[-1]:Anything} constantinst[ %26 = sub nsw i64 %23, %24, !dbg !128] = 1 val:1 type: {[-1]:Integer} constantinst[ %27 = add nuw nsw i64 %24, 1023, !dbg !130] = 1 val:1 type: {[-1]:Integer} constantinst[ %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #47, !dbg !133] = 1 val:1 type: {[-1]:Integer} constantinst[ %29 = shl nuw i64 %value_phi15, %28, !dbg !136] = 0 val:0 type: {} constantinst[ %30 = urem i64 %29, %25, !dbg !138] = 0 val:0 type: {} constantinst[ %.not50 = icmp eq i64 %30, 0, !dbg !139] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not50, label %common.ret, label %L171, !dbg !141] = 1 val:1 type: {} constantinst[ %31 = sub nsw i64 %26, %28, !dbg !142] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not51 = icmp eq i64 %31, 0, !dbg !144] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not51, label %L173, label %L213.preheader, !dbg !146] = 1 val:1 type: {} constantinst[ %.not5253 = icmp ugt i64 %31, 14, !dbg !147] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not5253, label %L217.preheader, label %L221, !dbg !150] = 1 val:1 type: {} constantinst[ br label %L217, !dbg !150] = 1 val:1 type: {} constantinst[ %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #47, !dbg !151, !range !94] = 1 val:1 type: {[-1]:Integer} constantinst[ %33 = add nsw i64 %32, -11, !dbg !152] = 1 val:1 type: {[-1]:Integer} constantinst[ %34 = shl i64 %30, %33, !dbg !153] = 0 val:0 type: {} constantinst[ %35 = sub nsw i64 %27, %33, !dbg !156] = 1 val:1 type: {[-1]:Integer} constantinst[ %36 = icmp slt i64 %35, 0, !dbg !158] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %36, label %L200, label %L187, !dbg !161] = 1 val:1 type: {} constantinst[ %37 = and i64 %34, 4503599627370495, !dbg !162] = 0 val:0 type: {} constantinst[ %38 = shl nuw i64 %35, 52, !dbg !164] = 1 val:1 type: {[-1]:Integer} constantinst[ %39 = add nuw i64 %38, 4503599627370496, !dbg !164] = 1 val:1 type: {[-1]:Anything} constantinst[ %40 = and i64 %39, 9218868437227405312, !dbg !167] = 1 val:1 type: {[-1]:Anything} constantinst[ %41 = or disjoint i64 %40, %37, !dbg !169] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !169] = 1 val:1 type: {} constantinst[ %42 = sub nsw i64 0, %35, !dbg !170] = 1 val:1 type: {[-1]:Anything} constantinst[ %43 = lshr i64 %34, %42, !dbg !172] = 0 val:0 type: {} constantinst[ %44 = and i64 %43, 4503599627370495, !dbg !174] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !174] = 1 val:1 type: {} constantinst[ %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !175] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ]] = 0 val:0 type: {} constantinst[ %45 = mul i64 %iv, -14, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %iv.next = add nuw nsw i64 %iv, 1, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %46 = add i64 %31, %45, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %47 = add i64 %46, -14, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %48 = shl i64 %value_phi2854, 14, !dbg !179] = 0 val:0 type: {} constantinst[ %49 = urem i64 %48, %25, !dbg !181] = 0 val:0 type: {} constantinst[ %.not52 = icmp ugt i64 %47, 14, !dbg !147] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not52, label %L217, label %L221.loopexit, !dbg !150] = 1 val:1 type: {} constantinst[ br label %L221, !dbg !182] = 1 val:1 type: {} constantinst[ %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ]] = 0 val:0 type: {} constantinst[ %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !182] = 0 val:0 type: {} constantinst[ %51 = urem i64 %50, %25, !dbg !184] = 0 val:0 type: {} constantinst[ %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #47, !dbg !185, !range !94] = 1 val:1 type: {[-1]:Integer} constantinst[ %53 = add nsw i64 %52, -11, !dbg !187] = 1 val:1 type: {[-1]:Integer} constantinst[ %54 = shl i64 %51, %53, !dbg !188] = 0 val:0 type: {} constantinst[ %55 = sub nsw i64 %27, %53, !dbg !191] = 1 val:1 type: {[-1]:Integer} constantinst[ %56 = icmp slt i64 %55, 0, !dbg !193] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %56, label %L250, label %L237, !dbg !195] = 1 val:1 type: {} constantinst[ %57 = and i64 %54, 4503599627370495, !dbg !196] = 0 val:0 type: {} constantinst[ %58 = shl i64 %55, 52, !dbg !198] = 1 val:1 type: {[-1]:Integer} constantinst[ %59 = add i64 %58, 4503599627370496, !dbg !198] = 1 val:1 type: {[-1]:Anything} constantinst[ %60 = and i64 %59, 9218868437227405312, !dbg !201] = 1 val:1 type: {[-1]:Anything} constantinst[ %61 = or disjoint i64 %60, %57, !dbg !203] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !203] = 1 val:1 type: {} constantinst[ %62 = sub nsw i64 0, %55, !dbg !204] = 1 val:1 type: {[-1]:Anything} constantinst[ %63 = lshr i64 %54, %62, !dbg !206] = 0 val:0 type: {} constantinst[ %64 = icmp ugt i64 %62, 63, !dbg !206] = 1 val:1 type: {[-1]:Integer} constantinst[ %65 = and i64 %63, 4503599627370495, !dbg !208] = 0 val:0 type: {[-1]:Float@double} constantinst[ %66 = select i1 %64, i64 0, i64 %65, !dbg !208] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !208] = 1 val:1 type: {} constantinst[ %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !209] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} cannot handle unknown binary operator: %17 = or disjoint i64 %16, %14, !dbg !104 Stacktrace: [1] | @ ./int.jl:378 [2] _to_float @ ./float.jl:526 [3] rem_internal @ ./float.jl:552 Failure within method: rem_internal(::Float64, ::Float64) @ Base float.jl:533 Hint: catch this exception as `err` and call `code_typed(err)` to inspect the surrounding code. Stacktrace: [1] | @ ./int.jl:378 [inlined] [2] _to_float @ ./float.jl:526 [inlined] [3] rem_internal @ ./float.jl:552 [4] rem @ ./float.jl:601 [inlined] [5] mod @ ./float.jl:610 [inlined] [6] Pi @ ~/.julia/packages/JacobiElliptic/DNY74/src/Carlson.jl:255 [inlined] [7] call_with_kwargs @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:10 [inlined] [8] diffejulia_call_with_kwargs_110303wrap @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:0 [9] macro expansion @ ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6886 [inlined] [10] enzyme_call(::Val{false}, ::Ptr{Nothing}, ::Type{Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, Const{Float64}, Active{Float64}, Const{Float64}}, 1, Tuple{NTuple{6, Float64}, NTuple{4, Float64}, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Bool, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}}}, ::Val{1}, ::Val{false}, ::Type{Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, Const{Float64}, Active{Float64}, Const{Float64}}}, ::Type{Active{Float64}}, ::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Type{Tuple{NTuple{6, Float64}, NTuple{4, Float64}, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Bool, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}}, ::Const{@NamedTuple{}}, ::Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, ::Const{Float64}, ::Active{Float64}, ::Const{Float64}, ::Float64, ::Tuple{NTuple{6, Float64}, NTuple{4, Float64}, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Bool, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6356 [11] (::Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, Const{Float64}, Active{Float64}, Const{Float64}}, 1, Tuple{NTuple{6, Float64}, NTuple{4, Float64}, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Bool, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}})(::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Const{@NamedTuple{}}, ::Vararg{Any}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6272 [12] macro expansion @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:131 [inlined] [13] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [14] test_reverse(::typeof(JacobiElliptic.CarlsonAlg.Pi), ::Type, ::Tuple{Float64, UnionAll}, ::Vararg{Tuple{Float64, UnionAll}}; rng::Random.TaskLocalRNG, fdm::FiniteDifferences.AdaptedFiniteDifferenceMethod{5, 1, FiniteDifferences.UnadaptedFiniteDifferenceMethod{7, 5}}, fkwargs::@NamedTuple{}, rtol::Float64, atol::Float64, testset_name::Nothing, runtime_activity::Bool, output_tangent::Nothing) @ EnzymeTestUtils ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:86 [15] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:1889 [16] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [17] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:17 [inlined] [18] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [19] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:25 [inlined] [20] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [21] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:176 [inlined] [22] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [23] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:270 [inlined] [24] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [25] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/runtests.jl:10 [26] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [27] top-level scope @ none:6 [28] eval(m::Module, e::Any) @ Core ./boot.jl:489 [29] exec_options(opts::Base.JLOptions) @ Base ./client.jl:283 [30] _start() @ Base ./client.jl:550 test_reverse: Pi with return activity Active on (::Float64, Const), (::Float64, Active), (::Float64, Active): Error During Test at /home/pkgeval/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:84 Got exception outside of a @test EnzymeNoDerivativeError: Current scope: ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_110778(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #39 !dbg !6504 { top: %pgcstack = call ptr @julia.get_pgcstack() #49 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !30 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !34 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #49, !dbg !6505 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !6506 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !6509 br i1 %.not, label %L9, label %L5, !dbg !6510 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !6511 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !6513 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !6514 %2 = lshr exact i64 %1, 52, !dbg !6517 %3 = add nsw i64 %2, -1024, !dbg !6519 %4 = icmp ugt i64 %3, 11, !dbg !6521 br i1 %4, label %L111, label %L22, !dbg !6520 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6523 %6 = icmp ne i64 %1, 0, !dbg !6527 %7 = icmp eq i64 %5, 0, !dbg !6531 %.not38 = or i1 %6, %7, !dbg !6530 %8 = or disjoint i64 %5, 4503599627370496, !dbg !6530 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !6530 %9 = shl nuw i64 %value_phi, %3, !dbg !6534 %10 = urem i64 %9, 7074237752028440, !dbg !6535 %.not39 = icmp eq i64 %10, 0, !dbg !6536 br i1 %.not39, label %common.ret, label %L75, !dbg !6538 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #49, !dbg !6539, !range !5559 %12 = add nsw i64 %11, -11, !dbg !6541 %13 = shl i64 %10, %12, !dbg !6542 %14 = and i64 %13, 4503599627370495, !dbg !6545 %15 = shl nuw nsw i64 %11, 52, !dbg !6547 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !6547 %17 = or disjoint i64 %16, %14, !dbg !6550 %18 = bitcast i64 %17 to double, !dbg !6551 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6553 %20 = icmp ne i64 %1, 0, !dbg !6557 %21 = icmp eq i64 %19, 0, !dbg !6561 %.not44 = or i1 %20, %21, !dbg !6560 %22 = or disjoint i64 %19, 4503599627370496, !dbg !6560 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !6560 %23 = add nsw i64 %2, -1024, !dbg !6564 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #49, !dbg !6566 %25 = lshr exact i64 7074237752028440, %24, !dbg !6569 %26 = sub nsw i64 %23, %24, !dbg !6571 %27 = add nuw nsw i64 %24, 1023, !dbg !6573 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #49, !dbg !6575 %29 = shl nuw i64 %value_phi15, %28, !dbg !6578 %30 = urem i64 %29, %25, !dbg !6580 %.not50 = icmp eq i64 %30, 0, !dbg !6581 br i1 %.not50, label %common.ret, label %L171, !dbg !6583 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !6584 %.not51 = icmp eq i64 %31, 0, !dbg !6586 br i1 %.not51, label %L173, label %L213.preheader, !dbg !6588 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !6589 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !6591 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !6591 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #49, !dbg !6592, !range !5559 %33 = add nsw i64 %32, -11, !dbg !6593 %34 = shl i64 %30, %33, !dbg !6594 %35 = sub nsw i64 %27, %33, !dbg !6597 %36 = icmp slt i64 %35, 0, !dbg !6599 br i1 %36, label %L200, label %L187, !dbg !6601 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !6602 %38 = shl nuw i64 %35, 52, !dbg !6604 %39 = add nuw i64 %38, 4503599627370496, !dbg !6604 %40 = and i64 %39, 9218868437227405312, !dbg !6607 %41 = or disjoint i64 %40, %37, !dbg !6609 br label %L209, !dbg !6609 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !6610 %43 = lshr i64 %34, %42, !dbg !6612 %44 = and i64 %43, 4503599627370495, !dbg !6614 br label %L209, !dbg !6614 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !6615 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !6617 %iv.next = add nuw nsw i64 %iv, 1, !dbg !6617 %46 = add i64 %31, %45, !dbg !6617 %47 = add i64 %46, -14, !dbg !6617 %48 = shl i64 %value_phi2854, 14, !dbg !6619 %49 = urem i64 %48, %25, !dbg !6621 %.not52 = icmp ugt i64 %47, 14, !dbg !6589 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !6591 L221.loopexit: ; preds = %L217 br label %L221, !dbg !6622 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !6622 %51 = urem i64 %50, %25, !dbg !6624 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #49, !dbg !6625, !range !5559 %53 = add nsw i64 %52, -11, !dbg !6627 %54 = shl i64 %51, %53, !dbg !6628 %55 = sub nsw i64 %27, %53, !dbg !6631 %56 = icmp slt i64 %55, 0, !dbg !6633 br i1 %56, label %L250, label %L237, !dbg !6635 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !6636 %58 = shl i64 %55, 52, !dbg !6638 %59 = add i64 %58, 4503599627370496, !dbg !6638 %60 = and i64 %59, 9218868437227405312, !dbg !6641 %61 = or disjoint i64 %60, %57, !dbg !6643 br label %L259, !dbg !6643 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !6644 %63 = lshr i64 %54, %62, !dbg !6646 %64 = icmp ugt i64 %62, 63, !dbg !6646 %65 = and i64 %63, 4503599627370495, !dbg !6648 %66 = select i1 %64, i64 0, i64 %65, !dbg !6648 br label %L259, !dbg !6648 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !6649 br label %common.ret } ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_110778(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #39 !dbg !6504 { top: %pgcstack = call ptr @julia.get_pgcstack() #49 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !30 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !34 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #49, !dbg !6505 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !6506 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !6509 br i1 %.not, label %L9, label %L5, !dbg !6510 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !6511 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !6513 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !6514 %2 = lshr exact i64 %1, 52, !dbg !6517 %3 = add nsw i64 %2, -1024, !dbg !6519 %4 = icmp ugt i64 %3, 11, !dbg !6521 br i1 %4, label %L111, label %L22, !dbg !6520 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6523 %6 = icmp ne i64 %1, 0, !dbg !6527 %7 = icmp eq i64 %5, 0, !dbg !6531 %.not38 = or i1 %6, %7, !dbg !6530 %8 = or disjoint i64 %5, 4503599627370496, !dbg !6530 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !6530 %9 = shl nuw i64 %value_phi, %3, !dbg !6534 %10 = urem i64 %9, 7074237752028440, !dbg !6535 %.not39 = icmp eq i64 %10, 0, !dbg !6536 br i1 %.not39, label %common.ret, label %L75, !dbg !6538 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #49, !dbg !6539, !range !5559 %12 = add nsw i64 %11, -11, !dbg !6541 %13 = shl i64 %10, %12, !dbg !6542 %14 = and i64 %13, 4503599627370495, !dbg !6545 %15 = shl nuw nsw i64 %11, 52, !dbg !6547 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !6547 %17 = or disjoint i64 %16, %14, !dbg !6550 %18 = bitcast i64 %17 to double, !dbg !6551 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6553 %20 = icmp ne i64 %1, 0, !dbg !6557 %21 = icmp eq i64 %19, 0, !dbg !6561 %.not44 = or i1 %20, %21, !dbg !6560 %22 = or disjoint i64 %19, 4503599627370496, !dbg !6560 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !6560 %23 = add nsw i64 %2, -1024, !dbg !6564 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #49, !dbg !6566 %25 = lshr exact i64 7074237752028440, %24, !dbg !6569 %26 = sub nsw i64 %23, %24, !dbg !6571 %27 = add nuw nsw i64 %24, 1023, !dbg !6573 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #49, !dbg !6575 %29 = shl nuw i64 %value_phi15, %28, !dbg !6578 %30 = urem i64 %29, %25, !dbg !6580 %.not50 = icmp eq i64 %30, 0, !dbg !6581 br i1 %.not50, label %common.ret, label %L171, !dbg !6583 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !6584 %.not51 = icmp eq i64 %31, 0, !dbg !6586 br i1 %.not51, label %L173, label %L213.preheader, !dbg !6588 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !6589 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !6591 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !6591 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #49, !dbg !6592, !range !5559 %33 = add nsw i64 %32, -11, !dbg !6593 %34 = shl i64 %30, %33, !dbg !6594 %35 = sub nsw i64 %27, %33, !dbg !6597 %36 = icmp slt i64 %35, 0, !dbg !6599 br i1 %36, label %L200, label %L187, !dbg !6601 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !6602 %38 = shl nuw i64 %35, 52, !dbg !6604 %39 = add nuw i64 %38, 4503599627370496, !dbg !6604 %40 = and i64 %39, 9218868437227405312, !dbg !6607 %41 = or disjoint i64 %40, %37, !dbg !6609 br label %L209, !dbg !6609 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !6610 %43 = lshr i64 %34, %42, !dbg !6612 %44 = and i64 %43, 4503599627370495, !dbg !6614 br label %L209, !dbg !6614 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !6615 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !6617 %iv.next = add nuw nsw i64 %iv, 1, !dbg !6617 %46 = add i64 %31, %45, !dbg !6617 %47 = add i64 %46, -14, !dbg !6617 %48 = shl i64 %value_phi2854, 14, !dbg !6619 %49 = urem i64 %48, %25, !dbg !6621 %.not52 = icmp ugt i64 %47, 14, !dbg !6589 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !6591 L221.loopexit: ; preds = %L217 br label %L221, !dbg !6622 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !6622 %51 = urem i64 %50, %25, !dbg !6624 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #49, !dbg !6625, !range !5559 %53 = add nsw i64 %52, -11, !dbg !6627 %54 = shl i64 %51, %53, !dbg !6628 %55 = sub nsw i64 %27, %53, !dbg !6631 %56 = icmp slt i64 %55, 0, !dbg !6633 br i1 %56, label %L250, label %L237, !dbg !6635 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !6636 %58 = shl i64 %55, 52, !dbg !6638 %59 = add i64 %58, 4503599627370496, !dbg !6638 %60 = and i64 %59, 9218868437227405312, !dbg !6641 %61 = or disjoint i64 %60, %57, !dbg !6643 br label %L259, !dbg !6643 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !6644 %63 = lshr i64 %54, %62, !dbg !6646 %64 = icmp ugt i64 %62, 63, !dbg !6646 %65 = and i64 %63, 4503599627370495, !dbg !6648 %66 = select i1 %64, i64 0, i64 %65, !dbg !6648 br label %L259, !dbg !6648 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !6649 br label %common.ret } constantarg[double %"x::Float64"] = 0 type: {[-1]:Float@double} - vals: {} constantinst[ %pgcstack = call ptr @julia.get_pgcstack() #49] = 1 val:1 type: {[-1]:Pointer, [-1,16]:Pointer} constantinst[ %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16] = 1 val:1 type: {[-1]:Pointer, [-1,0]:Pointer} constantinst[ %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !30] = 1 val:1 type: {[-1]:Pointer} constantinst[ %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16] = 1 val:1 type: {[-1]:Pointer} constantinst[ %safepoint = load ptr, ptr %0, align 8, !tbaa !34] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ call void @julia.safepoint(ptr %safepoint) #49, !dbg !36] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !37] = 0 val:0 type: {[-1]:Float@double} constantinst[ %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !43] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not, label %L9, label %L5, !dbg !46] = 1 val:1 type: {} constantinst[ %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !47] = 1 val:1 type: {[-1]:Integer} constantinst[ %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64"] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ ret double %common.ret.op, !dbg !50] = 1 val:1 type: {} constantinst[ %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !51] = 1 val:1 type: {} constantinst[ %2 = lshr exact i64 %1, 52, !dbg !56] = 1 val:1 type: {[-1]:Integer} constantinst[ %3 = add nsw i64 %2, -1024, !dbg !59] = 1 val:1 type: {[-1]:Integer} constantinst[ %4 = icmp ugt i64 %3, 11, !dbg !62] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %4, label %L111, label %L22, !dbg !61] = 1 val:1 type: {} constantinst[ %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !64] = 0 val:0 type: {} constantinst[ %6 = icmp ne i64 %1, 0, !dbg !70] = 1 val:1 type: {[-1]:Integer} constantinst[ %7 = icmp eq i64 %5, 0, !dbg !78] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not38 = or i1 %6, %7, !dbg !77] = 1 val:1 type: {[-1]:Integer} constantinst[ %8 = or disjoint i64 %5, 4503599627370496, !dbg !77] = 0 val:0 type: {} constantinst[ %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !77] = 0 val:0 type: {} constantinst[ %9 = shl nuw i64 %value_phi, %3, !dbg !83] = 0 val:0 type: {} constantinst[ %10 = urem i64 %9, 7074237752028440, !dbg !85] = 0 val:0 type: {} constantinst[ %.not39 = icmp eq i64 %10, 0, !dbg !86] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not39, label %common.ret, label %L75, !dbg !90] = 1 val:1 type: {} constantinst[ %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #49, !dbg !91, !range !94] = 1 val:1 type: {[-1]:Integer} constantinst[ %12 = add nsw i64 %11, -11, !dbg !95] = 1 val:1 type: {[-1]:Integer} constantinst[ %13 = shl i64 %10, %12, !dbg !96] = 0 val:0 type: {} constantinst[ %14 = and i64 %13, 4503599627370495, !dbg !99] = 0 val:0 type: {} constantinst[ %15 = shl nuw nsw i64 %11, 52, !dbg !101] = 1 val:1 type: {[-1]:Integer} constantinst[ %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !101] = 1 val:1 type: {[-1]:Anything} constantinst[ %17 = or disjoint i64 %16, %14, !dbg !104] = 0 val:0 type: {[-1]:Float@double} constantinst[ %18 = bitcast i64 %17 to double, !dbg !106] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !108] = 0 val:0 type: {} constantinst[ %20 = icmp ne i64 %1, 0, !dbg !112] = 1 val:1 type: {[-1]:Integer} constantinst[ %21 = icmp eq i64 %19, 0, !dbg !116] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not44 = or i1 %20, %21, !dbg !115] = 1 val:1 type: {[-1]:Integer} constantinst[ %22 = or disjoint i64 %19, 4503599627370496, !dbg !115] = 0 val:0 type: {} constantinst[ %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !115] = 0 val:0 type: {} constantinst[ %23 = add nsw i64 %2, -1024, !dbg !119] = 1 val:1 type: {[-1]:Integer} constantinst[ %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #49, !dbg !121] = 1 val:1 type: {[-1]:Integer} constantinst[ %25 = lshr exact i64 7074237752028440, %24, !dbg !126] = 1 val:1 type: {[-1]:Anything} constantinst[ %26 = sub nsw i64 %23, %24, !dbg !128] = 1 val:1 type: {[-1]:Integer} constantinst[ %27 = add nuw nsw i64 %24, 1023, !dbg !130] = 1 val:1 type: {[-1]:Integer} constantinst[ %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #49, !dbg !133] = 1 val:1 type: {[-1]:Integer} constantinst[ %29 = shl nuw i64 %value_phi15, %28, !dbg !136] = 0 val:0 type: {} constantinst[ %30 = urem i64 %29, %25, !dbg !138] = 0 val:0 type: {} constantinst[ %.not50 = icmp eq i64 %30, 0, !dbg !139] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not50, label %common.ret, label %L171, !dbg !141] = 1 val:1 type: {} constantinst[ %31 = sub nsw i64 %26, %28, !dbg !142] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not51 = icmp eq i64 %31, 0, !dbg !144] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not51, label %L173, label %L213.preheader, !dbg !146] = 1 val:1 type: {} constantinst[ %.not5253 = icmp ugt i64 %31, 14, !dbg !147] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not5253, label %L217.preheader, label %L221, !dbg !150] = 1 val:1 type: {} constantinst[ br label %L217, !dbg !150] = 1 val:1 type: {} constantinst[ %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #49, !dbg !151, !range !94] = 1 val:1 type: {[-1]:Integer} constantinst[ %33 = add nsw i64 %32, -11, !dbg !152] = 1 val:1 type: {[-1]:Integer} constantinst[ %34 = shl i64 %30, %33, !dbg !153] = 0 val:0 type: {} constantinst[ %35 = sub nsw i64 %27, %33, !dbg !156] = 1 val:1 type: {[-1]:Integer} constantinst[ %36 = icmp slt i64 %35, 0, !dbg !158] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %36, label %L200, label %L187, !dbg !161] = 1 val:1 type: {} constantinst[ %37 = and i64 %34, 4503599627370495, !dbg !162] = 0 val:0 type: {} constantinst[ %38 = shl nuw i64 %35, 52, !dbg !164] = 1 val:1 type: {[-1]:Integer} constantinst[ %39 = add nuw i64 %38, 4503599627370496, !dbg !164] = 1 val:1 type: {[-1]:Anything} constantinst[ %40 = and i64 %39, 9218868437227405312, !dbg !167] = 1 val:1 type: {[-1]:Anything} constantinst[ %41 = or disjoint i64 %40, %37, !dbg !169] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !169] = 1 val:1 type: {} constantinst[ %42 = sub nsw i64 0, %35, !dbg !170] = 1 val:1 type: {[-1]:Anything} constantinst[ %43 = lshr i64 %34, %42, !dbg !172] = 0 val:0 type: {} constantinst[ %44 = and i64 %43, 4503599627370495, !dbg !174] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !174] = 1 val:1 type: {} constantinst[ %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !175] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ]] = 0 val:0 type: {} constantinst[ %45 = mul i64 %iv, -14, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %iv.next = add nuw nsw i64 %iv, 1, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %46 = add i64 %31, %45, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %47 = add i64 %46, -14, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %48 = shl i64 %value_phi2854, 14, !dbg !179] = 0 val:0 type: {} constantinst[ %49 = urem i64 %48, %25, !dbg !181] = 0 val:0 type: {} constantinst[ %.not52 = icmp ugt i64 %47, 14, !dbg !147] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not52, label %L217, label %L221.loopexit, !dbg !150] = 1 val:1 type: {} constantinst[ br label %L221, !dbg !182] = 1 val:1 type: {} constantinst[ %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ]] = 0 val:0 type: {} constantinst[ %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !182] = 0 val:0 type: {} constantinst[ %51 = urem i64 %50, %25, !dbg !184] = 0 val:0 type: {} constantinst[ %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #49, !dbg !185, !range !94] = 1 val:1 type: {[-1]:Integer} constantinst[ %53 = add nsw i64 %52, -11, !dbg !187] = 1 val:1 type: {[-1]:Integer} constantinst[ %54 = shl i64 %51, %53, !dbg !188] = 0 val:0 type: {} constantinst[ %55 = sub nsw i64 %27, %53, !dbg !191] = 1 val:1 type: {[-1]:Integer} constantinst[ %56 = icmp slt i64 %55, 0, !dbg !193] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %56, label %L250, label %L237, !dbg !195] = 1 val:1 type: {} constantinst[ %57 = and i64 %54, 4503599627370495, !dbg !196] = 0 val:0 type: {} constantinst[ %58 = shl i64 %55, 52, !dbg !198] = 1 val:1 type: {[-1]:Integer} constantinst[ %59 = add i64 %58, 4503599627370496, !dbg !198] = 1 val:1 type: {[-1]:Anything} constantinst[ %60 = and i64 %59, 9218868437227405312, !dbg !201] = 1 val:1 type: {[-1]:Anything} constantinst[ %61 = or disjoint i64 %60, %57, !dbg !203] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !203] = 1 val:1 type: {} constantinst[ %62 = sub nsw i64 0, %55, !dbg !204] = 1 val:1 type: {[-1]:Anything} constantinst[ %63 = lshr i64 %54, %62, !dbg !206] = 0 val:0 type: {} constantinst[ %64 = icmp ugt i64 %62, 63, !dbg !206] = 1 val:1 type: {[-1]:Integer} constantinst[ %65 = and i64 %63, 4503599627370495, !dbg !208] = 0 val:0 type: {[-1]:Float@double} constantinst[ %66 = select i1 %64, i64 0, i64 %65, !dbg !208] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !208] = 1 val:1 type: {} constantinst[ %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !209] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} cannot handle unknown binary operator: %17 = or disjoint i64 %16, %14, !dbg !104 Stacktrace: [1] | @ ./int.jl:378 [2] _to_float @ ./float.jl:526 [3] rem_internal @ ./float.jl:552 Failure within method: rem_internal(::Float64, ::Float64) @ Base float.jl:533 Hint: catch this exception as `err` and call `code_typed(err)` to inspect the surrounding code. Stacktrace: [1] | @ ./int.jl:378 [inlined] [2] _to_float @ ./float.jl:526 [inlined] [3] rem_internal @ ./float.jl:552 [4] rem @ ./float.jl:601 [inlined] [5] mod @ ./float.jl:610 [inlined] [6] Pi @ ~/.julia/packages/JacobiElliptic/DNY74/src/Carlson.jl:255 [inlined] [7] call_with_kwargs @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:10 [inlined] [8] diffejulia_call_with_kwargs_110746wrap @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:0 [9] macro expansion @ ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6886 [inlined] [10] enzyme_call(::Val{false}, ::Ptr{Nothing}, ::Type{Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, Const{Float64}, Active{Float64}, Active{Float64}}, 1, Tuple{NTuple{6, Float64}, Float64, NTuple{4, Float64}, Float64, Float64, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}}}, ::Val{1}, ::Val{false}, ::Type{Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, Const{Float64}, Active{Float64}, Active{Float64}}}, ::Type{Active{Float64}}, ::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Type{Tuple{NTuple{6, Float64}, Float64, NTuple{4, Float64}, Float64, Float64, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}}, ::Const{@NamedTuple{}}, ::Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, ::Const{Float64}, ::Active{Float64}, ::Active{Float64}, ::Float64, ::Tuple{NTuple{6, Float64}, Float64, NTuple{4, Float64}, Float64, Float64, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6356 [11] (::Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, Const{Float64}, Active{Float64}, Active{Float64}}, 1, Tuple{NTuple{6, Float64}, Float64, NTuple{4, Float64}, Float64, Float64, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}})(::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Const{@NamedTuple{}}, ::Vararg{Any}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6272 [12] macro expansion @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:131 [inlined] [13] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [14] test_reverse(::typeof(JacobiElliptic.CarlsonAlg.Pi), ::Type, ::Tuple{Float64, UnionAll}, ::Vararg{Tuple{Float64, UnionAll}}; rng::Random.TaskLocalRNG, fdm::FiniteDifferences.AdaptedFiniteDifferenceMethod{5, 1, FiniteDifferences.UnadaptedFiniteDifferenceMethod{7, 5}}, fkwargs::@NamedTuple{}, rtol::Float64, atol::Float64, testset_name::Nothing, runtime_activity::Bool, output_tangent::Nothing) @ EnzymeTestUtils ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:86 [15] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:1889 [16] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [17] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:17 [inlined] [18] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [19] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:25 [inlined] [20] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [21] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:176 [inlined] [22] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [23] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:270 [inlined] [24] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [25] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/runtests.jl:10 [26] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [27] top-level scope @ none:6 [28] eval(m::Module, e::Any) @ Core ./boot.jl:489 [29] exec_options(opts::Base.JLOptions) @ Base ./client.jl:283 [30] _start() @ Base ./client.jl:550 test_reverse: Pi with return activity Active on (::Float64, Active), (::Float64, Active), (::Float64, Const): Error During Test at /home/pkgeval/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:84 Got exception outside of a @test EnzymeNoDerivativeError: Current scope: ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_112221(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #39 !dbg !6504 { top: %pgcstack = call ptr @julia.get_pgcstack() #48 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !30 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !34 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #48, !dbg !6505 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !6506 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !6509 br i1 %.not, label %L9, label %L5, !dbg !6510 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !6511 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !6513 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !6514 %2 = lshr exact i64 %1, 52, !dbg !6517 %3 = add nsw i64 %2, -1024, !dbg !6519 %4 = icmp ugt i64 %3, 11, !dbg !6521 br i1 %4, label %L111, label %L22, !dbg !6520 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6523 %6 = icmp ne i64 %1, 0, !dbg !6527 %7 = icmp eq i64 %5, 0, !dbg !6531 %.not38 = or i1 %6, %7, !dbg !6530 %8 = or disjoint i64 %5, 4503599627370496, !dbg !6530 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !6530 %9 = shl nuw i64 %value_phi, %3, !dbg !6534 %10 = urem i64 %9, 7074237752028440, !dbg !6535 %.not39 = icmp eq i64 %10, 0, !dbg !6536 br i1 %.not39, label %common.ret, label %L75, !dbg !6538 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #48, !dbg !6539, !range !5559 %12 = add nsw i64 %11, -11, !dbg !6541 %13 = shl i64 %10, %12, !dbg !6542 %14 = and i64 %13, 4503599627370495, !dbg !6545 %15 = shl nuw nsw i64 %11, 52, !dbg !6547 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !6547 %17 = or disjoint i64 %16, %14, !dbg !6550 %18 = bitcast i64 %17 to double, !dbg !6551 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6553 %20 = icmp ne i64 %1, 0, !dbg !6557 %21 = icmp eq i64 %19, 0, !dbg !6561 %.not44 = or i1 %20, %21, !dbg !6560 %22 = or disjoint i64 %19, 4503599627370496, !dbg !6560 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !6560 %23 = add nsw i64 %2, -1024, !dbg !6564 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #48, !dbg !6566 %25 = lshr exact i64 7074237752028440, %24, !dbg !6569 %26 = sub nsw i64 %23, %24, !dbg !6571 %27 = add nuw nsw i64 %24, 1023, !dbg !6573 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #48, !dbg !6575 %29 = shl nuw i64 %value_phi15, %28, !dbg !6578 %30 = urem i64 %29, %25, !dbg !6580 %.not50 = icmp eq i64 %30, 0, !dbg !6581 br i1 %.not50, label %common.ret, label %L171, !dbg !6583 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !6584 %.not51 = icmp eq i64 %31, 0, !dbg !6586 br i1 %.not51, label %L173, label %L213.preheader, !dbg !6588 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !6589 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !6591 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !6591 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #48, !dbg !6592, !range !5559 %33 = add nsw i64 %32, -11, !dbg !6593 %34 = shl i64 %30, %33, !dbg !6594 %35 = sub nsw i64 %27, %33, !dbg !6597 %36 = icmp slt i64 %35, 0, !dbg !6599 br i1 %36, label %L200, label %L187, !dbg !6601 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !6602 %38 = shl nuw i64 %35, 52, !dbg !6604 %39 = add nuw i64 %38, 4503599627370496, !dbg !6604 %40 = and i64 %39, 9218868437227405312, !dbg !6607 %41 = or disjoint i64 %40, %37, !dbg !6609 br label %L209, !dbg !6609 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !6610 %43 = lshr i64 %34, %42, !dbg !6612 %44 = and i64 %43, 4503599627370495, !dbg !6614 br label %L209, !dbg !6614 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !6615 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !6617 %iv.next = add nuw nsw i64 %iv, 1, !dbg !6617 %46 = add i64 %31, %45, !dbg !6617 %47 = add i64 %46, -14, !dbg !6617 %48 = shl i64 %value_phi2854, 14, !dbg !6619 %49 = urem i64 %48, %25, !dbg !6621 %.not52 = icmp ugt i64 %47, 14, !dbg !6589 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !6591 L221.loopexit: ; preds = %L217 br label %L221, !dbg !6622 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !6622 %51 = urem i64 %50, %25, !dbg !6624 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #48, !dbg !6625, !range !5559 %53 = add nsw i64 %52, -11, !dbg !6627 %54 = shl i64 %51, %53, !dbg !6628 %55 = sub nsw i64 %27, %53, !dbg !6631 %56 = icmp slt i64 %55, 0, !dbg !6633 br i1 %56, label %L250, label %L237, !dbg !6635 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !6636 %58 = shl i64 %55, 52, !dbg !6638 %59 = add i64 %58, 4503599627370496, !dbg !6638 %60 = and i64 %59, 9218868437227405312, !dbg !6641 %61 = or disjoint i64 %60, %57, !dbg !6643 br label %L259, !dbg !6643 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !6644 %63 = lshr i64 %54, %62, !dbg !6646 %64 = icmp ugt i64 %62, 63, !dbg !6646 %65 = and i64 %63, 4503599627370495, !dbg !6648 %66 = select i1 %64, i64 0, i64 %65, !dbg !6648 br label %L259, !dbg !6648 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !6649 br label %common.ret } ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_112221(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #39 !dbg !6504 { top: %pgcstack = call ptr @julia.get_pgcstack() #48 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !30 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !34 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #48, !dbg !6505 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !6506 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !6509 br i1 %.not, label %L9, label %L5, !dbg !6510 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !6511 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !6513 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !6514 %2 = lshr exact i64 %1, 52, !dbg !6517 %3 = add nsw i64 %2, -1024, !dbg !6519 %4 = icmp ugt i64 %3, 11, !dbg !6521 br i1 %4, label %L111, label %L22, !dbg !6520 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6523 %6 = icmp ne i64 %1, 0, !dbg !6527 %7 = icmp eq i64 %5, 0, !dbg !6531 %.not38 = or i1 %6, %7, !dbg !6530 %8 = or disjoint i64 %5, 4503599627370496, !dbg !6530 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !6530 %9 = shl nuw i64 %value_phi, %3, !dbg !6534 %10 = urem i64 %9, 7074237752028440, !dbg !6535 %.not39 = icmp eq i64 %10, 0, !dbg !6536 br i1 %.not39, label %common.ret, label %L75, !dbg !6538 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #48, !dbg !6539, !range !5559 %12 = add nsw i64 %11, -11, !dbg !6541 %13 = shl i64 %10, %12, !dbg !6542 %14 = and i64 %13, 4503599627370495, !dbg !6545 %15 = shl nuw nsw i64 %11, 52, !dbg !6547 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !6547 %17 = or disjoint i64 %16, %14, !dbg !6550 %18 = bitcast i64 %17 to double, !dbg !6551 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6553 %20 = icmp ne i64 %1, 0, !dbg !6557 %21 = icmp eq i64 %19, 0, !dbg !6561 %.not44 = or i1 %20, %21, !dbg !6560 %22 = or disjoint i64 %19, 4503599627370496, !dbg !6560 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !6560 %23 = add nsw i64 %2, -1024, !dbg !6564 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #48, !dbg !6566 %25 = lshr exact i64 7074237752028440, %24, !dbg !6569 %26 = sub nsw i64 %23, %24, !dbg !6571 %27 = add nuw nsw i64 %24, 1023, !dbg !6573 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #48, !dbg !6575 %29 = shl nuw i64 %value_phi15, %28, !dbg !6578 %30 = urem i64 %29, %25, !dbg !6580 %.not50 = icmp eq i64 %30, 0, !dbg !6581 br i1 %.not50, label %common.ret, label %L171, !dbg !6583 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !6584 %.not51 = icmp eq i64 %31, 0, !dbg !6586 br i1 %.not51, label %L173, label %L213.preheader, !dbg !6588 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !6589 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !6591 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !6591 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #48, !dbg !6592, !range !5559 %33 = add nsw i64 %32, -11, !dbg !6593 %34 = shl i64 %30, %33, !dbg !6594 %35 = sub nsw i64 %27, %33, !dbg !6597 %36 = icmp slt i64 %35, 0, !dbg !6599 br i1 %36, label %L200, label %L187, !dbg !6601 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !6602 %38 = shl nuw i64 %35, 52, !dbg !6604 %39 = add nuw i64 %38, 4503599627370496, !dbg !6604 %40 = and i64 %39, 9218868437227405312, !dbg !6607 %41 = or disjoint i64 %40, %37, !dbg !6609 br label %L209, !dbg !6609 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !6610 %43 = lshr i64 %34, %42, !dbg !6612 %44 = and i64 %43, 4503599627370495, !dbg !6614 br label %L209, !dbg !6614 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !6615 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !6617 %iv.next = add nuw nsw i64 %iv, 1, !dbg !6617 %46 = add i64 %31, %45, !dbg !6617 %47 = add i64 %46, -14, !dbg !6617 %48 = shl i64 %value_phi2854, 14, !dbg !6619 %49 = urem i64 %48, %25, !dbg !6621 %.not52 = icmp ugt i64 %47, 14, !dbg !6589 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !6591 L221.loopexit: ; preds = %L217 br label %L221, !dbg !6622 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !6622 %51 = urem i64 %50, %25, !dbg !6624 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #48, !dbg !6625, !range !5559 %53 = add nsw i64 %52, -11, !dbg !6627 %54 = shl i64 %51, %53, !dbg !6628 %55 = sub nsw i64 %27, %53, !dbg !6631 %56 = icmp slt i64 %55, 0, !dbg !6633 br i1 %56, label %L250, label %L237, !dbg !6635 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !6636 %58 = shl i64 %55, 52, !dbg !6638 %59 = add i64 %58, 4503599627370496, !dbg !6638 %60 = and i64 %59, 9218868437227405312, !dbg !6641 %61 = or disjoint i64 %60, %57, !dbg !6643 br label %L259, !dbg !6643 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !6644 %63 = lshr i64 %54, %62, !dbg !6646 %64 = icmp ugt i64 %62, 63, !dbg !6646 %65 = and i64 %63, 4503599627370495, !dbg !6648 %66 = select i1 %64, i64 0, i64 %65, !dbg !6648 br label %L259, !dbg !6648 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !6649 br label %common.ret } constantarg[double %"x::Float64"] = 0 type: {[-1]:Float@double} - vals: {} constantinst[ %pgcstack = call ptr @julia.get_pgcstack() #48] = 1 val:1 type: {[-1]:Pointer, [-1,16]:Pointer} constantinst[ %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16] = 1 val:1 type: {[-1]:Pointer, [-1,0]:Pointer} constantinst[ %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !30] = 1 val:1 type: {[-1]:Pointer} constantinst[ %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16] = 1 val:1 type: {[-1]:Pointer} constantinst[ %safepoint = load ptr, ptr %0, align 8, !tbaa !34] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ call void @julia.safepoint(ptr %safepoint) #48, !dbg !36] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !37] = 0 val:0 type: {[-1]:Float@double} constantinst[ %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !43] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not, label %L9, label %L5, !dbg !46] = 1 val:1 type: {} constantinst[ %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !47] = 1 val:1 type: {[-1]:Integer} constantinst[ %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64"] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ ret double %common.ret.op, !dbg !50] = 1 val:1 type: {} constantinst[ %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !51] = 1 val:1 type: {} constantinst[ %2 = lshr exact i64 %1, 52, !dbg !56] = 1 val:1 type: {[-1]:Integer} constantinst[ %3 = add nsw i64 %2, -1024, !dbg !59] = 1 val:1 type: {[-1]:Integer} constantinst[ %4 = icmp ugt i64 %3, 11, !dbg !62] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %4, label %L111, label %L22, !dbg !61] = 1 val:1 type: {} constantinst[ %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !64] = 0 val:0 type: {} constantinst[ %6 = icmp ne i64 %1, 0, !dbg !70] = 1 val:1 type: {[-1]:Integer} constantinst[ %7 = icmp eq i64 %5, 0, !dbg !78] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not38 = or i1 %6, %7, !dbg !77] = 1 val:1 type: {[-1]:Integer} constantinst[ %8 = or disjoint i64 %5, 4503599627370496, !dbg !77] = 0 val:0 type: {} constantinst[ %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !77] = 0 val:0 type: {} constantinst[ %9 = shl nuw i64 %value_phi, %3, !dbg !83] = 0 val:0 type: {} constantinst[ %10 = urem i64 %9, 7074237752028440, !dbg !85] = 0 val:0 type: {} constantinst[ %.not39 = icmp eq i64 %10, 0, !dbg !86] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not39, label %common.ret, label %L75, !dbg !90] = 1 val:1 type: {} constantinst[ %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #48, !dbg !91, !range !94] = 1 val:1 type: {[-1]:Integer} constantinst[ %12 = add nsw i64 %11, -11, !dbg !95] = 1 val:1 type: {[-1]:Integer} constantinst[ %13 = shl i64 %10, %12, !dbg !96] = 0 val:0 type: {} constantinst[ %14 = and i64 %13, 4503599627370495, !dbg !99] = 0 val:0 type: {} constantinst[ %15 = shl nuw nsw i64 %11, 52, !dbg !101] = 1 val:1 type: {[-1]:Integer} constantinst[ %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !101] = 1 val:1 type: {[-1]:Anything} constantinst[ %17 = or disjoint i64 %16, %14, !dbg !104] = 0 val:0 type: {[-1]:Float@double} constantinst[ %18 = bitcast i64 %17 to double, !dbg !106] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !108] = 0 val:0 type: {} constantinst[ %20 = icmp ne i64 %1, 0, !dbg !112] = 1 val:1 type: {[-1]:Integer} constantinst[ %21 = icmp eq i64 %19, 0, !dbg !116] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not44 = or i1 %20, %21, !dbg !115] = 1 val:1 type: {[-1]:Integer} constantinst[ %22 = or disjoint i64 %19, 4503599627370496, !dbg !115] = 0 val:0 type: {} constantinst[ %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !115] = 0 val:0 type: {} constantinst[ %23 = add nsw i64 %2, -1024, !dbg !119] = 1 val:1 type: {[-1]:Integer} constantinst[ %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #48, !dbg !121] = 1 val:1 type: {[-1]:Integer} constantinst[ %25 = lshr exact i64 7074237752028440, %24, !dbg !126] = 1 val:1 type: {[-1]:Anything} constantinst[ %26 = sub nsw i64 %23, %24, !dbg !128] = 1 val:1 type: {[-1]:Integer} constantinst[ %27 = add nuw nsw i64 %24, 1023, !dbg !130] = 1 val:1 type: {[-1]:Integer} constantinst[ %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #48, !dbg !133] = 1 val:1 type: {[-1]:Integer} constantinst[ %29 = shl nuw i64 %value_phi15, %28, !dbg !136] = 0 val:0 type: {} constantinst[ %30 = urem i64 %29, %25, !dbg !138] = 0 val:0 type: {} constantinst[ %.not50 = icmp eq i64 %30, 0, !dbg !139] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not50, label %common.ret, label %L171, !dbg !141] = 1 val:1 type: {} constantinst[ %31 = sub nsw i64 %26, %28, !dbg !142] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not51 = icmp eq i64 %31, 0, !dbg !144] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not51, label %L173, label %L213.preheader, !dbg !146] = 1 val:1 type: {} constantinst[ %.not5253 = icmp ugt i64 %31, 14, !dbg !147] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not5253, label %L217.preheader, label %L221, !dbg !150] = 1 val:1 type: {} constantinst[ br label %L217, !dbg !150] = 1 val:1 type: {} constantinst[ %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #48, !dbg !151, !range !94] = 1 val:1 type: {[-1]:Integer} constantinst[ %33 = add nsw i64 %32, -11, !dbg !152] = 1 val:1 type: {[-1]:Integer} constantinst[ %34 = shl i64 %30, %33, !dbg !153] = 0 val:0 type: {} constantinst[ %35 = sub nsw i64 %27, %33, !dbg !156] = 1 val:1 type: {[-1]:Integer} constantinst[ %36 = icmp slt i64 %35, 0, !dbg !158] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %36, label %L200, label %L187, !dbg !161] = 1 val:1 type: {} constantinst[ %37 = and i64 %34, 4503599627370495, !dbg !162] = 0 val:0 type: {} constantinst[ %38 = shl nuw i64 %35, 52, !dbg !164] = 1 val:1 type: {[-1]:Integer} constantinst[ %39 = add nuw i64 %38, 4503599627370496, !dbg !164] = 1 val:1 type: {[-1]:Anything} constantinst[ %40 = and i64 %39, 9218868437227405312, !dbg !167] = 1 val:1 type: {[-1]:Anything} constantinst[ %41 = or disjoint i64 %40, %37, !dbg !169] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !169] = 1 val:1 type: {} constantinst[ %42 = sub nsw i64 0, %35, !dbg !170] = 1 val:1 type: {[-1]:Anything} constantinst[ %43 = lshr i64 %34, %42, !dbg !172] = 0 val:0 type: {} constantinst[ %44 = and i64 %43, 4503599627370495, !dbg !174] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !174] = 1 val:1 type: {} constantinst[ %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !175] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ]] = 0 val:0 type: {} constantinst[ %45 = mul i64 %iv, -14, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %iv.next = add nuw nsw i64 %iv, 1, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %46 = add i64 %31, %45, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %47 = add i64 %46, -14, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %48 = shl i64 %value_phi2854, 14, !dbg !179] = 0 val:0 type: {} constantinst[ %49 = urem i64 %48, %25, !dbg !181] = 0 val:0 type: {} constantinst[ %.not52 = icmp ugt i64 %47, 14, !dbg !147] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not52, label %L217, label %L221.loopexit, !dbg !150] = 1 val:1 type: {} constantinst[ br label %L221, !dbg !182] = 1 val:1 type: {} constantinst[ %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ]] = 0 val:0 type: {} constantinst[ %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !182] = 0 val:0 type: {} constantinst[ %51 = urem i64 %50, %25, !dbg !184] = 0 val:0 type: {} constantinst[ %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #48, !dbg !185, !range !94] = 1 val:1 type: {[-1]:Integer} constantinst[ %53 = add nsw i64 %52, -11, !dbg !187] = 1 val:1 type: {[-1]:Integer} constantinst[ %54 = shl i64 %51, %53, !dbg !188] = 0 val:0 type: {} constantinst[ %55 = sub nsw i64 %27, %53, !dbg !191] = 1 val:1 type: {[-1]:Integer} constantinst[ %56 = icmp slt i64 %55, 0, !dbg !193] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %56, label %L250, label %L237, !dbg !195] = 1 val:1 type: {} constantinst[ %57 = and i64 %54, 4503599627370495, !dbg !196] = 0 val:0 type: {} constantinst[ %58 = shl i64 %55, 52, !dbg !198] = 1 val:1 type: {[-1]:Integer} constantinst[ %59 = add i64 %58, 4503599627370496, !dbg !198] = 1 val:1 type: {[-1]:Anything} constantinst[ %60 = and i64 %59, 9218868437227405312, !dbg !201] = 1 val:1 type: {[-1]:Anything} constantinst[ %61 = or disjoint i64 %60, %57, !dbg !203] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !203] = 1 val:1 type: {} constantinst[ %62 = sub nsw i64 0, %55, !dbg !204] = 1 val:1 type: {[-1]:Anything} constantinst[ %63 = lshr i64 %54, %62, !dbg !206] = 0 val:0 type: {} constantinst[ %64 = icmp ugt i64 %62, 63, !dbg !206] = 1 val:1 type: {[-1]:Integer} constantinst[ %65 = and i64 %63, 4503599627370495, !dbg !208] = 0 val:0 type: {[-1]:Float@double} constantinst[ %66 = select i1 %64, i64 0, i64 %65, !dbg !208] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !208] = 1 val:1 type: {} constantinst[ %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !209] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} cannot handle unknown binary operator: %17 = or disjoint i64 %16, %14, !dbg !104 Stacktrace: [1] | @ ./int.jl:378 [2] _to_float @ ./float.jl:526 [3] rem_internal @ ./float.jl:552 Failure within method: rem_internal(::Float64, ::Float64) @ Base float.jl:533 Hint: catch this exception as `err` and call `code_typed(err)` to inspect the surrounding code. Stacktrace: [1] | @ ./int.jl:378 [inlined] [2] _to_float @ ./float.jl:526 [inlined] [3] rem_internal @ ./float.jl:552 [4] rem @ ./float.jl:601 [inlined] [5] mod @ ./float.jl:610 [inlined] [6] Pi @ ~/.julia/packages/JacobiElliptic/DNY74/src/Carlson.jl:255 [inlined] [7] call_with_kwargs @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:10 [inlined] [8] diffejulia_call_with_kwargs_112189wrap @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:0 [9] macro expansion @ ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6886 [inlined] [10] enzyme_call(::Val{false}, ::Ptr{Nothing}, ::Type{Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, Active{Float64}, Active{Float64}, Const{Float64}}, 1, Tuple{NTuple{6, Float64}, Float64, NTuple{4, Float64}, Float64, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Float64, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}}}, ::Val{1}, ::Val{false}, ::Type{Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, Active{Float64}, Active{Float64}, Const{Float64}}}, ::Type{Active{Float64}}, ::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Type{Tuple{NTuple{6, Float64}, Float64, NTuple{4, Float64}, Float64, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Float64, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}}, ::Const{@NamedTuple{}}, ::Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, ::Active{Float64}, ::Active{Float64}, ::Const{Float64}, ::Float64, ::Tuple{NTuple{6, Float64}, Float64, NTuple{4, Float64}, Float64, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Float64, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6356 [11] (::Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, Active{Float64}, Active{Float64}, Const{Float64}}, 1, Tuple{NTuple{6, Float64}, Float64, NTuple{4, Float64}, Float64, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Float64, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}})(::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Const{@NamedTuple{}}, ::Vararg{Any}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6272 [12] macro expansion @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:131 [inlined] [13] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [14] test_reverse(::typeof(JacobiElliptic.CarlsonAlg.Pi), ::Type, ::Tuple{Float64, UnionAll}, ::Vararg{Tuple{Float64, UnionAll}}; rng::Random.TaskLocalRNG, fdm::FiniteDifferences.AdaptedFiniteDifferenceMethod{5, 1, FiniteDifferences.UnadaptedFiniteDifferenceMethod{7, 5}}, fkwargs::@NamedTuple{}, rtol::Float64, atol::Float64, testset_name::Nothing, runtime_activity::Bool, output_tangent::Nothing) @ EnzymeTestUtils ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:86 [15] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:1889 [16] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [17] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:17 [inlined] [18] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [19] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:25 [inlined] [20] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [21] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:176 [inlined] [22] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [23] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:270 [inlined] [24] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [25] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/runtests.jl:10 [26] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [27] top-level scope @ none:6 [28] eval(m::Module, e::Any) @ Core ./boot.jl:489 [29] exec_options(opts::Base.JLOptions) @ Base ./client.jl:283 [30] _start() @ Base ./client.jl:550 test_reverse: Pi with return activity Active on (::Float64, Active), (::Float64, Active), (::Float64, Active): Error During Test at /home/pkgeval/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:84 Got exception outside of a @test EnzymeNoDerivativeError: Current scope: ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_112640(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #39 !dbg !6504 { top: %pgcstack = call ptr @julia.get_pgcstack() #49 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !30 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !34 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #49, !dbg !6505 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !6506 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !6509 br i1 %.not, label %L9, label %L5, !dbg !6510 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !6511 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !6513 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !6514 %2 = lshr exact i64 %1, 52, !dbg !6517 %3 = add nsw i64 %2, -1024, !dbg !6519 %4 = icmp ugt i64 %3, 11, !dbg !6521 br i1 %4, label %L111, label %L22, !dbg !6520 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6523 %6 = icmp ne i64 %1, 0, !dbg !6527 %7 = icmp eq i64 %5, 0, !dbg !6531 %.not38 = or i1 %6, %7, !dbg !6530 %8 = or disjoint i64 %5, 4503599627370496, !dbg !6530 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !6530 %9 = shl nuw i64 %value_phi, %3, !dbg !6534 %10 = urem i64 %9, 7074237752028440, !dbg !6535 %.not39 = icmp eq i64 %10, 0, !dbg !6536 br i1 %.not39, label %common.ret, label %L75, !dbg !6538 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #49, !dbg !6539, !range !5559 %12 = add nsw i64 %11, -11, !dbg !6541 %13 = shl i64 %10, %12, !dbg !6542 %14 = and i64 %13, 4503599627370495, !dbg !6545 %15 = shl nuw nsw i64 %11, 52, !dbg !6547 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !6547 %17 = or disjoint i64 %16, %14, !dbg !6550 %18 = bitcast i64 %17 to double, !dbg !6551 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6553 %20 = icmp ne i64 %1, 0, !dbg !6557 %21 = icmp eq i64 %19, 0, !dbg !6561 %.not44 = or i1 %20, %21, !dbg !6560 %22 = or disjoint i64 %19, 4503599627370496, !dbg !6560 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !6560 %23 = add nsw i64 %2, -1024, !dbg !6564 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #49, !dbg !6566 %25 = lshr exact i64 7074237752028440, %24, !dbg !6569 %26 = sub nsw i64 %23, %24, !dbg !6571 %27 = add nuw nsw i64 %24, 1023, !dbg !6573 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #49, !dbg !6575 %29 = shl nuw i64 %value_phi15, %28, !dbg !6578 %30 = urem i64 %29, %25, !dbg !6580 %.not50 = icmp eq i64 %30, 0, !dbg !6581 br i1 %.not50, label %common.ret, label %L171, !dbg !6583 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !6584 %.not51 = icmp eq i64 %31, 0, !dbg !6586 br i1 %.not51, label %L173, label %L213.preheader, !dbg !6588 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !6589 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !6591 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !6591 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #49, !dbg !6592, !range !5559 %33 = add nsw i64 %32, -11, !dbg !6593 %34 = shl i64 %30, %33, !dbg !6594 %35 = sub nsw i64 %27, %33, !dbg !6597 %36 = icmp slt i64 %35, 0, !dbg !6599 br i1 %36, label %L200, label %L187, !dbg !6601 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !6602 %38 = shl nuw i64 %35, 52, !dbg !6604 %39 = add nuw i64 %38, 4503599627370496, !dbg !6604 %40 = and i64 %39, 9218868437227405312, !dbg !6607 %41 = or disjoint i64 %40, %37, !dbg !6609 br label %L209, !dbg !6609 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !6610 %43 = lshr i64 %34, %42, !dbg !6612 %44 = and i64 %43, 4503599627370495, !dbg !6614 br label %L209, !dbg !6614 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !6615 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !6617 %iv.next = add nuw nsw i64 %iv, 1, !dbg !6617 %46 = add i64 %31, %45, !dbg !6617 %47 = add i64 %46, -14, !dbg !6617 %48 = shl i64 %value_phi2854, 14, !dbg !6619 %49 = urem i64 %48, %25, !dbg !6621 %.not52 = icmp ugt i64 %47, 14, !dbg !6589 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !6591 L221.loopexit: ; preds = %L217 br label %L221, !dbg !6622 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !6622 %51 = urem i64 %50, %25, !dbg !6624 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #49, !dbg !6625, !range !5559 %53 = add nsw i64 %52, -11, !dbg !6627 %54 = shl i64 %51, %53, !dbg !6628 %55 = sub nsw i64 %27, %53, !dbg !6631 %56 = icmp slt i64 %55, 0, !dbg !6633 br i1 %56, label %L250, label %L237, !dbg !6635 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !6636 %58 = shl i64 %55, 52, !dbg !6638 %59 = add i64 %58, 4503599627370496, !dbg !6638 %60 = and i64 %59, 9218868437227405312, !dbg !6641 %61 = or disjoint i64 %60, %57, !dbg !6643 br label %L259, !dbg !6643 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !6644 %63 = lshr i64 %54, %62, !dbg !6646 %64 = icmp ugt i64 %62, 63, !dbg !6646 %65 = and i64 %63, 4503599627370495, !dbg !6648 %66 = select i1 %64, i64 0, i64 %65, !dbg !6648 br label %L259, !dbg !6648 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !6649 br label %common.ret } ; Function Attrs: mustprogress nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) define internal fastcc "enzyme_type"="{[-1]:Float@double}" double @preprocess_julia_rem_internal_112640(double "enzyme_type"="{[-1]:Float@double}" "enzymejl_parmtype"="132017275075584" "enzymejl_parmtype_ref"="0" "enzymejl_parmtype_str"="Float64" %"x::Float64") unnamed_addr #39 !dbg !6504 { top: %pgcstack = call ptr @julia.get_pgcstack() #49 %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !30 %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16 %safepoint = load ptr, ptr %0, align 8, !tbaa !34 fence syncscope("singlethread") seq_cst call void @julia.safepoint(ptr %safepoint) #49, !dbg !6505 fence syncscope("singlethread") seq_cst %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !6506 %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !6509 br i1 %.not, label %L9, label %L5, !dbg !6510 L5: ; preds = %top %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !6511 %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64" br label %common.ret common.ret: ; preds = %L259, %L209, %L111, %L75, %L22, %L5 %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ] ret double %common.ret.op, !dbg !6513 L9: ; preds = %top %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !6514 %2 = lshr exact i64 %1, 52, !dbg !6517 %3 = add nsw i64 %2, -1024, !dbg !6519 %4 = icmp ugt i64 %3, 11, !dbg !6521 br i1 %4, label %L111, label %L22, !dbg !6520 L22: ; preds = %L9 %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6523 %6 = icmp ne i64 %1, 0, !dbg !6527 %7 = icmp eq i64 %5, 0, !dbg !6531 %.not38 = or i1 %6, %7, !dbg !6530 %8 = or disjoint i64 %5, 4503599627370496, !dbg !6530 %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !6530 %9 = shl nuw i64 %value_phi, %3, !dbg !6534 %10 = urem i64 %9, 7074237752028440, !dbg !6535 %.not39 = icmp eq i64 %10, 0, !dbg !6536 br i1 %.not39, label %common.ret, label %L75, !dbg !6538 L75: ; preds = %L22 %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #49, !dbg !6539, !range !5559 %12 = add nsw i64 %11, -11, !dbg !6541 %13 = shl i64 %10, %12, !dbg !6542 %14 = and i64 %13, 4503599627370495, !dbg !6545 %15 = shl nuw nsw i64 %11, 52, !dbg !6547 %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !6547 %17 = or disjoint i64 %16, %14, !dbg !6550 %18 = bitcast i64 %17 to double, !dbg !6551 br label %common.ret L111: ; preds = %L9 %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !6553 %20 = icmp ne i64 %1, 0, !dbg !6557 %21 = icmp eq i64 %19, 0, !dbg !6561 %.not44 = or i1 %20, %21, !dbg !6560 %22 = or disjoint i64 %19, 4503599627370496, !dbg !6560 %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !6560 %23 = add nsw i64 %2, -1024, !dbg !6564 %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #49, !dbg !6566 %25 = lshr exact i64 7074237752028440, %24, !dbg !6569 %26 = sub nsw i64 %23, %24, !dbg !6571 %27 = add nuw nsw i64 %24, 1023, !dbg !6573 %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #49, !dbg !6575 %29 = shl nuw i64 %value_phi15, %28, !dbg !6578 %30 = urem i64 %29, %25, !dbg !6580 %.not50 = icmp eq i64 %30, 0, !dbg !6581 br i1 %.not50, label %common.ret, label %L171, !dbg !6583 L171: ; preds = %L111 %31 = sub nsw i64 %26, %28, !dbg !6584 %.not51 = icmp eq i64 %31, 0, !dbg !6586 br i1 %.not51, label %L173, label %L213.preheader, !dbg !6588 L213.preheader: ; preds = %L171 %.not5253 = icmp ugt i64 %31, 14, !dbg !6589 br i1 %.not5253, label %L217.preheader, label %L221, !dbg !6591 L217.preheader: ; preds = %L213.preheader br label %L217, !dbg !6591 L173: ; preds = %L171 %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #49, !dbg !6592, !range !5559 %33 = add nsw i64 %32, -11, !dbg !6593 %34 = shl i64 %30, %33, !dbg !6594 %35 = sub nsw i64 %27, %33, !dbg !6597 %36 = icmp slt i64 %35, 0, !dbg !6599 br i1 %36, label %L200, label %L187, !dbg !6601 L187: ; preds = %L173 %37 = and i64 %34, 4503599627370495, !dbg !6602 %38 = shl nuw i64 %35, 52, !dbg !6604 %39 = add nuw i64 %38, 4503599627370496, !dbg !6604 %40 = and i64 %39, 9218868437227405312, !dbg !6607 %41 = or disjoint i64 %40, %37, !dbg !6609 br label %L209, !dbg !6609 L200: ; preds = %L173 %42 = sub nsw i64 0, %35, !dbg !6610 %43 = lshr i64 %34, %42, !dbg !6612 %44 = and i64 %43, 4503599627370495, !dbg !6614 br label %L209, !dbg !6614 L209: ; preds = %L200, %L187 %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ] %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !6615 br label %common.ret L217: ; preds = %L217.preheader, %L217 %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ] %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ] %45 = mul i64 %iv, -14, !dbg !6617 %iv.next = add nuw nsw i64 %iv, 1, !dbg !6617 %46 = add i64 %31, %45, !dbg !6617 %47 = add i64 %46, -14, !dbg !6617 %48 = shl i64 %value_phi2854, 14, !dbg !6619 %49 = urem i64 %48, %25, !dbg !6621 %.not52 = icmp ugt i64 %47, 14, !dbg !6589 br i1 %.not52, label %L217, label %L221.loopexit, !dbg !6591 L221.loopexit: ; preds = %L217 br label %L221, !dbg !6622 L221: ; preds = %L221.loopexit, %L213.preheader %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ] %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ] %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !6622 %51 = urem i64 %50, %25, !dbg !6624 %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #49, !dbg !6625, !range !5559 %53 = add nsw i64 %52, -11, !dbg !6627 %54 = shl i64 %51, %53, !dbg !6628 %55 = sub nsw i64 %27, %53, !dbg !6631 %56 = icmp slt i64 %55, 0, !dbg !6633 br i1 %56, label %L250, label %L237, !dbg !6635 L237: ; preds = %L221 %57 = and i64 %54, 4503599627370495, !dbg !6636 %58 = shl i64 %55, 52, !dbg !6638 %59 = add i64 %58, 4503599627370496, !dbg !6638 %60 = and i64 %59, 9218868437227405312, !dbg !6641 %61 = or disjoint i64 %60, %57, !dbg !6643 br label %L259, !dbg !6643 L250: ; preds = %L221 %62 = sub nsw i64 0, %55, !dbg !6644 %63 = lshr i64 %54, %62, !dbg !6646 %64 = icmp ugt i64 %62, 63, !dbg !6646 %65 = and i64 %63, 4503599627370495, !dbg !6648 %66 = select i1 %64, i64 0, i64 %65, !dbg !6648 br label %L259, !dbg !6648 L259: ; preds = %L250, %L237 %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ] %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !6649 br label %common.ret } constantarg[double %"x::Float64"] = 0 type: {[-1]:Float@double} - vals: {} constantinst[ %pgcstack = call ptr @julia.get_pgcstack() #49] = 1 val:1 type: {[-1]:Pointer, [-1,16]:Pointer} constantinst[ %ptls_field = getelementptr inbounds i8, ptr %pgcstack, i64 16] = 1 val:1 type: {[-1]:Pointer, [-1,0]:Pointer} constantinst[ %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !30] = 1 val:1 type: {[-1]:Pointer} constantinst[ %0 = getelementptr inbounds i8, ptr %ptls_load, i64 16] = 1 val:1 type: {[-1]:Pointer} constantinst[ %safepoint = load ptr, ptr %0, align 8, !tbaa !34] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ call void @julia.safepoint(ptr %safepoint) #49, !dbg !36] = 1 val:1 type: {} constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {} constantinst[ %bitcast_coercion = bitcast double %"x::Float64" to i64, !dbg !37] = 0 val:0 type: {[-1]:Float@double} constantinst[ %.not = icmp ugt i64 %bitcast_coercion, 4614256656552045848, !dbg !43] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not, label %L9, label %L5, !dbg !46] = 1 val:1 type: {} constantinst[ %.not35.not = icmp eq i64 %bitcast_coercion, 4614256656552045848, !dbg !47] = 1 val:1 type: {[-1]:Integer} constantinst[ %".x::Float64" = select i1 %.not35.not, double 0.000000e+00, double %"x::Float64"] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %common.ret.op = phi double [ %18, %L75 ], [ %bitcast_coercion26, %L209 ], [ %bitcast_coercion32, %L259 ], [ %".x::Float64", %L5 ], [ 0.000000e+00, %L22 ], [ 0.000000e+00, %L111 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ ret double %common.ret.op, !dbg !50] = 1 val:1 type: {} constantinst[ %1 = and i64 %bitcast_coercion, 9218868437227405312, !dbg !51] = 1 val:1 type: {} constantinst[ %2 = lshr exact i64 %1, 52, !dbg !56] = 1 val:1 type: {[-1]:Integer} constantinst[ %3 = add nsw i64 %2, -1024, !dbg !59] = 1 val:1 type: {[-1]:Integer} constantinst[ %4 = icmp ugt i64 %3, 11, !dbg !62] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %4, label %L111, label %L22, !dbg !61] = 1 val:1 type: {} constantinst[ %5 = and i64 %bitcast_coercion, 4503599627370495, !dbg !64] = 0 val:0 type: {} constantinst[ %6 = icmp ne i64 %1, 0, !dbg !70] = 1 val:1 type: {[-1]:Integer} constantinst[ %7 = icmp eq i64 %5, 0, !dbg !78] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not38 = or i1 %6, %7, !dbg !77] = 1 val:1 type: {[-1]:Integer} constantinst[ %8 = or disjoint i64 %5, 4503599627370496, !dbg !77] = 0 val:0 type: {} constantinst[ %value_phi = select i1 %.not38, i64 %8, i64 %5, !dbg !77] = 0 val:0 type: {} constantinst[ %9 = shl nuw i64 %value_phi, %3, !dbg !83] = 0 val:0 type: {} constantinst[ %10 = urem i64 %9, 7074237752028440, !dbg !85] = 0 val:0 type: {} constantinst[ %.not39 = icmp eq i64 %10, 0, !dbg !86] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not39, label %common.ret, label %L75, !dbg !90] = 1 val:1 type: {} constantinst[ %11 = call i64 @llvm.ctlz.i64(i64 %10, i1 true) #49, !dbg !91, !range !94] = 1 val:1 type: {[-1]:Integer} constantinst[ %12 = add nsw i64 %11, -11, !dbg !95] = 1 val:1 type: {[-1]:Integer} constantinst[ %13 = shl i64 %10, %12, !dbg !96] = 0 val:0 type: {} constantinst[ %14 = and i64 %13, 4503599627370495, !dbg !99] = 0 val:0 type: {} constantinst[ %15 = shl nuw nsw i64 %11, 52, !dbg !101] = 1 val:1 type: {[-1]:Integer} constantinst[ %16 = sub nuw nsw i64 4661225614328463360, %15, !dbg !101] = 1 val:1 type: {[-1]:Anything} constantinst[ %17 = or disjoint i64 %16, %14, !dbg !104] = 0 val:0 type: {[-1]:Float@double} constantinst[ %18 = bitcast i64 %17 to double, !dbg !106] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %19 = and i64 %bitcast_coercion, 4503599627370495, !dbg !108] = 0 val:0 type: {} constantinst[ %20 = icmp ne i64 %1, 0, !dbg !112] = 1 val:1 type: {[-1]:Integer} constantinst[ %21 = icmp eq i64 %19, 0, !dbg !116] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not44 = or i1 %20, %21, !dbg !115] = 1 val:1 type: {[-1]:Integer} constantinst[ %22 = or disjoint i64 %19, 4503599627370496, !dbg !115] = 0 val:0 type: {} constantinst[ %value_phi15 = select i1 %.not44, i64 %22, i64 %19, !dbg !115] = 0 val:0 type: {} constantinst[ %23 = add nsw i64 %2, -1024, !dbg !119] = 1 val:1 type: {[-1]:Integer} constantinst[ %24 = call i64 @llvm.umin.i64(i64 %23, i64 3) #49, !dbg !121] = 1 val:1 type: {[-1]:Integer} constantinst[ %25 = lshr exact i64 7074237752028440, %24, !dbg !126] = 1 val:1 type: {[-1]:Anything} constantinst[ %26 = sub nsw i64 %23, %24, !dbg !128] = 1 val:1 type: {[-1]:Integer} constantinst[ %27 = add nuw nsw i64 %24, 1023, !dbg !130] = 1 val:1 type: {[-1]:Integer} constantinst[ %28 = call i64 @llvm.umin.i64(i64 %26, i64 11) #49, !dbg !133] = 1 val:1 type: {[-1]:Integer} constantinst[ %29 = shl nuw i64 %value_phi15, %28, !dbg !136] = 0 val:0 type: {} constantinst[ %30 = urem i64 %29, %25, !dbg !138] = 0 val:0 type: {} constantinst[ %.not50 = icmp eq i64 %30, 0, !dbg !139] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not50, label %common.ret, label %L171, !dbg !141] = 1 val:1 type: {} constantinst[ %31 = sub nsw i64 %26, %28, !dbg !142] = 1 val:1 type: {[-1]:Integer} constantinst[ %.not51 = icmp eq i64 %31, 0, !dbg !144] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not51, label %L173, label %L213.preheader, !dbg !146] = 1 val:1 type: {} constantinst[ %.not5253 = icmp ugt i64 %31, 14, !dbg !147] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not5253, label %L217.preheader, label %L221, !dbg !150] = 1 val:1 type: {} constantinst[ br label %L217, !dbg !150] = 1 val:1 type: {} constantinst[ %32 = call i64 @llvm.ctlz.i64(i64 %30, i1 true) #49, !dbg !151, !range !94] = 1 val:1 type: {[-1]:Integer} constantinst[ %33 = add nsw i64 %32, -11, !dbg !152] = 1 val:1 type: {[-1]:Integer} constantinst[ %34 = shl i64 %30, %33, !dbg !153] = 0 val:0 type: {} constantinst[ %35 = sub nsw i64 %27, %33, !dbg !156] = 1 val:1 type: {[-1]:Integer} constantinst[ %36 = icmp slt i64 %35, 0, !dbg !158] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %36, label %L200, label %L187, !dbg !161] = 1 val:1 type: {} constantinst[ %37 = and i64 %34, 4503599627370495, !dbg !162] = 0 val:0 type: {} constantinst[ %38 = shl nuw i64 %35, 52, !dbg !164] = 1 val:1 type: {[-1]:Integer} constantinst[ %39 = add nuw i64 %38, 4503599627370496, !dbg !164] = 1 val:1 type: {[-1]:Anything} constantinst[ %40 = and i64 %39, 9218868437227405312, !dbg !167] = 1 val:1 type: {[-1]:Anything} constantinst[ %41 = or disjoint i64 %40, %37, !dbg !169] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !169] = 1 val:1 type: {} constantinst[ %42 = sub nsw i64 0, %35, !dbg !170] = 1 val:1 type: {[-1]:Anything} constantinst[ %43 = lshr i64 %34, %42, !dbg !172] = 0 val:0 type: {} constantinst[ %44 = and i64 %43, 4503599627370495, !dbg !174] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L209, !dbg !174] = 1 val:1 type: {} constantinst[ %value_phi25 = phi i64 [ %41, %L187 ], [ %44, %L200 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion26 = bitcast i64 %value_phi25 to double, !dbg !175] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} constantinst[ %iv = phi i64 [ 0, %L217.preheader ], [ %iv.next, %L217 ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %value_phi2854 = phi i64 [ %49, %L217 ], [ %30, %L217.preheader ]] = 0 val:0 type: {} constantinst[ %45 = mul i64 %iv, -14, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %iv.next = add nuw nsw i64 %iv, 1, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %46 = add i64 %31, %45, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %47 = add i64 %46, -14, !dbg !177] = 1 val:1 type: {[-1]:Integer} constantinst[ %48 = shl i64 %value_phi2854, 14, !dbg !179] = 0 val:0 type: {} constantinst[ %49 = urem i64 %48, %25, !dbg !181] = 0 val:0 type: {} constantinst[ %.not52 = icmp ugt i64 %47, 14, !dbg !147] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %.not52, label %L217, label %L221.loopexit, !dbg !150] = 1 val:1 type: {} constantinst[ br label %L221, !dbg !182] = 1 val:1 type: {} constantinst[ %value_phi28.lcssa = phi i64 [ %30, %L213.preheader ], [ %49, %L221.loopexit ]] = 0 val:0 type: {} constantinst[ %value_phi29.lcssa = phi i64 [ %31, %L213.preheader ], [ %47, %L221.loopexit ]] = 1 val:1 type: {[-1]:Integer} constantinst[ %50 = shl i64 %value_phi28.lcssa, %value_phi29.lcssa, !dbg !182] = 0 val:0 type: {} constantinst[ %51 = urem i64 %50, %25, !dbg !184] = 0 val:0 type: {} constantinst[ %52 = call i64 @llvm.ctlz.i64(i64 %51, i1 false) #49, !dbg !185, !range !94] = 1 val:1 type: {[-1]:Integer} constantinst[ %53 = add nsw i64 %52, -11, !dbg !187] = 1 val:1 type: {[-1]:Integer} constantinst[ %54 = shl i64 %51, %53, !dbg !188] = 0 val:0 type: {} constantinst[ %55 = sub nsw i64 %27, %53, !dbg !191] = 1 val:1 type: {[-1]:Integer} constantinst[ %56 = icmp slt i64 %55, 0, !dbg !193] = 1 val:1 type: {[-1]:Integer} constantinst[ br i1 %56, label %L250, label %L237, !dbg !195] = 1 val:1 type: {} constantinst[ %57 = and i64 %54, 4503599627370495, !dbg !196] = 0 val:0 type: {} constantinst[ %58 = shl i64 %55, 52, !dbg !198] = 1 val:1 type: {[-1]:Integer} constantinst[ %59 = add i64 %58, 4503599627370496, !dbg !198] = 1 val:1 type: {[-1]:Anything} constantinst[ %60 = and i64 %59, 9218868437227405312, !dbg !201] = 1 val:1 type: {[-1]:Anything} constantinst[ %61 = or disjoint i64 %60, %57, !dbg !203] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !203] = 1 val:1 type: {} constantinst[ %62 = sub nsw i64 0, %55, !dbg !204] = 1 val:1 type: {[-1]:Anything} constantinst[ %63 = lshr i64 %54, %62, !dbg !206] = 0 val:0 type: {} constantinst[ %64 = icmp ugt i64 %62, 63, !dbg !206] = 1 val:1 type: {[-1]:Integer} constantinst[ %65 = and i64 %63, 4503599627370495, !dbg !208] = 0 val:0 type: {[-1]:Float@double} constantinst[ %66 = select i1 %64, i64 0, i64 %65, !dbg !208] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %L259, !dbg !208] = 1 val:1 type: {} constantinst[ %value_phi31 = phi i64 [ %61, %L237 ], [ %66, %L250 ]] = 0 val:0 type: {[-1]:Float@double} constantinst[ %bitcast_coercion32 = bitcast i64 %value_phi31 to double, !dbg !209] = 0 val:0 type: {[-1]:Float@double} constantinst[ br label %common.ret] = 1 val:1 type: {} cannot handle unknown binary operator: %17 = or disjoint i64 %16, %14, !dbg !104 Stacktrace: [1] | @ ./int.jl:378 [2] _to_float @ ./float.jl:526 [3] rem_internal @ ./float.jl:552 Failure within method: rem_internal(::Float64, ::Float64) @ Base float.jl:533 Hint: catch this exception as `err` and call `code_typed(err)` to inspect the surrounding code. Stacktrace: [1] | @ ./int.jl:378 [inlined] [2] _to_float @ ./float.jl:526 [inlined] [3] rem_internal @ ./float.jl:552 [4] rem @ ./float.jl:601 [inlined] [5] mod @ ./float.jl:610 [inlined] [6] Pi @ ~/.julia/packages/JacobiElliptic/DNY74/src/Carlson.jl:255 [inlined] [7] call_with_kwargs @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:10 [inlined] [8] diffejulia_call_with_kwargs_112608wrap @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:0 [9] macro expansion @ ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6886 [inlined] [10] enzyme_call(::Val{false}, ::Ptr{Nothing}, ::Type{Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, Active{Float64}, Active{Float64}, Active{Float64}}, 1, Tuple{NTuple{6, Float64}, Float64, NTuple{4, Float64}, Float64, Float64, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}}}, ::Val{1}, ::Val{false}, ::Type{Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, Active{Float64}, Active{Float64}, Active{Float64}}}, ::Type{Active{Float64}}, ::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Type{Tuple{NTuple{6, Float64}, Float64, NTuple{4, Float64}, Float64, Float64, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}}, ::Const{@NamedTuple{}}, ::Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, ::Active{Float64}, ::Active{Float64}, ::Active{Float64}, ::Float64, ::Tuple{NTuple{6, Float64}, Float64, NTuple{4, Float64}, Float64, Float64, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6356 [11] (::Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, Const{typeof(EnzymeTestUtils.call_with_kwargs)}, Active{Float64}, Tuple{Const{@NamedTuple{}}, Const{typeof(JacobiElliptic.CarlsonAlg.Pi)}, Active{Float64}, Active{Float64}, Active{Float64}}, 1, Tuple{NTuple{6, Float64}, Float64, NTuple{4, Float64}, Float64, Float64, NTuple{4, Float64}, NTuple{6, Float64}, Tuple{Float64, Float64, Float64}, Tuple{Core.LLVMPtr{Nothing, 0}, UInt64, UInt64}, Float64, Float64, Vararg{Core.LLVMPtr{Nothing, 0}, 42}}})(::Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Const{@NamedTuple{}}, ::Vararg{Any}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/7S7uH/src/compiler.jl:6272 [12] macro expansion @ ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:131 [inlined] [13] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [14] test_reverse(::typeof(JacobiElliptic.CarlsonAlg.Pi), ::Type, ::Tuple{Float64, UnionAll}, ::Vararg{Tuple{Float64, UnionAll}}; rng::Random.TaskLocalRNG, fdm::FiniteDifferences.AdaptedFiniteDifferenceMethod{5, 1, FiniteDifferences.UnadaptedFiniteDifferenceMethod{7, 5}}, fkwargs::@NamedTuple{}, rtol::Float64, atol::Float64, testset_name::Nothing, runtime_activity::Bool, output_tangent::Nothing) @ EnzymeTestUtils ~/.julia/packages/EnzymeTestUtils/fNmYk/src/test_reverse.jl:86 [15] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:1889 [16] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [17] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:17 [inlined] [18] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [19] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:25 [inlined] [20] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1866 [inlined] [21] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:176 [inlined] [22] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [23] macro expansion @ ~/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:270 [inlined] [24] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [25] top-level scope @ ~/.julia/packages/JacobiElliptic/DNY74/test/runtests.jl:10 [26] include(mapexpr::Function, mod::Module, _path::String) @ Base ./Base.jl:307 [27] top-level scope @ none:6 [28] eval(m::Module, e::Any) @ Core ./boot.jl:489 [29] exec_options(opts::Base.JLOptions) @ Base ./client.jl:283 [30] _start() @ Base ./client.jl:550 Test Summary: | Pass Error Total Time alg:JacobiElliptic.CarlsonAlg | 951 8 959 8m09.3s Zygote, ForwardDiff and Enzyme | 940 8 948 8m03.2s (m, ϕ, n) = (0.24783530375494056, 5.512686806033174, 0.880709901875888) | 940 8 948 8m02.8s Complete K | 64 64 3m59.0s Complete E | 64 64 20.8s Complete Pi | 151 151 15.8s Incomplete F | 149 2 151 36.0s test_forward: F with return activity Const on (::Float64, Const), (::Float64, Const) | 6 6 0.4s test_forward: F with return activity Const on (::Float64, Const), (::Float64, Duplicated) | 6 6 0.3s test_forward: F with return activity Const on (::Float64, Duplicated), (::Float64, Const) | 6 6 0.3s test_forward: F with return activity Const on (::Float64, Duplicated), (::Float64, Duplicated) | 6 6 0.3s test_forward: F with return activity Duplicated on (::Float64, Const), (::Float64, Const) | 7 7 1.4s test_forward: F with return activity Duplicated on (::Float64, Const), (::Float64, Duplicated) | 7 7 1.9s test_forward: F with return activity Duplicated on (::Float64, Duplicated), (::Float64, Const) | 7 7 1.4s test_forward: F with return activity Duplicated on (::Float64, Duplicated), (::Float64, Duplicated) | 7 7 1.9s test_forward: F with return activity DuplicatedNoNeed on (::Float64, Const), (::Float64, Const) | 6 6 0.3s test_forward: F with return activity DuplicatedNoNeed on (::Float64, Const), (::Float64, Duplicated) | 6 6 1.0s test_forward: F with return activity DuplicatedNoNeed on (::Float64, Duplicated), (::Float64, Const) | 6 6 0.5s test_forward: F with return activity DuplicatedNoNeed on (::Float64, Duplicated), (::Float64, Duplicated) | 6 6 1.0s test_reverse: F with return activity Const on (::Float64, Const), (::Float64, Const) | 9 9 1.2s test_reverse: F with return activity Const on (::Float64, Const), (::Float64, Active) | 9 9 2.1s test_reverse: F with return activity Const on (::Float64, Active), (::Float64, Const) | 9 9 1.5s test_reverse: F with return activity Const on (::Float64, Active), (::Float64, Active) | 9 9 1.8s test_reverse: F with return activity Active on (::Float64, Const), (::Float64, Const) | 9 9 0.9s test_reverse: F with return activity Active on (::Float64, Const), (::Float64, Active) | 9 9 4.8s test_reverse: F with return activity Active on (::Float64, Active), (::Float64, Const) | 5 1 6 2.3s test_reverse: F with return activity Active on (::Float64, Active), (::Float64, Active) | 5 1 6 1.7s Incomplete E | 148 2 150 28.0s test_forward: E with return activity Const on (::Float64, Const), (::Float64, Const) | 6 6 0.4s test_forward: E with return activity Const on (::Float64, Const), (::Float64, Duplicated) | 6 6 0.3s test_forward: E with return activity Const on (::Float64, Duplicated), (::Float64, Const) | 6 6 0.4s test_forward: E with return activity Const on (::Float64, Duplicated), (::Float64, Duplicated) | 6 6 0.3s test_forward: E with return activity Duplicated on (::Float64, Const), (::Float64, Const) | 7 7 1.4s test_forward: E with return activity Duplicated on (::Float64, Const), (::Float64, Duplicated) | 7 7 1.9s test_forward: E with return activity Duplicated on (::Float64, Duplicated), (::Float64, Const) | 7 7 1.3s test_forward: E with return activity Duplicated on (::Float64, Duplicated), (::Float64, Duplicated) | 7 7 1.9s test_forward: E with return activity DuplicatedNoNeed on (::Float64, Const), (::Float64, Const) | 6 6 0.3s test_forward: E with return activity DuplicatedNoNeed on (::Float64, Const), (::Float64, Duplicated) | 6 6 1.1s test_forward: E with return activity DuplicatedNoNeed on (::Float64, Duplicated), (::Float64, Const) | 6 6 0.5s test_forward: E with return activity DuplicatedNoNeed on (::Float64, Duplicated), (::Float64, Duplicated) | 6 6 1.0s test_reverse: E with return activity Const on (::Float64, Const), (::Float64, Const) | 9 9 1.3s test_reverse: E with return activity Const on (::Float64, Const), (::Float64, Active) | 9 9 1.8s test_reverse: E with return activity Const on (::Float64, Active), (::Float64, Const) | 9 9 1.4s test_reverse: E with return activity Const on (::Float64, Active), (::Float64, Active) | 9 9 1.8s test_reverse: E with return activity Active on (::Float64, Const), (::Float64, Const) | 9 9 1.0s test_reverse: E with return activity Active on (::Float64, Const), (::Float64, Active) | 9 9 1.5s test_reverse: E with return activity Active on (::Float64, Active), (::Float64, Const) | 5 1 6 1.8s test_reverse: E with return activity Active on (::Float64, Active), (::Float64, Active) | 5 1 6 1.9s Incomplete Pi | 344 4 348 2m11.1s test_forward: Pi with return activity Const on (::Float64, Const), (::Float64, Const), (::Float64, Const) | 7 7 1.7s test_forward: Pi with return activity Const on (::Float64, Const), (::Float64, Const), (::Float64, Duplicated) | 7 7 1.7s test_forward: Pi with return activity Const on (::Float64, Const), (::Float64, Duplicated), (::Float64, Const) | 7 7 1.7s test_forward: Pi with return activity Const on (::Float64, Const), (::Float64, Duplicated), (::Float64, Duplicated) | 7 7 1.7s test_forward: Pi with return activity Const on (::Float64, Duplicated), (::Float64, Const), (::Float64, Const) | 7 7 1.7s test_forward: Pi with return activity Const on (::Float64, Duplicated), (::Float64, Const), (::Float64, Duplicated) | 7 7 1.7s test_forward: Pi with return activity Const on (::Float64, Duplicated), (::Float64, Duplicated), (::Float64, Const) | 7 7 1.7s test_forward: Pi with return activity Const on (::Float64, Duplicated), (::Float64, Duplicated), (::Float64, Duplicated) | 7 7 1.7s test_forward: Pi with return activity Duplicated on (::Float64, Const), (::Float64, Const), (::Float64, Const) | 8 8 2.2s test_forward: Pi with return activity Duplicated on (::Float64, Const), (::Float64, Const), (::Float64, Duplicated) | 8 8 2.6s test_forward: Pi with return activity Duplicated on (::Float64, Const), (::Float64, Duplicated), (::Float64, Const) | 8 8 2.2s test_forward: Pi with return activity Duplicated on (::Float64, Const), (::Float64, Duplicated), (::Float64, Duplicated) | 8 8 2.6s test_forward: Pi with return activity Duplicated on (::Float64, Duplicated), (::Float64, Const), (::Float64, Const) | 8 8 2.2s test_forward: Pi with return activity Duplicated on (::Float64, Duplicated), (::Float64, Const), (::Float64, Duplicated) | 8 8 2.2s test_forward: Pi with return activity Duplicated on (::Float64, Duplicated), (::Float64, Duplicated), (::Float64, Const) | 8 8 2.2s test_forward: Pi with return activity Duplicated on (::Float64, Duplicated), (::Float64, Duplicated), (::Float64, Duplicated) | 8 8 2.6s test_forward: Pi with return activity DuplicatedNoNeed on (::Float64, Const), (::Float64, Const), (::Float64, Const) | 7 7 1.6s test_forward: Pi with return activity DuplicatedNoNeed on (::Float64, Const), (::Float64, Const), (::Float64, Duplicated) | 7 7 1.7s test_forward: Pi with return activity DuplicatedNoNeed on (::Float64, Const), (::Float64, Duplicated), (::Float64, Const) | 7 7 1.6s test_forward: Pi with return activity DuplicatedNoNeed on (::Float64, Const), (::Float64, Duplicated), (::Float64, Duplicated) | 7 7 1.7s test_forward: Pi with return activity DuplicatedNoNeed on (::Float64, Duplicated), (::Float64, Const), (::Float64, Const) | 7 7 1.7s test_forward: Pi with return activity DuplicatedNoNeed on (::Float64, Duplicated), (::Float64, Const), (::Float64, Duplicated) | 7 7 1.7s test_forward: Pi with return activity DuplicatedNoNeed on (::Float64, Duplicated), (::Float64, Duplicated), (::Float64, Const) | 7 7 1.7s test_forward: Pi with return activity DuplicatedNoNeed on (::Float64, Duplicated), (::Float64, Duplicated), (::Float64, Duplicated) | 7 7 1.7s test_reverse: Pi with return activity Const on (::Float64, Const), (::Float64, Const), (::Float64, Const) | 11 11 3.7s test_reverse: Pi with return activity Const on (::Float64, Const), (::Float64, Const), (::Float64, Active) | 11 11 6.2s test_reverse: Pi with return activity Const on (::Float64, Const), (::Float64, Active), (::Float64, Const) | 11 11 3.9s test_reverse: Pi with return activity Const on (::Float64, Const), (::Float64, Active), (::Float64, Active) | 11 11 4.2s test_reverse: Pi with return activity Const on (::Float64, Active), (::Float64, Const), (::Float64, Const) | 11 11 3.8s test_reverse: Pi with return activity Const on (::Float64, Active), (::Float64, Const), (::Float64, Active) | 11 11 5.7s test_reverse: Pi with return activity Const on (::Float64, Active), (::Float64, Active), (::Float64, Const) | 11 11 3.9s test_reverse: Pi with return activity Const on (::Float64, Active), (::Float64, Active), (::Float64, Active) | 11 11 4.2s test_reverse: Pi with return activity Active on (::Float64, Const), (::Float64, Const), (::Float64, Const) | 11 11 3.1s test_reverse: Pi with return activity Active on (::Float64, Const), (::Float64, Const), (::Float64, Active) | 11 11 5.6s test_reverse: Pi with return activity Active on (::Float64, Const), (::Float64, Active), (::Float64, Const) | 6 1 7 4.2s test_reverse: Pi with return activity Active on (::Float64, Const), (::Float64, Active), (::Float64, Active) | 6 1 7 4.2s test_reverse: Pi with return activity Active on (::Float64, Active), (::Float64, Const), (::Float64, Const) | 11 11 3.6s test_reverse: Pi with return activity Active on (::Float64, Active), (::Float64, Const), (::Float64, Active) | 11 11 5.7s test_reverse: Pi with return activity Active on (::Float64, Active), (::Float64, Active), (::Float64, Const) | 6 1 7 4.2s test_reverse: Pi with return activity Active on (::Float64, Active), (::Float64, Active), (::Float64, Active) | 6 1 7 4.1s CN | 10 10 6.6s SN | 10 10 5.5s SpecialCases | 11 11 6.1s RNG of the outermost testset: Random.Xoshiro(0x2b95e167c5e13931, 0x27fa1ffbec3942c7, 0xb92e3ceb35212c70, 0xfa81e6bff2a0d01b, 0x1af8c13336989073) ERROR: LoadError: Some tests did not pass: 951 passed, 0 failed, 8 errored, 0 broken. in expression starting at /home/pkgeval/.julia/packages/JacobiElliptic/DNY74/test/autodiff.jl:14 in expression starting at /home/pkgeval/.julia/packages/JacobiElliptic/DNY74/test/runtests.jl:10 Testing failed after 580.78s ERROR: LoadError: Package JacobiElliptic errored during testing Stacktrace: [1] pkgerror(msg::String) @ Pkg.Types /opt/julia/share/julia/stdlib/v1.12/Pkg/src/Types.jl:68 [2] test(ctx::Pkg.Types.Context, pkgs::Vector{PackageSpec}; coverage::Bool, julia_args::Cmd, test_args::Cmd, test_fn::Nothing, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool) @ Pkg.Operations /opt/julia/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:2538 [3] test @ /opt/julia/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:2387 [inlined] [4] test(ctx::Pkg.Types.Context, pkgs::Vector{PackageSpec}; coverage::Bool, test_fn::Nothing, julia_args::Cmd, test_args::Cmd, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool, kwargs::@Kwargs{io::IOContext{IO}}) @ Pkg.API /opt/julia/share/julia/stdlib/v1.12/Pkg/src/API.jl:552 [5] test(pkgs::Vector{PackageSpec}; io::IOContext{IO}, kwargs::@Kwargs{julia_args::Cmd}) @ Pkg.API /opt/julia/share/julia/stdlib/v1.12/Pkg/src/API.jl:169 [6] test(pkgs::Vector{String}; kwargs::@Kwargs{julia_args::Cmd}) @ Pkg.API /opt/julia/share/julia/stdlib/v1.12/Pkg/src/API.jl:157 [7] test @ /opt/julia/share/julia/stdlib/v1.12/Pkg/src/API.jl:157 [inlined] [8] #test#81 @ /opt/julia/share/julia/stdlib/v1.12/Pkg/src/API.jl:156 [inlined] [9] top-level scope @ /PkgEval.jl/scripts/evaluate.jl:223 [10] include(mod::Module, _path::String) @ Base ./Base.jl:306 [11] exec_options(opts::Base.JLOptions) @ Base ./client.jl:317 [12] _start() @ Base ./client.jl:550 in expression starting at /PkgEval.jl/scripts/evaluate.jl:214 PkgEval failed after 1118.17s: illegal method overwrites during precompilation