Skip to content

Enzyme Internal Error on KA Kernel #2621

@KookiesNKareem

Description

@KookiesNKareem

This code here errors saying Enzyme internal error and that I should report it. I've tested Julia 1.11, Enzyme v0.13.80, KernelAbstractions v0.9.38, and CUDA v5.8.4 (and tested v5.9.0). EDIT: Just tested on Julia 1.10 and Enzyme 0.8.13 and it segfaults.

import CUDA
using KernelAbstractions
using Adapt
using Enzyme
import Random: seed!
import .EnzymeRules: forward, reverse, augmented_primal
using .EnzymeRules

CUDA.allowscalar(false)
Enzyme.Compiler.VERBOSE_ERRORS[] = true

const GROUP_SIZE = 256
const Nspins     = 10
const Nt         = 100
const dt         = 1f-5
const γ          = 2π * 42.58f6

const N_Spins32 = Int32(Nspins)
const N_Δt32    = Int32(Nt)

backend = CUDA.CUDABackend()
seed!(42)

M_xy = zeros(Float32, 2Nspins)
M_z  = zeros(Float32, Nspins)

p_x   = zeros(Float32, Nspins)
p_y   = zeros(Float32, Nspins)
p_z   = zeros(Float32, Nspins)
p_ΔBz = zeros(Float32, Nspins)
p_T1  = fill(1.0f0, Nspins)
p_T2  = fill(0.5f0, Nspins)
p_ρ   = fill(1.0f0, Nspins)

s_Gx  = zeros(Float32, Nt)
s_Gy  = zeros(Float32, Nt)
s_Gz  = zeros(Float32, Nt)
s_Δt  = fill(dt, Nt)
s_Δf  = zeros(Float32, Nt)
s_B1r = fill(1f-6, Nt)
s_B1i = zeros(Float32, Nt)

target_c = rand(ComplexF32, Nspins)
target   = vcat(Float32.(real.(target_c)), Float32.(imag.(target_c)))

M_xy   = adapt(backend, M_xy)
M_z    = adapt(backend, M_z)
p_x    = adapt(backend, p_x)
p_y    = adapt(backend, p_y)
p_z    = adapt(backend, p_z)
p_ΔBz  = adapt(backend, p_ΔBz)
p_T1   = adapt(backend, p_T1)
p_T2   = adapt(backend, p_T2)
p_ρ    = adapt(backend, p_ρ)
s_Gx   = adapt(backend, s_Gx)
s_Gy   = adapt(backend, s_Gy)
s_Gz   = adapt(backend, s_Gz)
s_Δt   = adapt(backend, s_Δt)
s_Δf   = adapt(backend, s_Δf)
s_B1r  = adapt(backend, s_B1r)
s_B1i  = adapt(backend, s_B1i)
target = adapt(backend, target)

# Kernel
@kernel unsafe_indices=true inbounds=true function excitation_kernel!(
    M_xy::AbstractVector{T}, M_z::AbstractVector{T},
    p_x::AbstractVector{T}, p_y::AbstractVector{T}, p_z::AbstractVector{T},
    p_ΔBz::AbstractVector{T}, p_T1::AbstractVector{T}, p_T2::AbstractVector{T}, p_ρ::AbstractVector{T},
    s_Gx::AbstractVector{T}, s_Gy::AbstractVector{T}, s_Gz::AbstractVector{T},
    s_Δt::AbstractVector{T}, s_Δf::AbstractVector{T}, s_B1r::AbstractVector{T}, s_B1i::AbstractVector{T},
    N_Spins::Int32, N_Δt::Int32
) where {T}

    i = Int(@index(Global, Linear))
    if i <= Int(N_Spins)
        N   = Int(N_Spins)
        ir  = i
        ii  = i + N

        x   = p_x[i];  y = p_y[i];  z = p_z[i]
        ΔBz = p_ΔBz[i]
        ρ   = p_ρ[i]
        T1  = p_T1[i]
        T2  = p_T2[i]

        Mxy_r = M_xy[ir]
        Mxy_i = M_xy[ii]
        Mz    = M_z[i]

        s_idx = 1
        @inbounds while s_idx <= Int(N_Δt)
            gx  = s_Gx[s_idx]; gy = s_Gy[s_idx]; gz = s_Gz[s_idx]
            Δt  = s_Δt[s_idx]
            df  = s_Δf[s_idx]
            b1r = s_B1r[s_idx]; b1i = s_B1i[s_idx]

            Bz = (x*gx + y*gy + z*gz) + ΔBz - df / T(γ)
            B  = sqrt(b1r*b1r + b1i*b1i + Bz*Bz)

            ϕ  = T(-π) * T(γ) * B * Δt
            sϕ = sin(ϕ); cϕ = cos(ϕ)

            denom = B + T(1e-20)
            α_r =  cϕ
            α_i = -(Bz/denom) * sϕ
            β_r =  (b1i/denom) * sϕ
            β_i = -(b1r/denom) * sϕ

            Mxy_new_r = 2 * (Mxy_i * (α_r*α_i - β_r*β_i) + Mz * (α_i*β_i + α_r*β_r)) +
                        Mxy_r * (α_r*α_r - α_i*α_i - β_r*β_r + β_i*β_i)

            Mxy_new_i = -2 * (Mxy_r * (α_r*α_i + β_r*β_i) - Mz * (α_r*β_i - α_i*β_r)) +
                        Mxy_i * (α_r*α_r - α_i*α_i + β_r*β_r - β_i*β_i)

            Mz_new =    Mz * (α_r*α_r + α_i*α_i - β_r*β_r - β_i*β_i) -
                        2 * (Mxy_r * (α_r*β_r - α_i*β_i) + Mxy_i * (α_r*β_i + α_i*β_r))

            ΔT1   = exp(-Δt / T1)
            ΔT2   = exp(-Δt / T2)
            Mxy_r = Mxy_new_r * ΔT2
            Mxy_i = Mxy_new_i * ΔT2
            Mz    = Mz_new * ΔT1 + ρ * (T(1) - ΔT1)

            s_idx += 1
        end

        M_xy[ir] = Mxy_r
        M_xy[ii] = Mxy_i
        M_z[i]   = Mz
    end
end

# Caller
function excitation_caller!(M_xy, M_z,
    p_x, p_y, p_z, p_ΔBz, p_T1, p_T2, p_ρ,
    s_Gx, s_Gy, s_Gz, s_Δt, s_Δf, s_B1r, s_B1i,
    N_Spins::Int32, N_Δt::Int32, backend)

    ndrange = Int(N_Spins)
    k = excitation_kernel!(backend, GROUP_SIZE)
    k(M_xy, M_z,
      p_x, p_y, p_z, p_ΔBz, p_T1, p_T2, p_ρ,
      s_Gx, s_Gy, s_Gz, s_Δt, s_Δf, s_B1r, s_B1i,
      N_Spins, N_Δt; ndrange=ndrange)

    KernelAbstractions.synchronize(backend)
    return nothing
end

# Forward loss: ||M - target||^2
function loss_sumsq(M, target)
    d = M .- target
    return sum(d .* d)
end

# Custom rules
function augmented_primal(config::RevConfigWidth{1},
    ::Const{typeof(loss_sumsq)},
    ::Type{<:Active},
    M::Duplicated, target::Const)
primal = loss_sumsq(M.val, target.val)
return AugmentedReturn(primal, nothing, nothing)
end

function reverse(config::RevConfigWidth{1},
::Const{typeof(loss_sumsq)},
dret::Active, _tape,
M::Duplicated, target::Const)
@inbounds M.dval .+= (2f0 .* (M.val .- target.val)) .* dret.val
return (nothing, nothing, nothing)
end

inactive(::typeof(KernelAbstractions.synchronize), args...) = nothing

Base.@noinline function loss_wrapper(M_xy, M_z,
    p_x, p_y, p_z, p_ΔBz, p_T1, p_T2, p_ρ,
    s_Gx, s_Gy, s_Gz, s_Δt, s_Δf, s_B1r, s_B1i,
    target, backend)

    excitation_caller!(M_xy, M_z,
        p_x, p_y, p_z, p_ΔBz, p_T1, p_T2, p_ρ,
        s_Gx, s_Gy, s_Gz, s_Δt, s_Δf, s_B1r, s_B1i,
        N_Spins32, N_Δt32, backend)

    return loss_sumsq(M_xy, target)
end

∇M_xy = similar(M_xy)

println("Running Enzyme Reverse")
loss_val = Enzyme.autodiff(
    Enzyme.Reverse,
    loss_wrapper,
    Enzyme.Duplicated(M_xy, ∇M_xy),
    Enzyme.Const(M_z),
    Enzyme.Const(p_x), Enzyme.Const(p_y), Enzyme.Const(p_z),
    Enzyme.Const(p_ΔBz), Enzyme.Const(p_T1), Enzyme.Const(p_T2), Enzyme.Const(p_ρ),
    Enzyme.Const(s_Gx), Enzyme.Const(s_Gy), Enzyme.Const(s_Gz),
    Enzyme.Const(s_Δt), Enzyme.Const(s_Δf), Enzyme.Const(s_B1r), Enzyme.Const(s_B1i),
    Enzyme.Const(target),
    Enzyme.Const(backend),
)

println("loss = ", loss_val)

The full verbose errors exceed the terminal limits and the limits on github issue size, but this is the most I could capture:

!67957 = !DILocation(line: 987, scope: !67958, inlinedAt: !67940)
!67958 = distinct !DISubprogram(name: "setindex!;", linkageName: "setindex!", scope: !1620, file: !1620, type: !1091, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !883, retainedNodes: !0)
!67959 = !{!67912, !1109, !1110, !1112, !1106}
!67960 = distinct !{!67960, !6325}
!67961 = !DILocation(line: 49, scope: !67916, inlinedAt: !67942)
!67962 = !DILocation(line: 53, scope: !67963, inlinedAt: !67964)
!67963 = distinct !DISubprogram(name: "setproperty!;", linkageName: "setproperty!", scope: !1166, file: !1166, type: !1091, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !883, retainedNodes: !0)
!67964 = !DILocation(line: 60, scope: !67965, inlinedAt: !67942)
!67965 = distinct !DISubprogram(name: "setindex!;", linkageName: "setindex!", scope: !1161, file: !1161, type: !1091, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !883, retainedNodes: !0)
!67966 = !DILocation(line: 49, scope: !67916, inlinedAt: !67967)
!67967 = !DILocation(line: 52, scope: !67910)
!67968 = !DILocation(line: 371, scope: !67969, inlinedAt: !67967)
!67969 = distinct !DISubprogram(name: "setindex!;", linkageName: "setindex!", scope: !1602, file: !1602, type: !1091, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !883, retainedNodes: !0)
!67970 = !DILocation(line: 304, scope: !67921, inlinedAt: !67971)
!67971 = !DILocation(line: 335, scope: !67923, inlinedAt: !67968)
!67972 = !DILocation(line: 58, scope: !67910)
!67973 = !DILocation(line: 60, scope: !67910)
!67974 = !DILocation(line: 62, scope: !67910)
!67975 = !DILocation(line: 419, scope: !67976, inlinedAt: !67977)
!67976 = distinct !DISubprogram(name: "unitrange_last;", linkageName: "unitrange_last", scope: !1296, file: !1296, type: !1091, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !883, retainedNodes: !0)
!67977 = !DILocation(line: 408, scope: !67978, inlinedAt: !67979)
!67978 = distinct !DISubprogram(name: "UnitRange;", linkageName: "UnitRange", scope: !1296, file: !1296, type: !1091, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !883, retainedNodes: !0)
!67979 = !DILocation(line: 5, scope: !67980, inlinedAt: !67981)
!67980 = distinct !DISubprogram(name: "Colon;", linkageName: "Colon", scope: !1296, file: !1296, type: !1091, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !883, retainedNodes: !0)
!67981 = !DILocation(line: 3, scope: !67980, inlinedAt: !67940)
!67982 = !DILocation(line: 512, scope: !67930, inlinedAt: !67931)
!67983 = !DILocation(line: 54, scope: !67910)
!67984 = !DILocation(line: 371, scope: !67969, inlinedAt: !67983)
!67985 = !DILocation(line: 304, scope: !67921, inlinedAt: !67986)
!67986 = !DILocation(line: 335, scope: !67923, inlinedAt: !67984)
!67987 = !DILocation(line: 55, scope: !67910)
!67988 = distinct !DISubprogram(name: "string", linkageName: "julia_string_106863", scope: null, file: !1090, line: 189, type: !1091, scopeLine: 189, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !960, retainedNodes: !0)
!67989 = !DILocation(line: 189, scope: !67988)
!67990 = distinct !DISubprogram(name: "string", linkageName: "julia_string_106455", scope: null, file: !1090, line: 189, type: !1091, scopeLine: 189, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !1074, retainedNodes: !0)
!67991 = !DILocation(line: 189, scope: !67990)
!67992 = distinct !DISubprogram(name: "excitation_caller!", linkageName: "julia_excitation_caller!_102860", scope: null, file: !10425, line: 138, type: !1091, scopeLine: 138, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !306, retainedNodes: !0)
!67993 = !DILocation(line: 138, scope: !67992)
!67994 = !DILocation(line: 779, scope: !20108, inlinedAt: !67995)
!67995 = !DILocation(line: 58, scope: !20111, inlinedAt: !67996)
!67996 = !DILocation(line: 68, scope: !20114, inlinedAt: !67997)
!67997 = !DILocation(line: 144, scope: !67992)
!67998 = !{!67999, !1109, !1110, !1112}
!67999 = distinct !{!67999, !68000, !"na_addr13"}
!68000 = distinct !{!68000, !"addr13"}
!68001 = !DILocation(line: 780, scope: !20108, inlinedAt: !67995)
!68002 = !DILocation(line: 707, scope: !20121, inlinedAt: !68001)
!68003 = !DILocation(line: 145, scope: !67992)
!68004 = !{!67999, !1109, !1110, !1112, !1106}
!68005 = !DILocation(line: 150, scope: !67992)
!68006 = !DILocation(line: 151, scope: !67992)
!68007 = distinct !DISubprogram(name: "excitation_caller!", linkageName: "julia_excitation_caller!_102860", scope: null, file: !10425, line: 138, type: !1091, scopeLine: 138, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !306, retainedNodes: !0)
!68008 = !DILocation(line: 138, scope: !68007)
!68009 = !DILocation(line: 779, scope: !20108, inlinedAt: !68010)
!68010 = !DILocation(line: 58, scope: !20111, inlinedAt: !68011)
!68011 = !DILocation(line: 68, scope: !20114, inlinedAt: !68012)
!68012 = !DILocation(line: 144, scope: !68007)
!68013 = !{!68014, !1109, !1110, !1112}
!68014 = distinct !{!68014, !68015, !"na_addr13"}
!68015 = distinct !{!68015, !"addr13"}
!68016 = !DILocation(line: 780, scope: !20108, inlinedAt: !68010)
!68017 = !DILocation(line: 707, scope: !20121, inlinedAt: !68016)
!68018 = !DILocation(line: 145, scope: !68007)
!68019 = !{!68014, !1109, !1110, !1112, !1106}
!68020 = !DILocation(line: 150, scope: !68007)
!68021 = !DILocation(line: 151, scope: !68007)

; Function Attrs: mustprogress willreturn
define internal fastcc { {} addrspace(10)* } @fakeaugmented_julia_excitation_caller__102860({} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %0, {} addrspace(10)* nofree align 8 "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %"'", {} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %1, {} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %2, {} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %3, {} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %4, {} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %5, {} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %6, {} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %7, {} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %8, {} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %9, {} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %10, {} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %11, {} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %12, {} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %13, {} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %14, {} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Pointer, [-1,0,0,0,0]:Integer, [-1,0,0,0,1]:Integer, [-1,0,0,0,2]:Integer, [-1,0,0,0,3]:Integer, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Pointer, [-1,0,0,0,16]:Integer, [-1,0,0,0,17]:Integer, [-1,0,0,0,18]:Integer, [-1,0,0,0,19]:Integer, [-1,0,0,0,20]:Integer, [-1,0,0,0,21]:Integer, [-1,0,0,0,22]:Integer, [-1,0,0,0,23]:Integer, [-1,0,0,0,32]:Integer, [-1,0,0,0,33]:Integer, [-1,0,0,0,34]:Integer, [-1,0,0,0,35]:Integer, [-1,0,0,0,36]:Integer, [-1,0,0,0,37]:Integer, [-1,0,0,0,38]:Integer, [-1,0,0,0,39]:Integer, [-1,0,0,0,40]:Integer, [-1,0,0,0,48]:Pointer, [-1,0,0,0,48,0]:Pointer, [-1,0,0,0,48,8]:Integer, [-1,0,0,0,48,16]:Pointer, [-1,0,0,0,48,24]:Integer, [-1,0,0,0,48,25]:Integer, [-1,0,0,0,48,26]:Integer, [-1,0,0,0,48,27]:Integer, [-1,0,0,0,48,28]:Integer, [-1,0,0,0,48,29]:Integer, [-1,0,0,0,48,30]:Integer, [-1,0,0,0,48,31]:Integer, [-1,0,0,0,48,32]:Integer, [-1,0,0,0,56]:Integer, [-1,0,0,0,57]:Integer, [-1,0,0,0,58]:Integer, [-1,0,0,16,-1]:Integer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="123971357581776" "enzymejl_parmtype_ref"="2" %15, [2 x i8] addrspace(11)* nocapture nofree noundef nonnull readonly align 1 dereferenceable(2) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer}" "enzymejl_parmtype"="123962918772432" "enzymejl_parmtype_ref"="1" %16) unnamed_addr #548 !dbg !68007 {
top:
  %17 = call {}*** @julia.get_pgcstack()
  %pgcstack = call {}*** @julia.get_pgcstack() #549
  %current_task15 = getelementptr inbounds {}**, {}*** %pgcstack, i64 -14
  %18 = bitcast {}*** %current_task15 to {}*
  %ptls_field6 = getelementptr inbounds {}**, {}*** %pgcstack, i64 2
  %19 = bitcast {}*** %ptls_field6 to i64***
  %ptls_load78 = load i64**, i64*** %19, align 8, !tbaa !1092
  %"ptls_load78'il_phi" = phi i64** 
  %20 = getelementptr inbounds i64*, i64** %ptls_load78, i64 2
  %safepoint = load i64*, i64** %20, align 8, !tbaa !1096
  %"safepoint'il_phi" = phi i64* 
  fence syncscope("singlethread") seq_cst
  call void @julia.safepoint(i64* %safepoint) #550, !dbg !68008
  fence syncscope("singlethread") seq_cst
  %21 = call {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @jl_get_builtin_fptr({} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 123971190404512 to {}*) to {} addrspace(10)*)) #549, !dbg !68009
  %"'ip_phi" = phi {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* , !dbg !68009
  %22 = call noalias nonnull align 1 dereferenceable(2) "enzyme_ReadOnlyOrThrow" "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %18, i64 noundef 2, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 123962918772432 to {}*) to {} addrspace(10)*)) #551, !dbg !68009
  %23 = bitcast [2 x i8] addrspace(11)* %16 to i16 addrspace(11)*, !dbg !68009, !enzyme_inactive !0
  %24 = bitcast {} addrspace(10)* %22 to i16 addrspace(10)*, !dbg !68009, !enzyme_inactive !0
  %25 = load i16, i16 addrspace(11)* %23, align 1, !dbg !68009, !tbaa !1220, !alias.scope !1234, !noalias !68013, !enzyme_inactive !0, !enzyme_type !1113, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_CUDA.CUDAKernels.CUDABackend !0
  store i16 %25, i16 addrspace(10)* %24, align 8, !dbg !68009, !tbaa !1220, !alias.scope !1234, !noalias !68013
  %26 = bitcast {}*** %17 to {}**, !dbg !68009
  %27 = getelementptr inbounds {}*, {}** %26, i64 -14, !dbg !68009
  %28 = bitcast {}** %27 to {}*, !dbg !68009
  %29 = call {} addrspace(10)* @julia.gc_alloc_obj({}* %28, i64 8, {} addrspace(10)* @ejl_enz_runtime_exc), !dbg !68009
  %30 = bitcast {} addrspace(10)* %29 to i8* addrspace(10)*, !dbg !68009
  %31 = addrspacecast i8* addrspace(10)* %30 to i8* addrspace(11)*, !dbg !68009
  store i8* getelementptr inbounds ([962 x i8], [962 x i8]* @enz_exception.577, i32 0, i32 0), i8* addrspace(11)* %31, align 8, !dbg !68009
  %32 = addrspacecast {} addrspace(10)* %29 to {} addrspace(12)*, !dbg !68009
  %33 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* %21, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 123971190404576 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 123966266501424 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 123966266501104 to {}*) to {} addrspace(10)*), {} addrspace(10)* nofree nonnull %22, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 123966247983048 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 123966266474624 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 123966247978192 to {}*) to {} addrspace(10)*)) #549, !dbg !68009
  call void @jl_throw({} addrspace(12)* %32) #552, !dbg !68009
  %"'ip_phi1" = phi {} addrspace(10)* , !dbg !68009
  %34 = call {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @jl_f__svec_ref, {} addrspace(10)* null, {} addrspace(10)* %"'ip_phi1", {} addrspace(10)* addrspacecast ({}* inttoptr (i64 123971393787024 to {}*) to {} addrspace(10)*)), !dbg !68016
  %35 = call {} addrspace(10)* ({} addrspace(10)*, ...) @jl_typeof({} addrspace(10)* %34), !dbg !68016
  %36 = call {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @ijl_apply_generic, {} addrspace(10)* @ejl_enz_runtime_error_if_active, {} addrspace(10)* %35), !dbg !68016
  %37 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* noundef nonnull @jl_f__svec_ref, {} addrspace(10)* noundef null, {} addrspace(10)* nonnull %33, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 123971393787024 to {}*) to {} addrspace(10)*)) #553, !dbg !68016
  %38 = call "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* @julia.typeof({} addrspace(10)* nonnull %37) #554, !dbg !68016
  %39 = addrspacecast {} addrspace(10)* %38 to {} addrspace(11)*, !dbg !68016
  %40 = call nonnull {}* @julia.pointer_from_objref({} addrspace(11)* %39) #555, !dbg !68016
  %.not = icmp eq {}* %40, inttoptr (i64 96 to {}*), !dbg !68016
  br i1 %.not, label %err, label %ok, !dbg !68016

err:                                              ; preds = %top
  call void @ijl_undefined_var_error({} addrspace(12)* noundef addrspacecast ({}* inttoptr (i64 123971394069952 to {}*) to {} addrspace(12)*), {} addrspace(12)* noundef addrspacecast ({}* inttoptr (i64 123971393553952 to {}*) to {} addrspace(12)*)) #556, !dbg !68016
  unreachable, !dbg !68016

ok:                                               ; preds = %top
  %41 = call nonnull "enzyme_inactive" "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* noundef nonnull @jl_f_apply_type, {} addrspace(10)* noundef null, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 123966266519136 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 123962918772432 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %37, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 123966266474560 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 123962421287952 to {}*) to {} addrspace(10)*)) #557, !dbg !68016
  %42 = call noalias nonnull align 1 dereferenceable(2) "enzyme_ReadOnlyOrThrow" "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %18, i64 noundef 2, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 123962918772432 to {}*) to {} addrspace(10)*)) #551, !dbg !68017
  %43 = bitcast {} addrspace(10)* %42 to i16 addrspace(10)*, !dbg !68017, !enzyme_inactive !0
  %44 = load i16, i16 addrspace(11)* %23, align 1, !dbg !68017, !tbaa !1220, !alias.scope !1234, !noalias !68013, !enzyme_inactive !0, !enzyme_type !1113, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_CUDA.CUDAKernels.CUDABackend !0
  store i16 %44, i16 addrspace(10)* %43, align 8, !dbg !68017, !tbaa !1220, !alias.scope !1234, !noalias !68013
  %45 = call noalias nonnull "enzyme_inactive" "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* noundef nonnull @ijl_new_structv, {} addrspace(10)* nonnull %41, {} addrspace(10)* nofree nonnull %42, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 123966247978192 to {}*) to {} addrspace(10)*)) #558, !dbg !68017
  %46 = call noalias nonnull align 8 dereferenceable(8) "enzyme_ReadOnlyOrThrow" "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %18, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 123962451530000 to {}*) to {} addrspace(10)*)) #551, !dbg !68018
  %47 = bitcast {} addrspace(10)* %46 to i64 addrspace(10)*, !dbg !68018, !enzyme_inactive !0
  store i64 10, i64 addrspace(10)* %47, align 8, !dbg !68018, !tbaa !1123, !alias.scope !1119, !noalias !68019
  %48 = call noalias nonnull align 8 dereferenceable(4) "enzyme_ReadOnlyOrThrow" "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Integer}" {} addrspace(10)* @ijl_box_int32(i32 noundef signext 10) #559, !dbg !68018
  %49 = call noalias nonnull align 8 dereferenceable(4) "enzyme_ReadOnlyOrThrow" "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Integer}" {} addrspace(10)* @ijl_box_int32(i32 noundef signext 100) #559, !dbg !68018
  %50 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* noundef nonnull @ijl_apply_generic, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 123971186529808 to {}*) to {} addrspace(10)*), {} addrspace(10)* nofree nonnull %46, {} addrspace(10)* nonnull %45, {} addrspace(10)* nofree nonnull %0, {} addrspace(10)* nofree nonnull %1, {} addrspace(10)* nofree nonnull %2, {} addrspace(10)* nofree nonnull %3, {} addrspace(10)* nofree nonnull %4, {} addrspace(10)* nofree nonnull %5, {} addrspace(10)* nofree nonnull %6, {} addrspace(10)* nofree nonnull %7, {} addrspace(10)* nofree nonnull %8, {} addrspace(10)* nofree nonnull %9, {} addrspace(10)* nofree nonnull %10, {} addrspace(10)* nofree nonnull %11, {} addrspace(10)* nofree nonnull %12, {} addrspace(10)* nofree nonnull %13, {} addrspace(10)* nofree nonnull %14, {} addrspace(10)* nofree nonnull %15, {} addrspace(10)* nonnull %48, {} addrspace(10)* nonnull %49) #560, !dbg !68018
  call void @julia_synchronize_102880([2 x i8] addrspace(11)* noalias nocapture nofree noundef nonnull readnone dereferenceable(2) %16) #549, !dbg !68020
  ret { {} addrspace(10)* } undef, !dbg !68021

allocsForInversion:                               ; No predecessors!
}

  %"'ip_phi1" = phi {} addrspace(10)* , !dbg !1099


Stacktrace:
 [1] construct
   @ ~/.julia/packages/KernelAbstractions/lGrz7/src/KernelAbstractions.jl:779
 [2] _excitation_kernel!
   @ ~/.julia/packages/KernelAbstractions/lGrz7/src/macros.jl:58
 [3] excitation_kernel!
   @ ~/.julia/packages/KernelAbstractions/lGrz7/src/macros.jl:68
 [4] excitation_caller!
   @ ~/KomaEnzyme/mwe.jl:144

Stacktrace:
  [1] julia_error(msg::String, val::Ptr{…}, errtype::Enzyme.API.ErrorType, data::Ptr{…}, data2::Ptr{…}, B::Ptr{…})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/nV4l9/src/errors.jl:510
  [2] julia_error(cstr::Cstring, val::Ptr{…}, errtype::Enzyme.API.ErrorType, data::Ptr{…}, data2::Ptr{…}, B::Ptr{…})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/nV4l9/src/errors.jl:348
  [3] EnzymeCreatePrimalAndGradient(logic::Enzyme.Logic, todiff::LLVM.Function, retType::Enzyme.API.CDIFFE_TYPE, constant_args::Vector{…}, TA::Enzyme.TypeAnalysis, returnValue::Bool, dretUsed::Bool, mode::Enzyme.API.CDerivativeMode, runtimeActivity::Bool, strongZero::Bool, width::Int64, additionalArg::Ptr{…}, forceAnonymousTape::Bool, typeInfo::Enzyme.FnTypeInfo, uncacheable_args::Vector{…}, augmented::Ptr{…}, atomicAdd::Bool)
    @ Enzyme.API ~/.julia/packages/Enzyme/nV4l9/src/api.jl:270
  [4] enzyme!(job::GPUCompiler.CompilerJob{…}, interp::Enzyme.Compiler.Interpreter.EnzymeInterpreter{…}, mod::LLVM.Module, primalf::LLVM.Function, TT::Type, mode::Enzyme.API.CDerivativeMode, width::Int64, parallel::Bool, actualRetType::Type, wrap::Bool, modifiedBetween::NTuple{…} where N, returnPrimal::Bool, expectedTapeType::Type, loweredArgs::Set{…}, boxedArgs::Set{…})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/nV4l9/src/compiler.jl:2518
  [5] compile_unhooked(output::Symbol, job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget{…}, Enzyme.Compiler.EnzymeCompilerParams{…}})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/nV4l9/src/compiler.jl:4949
  [6] compile(target::Symbol, job::GPUCompiler.CompilerJob; kwargs::@Kwargs{})
    @ GPUCompiler ~/.julia/packages/GPUCompiler/Ecaql/src/driver.jl:67
  [7] compile
    @ ~/.julia/packages/GPUCompiler/Ecaql/src/driver.jl:55 [inlined]
  [8] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget{…}, Enzyme.Compiler.EnzymeCompilerParams{…}}, postopt::Bool)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/nV4l9/src/compiler.jl:5803
  [9] _thunk
    @ ~/.julia/packages/Enzyme/nV4l9/src/compiler.jl:5801 [inlined]
 [10] cached_compilation
    @ ~/.julia/packages/Enzyme/nV4l9/src/compiler.jl:5858 [inlined]
 [11] thunkbase(mi::Core.MethodInstance, World::UInt64, FA::Type{…}, A::Type{…}, TT::Type, Mode::Enzyme.API.CDerivativeMode, width::Int64, ModifiedBetween::NTuple{…} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool, StrongZero::Bool, edges::Vector{…})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/nV4l9/src/compiler.jl:5974
 [12] thunk_generator(world::UInt64, source::Union{…}, FA::Type, A::Type, TT::Type, Mode::Enzyme.API.CDerivativeMode, Width::Int64, ModifiedBetween::NTuple{…} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool, StrongZero::Bool, self::Any, fakeworld::Any, fa::Type, a::Type, tt::Type, mode::Type, width::Type, modifiedbetween::Type, returnprimal::Type, shadowinit::Type, abi::Type, erriffuncwritten::Type, runtimeactivity::Type, strongzero::Type)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/nV4l9/src/compiler.jl:6169
 [13] autodiff
    @ ~/.julia/packages/Enzyme/nV4l9/src/Enzyme.jl:498 [inlined]
 [14] autodiff
    @ ~/.julia/packages/Enzyme/nV4l9/src/Enzyme.jl:558 [inlined]
 [15] autodiff(::ReverseMode{…}, ::typeof(loss_wrapper), ::Duplicated{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…})
    @ Enzyme ~/.julia/packages/Enzyme/nV4l9/src/Enzyme.jl:530
 [16] top-level scope
    @ ~/KomaEnzyme/mwe.jl:195
 [17] include(fname::String)
    @ Main ./sysimg.jl:38
 [18] top-level scope
    @ REPL[1]:1
in expression starting at /home/kfareed/KomaEnzyme/mwe.jl:195
Some type information was truncated. Use `show(err)` to see complete types.

julia> 

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions