-
-
Notifications
You must be signed in to change notification settings - Fork 76
Re-enable EnzymeAdjoint testing #1232
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
@wsmoses can I get some help isolating this? Here's the MWE. Somehow using Enzyme, OrdinaryDiffEq, StaticArrays
function lorenz!(du, u, p, t)
du[1] = 10.0(u[2] - u[1])
du[2] = u[1] * (28.0 - u[3]) - u[2]
du[3] = u[1] * u[2] - (8 / 3) * u[3]
end
const _saveat = SA[0.0,0.25,0.5,0.75,1.0,1.25,1.5,1.75,2.0,2.25,2.5,2.75,3.0]
function f(y::Array{Float64}, u0::Array{Float64})
tspan = (0.0, 3.0)
prob = ODEProblem{true, SciMLBase.FullSpecialize}(lorenz!, u0, tspan)
sol = DiffEqBase.solve(prob, Tsit5(), saveat = _saveat, sensealg = DiffEqBase.SensitivityADPassThrough())
y .= sol[1,:]
return nothing
end;
u0 = [1.0; 0.0; 0.0]
d_u0 = zeros(3)
y = zeros(13)
dy = zeros(13)
Enzyme.autodiff(Reverse, f, Duplicated(y, dy), Duplicated(u0, d_u0)); # This works!
f2 = (u0, p) -> solve(prob, Tsit5(); u0 = u0, p = p,
sensealg = SensitivityADPassThrough(),
saveat = _saveat)
splitmode = Enzyme.set_runtime_activity(Enzyme.ReverseSplitWithPrimal)
forward, reverse = Enzyme.autodiff_thunk(splitmode, Enzyme.Const{typeof(f2)}, Enzyme.Duplicated, Enzyme.Duplicated{typeof(u0)}, Enzyme.Duplicated{typeof(p)})
tape, result, shadow_result = forward(Enzyme.Const(f2), Enzyme.Duplicated(copy(u0), du0), Enzyme.Duplicated(copy(p), dp)) # Errors |
can you get a new log with EnzymeAD/Enzyme.jl@03e3be8 I want to get some more info |
I tried to run the code above locally to inspect, got errors: @ChrisRackauckas can you post a full MWE as an enzyme issue?
|
The main test here was changed to: using SciMLSensitivity, OrdinaryDiffEq, Zygote, Enzyme
function fiip(du, u, p, t)
du[1] = dx = p[1] * u[1] - p[2] * u[1] * u[2]
du[2] = dy = -p[3] * u[2] + p[4] * u[1] * u[2]
end
p = [1.5, 1.0, 3.0, 1.0];
u0 = [1.0; 1.0];
prob = ODEProblem(fiip, u0, (0.0, 10.0), p)
du08, dp8 = Zygote.gradient(
(u0, p) -> sum(solve(prob, Tsit5(), u0 = u0, p = p,
abstol = 1e-14, reltol = 1e-14,
saveat = 0.1,
sensealg = EnzymeAdjoint())),
u0,
p) No purely Enzyme MWE was found for what's going on here, those are all working now 😅. |
The direct adjoint of Enzyme is working again: ```julia using Enzyme, OrdinaryDiffEq, StaticArrays function lorenz!(du, u, p, t) du[1] = 10.0(u[2] - u[1]) du[2] = u[1] * (28.0 - u[3]) - u[2] du[3] = u[1] * u[2] - (8 / 3) * u[3] end const _saveat = SA[0.0,0.25,0.5,0.75,1.0,1.25,1.5,1.75,2.0,2.25,2.5,2.75,3.0] function f(y::Array{Float64}, u0::Array{Float64}) tspan = (0.0, 3.0) prob = ODEProblem{true, SciMLBase.FullSpecialize}(lorenz!, u0, tspan) sol = DiffEqBase.solve(prob, Tsit5(), saveat = _saveat, sensealg = DiffEqBase.SensitivityADPassThrough()) y .= sol[1,:] return nothing end; u0 = [1.0; 0.0; 0.0] d_u0 = zeros(3) y = zeros(13) dy = zeros(13) Enzyme.autodiff(Reverse, f, Duplicated(y, dy), Duplicated(u0, d_u0)); ``` However, the EnzymeAdjoint which should be doing the same thing is hitting some odd error message: ```julia ERROR: Current scope: ; Function Attrs: mustprogress willreturn define internal fastcc void @preprocess_julia_initialize__106964({} addrspace(10)* noundef nonnull align 8 dereferenceable(632) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,0]:Pointer, [-1,0,0,0,0]:Pointer, [-1,0,0,0,0,-1]:Float@double, [-1,0,0,0,8]:Pointer, [-1,0,0,0,8,0]:Integer, [-1,0,0,0,8,1]:Integer, [-1,0,0,0,8,2]:Integer, [-1,0,0,0,8,3]:Integer, [-1,0,0,0,8,4]:Integer, [-1,0,0,0,8,5]:Integer, [-1,0,0,0,8,6]:Integer, [-1,0,0,0,8,7]:Integer, [-1,0,0,0,8,8]: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,8]:Pointer, [-1,0,8,0]:Integer, [-1,0,8,1]:Integer, [-1,0,8,2]:Integer, [-1,0,8,3]:Integer, [-1,0,8,4]:Integer, [-1,0,8,5]:Integer, [-1,0,8,6]:Integer, [-1,0,8,7]:Integer, [-1,0,8,8]:Pointer, [-1,0,8,8,0]:Pointer, [-1,0,8,8,0,0]:Pointer, [-1,0,8,8,0,8]:Pointer, [-1,0,8,8,0,16]:Integer, [-1,0,8,8,0,17]:Integer, [-1,0,8,8,0,18]:Integer, [-1,0,8,8,0,19]:Integer, [-1,0,8,8,0,20]:Integer, [-1,0,8,8,0,21]:Integer, [-1,0,8,8,0,22]:Integer, [-1,0,8,8,0,23]:Integer, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,8]:Pointer, [-1,8,0]:Pointer, [-1,8,0,-1]:Float@double, [-1,8,8]:Pointer, [-1,8,8,0]:Integer, [-1,8,8,1]:Integer, [-1,8,8,2]:Integer, [-1,8,8,3]:Integer, [-1,8,8,4]:Integer, [-1,8,8,5]:Integer, [-1,8,8,6]:Integer, [-1,8,8,7]:Integer, [-1,8,8,8]:Pointer, [-1,8,8,8,-1]:Float@double, [-1,8,16]:Integer, [-1,8,17]:Integer, [-1,8,18]:Integer, [-1,8,19]:Integer, [-1,8,20]:Integer, [-1,8,21]:Integer, [-1,8,22]:Integer, [-1,8,23]:Integer, [-1,16]:Pointer, [-1,16,0]:Pointer, [-1,16,0,0]:Pointer, [-1,16,0,0,0]:Pointer, [-1,16,0,0,0,0]:Pointer, [-1,16,0,0,8]:Pointer, [-1,16,0,0,8,0]:Integer, [-1,16,0,0,8,1]:Integer, [-1,16,0,0,8,2]:Integer, [-1,16,0,0,8,3]:Integer, [-1,16,0,0,8,4]:Integer, [-1,16,0,0,8,5]:Integer, [-1,16,0,0,8,6]:Integer, [-1,16,0,0,8,7]:Integer, [-1,16,0,0,8,8]:Pointer, [-1,16,0,0,16]:Integer, [-1,16,0,0,17]:Integer, [-1,16,0,0,18]:Integer, [-1,16,0,0,19]:Integer, [-1,16,0,0,20]:Integer, [-1,16,0,0,21]:Integer, [-1,16,0,0,22]:Integer, [-1,16,0,0,23]:Integer, [-1,16,8]:Pointer, [-1,16,8,0]:Integer, [-1,16,8,1]:Integer, [-1,16,8,2]:Integer, [-1,16,8,3]:Integer, [-1,16,8,4]:Integer, [-1,16,8,5]:Integer, [-1,16,8,6]:Integer, [-1,16,8,7]:Integer, [-1,16,8,8]:Pointer, [-1,16,8,8,0]:Pointer, [-1,16,8,8,0,0]:Pointer, [-1,16,8,8,0,8]:Pointer, [-1,16,8,8,0,16]:Integer, [-1,16,8,8,0,17]:Integer, [-1,16,8,8,0,18]:Integer, [-1,16,8,8,0,19]:Integer, [-1,16,8,8,0,20]:Integer, [-1,16,8,8,0,21]:Integer, [-1,16,8,8,0,22]:Integer, [-1,16,8,8,0,23]:Integer, [-1,16,16]:Integer, [-1,16,17]:Integer, [-1,16,18]:Integer, [-1,16,19]:Integer, [-1,16,20]:Integer, [-1,16,21]:Integer, [-1,16,22]:Integer, [-1,16,23]:Integer, [-1,24]:Pointer, [-1,24,0]:Pointer, [-1,24,0,-1]:Pointer, [-1,24,8]:Pointer, [-1,24,8,-1]:Pointer, [-1,24,16]:Pointer, [-1,24,16,-1]:Pointer, [-1,24,24]:Pointer, [-1,24,24,-1]:Pointer, [-1,24,32]:Integer, [-1,24,40]:Pointer, [-1,24,40,0]:Pointer, [-1,24,40,0,-1]:Float@double, [-1,24,40,8]:Pointer, [-1,24,40,8,0]:Integer, [-1,24,40,8,1]:Integer, [-1,24,40,8,2]:Integer, [-1,24,40,8,3]:Integer, [-1,24,40,8,4]:Integer, [-1,24,40,8,5]:Integer, [-1,24,40,8,6]:Integer, [-1,24,40,8,7]:Integer, [-1,24,40,8,8]:Pointer, [-1,24,40,8,8,-1]:Float@double, [-1,24,40,16]:Integer, [-1,24,40,17]:Integer, [-1,24,40,18]:Integer, [-1,24,40,19]:Integer, [-1,24,40,20]:Integer, [-1,24,40,21]:Integer, [-1,24,40,22]:Integer, [-1,24,40,23]:Integer, [-1,24,48]:Float@double, [-1,24,56]:Float@double, [-1,24,64]:Pointer, [-1,24,64,0]:Pointer, [-1,24,64,0,-1]:Float@double, [-1,24,64,8]:Pointer, [-1,24,64,8,0]:Integer, [-1,24,64,8,1]:Integer, [-1,24,64,8,2]:Integer, [-1,24,64,8,3]:Integer, [-1,24,64,8,4]:Integer, [-1,24,64,8,5]:Integer, [-1,24,64,8,6]:Integer, [-1,24,64,8,7]:Integer, [-1,24,64,8,8]:Pointer, [-1,24,64,8,8,-1]:Float@double, [-1,24,64,16]:Integer, [-1,24,64,17]:Integer, [-1,24,64,18]:Integer, [-1,24,64,19]:Integer, [-1,24,64,20]:Integer, [-1,24,64,21]:Integer, [-1,24,64,22]:Integer, [-1,24,64,23]:Integer, [-1,32]:Pointer, [-1,32,-1]:Pointer, [-1,40]:Pointer, [-1,40,-1]:Pointer, [-1,48]:Pointer, [-1,48,-1]:Pointer, [-1,56]:Pointer, [-1,56,-1]:Pointer, [-1,64]:Integer, [-1,72]:Pointer, [-1,72,0]:Pointer, [-1,72,0,0]:Pointer, [-1,72,0,0,0]:Pointer, [-1,72,0,0,0,-1]:Float@double, [-1,72,0,0,8]:Pointer, [-1,72,0,0,8,0]:Integer, [-1,72,0,0,8,1]:Integer, [-1,72,0,0,8,2]:Integer, [-1,72,0,0,8,3]:Integer, [-1,72,0,0,8,4]:Integer, [-1,72,0,0,8,5]:Integer, [-1,72,0,0,8,6]:Integer, [-1,72,0,0,8,7]:Integer, [-1,72,0,0,8,8]:Pointer, [-1,72,0,0,16]:Integer, [-1,72,0,0,17]:Integer, [-1,72,0,0,18]:Integer, [-1,72,0,0,19]:Integer, [-1,72,0,0,20]:Integer, [-1,72,0,0,21]:Integer, [-1,72,0,0,22]:Integer, [-1,72,0,0,23]:Integer, [-1,72,8]:Pointer, [-1,72,8,0]:Integer, [-1,72,8,1]:Integer, [-1,72,8,2]:Integer, [-1,72,8,3]:Integer, [-1,72,8,4]:Integer, [-1,72,8,5]:Integer, [-1,72,8,6]:Integer, [-1,72,8,7]:Integer, [-1,72,8,8]:Pointer, [-1,72,8,8,0]:Pointer, [-1,72,8,8,0,0]:Pointer, [-1,72,8,8,0,8]:Pointer, [-1,72,8,8,0,16]:Integer, [-1,72,8,8,0,17]:Integer, [-1,72,8,8,0,18]:Integer, [-1,72,8,8,0,19]:Integer, [-1,72,8,8,0,20]:Integer, [-1,72,8,8,0,21]:Integer, [-1,72,8,8,0,22]:Integer, [-1,72,8,8,0,23]:Integer, [-1,72,16]:Integer, [-1,72,17]:Integer, [-1,72,18]:Integer, [-1,72,19]:Integer, [-1,72,20]:Integer, [-1,72,21]:Integer, [-1,72,22]:Integer, [-1,72,23]:Integer, [-1,80]:Pointer, [-1,80,0]:Pointer, [-1,80,0,-1]:Float@double, [-1,80,8]:Pointer, [-1,80,8,0]:Integer, [-1,80,8,1]:Integer, [-1,80,8,2]:Integer, [-1,80,8,3]:Integer, [-1,80,8,4]:Integer, [-1,80,8,5]:Integer, [-1,80,8,6]:Integer, [-1,80,8,7]:Integer, [-1,80,8,8]:Pointer, [-1,80,8,8,-1]:Float@double, [-1,80,16]:Integer, [-1,80,17]:Integer, [-1,80,18]:Integer, [-1,80,19]:Integer, [-1,80,20]:Integer, [-1,80,21]:Integer, [-1,80,22]:Integer, [-1,80,23]:Integer, [-1,88]:Pointer, [-1,88,0]:Pointer, [-1,88,0,0]:Pointer, [-1,88,0,0,0]:Pointer, [-1,88,0,0,0,0]:Pointer, [-1,88,0,0,8]:Pointer, [-1,88,0,0,8,0]:Integer, [-1,88,0,0,8,1]:Integer, [-1,88,0,0,8,2]:Integer, [-1,88,0,0,8,3]:Integer, [-1,88,0,0,8,4]:Integer, [-1,88,0,0,8,5]:Integer, [-1,88,0,0,8,6]:Integer, [-1,88,0,0,8,7]:Integer, [-1,88,0,0,8,8]:Pointer, [-1,88,0,0,16]:Integer, [-1,88,0,0,17]:Integer, [-1,88,0,0,18]:Integer, [-1,88,0,0,19]:Integer, [-1,88,0,0,20]:Integer, [-1,88,0,0,21]:Integer, [-1,88,0,0,22]:Integer, [-1,88,0,0,23]:Integer, [-1,88,8]:Pointer, [-1,88,8,0]:Integer, [-1,88,8,1]:Integer, [-1,88,8,2]:Integer, [-1,88,8,3]:Integer, [-1,88,8,4]:Integer, [-1,88,8,5]:Integer, [-1,88,8,6]:Integer, [-1,88,8,7]:Integer, [-1,88,8,8]:Pointer, [-1,88,8,8,0]:Pointer, [-1,88,8,8,0,0]:Pointer, [-1,88,8,8,0,8]:Pointer, [-1,88,8,8,0,16]:Integer, [-1,88,8,8,0,17]:Integer, [-1,88,8,8,0,18]:Integer, [-1,88,8,8,0,19]:Integer, [-1,88,8,8,0,20]:Integer, [-1,88,8,8,0,21]:Integer, [-1,88,8,8,0,22]:Integer, [-1,88,8,8,0,23]:Integer, [-1,88,16]:Integer, [-1,88,17]:Integer, [-1,88,18]:Integer, [-1,88,19]:Integer, [-1,88,20]:Integer, [-1,88,21]:Integer, [-1,88,22]:Integer, [-1,88,23]:Integer, [-1,96]:Integer, [-1,104]:Pointer, [-1,104,0]:Pointer, [-1,104,0,-1]:Float@double, [-1,104,8]:Pointer, [-1,104,8,0]:Integer, [-1,104,8,1]:Integer, [-1,104,8,2]:Integer, [-1,104,8,3]:Integer, [-1,104,8,4]:Integer, [-1,104,8,5]:Integer, [-1,104,8,6]:Integer, [-1,104,8,7]:Integer, [-1,104,8,8]:Pointer, [-1,104,8,8,-1]:Float@double, [-1,104,16]:Integer, [-1,104,17]:Integer, [-1,104,18]:Integer, [-1,104,19]:Integer, [-1,104,20]:Integer, [-1,104,21]:Integer, [-1,104,22]:Integer, [-1,104,23]:Integer, [-1,112]:Pointer, [-1,112,0]:Pointer, [-1,112,0,-1]:Float@double, [-1,112,8]:Pointer, [-1,112,8,0]:Integer, [-1,112,8,1]:Integer, [-1,112,8,2]:Integer, [-1,112,8,3]:Integer, [-1,112,8,4]:Integer, [-1,112,8,5]:Integer, [-1,112,8,6]:Integer, [-1,112,8,7]:Integer, [-1,112,8,8]:Pointer, [-1,112,8,8,-1]:Float@double, [-1,112,16]:Integer, [-1,112,17]:Integer, [-1,112,18]:Integer, [-1,112,19]:Integer, [-1,112,20]:Integer, [-1,112,21]:Integer, [-1,112,22]:Integer, [-1,112,23]:Integer, [-1,120]:Pointer, [-1,120,0]:Pointer, [-1,120,0,-1]:Float@double, [-1,120,8]:Pointer, [-1,120,8,0]:Integer, [-1,120,8,1]:Integer, [-1,120,8,2]:Integer, [-1,120,8,3]:Integer, [-1,120,8,4]:Integer, [-1,120,8,5]:Integer, [-1,120,8,6]:Integer, [-1,120,8,7]:Integer, [-1,120,8,8]:Pointer, [-1,120,8,8,-1]:Float@double, [-1,120,16]:Integer, [-1,120,17]:Integer, [-1,120,18]:Integer, [-1,120,19]:Integer, [-1,120,20]:Integer, [-1,120,21]:Integer, [-1,120,22]:Integer, [-1,120,23]:Integer, [-1,128]:Pointer, [-1,128,0]:Pointer, [-1,128,0,-1]:Float@double, [-1,128,8]:Pointer, [-1,128,8,0]:Integer, [-1,128,8,1]:Integer, [-1,128,8,2]:Integer, [-1,128,8,3]:Integer, [-1,128,8,4]:Integer, [-1,128,8,5]:Integer, [-1,128,8,6]:Integer, [-1,128,8,7]:Integer, [-1,128,8,8]:Pointer, [-1,128,8,8,-1]:Float@double, [-1,128,16]:Integer, [-1,128,17]:Integer, [-1,128,18]:Integer, [-1,128,19]:Integer, [-1,128,20]:Integer, [-1,128,21]:Integer, [-1,128,22]:Integer, [-1,128,23]:Integer, [-1,136]:Pointer, [-1,136,0]:Pointer, [-1,136,0,-1]:Float@double, [-1,136,8]:Pointer, [-1,136,8,0]:Integer, [-1,136,8,1]:Integer, [-1,136,8,2]:Integer, [-1,136,8,3]:Integer, [-1,136,8,4]:Integer, [-1,136,8,5]:Integer, [-1,136,8,6]:Integer, [-1,136,8,7]:Integer, [-1,136,8,8]:Pointer, [-1,136,8,8,-1]:Float@double, [-1,136,16]:Integer, [-1,136,17]:Integer, [-1,136,18]:Integer, [-1,136,19]:Integer, [-1,136,20]:Integer, [-1,136,21]:Integer, [-1,136,22]:Integer, [-1,136,23]:Integer, [-1,144]:Pointer, [-1,144,0]:Pointer, [-1,144,0,-1]:Float@double, [-1,144,8]:Pointer, [-1,144,8,0]:Integer, [-1,144,8,1]:Integer, [-1,144,8,2]:Integer, [-1,144,8,3]:Integer, [-1,144,8,4]:Integer, [-1,144,8,5]:Integer, [-1,144,8,6]:Integer, [-1,144,8,7]:Integer, [-1,144,8,8]:Pointer, [-1,144,8,8,-1]:Float@double, [-1,144,16]:Integer, [-1,144,17]:Integer, [-1,144,18]:Integer, [-1,144,19]:Integer, [-1,144,20]:Integer, [-1,144,21]:Integer, [-1,144,22]:Integer, [-1,144,23]:Integer, [-1,152]:Pointer, [-1,152,0]:Pointer, [-1,152,0,-1]:Float@double, [-1,152,8]:Pointer, [-1,152,8,0]:Integer, [-1,152,8,1]:Integer, [-1,152,8,2]:Integer, [-1,152,8,3]:Integer, [-1,152,8,4]:Integer, [-1,152,8,5]:Integer, [-1,152,8,6]:Integer, [-1,152,8,7]:Integer, [-1,152,8,8]:Pointer, [-1,152,8,8,-1]:Float@double, [-1,152,16]:Integer, [-1,152,17]:Integer, [-1,152,18]:Integer, [-1,152,19]:Integer, [-1,152,20]:Integer, [-1,152,21]:Integer, [-1,152,22]:Integer, [-1,152,23]:Integer, [-1,160]:Pointer, [-1,160,0]:Pointer, [-1,160,0,-1]:Float@double, [-1,160,8]:Pointer, [-1,160,8,0]:Integer, [-1,160,8,1]:Integer, [-1,160,8,2]:Integer, [-1,160,8,3]:Integer, [-1,160,8,4]:Integer, [-1,160,8,5]:Integer, [-1,160,8,6]:Integer, [-1,160,8,7]:Integer, [-1,160,8,8]:Pointer, [-1,160,8,8,-1]:Float@double, [-1,160,16]:Integer, [-1,160,17]:Integer, [-1,160,18]:Integer, [-1,160,19]:Integer, [-1,160,20]:Integer, [-1,160,21]:Integer, [-1,160,22]:Integer, [-1,160,23]:Integer, [-1,168]:Pointer, [-1,168,0]:Pointer, [-1,168,0,-1]:Float@double, [-1,168,8]:Pointer, [-1,168,8,0]:Integer, [-1,168,8,1]:Integer, [-1,168,8,2]:Integer, [-1,168,8,3]:Integer, [-1,168,8,4]:Integer, [-1,168,8,5]:Integer, [-1,168,8,6]:Integer, [-1,168,8,7]:Integer, [-1,168,8,8]:Pointer, [-1,168,8,8,-1]:Float@double, [-1,168,16]:Integer, [-1,168,17]:Integer, [-1,168,18]:Integer, [-1,168,19]:Integer, [-1,168,20]:Integer, [-1,168,21]:Integer, [-1,168,22]:Integer, [-1,168,23]:Integer, [-1,176]:Pointer, [-1,176,0]:Pointer, [-1,176,0,-1]:Float@double, [-1,176,8]:Pointer, [-1,176,8,0]:Integer, [-1,176,8,1]:Integer, [-1,176,8,2]:Integer, [-1,176,8,3]:Integer, [-1,176,8,4]:Integer, [-1,176,8,5]:Integer, [-1,176,8,6]:Integer, [-1,176,8,7]:Integer, [-1,176,8,8]:Pointer, [-1,176,8,8,-1]:Float@double, [-1,176,16]:Integer, [-1,176,17]:Integer, [-1,176,18]:Integer, [-1,176,19]:Integer, [-1,176,20]:Integer, [-1,176,21]:Integer, [-1,176,22]:Integer, [-1,176,23]:Integer, [-1,184]:Pointer, [-1,184,0]:Pointer, [-1,184,0,-1]:Float@double, [-1,184,8]:Pointer, [-1,184,8,0]:Integer, [-1,184,8,1]:Integer, [-1,184,8,2]:Integer, [-1,184,8,3]:Integer, [-1,184,8,4]:Integer, [-1,184,8,5]:Integer, [-1,184,8,6]:Integer, [-1,184,8,7]:Integer, [-1,184,8,8]:Pointer, [-1,184,8,8,-1]:Float@double, [-1,184,16]:Integer, [-1,184,17]:Integer, [-1,184,18]:Integer, [-1,184,19]:Integer, [-1,184,20]:Integer, [-1,184,21]:Integer, [-1,184,22]:Integer, [-1,184,23]:Integer, [-1,192]:Pointer, [-1,192,0]:Pointer, [-1,192,0,-1]:Float@double, [-1,192,8]:Pointer, [-1,192,8,0]:Integer, [-1,192,8,1]:Integer, [-1,192,8,2]:Integer, [-1,192,8,3]:Integer, [-1,192,8,4]:Integer, [-1,192,8,5]:Integer, [-1,192,8,6]:Integer, [-1,192,8,7]:Integer, [-1,192,8,8]:Pointer, [-1,192,8,8,-1]:Float@double, [-1,192,16]:Integer, [-1,192,17]:Integer, [-1,192,18]:Integer, [-1,192,19]:Integer, [-1,192,20]:Integer, [-1,192,21]:Integer, [-1,192,22]:Integer, [-1,192,23]:Integer, [-1,200]:Integer, [-1,208]:Integer, [-1,216]:Integer, [-1,217]:Integer, [-1,218]:Integer, [-1,219]:Integer, [-1,220]:Integer, [-1,221]:Integer, [-1,222]:Integer, [-1,223]:Integer, [-1,224]:Pointer, [-1,224,0]:Integer, [-1,224,1]:Integer, [-1,224,2]:Integer, [-1,224,3]:Integer, [-1,224,4]:Integer, [-1,224,5]:Integer, [-1,224,6]:Integer, [-1,224,7]:Integer, [-1,224,8]:Integer, [-1,224,9]:Integer, [-1,224,10]:Integer, [-1,224,11]:Integer, [-1,224,12]:Integer, [-1,224,13]:Integer, [-1,224,14]:Integer, [-1,224,15]:Integer, [-1,224,16]:Integer, [-1,224,17]:Integer, [-1,224,18]:Integer, [-1,224,19]:Integer, [-1,224,20]:Integer, [-1,224,21]:Integer, [-1,224,22]:Integer, [-1,224,23]:Integer, [-1,224,24]:Integer, [-1,224,25]:Integer, [-1,224,26]:Integer, [-1,224,27]:Integer, [-1,224,28]:Integer, [-1,224,29]:Integer, [-1,224,30]:Integer, [-1,224,31]:Integer, [-1,224,32]:Integer, [-1,224,33]:Integer, [-1,224,34]:Integer, [-1,224,35]:Integer, [-1,224,36]:Integer, [-1,224,37]:Integer, [-1,224,38]:Integer, [-1,224,39]:Integer, [-1,224,40]:Integer, [-1,224,41]:Integer, [-1,224,42]:Integer, [-1,224,43]:Integer, [-1,224,44]:Integer, [-1,224,45]:Integer, [-1,224,46]:Integer, [-1,224,47]:Integer, [-1,224,48]:Integer, [-1,224,49]:Integer, [-1,224,50]:Integer, [-1,224,51]:Integer, [-1,224,52]:Integer, [-1,224,53]:Integer, [-1,224,54]:Integer, [-1,224,55]:Integer, [-1,224,56]:Integer, [-1,224,57]:Integer, [-1,224,58]:Integer, [-1,224,59]:Integer, [-1,224,60]:Integer, [-1,224,61]:Integer, [-1,224,62]:Integer, [-1,224,63]:Integer, [-1,224,64]:Integer, [-1,224,65]:Integer, [-1,224,66]:Integer, [-1,224,67]:Integer, [-1,224,68]:Integer, [-1,224,69]:Integer, [-1,224,70]:Integer, [-1,224,71]:Integer, [-1,224,72]:Integer, [-1,224,73]:Integer, [-1,224,74]:Integer, [-1,224,75]:Integer, [-1,224,76]:Integer, [-1,224,77]:Integer, [-1,224,78]:Integer, [-1,224,79]:Integer, [-1,224,80]:Integer, [-1,224,81]:Integer, [-1,224,82]:Integer, [-1,224,83]:Integer, [-1,224,84]:Integer, [-1,224,85]:Integer, [-1,224,86]:Integer, [-1,224,87]:Integer, [-1,224,88]:Integer, [-1,224,89]:Integer, [-1,224,90]:Integer, [-1,224,91]:Integer, [-1,224,92]:Integer, [-1,224,93]:Integer, [-1,224,94]:Integer, [-1,224,95]:Integer, [-1,224,96]:Float@double, [-1,240]:Pointer, [-1,240,0]:Pointer, [-1,240,0,-1]:Float@double, [-1,240,8]:Pointer, [-1,240,8,0]:Integer, [-1,240,8,1]:Integer, [-1,240,8,2]:Integer, [-1,240,8,3]:Integer, [-1,240,8,4]:Integer, [-1,240,8,5]:Integer, [-1,240,8,6]:Integer, [-1,240,8,7]:Integer, [-1,240,8,8]:Pointer, [-1,240,8,8,-1]:Float@double, [-1,240,16]:Integer, [-1,240,17]:Integer, [-1,240,18]:Integer, [-1,240,19]:Integer, [-1,240,20]:Integer, [-1,240,21]:Integer, [-1,240,22]:Integer, [-1,240,23]:Integer, [-1,248]:Pointer, [-1,248,0]:Pointer, [-1,248,0,0]:Pointer, [-1,248,0,0,0]:Pointer, [-1,248,0,0,0,-1]:Float@double, [-1,248,0,0,8]:Pointer, [-1,248,0,0,8,0]:Integer, [-1,248,0,0,8,1]:Integer, [-1,248,0,0,8,2]:Integer, [-1,248,0,0,8,3]:Integer, [-1,248,0,0,8,4]:Integer, [-1,248,0,0,8,5]:Integer, [-1,248,0,0,8,6]:Integer, [-1,248,0,0,8,7]:Integer, [-1,248,0,0,8,8]:Pointer, [-1,248,0,0,16]:Integer, [-1,248,0,0,17]:Integer, [-1,248,0,0,18]:Integer, [-1,248,0,0,19]:Integer, [-1,248,0,0,20]:Integer, [-1,248,0,0,21]:Integer, [-1,248,0,0,22]:Integer, [-1,248,0,0,23]:Integer, [-1,248,8]:Pointer, [-1,248,8,0]:Integer, [-1,248,8,1]:Integer, [-1,248,8,2]:Integer, [-1,248,8,3]:Integer, [-1,248,8,4]:Integer, [-1,248,8,5]:Integer, [-1,248,8,6]:Integer, [-1,248,8,7]:Integer, [-1,248,8,8]:Pointer, [-1,248,8,8,0]:Pointer, [-1,248,8,8,0,0]:Pointer, [-1,248,8,8,0,8]:Pointer, [-1,248,8,8,0,16]:Integer, [-1,248,8,8,0,17]:Integer, [-1,248,8,8,0,18]:Integer, [-1,248,8,8,0,19]:Integer, [-1,248,8,8,0,20]:Integer, [-1,248,8,8,0,21]:Integer, [-1,248,8,8,0,22]:Integer, [-1,248,8,8,0,23]:Integer, [-1,248,16]:Integer, [-1,248,17]:Integer, [-1,248,18]:Integer, [-1,248,19]:Integer, [-1,248,20]:Integer, [-1,248,21]:Integer, [-1,248,22]:Integer, [-1,248,23]:Integer, [-1,256]:Float@double, [-1,264]:Float@double, [-1,272]:Pointer, [-1,272,-1]:Pointer, [-1,280]:Pointer, [-1,280,-1]:Pointer, [-1,288]:Pointer, [-1,288,-1]:Pointer, [-1,296]:Pointer, [-1,296,-1]:Pointer, [-1,304]:Integer, [-1,312]:Pointer, [-1,312,0]:Pointer, [-1,312,0,-1]:Float@double, [-1,312,8]:Pointer, [-1,312,8,0]:Integer, [-1,312,8,1]:Integer, [-1,312,8,2]:Integer, [-1,312,8,3]:Integer, [-1,312,8,4]:Integer, [-1,312,8,5]:Integer, [-1,312,8,6]:Integer, [-1,312,8,7]:Integer, [-1,312,8,8]:Pointer, [-1,312,8,8,-1]:Float@double, [-1,312,16]:Integer, [-1,312,17]:Integer, [-1,312,18]:Integer, [-1,312,19]:Integer, [-1,312,20]:Integer, [-1,312,21]:Integer, [-1,312,22]:Integer, [-1,312,23]:Integer, [-1,320]:Pointer, [-1,320,0]:Pointer, [-1,320,0,-1]:Float@double, [-1,320,8]:Pointer, [-1,320,8,0]:Integer, [-1,320,8,1]:Integer, [-1,320,8,2]:Integer, [-1,320,8,3]:Integer, [-1,320,8,4]:Integer, [-1,320,8,5]:Integer, [-1,320,8,6]:Integer, [-1,320,8,7]:Integer, [-1,320,8,8]:Pointer, [-1,320,8,8,-1]:Float@double, [-1,320,16]:Integer, [-1,320,17]:Integer, [-1,320,18]:Integer, [-1,320,19]:Integer, [-1,320,20]:Integer, [-1,320,21]:Integer, [-1,320,22]:Integer, [-1,320,23]:Integer, [-1,328]:Pointer, [-1,328,0]:Pointer, [-1,328,0,-1]:Float@double, [-1,328,8]:Pointer, [-1,328,8,0]:Integer, [-1,328,8,1]:Integer, [-1,328,8,2]:Integer, [-1,328,8,3]:Integer, [-1,328,8,4]:Integer, [-1,328,8,5]:Integer, [-1,328,8,6]:Integer, [-1,328,8,7]:Integer, [-1,328,8,8]:Pointer, [-1,328,8,8,-1]:Float@double, [-1,328,16]:Integer, [-1,328,17]:Integer, [-1,328,18]:Integer, [-1,328,19]:Integer, [-1,328,20]:Integer, [-1,328,21]:Integer, [-1,328,22]:Integer, [-1,328,23]:Integer, [-1,336]:Float@double, [-1,344]:Float@double, [-1,352]:Integer, [-1,360]:Float@double, [-1,368]:Float@double, [-1,376]:Float@double, [-1,384]:Float@double, [-1,392]:Float@double, [-1,400]:Float@double, [-1,408]:Float@double, [-1,416]:Float@double, [-1,424]:Integer, [-1,425]:Integer, [-1,426]:Integer, [-1,427]:Integer, [-1,428]:Integer, [-1,429]:Integer, [-1,430]:Integer, [-1,431]:Integer, [-1,432]:Integer, [-1,433]:Integer, [-1,434]:Integer, [-1,435]:Integer, [-1,436]:Integer, [-1,437]:Integer, [-1,438]:Integer, [-1,439]:Integer, [-1,440]:Integer, [-1,441]:Integer, [-1,442]:Integer, [-1,443]:Integer, [-1,444]:Integer, [-1,445]:Integer, [-1,446]:Integer, [-1,447]:Integer, [-1,448]:Integer, [-1,449]:Integer, [-1,450]:Integer, [-1,451]:Integer, [-1,452]:Integer, [-1,453]:Integer, [-1,454]:Integer, [-1,455]:Integer, [-1,456]:Pointer, [-1,456,0]:Pointer, [-1,456,0,-1]:Float@double, [-1,456,8]:Pointer, [-1,456,8,0]:Integer, [-1,456,8,1]:Integer, [-1,456,8,2]:Integer, [-1,456,8,3]:Integer, [-1,456,8,4]:Integer, [-1,456,8,5]:Integer, [-1,456,8,6]:Integer, [-1,456,8,7]:Integer, [-1,456,8,8]:Pointer, [-1,456,8,8,-1]:Float@double, [-1,456,16]:Integer, [-1,456,17]:Integer, [-1,456,18]:Integer, [-1,456,19]:Integer, [-1,456,20]:Integer, [-1,456,21]:Integer, [-1,456,22]:Integer, [-1,456,23]:Integer, [-1,464]:Pointer, [-1,464,0]:Pointer, [-1,464,0,-1]:Float@double, [-1,464,8]:Pointer, [-1,464,8,0]:Integer, [-1,464,8,1]:Integer, [-1,464,8,2]:Integer, [-1,464,8,3]:Integer, [-1,464,8,4]:Integer, [-1,464,8,5]:Integer, [-1,464,8,6]:Integer, [-1,464,8,7]:Integer, [-1,464,8,8]:Pointer, [-1,464,8,8,-1]:Float@double, [-1,464,16]:Integer, [-1,464,17]:Integer, [-1,464,18]:Integer, [-1,464,19]:Integer, [-1,464,20]:Integer, [-1,464,21]:Integer, [-1,464,22]:Integer, [-1,464,23]:Integer, [-1,472]:Pointer, [-1,472,0]:Pointer, [-1,472,0,-1]:Float@double, [-1,472,8]:Pointer, [-1,472,8,0]:Integer, [-1,472,8,1]:Integer, [-1,472,8,2]:Integer, [-1,472,8,3]:Integer, [-1,472,8,4]:Integer, [-1,472,8,5]:Integer, [-1,472,8,6]:Integer, [-1,472,8,7]:Integer, [-1,472,8,8]:Pointer, [-1,472,8,8,-1]:Float@double, [-1,472,16]:Integer, [-1,472,17]:Integer, [-1,472,18]:Integer, [-1,472,19]:Integer, [-1,472,20]:Integer, [-1,472,21]:Integer, [-1,472,22]:Integer, [-1,472,23]:Integer, [-1,480]:Pointer, [-1,480,0]:Pointer, [-1,480,0,-1]:Float@double, [-1,480,8]:Pointer, [-1,480,8,0]:Integer, [-1,480,8,1]:Integer, [-1,480,8,2]:Integer, [-1,480,8,3]:Integer, [-1,480,8,4]:Integer, [-1,480,8,5]:Integer, [-1,480,8,6]:Integer, [-1,480,8,7]:Integer, [-1,480,8,8]:Pointer, [-1,480,8,8,-1]:Float@double, [-1,480,16]:Integer, [-1,480,17]:Integer, [-1,480,18]:Integer, [-1,480,19]:Integer, [-1,480,20]:Integer, [-1,480,21]:Integer, [-1,480,22]:Integer, [-1,480,23]:Integer, [-1,488]:Pointer, [-1,488,0]:Pointer, [-1,488,0,-1]:Float@double, [-1,488,8]:Pointer, [-1,488,8,0]:Integer, [-1,488,8,1]:Integer, [-1,488,8,2]:Integer, [-1,488,8,3]:Integer, [-1,488,8,4]:Integer, [-1,488,8,5]:Integer, [-1,488,8,6]:Integer, [-1,488,8,7]:Integer, [-1,488,8,8]:Pointer, [-1,488,8,8,-1]:Float@double, [-1,488,16]:Integer, [-1,488,17]:Integer, [-1,488,18]:Integer, [-1,488,19]:Integer, [-1,488,20]:Integer, [-1,488,21]:Integer, [-1,488,22]:Integer, [-1,488,23]:Integer, [-1,496]:Pointer, [-1,496,0]:Pointer, [-1,496,0,-1]:Float@double, [-1,496,8]:Pointer, [-1,496,8,0]:Integer, [-1,496,8,1]:Integer, [-1,496,8,2]:Integer, [-1,496,8,3]:Integer, [-1,496,8,4]:Integer, [-1,496,8,5]:Integer, [-1,496,8,6]:Integer, [-1,496,8,7]:Integer, [-1,496,8,8]:Pointer, [-1,496,8,8,-1]:Float@double, [-1,496,16]:Integer, [-1,496,17]:Integer, [-1,496,18]:Integer, [-1,496,19]:Integer, [-1,496,20]:Integer, [-1,496,21]:Integer, [-1,496,22]:Integer, [-1,496,23]:Integer}" "enzymejl_parmtype"="15273708112" "enzymejl_parmtype_ref"="2" %0, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(96) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Pointer, [-1,0,8,0]:Integer, [-1,0,8,1]:Integer, [-1,0,8,2]:Integer, [-1,0,8,3]:Integer, [-1,0,8,4]:Integer, [-1,0,8,5]:Integer, [-1,0,8,6]:Integer, [-1,0,8,7]:Integer, [-1,0,8,8]:Pointer, [-1,0,8,8,-1]:Float@double, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,8]:Pointer, [-1,8,0]:Pointer, [-1,8,0,-1]:Float@double, [-1,8,8]:Pointer, [-1,8,8,0]:Integer, [-1,8,8,1]:Integer, [-1,8,8,2]:Integer, [-1,8,8,3]:Integer, [-1,8,8,4]:Integer, [-1,8,8,5]:Integer, [-1,8,8,6]:Integer, [-1,8,8,7]:Integer, [-1,8,8,8]:Pointer, [-1,8,8,8,-1]:Float@double, [-1,8,16]:Integer, [-1,8,17]:Integer, [-1,8,18]:Integer, [-1,8,19]:Integer, [-1,8,20]:Integer, [-1,8,21]:Integer, [-1,8,22]:Integer, [-1,8,23]:Integer, [-1,16]:Pointer, [-1,16,0]:Pointer, [-1,16,0,-1]:Float@double, [-1,16,8]:Pointer, [-1,16,8,0]:Integer, [-1,16,8,1]:Integer, [-1,16,8,2]:Integer, [-1,16,8,3]:Integer, [-1,16,8,4]:Integer, [-1,16,8,5]:Integer, [-1,16,8,6]:Integer, [-1,16,8,7]:Integer, [-1,16,8,8]:Pointer, [-1,16,8,8,-1]:Float@double, [-1,16,16]:Integer, [-1,16,17]:Integer, [-1,16,18]:Integer, [-1,16,19]:Integer, [-1,16,20]:Integer, [-1,16,21]:Integer, [-1,16,22]:Integer, [-1,16,23]:Integer, [-1,24]:Pointer, [-1,24,0]:Pointer, [-1,24,0,-1]:Float@double, [-1,24,8]:Pointer, [-1,24,8,0]:Integer, [-1,24,8,1]:Integer, [-1,24,8,2]:Integer, [-1,24,8,3]:Integer, [-1,24,8,4]:Integer, [-1,24,8,5]:Integer, [-1,24,8,6]:Integer, [-1,24,8,7]:Integer, [-1,24,8,8]:Pointer, [-1,24,8,8,-1]:Float@double, [-1,24,16]:Integer, [-1,24,17]:Integer, [-1,24,18]:Integer, [-1,24,19]:Integer, [-1,24,20]:Integer, [-1,24,21]:Integer, [-1,24,22]:Integer, [-1,24,23]:Integer, [-1,32]:Pointer, [-1,32,0]:Pointer, [-1,32,0,-1]:Float@double, [-1,32,8]:Pointer, [-1,32,8,0]:Integer, [-1,32,8,1]:Integer, [-1,32,8,2]:Integer, [-1,32,8,3]:Integer, [-1,32,8,4]:Integer, [-1,32,8,5]:Integer, [-1,32,8,6]:Integer, [-1,32,8,7]:Integer, [-1,32,8,8]:Pointer, [-1,32,8,8,-1]:Float@double, [-1,32,16]:Integer, [-1,32,17]:Integer, [-1,32,18]:Integer, [-1,32,19]:Integer, [-1,32,20]:Integer, [-1,32,21]:Integer, [-1,32,22]:Integer, [-1,32,23]:Integer, [-1,40]:Pointer, [-1,40,0]:Pointer, [-1,40,0,-1]:Float@double, [-1,40,8]:Pointer, [-1,40,8,0]:Integer, [-1,40,8,1]:Integer, [-1,40,8,2]:Integer, [-1,40,8,3]:Integer, [-1,40,8,4]:Integer, [-1,40,8,5]:Integer, [-1,40,8,6]:Integer, [-1,40,8,7]:Integer, [-1,40,8,8]:Pointer, [-1,40,8,8,-1]:Float@double, [-1,40,16]:Integer, [-1,40,17]:Integer, [-1,40,18]:Integer, [-1,40,19]:Integer, [-1,40,20]:Integer, [-1,40,21]:Integer, [-1,40,22]:Integer, [-1,40,23]:Integer, [-1,48]:Pointer, [-1,48,0]:Pointer, [-1,48,0,-1]:Float@double, [-1,48,8]:Pointer, [-1,48,8,0]:Integer, [-1,48,8,1]:Integer, [-1,48,8,2]:Integer, [-1,48,8,3]:Integer, [-1,48,8,4]:Integer, [-1,48,8,5]:Integer, [-1,48,8,6]:Integer, [-1,48,8,7]:Integer, [-1,48,8,8]:Pointer, [-1,48,8,8,-1]:Float@double, [-1,48,16]:Integer, [-1,48,17]:Integer, [-1,48,18]:Integer, [-1,48,19]:Integer, [-1,48,20]:Integer, [-1,48,21]:Integer, [-1,48,22]:Integer, [-1,48,23]:Integer, [-1,56]:Pointer, [-1,56,0]:Pointer, [-1,56,0,-1]:Float@double, [-1,56,8]:Pointer, [-1,56,8,0]:Integer, [-1,56,8,1]:Integer, [-1,56,8,2]:Integer, [-1,56,8,3]:Integer, [-1,56,8,4]:Integer, [-1,56,8,5]:Integer, [-1,56,8,6]:Integer, [-1,56,8,7]:Integer, [-1,56,8,8]:Pointer, [-1,56,8,8,-1]:Float@double, [-1,56,16]:Integer, [-1,56,17]:Integer, [-1,56,18]:Integer, [-1,56,19]:Integer, [-1,56,20]:Integer, [-1,56,21]:Integer, [-1,56,22]:Integer, [-1,56,23]:Integer, [-1,64]:Pointer, [-1,64,0]:Pointer, [-1,64,0,-1]:Float@double, [-1,64,8]:Pointer, [-1,64,8,0]:Integer, [-1,64,8,1]:Integer, [-1,64,8,2]:Integer, [-1,64,8,3]:Integer, [-1,64,8,4]:Integer, [-1,64,8,5]:Integer, [-1,64,8,6]:Integer, [-1,64,8,7]:Integer, [-1,64,8,8]:Pointer, [-1,64,8,8,-1]:Float@double, [-1,64,16]:Integer, [-1,64,17]:Integer, [-1,64,18]:Integer, [-1,64,19]:Integer, [-1,64,20]:Integer, [-1,64,21]:Integer, [-1,64,22]:Integer, [-1,64,23]:Integer, [-1,72]:Pointer, [-1,72,0]:Pointer, [-1,72,0,-1]:Float@double, [-1,72,8]:Pointer, [-1,72,8,0]:Integer, [-1,72,8,1]:Integer, [-1,72,8,2]:Integer, [-1,72,8,3]:Integer, [-1,72,8,4]:Integer, [-1,72,8,5]:Integer, [-1,72,8,6]:Integer, [-1,72,8,7]:Integer, [-1,72,8,8]:Pointer, [-1,72,8,8,-1]:Float@double, [-1,72,16]:Integer, [-1,72,17]:Integer, [-1,72,18]:Integer, [-1,72,19]:Integer, [-1,72,20]:Integer, [-1,72,21]:Integer, [-1,72,22]:Integer, [-1,72,23]:Integer, [-1,80]:Pointer, [-1,80,0]:Pointer, [-1,80,0,-1]:Float@double, [-1,80,8]:Pointer, [-1,80,8,0]:Integer, [-1,80,8,1]:Integer, [-1,80,8,2]:Integer, [-1,80,8,3]:Integer, [-1,80,8,4]:Integer, [-1,80,8,5]:Integer, [-1,80,8,6]:Integer, [-1,80,8,7]:Integer, [-1,80,8,8]:Pointer, [-1,80,8,8,-1]:Float@double, [-1,80,16]:Integer, [-1,80,17]:Integer, [-1,80,18]:Integer, [-1,80,19]:Integer, [-1,80,20]:Integer, [-1,80,21]:Integer, [-1,80,22]:Integer, [-1,80,23]:Integer, [-1,88]:Pointer, [-1,88,0]:Pointer, [-1,88,0,-1]:Float@double, [-1,88,8]:Pointer, [-1,88,8,0]:Integer, [-1,88,8,1]:Integer, [-1,88,8,2]:Integer, [-1,88,8,3]:Integer, [-1,88,8,4]:Integer, [-1,88,8,5]:Integer, [-1,88,8,6]:Integer, [-1,88,8,7]:Integer, [-1,88,8,8]:Pointer, [-1,88,8,8,-1]:Float@double, [-1,88,16]:Integer, [-1,88,17]:Integer, [-1,88,18]:Integer, [-1,88,19]:Integer, [-1,88,20]:Integer, [-1,88,21]:Integer, [-1,88,22]:Integer, [-1,88,23]:Integer}" "enzymejl_parmtype"="14338096016" "enzymejl_parmtype_ref"="1" %1) unnamed_addr #321 !dbg !39578 { top: %2 = call noalias nonnull dereferenceable(8) dereferenceable_or_null(8) i8* @malloc(i64 8), !enzyme_fromstack !304 %3 = bitcast i8* %2 to [1 x i64]*, !enzyme_caststack !0 %4 = call noalias nonnull dereferenceable(8) dereferenceable_or_null(8) i8* @malloc(i64 8), !enzyme_fromstack !304 %5 = bitcast i8* %4 to [1 x i64]*, !enzyme_caststack !0 %6 = call noalias nonnull dereferenceable(8) dereferenceable_or_null(8) i8* @malloc(i64 8), !enzyme_fromstack !304 %7 = bitcast i8* %6 to [1 x i64]*, !enzyme_caststack !0 %8 = call noalias nonnull dereferenceable(8) dereferenceable_or_null(8) i8* @malloc(i64 8), !enzyme_fromstack !304 %9 = bitcast i8* %8 to [1 x i64]*, !enzyme_caststack !0 %10 = call noalias nonnull dereferenceable(8) dereferenceable_or_null(8) i8* @malloc(i64 8), !enzyme_fromstack !304 %11 = bitcast i8* %10 to [1 x i64]*, !enzyme_caststack !0 %12 = call noalias nonnull dereferenceable(8) dereferenceable_or_null(8) i8* @malloc(i64 8), !enzyme_fromstack !304 %13 = bitcast i8* %12 to [1 x i64]*, !enzyme_caststack !0 %14 = call noalias nonnull dereferenceable(8) dereferenceable_or_null(8) i8* @malloc(i64 8), !enzyme_fromstack !304 %15 = bitcast i8* %14 to [1 x i64]*, !enzyme_caststack !0 %pgcstack = call {}*** @julia.get_pgcstack() #322 %ptls_field42 = getelementptr inbounds {}**, {}*** %pgcstack, i64 2 %16 = bitcast {}*** %ptls_field42 to i64*** %ptls_load4344 = load i64**, i64*** %16, align 8, !tbaa !223 %17 = getelementptr inbounds i64*, i64** %ptls_load4344, i64 2 %safepoint = load i64*, i64** %17, align 8, !tbaa !227 fence syncscope("singlethread") seq_cst call void @julia.safepoint(i64* %safepoint) #322, !dbg !39579 fence syncscope("singlethread") seq_cst %18 = bitcast {} addrspace(10)* %0 to i8 addrspace(10)*, !dbg !39580 %19 = addrspacecast i8 addrspace(10)* %18 to i8 addrspace(11)*, !dbg !39580 %20 = getelementptr inbounds i8, i8 addrspace(11)* %19, i64 552, !dbg !39580 %21 = bitcast i8 addrspace(11)* %20 to i64 addrspace(11)*, !dbg !39580 store i64 7, i64 addrspace(11)* %21, align 8, !dbg !39580, !tbaa !254, !alias.scope !244, !noalias !39582 %22 = getelementptr inbounds i8, i8 addrspace(11)* %19, i64 248, !dbg !39585 %23 = bitcast i8 addrspace(11)* %22 to {} addrspace(10)* addrspace(11)*, !dbg !39585 %24 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %23 unordered, align 8, !dbg !39585, !tbaa !254, !alias.scope !244, !noalias !309, !nonnull !0, !dereferenceable !782, !align !304, !enzyme_type !256 call fastcc void @julia_resize__105645({} addrspace(10)* noundef nonnull align 8 dereferenceable(24) %24, i64 noundef signext 7) #322, !dbg !39586 %25 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %1, i64 0, i32 2, !dbg !39587 %26 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %25 unordered, align 8, !dbg !39587, !tbaa !227, !alias.scope !230, !noalias !233, !nonnull !0, !dereferenceable !782, !align !304, !enzyme_type !786, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Vector\7BFloat64\7D !0 %27 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %23 unordered, align 8, !dbg !39589, !tbaa !254, !alias.scope !244, !noalias !309, !nonnull !0, !dereferenceable !782, !align !304, !enzyme_type !256 %28 = bitcast {} addrspace(10)* %27 to i8 addrspace(10)*, !dbg !39590 %29 = addrspacecast i8 addrspace(10)* %28 to i8 addrspace(11)*, !dbg !39590 %30 = getelementptr inbounds i8, i8 addrspace(11)* %29, i64 16, !dbg !39590 %31 = bitcast i8 addrspace(11)* %30 to i64 addrspace(11)*, !dbg !39590 %32 = load i64, i64 addrspace(11)* %31, align 8, !dbg !39590, !tbaa !289, !alias.scope !292, !noalias !293 %.not = icmp eq i64 %32, 0, !dbg !39592 br i1 %.not, label %L18, label %L21, !dbg !39591 L18: ; preds = %top %33 = getelementptr inbounds [1 x i64], [1 x i64]* %15, i64 0, i64 0, !dbg !39591 store i64 1, i64* %33, align 8, !dbg !39591, !tbaa !798, !alias.scope !800, !noalias !39593 %34 = addrspacecast [1 x i64]* %15 to [1 x i64] addrspace(11)*, !dbg !39591 call fastcc void @julia_throw_boundserror_105632({} addrspace(10)* noundef nonnull align 8 dereferenceable(24) %27, [1 x i64] addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(8) %34) #323, !dbg !39591 unreachable, !dbg !39591 L21: ; preds = %top %35 = bitcast {} addrspace(10)* %27 to { {} addrspace(10)**, {} addrspace(10)* } addrspace(10)*, !dbg !39594 %36 = addrspacecast { {} addrspace(10)**, {} addrspace(10)* } addrspace(10)* %35 to { {} addrspace(10)**, {} addrspace(10)* } addrspace(11)*, !dbg !39594 %37 = bitcast {} addrspace(10)* %27 to {} addrspace(10)** addrspace(10)*, !dbg !39594 %38 = addrspacecast {} addrspace(10)** addrspace(10)* %37 to {} addrspace(10)** addrspace(11)*, !dbg !39594 %39 = load {} addrspace(10)**, {} addrspace(10)** addrspace(11)* %38, align 8, !dbg !39594, !tbaa !299, !alias.scope !292, !noalias !293, !enzyme_nocache !0 %40 = getelementptr inbounds { {} addrspace(10)**, {} addrspace(10)* }, { {} addrspace(10)**, {} addrspace(10)* } addrspace(11)* %36, i64 0, i32 1, !dbg !39594 %41 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %40, align 8, !dbg !39594, !tbaa !299, !alias.scope !292, !noalias !293, !dereferenceable_or_null !303, !align !304, !enzyme_type !256 %42 = call align 8 {} addrspace(10)* addrspace(13)* @julia.gc_loaded({} addrspace(10)* %41, {} addrspace(10)** %39) #322, !dbg !39595 %43 = bitcast {} addrspace(10)* %41 to { i64, {} addrspace(10)** } addrspace(10)*, !dbg !39595 %44 = addrspacecast { i64, {} addrspace(10)** } addrspace(10)* %43 to { i64, {} addrspace(10)** } addrspace(11)*, !dbg !39595 %45 = getelementptr inbounds { i64, {} addrspace(10)** }, { i64, {} addrspace(10)** } addrspace(11)* %44, i64 0, i32 1, !dbg !39595 %46 = load {} addrspace(10)**, {} addrspace(10)** addrspace(11)* %45, align 8, !dbg !39595, !tbaa !804, !alias.scope !292, !noalias !293, !nonnull !0 %47 = bitcast {} addrspace(10)* %41 to {} addrspace(10)* addrspace(10)*, !dbg !39595 %48 = addrspacecast {} addrspace(10)* addrspace(10)* %47 to {} addrspace(10)* addrspace(11)*, !dbg !39595 %49 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %48, i64 2, !dbg !39595 %50 = addrspacecast {} addrspace(10)** %46 to {} addrspace(10)* addrspace(11)*, !dbg !39595 %.not45 = icmp eq {} addrspace(10)* addrspace(11)* %49, %50, !dbg !39595 br i1 %.not45, label %guard_exit, label %guard_pass, !dbg !39595 L38: ; preds = %guard_exit %51 = getelementptr inbounds [1 x i64], [1 x i64]* %11, i64 0, i64 0, !dbg !39596 store i64 2, i64* %51, align 8, !dbg !39596, !tbaa !798, !alias.scope !800, !noalias !39593 %52 = addrspacecast [1 x i64]* %11 to [1 x i64] addrspace(11)*, !dbg !39596 call fastcc void @julia_throw_boundserror_105632({} addrspace(10)* noundef nonnull align 8 dereferenceable(24) %27, [1 x i64] addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(8) %52) #323, !dbg !39596 unreachable, !dbg !39596 L41: ; preds = %guard_exit %53 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %42, i64 1, !dbg !39598 br i1 %.not45, label %guard_exit3, label %guard_pass2, !dbg !39598 L58: ; preds = %guard_exit3 %54 = getelementptr inbounds [1 x i64], [1 x i64]* %7, i64 0, i64 0, !dbg !39599 store i64 3, i64* %54, align 8, !dbg !39599, !tbaa !798, !alias.scope !800, !noalias !39593 %55 = addrspacecast [1 x i64]* %7 to [1 x i64] addrspace(11)*, !dbg !39599 call fastcc void @julia_throw_boundserror_105632({} addrspace(10)* noundef nonnull align 8 dereferenceable(24) %27, [1 x i64] addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(8) %55) #323, !dbg !39599 unreachable, !dbg !39599 L61: ; preds = %guard_exit3 %56 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %42, i64 2, !dbg !39601 br i1 %.not45, label %guard_exit5, label %guard_pass4, !dbg !39601 L78: ; preds = %guard_exit5 %57 = getelementptr inbounds [1 x i64], [1 x i64]* %3, i64 0, i64 0, !dbg !39602 store i64 4, i64* %57, align 8, !dbg !39602, !tbaa !798, !alias.scope !800, !noalias !39593 %58 = addrspacecast [1 x i64]* %3 to [1 x i64] addrspace(11)*, !dbg !39602 call fastcc void @julia_throw_boundserror_105632({} addrspace(10)* noundef nonnull align 8 dereferenceable(24) %27, [1 x i64] addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(8) %58) #323, !dbg !39602 unreachable, !dbg !39602 L81: ; preds = %guard_exit5 %59 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %42, i64 3, !dbg !39604 br i1 %.not45, label %guard_exit7, label %guard_pass6, !dbg !39604 L98: ; preds = %guard_exit7 %60 = getelementptr inbounds [1 x i64], [1 x i64]* %5, i64 0, i64 0, !dbg !39605 store i64 5, i64* %60, align 8, !dbg !39605, !tbaa !798, !alias.scope !800, !noalias !39593 %61 = addrspacecast [1 x i64]* %5 to [1 x i64] addrspace(11)*, !dbg !39605 call fastcc void @julia_throw_boundserror_105632({} addrspace(10)* noundef nonnull align 8 dereferenceable(24) %27, [1 x i64] addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(8) %61) #323, !dbg !39605 unreachable, !dbg !39605 L101: ; preds = %guard_exit7 %62 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %42, i64 4, !dbg !39607 br i1 %.not45, label %guard_exit9, label %guard_pass8, !dbg !39607 L118: ; preds = %guard_exit9 %63 = getelementptr inbounds [1 x i64], [1 x i64]* %9, i64 0, i64 0, !dbg !39608 store i64 6, i64* %63, align 8, !dbg !39608, !tbaa !798, !alias.scope !800, !noalias !39593 %64 = addrspacecast [1 x i64]* %9 to [1 x i64] addrspace(11)*, !dbg !39608 call fastcc void @julia_throw_boundserror_105632({} addrspace(10)* noundef nonnull align 8 dereferenceable(24) %27, [1 x i64] addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(8) %64) #323, !dbg !39608 unreachable, !dbg !39608 L121: ; preds = %guard_exit9 %65 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %42, i64 5, !dbg !39610 br i1 %.not45, label %guard_exit11, label %guard_pass10, !dbg !39610 L138: ; preds = %guard_exit11 %66 = getelementptr inbounds [1 x i64], [1 x i64]* %13, i64 0, i64 0, !dbg !39611 store i64 7, i64* %66, align 8, !dbg !39611, !tbaa !798, !alias.scope !800, !noalias !39593 %67 = addrspacecast [1 x i64]* %13 to [1 x i64] addrspace(11)*, !dbg !39611 call fastcc void @julia_throw_boundserror_105632({} addrspace(10)* noundef nonnull align 8 dereferenceable(24) %27, [1 x i64] addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(8) %67) #323, !dbg !39611 unreachable, !dbg !39611 L141: ; preds = %guard_exit11 %68 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %42, i64 6, !dbg !39613 br i1 %.not45, label %guard_exit13, label %guard_pass12, !dbg !39613 L165: ; preds = %guard_exit13 %69 = call fastcc i64 @julia_reinit_wrapper_105687({} addrspace(10)* noundef nonnull align 8 dereferenceable(32) %.unpack.unpack) #322, !dbg !39614 br label %L166, !dbg !39614 L166: ; preds = %guard_exit13, %L165 %value_phi = phi i64 [ %69, %L165 ], [ %145, %guard_exit13 ] %.not54 = icmp eq i64 %value_phi, 0, !dbg !39621 br i1 %.not54, label %fail, label %pass, !dbg !39621 guard_pass: ; preds = %L21 %70 = getelementptr inbounds { i64, {} addrspace(10)** }, { i64, {} addrspace(10)** } addrspace(11)* %44, i64 1, !dbg !39595 %71 = bitcast { i64, {} addrspace(10)** } addrspace(11)* %70 to {} addrspace(10)* addrspace(11)*, !dbg !39595 %72 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %71, align 8, !dbg !39595, !tbaa !227, !alias.scope !230, !noalias !233, !enzyme_type !256 %73 = icmp eq {} addrspace(10)* %72, null, !dbg !39595 %74 = select i1 %73, {} addrspace(10)* %41, {} addrspace(10)* %72, !dbg !39595 br label %guard_exit, !dbg !39595 guard_exit: ; preds = %guard_pass, %L21 %75 = phi {} addrspace(10)* [ %41, %L21 ], [ %74, %guard_pass ], !dbg !39595 store atomic {} addrspace(10)* %26, {} addrspace(10)* addrspace(13)* %42 release, align 8, !dbg !39595, !tbaa !307, !alias.scope !244, !noalias !39582 call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %75, {} addrspace(10)* nonnull %26) #324, !dbg !39595 %76 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %1, i64 0, i32 3, !dbg !39622 %77 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %76 unordered, align 8, !dbg !39622, !tbaa !227, !alias.scope !230, !noalias !233, !nonnull !0, !dereferenceable !782, !align !304, !enzyme_type !786, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Vector\7BFloat64\7D !0 %78 = icmp ult i64 %32, 2, !dbg !39623 br i1 %78, label %L38, label %L41, !dbg !39596 guard_pass2: ; preds = %L41 %79 = getelementptr inbounds { i64, {} addrspace(10)** }, { i64, {} addrspace(10)** } addrspace(11)* %44, i64 1, !dbg !39598 %80 = bitcast { i64, {} addrspace(10)** } addrspace(11)* %79 to {} addrspace(10)* addrspace(11)*, !dbg !39598 %81 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %80, align 8, !dbg !39598, !tbaa !227, !alias.scope !230, !noalias !233, !enzyme_type !256 %82 = icmp eq {} addrspace(10)* %81, null, !dbg !39598 %83 = select i1 %82, {} addrspace(10)* %41, {} addrspace(10)* %81, !dbg !39598 br label %guard_exit3, !dbg !39598 guard_exit3: ; preds = %guard_pass2, %L41 %84 = phi {} addrspace(10)* [ %41, %L41 ], [ %83, %guard_pass2 ], !dbg !39598 store atomic {} addrspace(10)* %77, {} addrspace(10)* addrspace(13)* %53 release, align 8, !dbg !39598, !tbaa !307, !alias.scope !244, !noalias !39582 call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %84, {} addrspace(10)* nonnull %77) #324, !dbg !39598 %85 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %1, i64 0, i32 4, !dbg !39624 %86 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %85 unordered, align 8, !dbg !39624, !tbaa !227, !alias.scope !230, !noalias !233, !nonnull !0, !dereferenceable !782, !align !304, !enzyme_type !786, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Vector\7BFloat64\7D !0 %87 = icmp ult i64 %32, 3, !dbg !39625 br i1 %87, label %L58, label %L61, !dbg !39599 guard_pass4: ; preds = %L61 %88 = getelementptr inbounds { i64, {} addrspace(10)** }, { i64, {} addrspace(10)** } addrspace(11)* %44, i64 1, !dbg !39601 %89 = bitcast { i64, {} addrspace(10)** } addrspace(11)* %88 to {} addrspace(10)* addrspace(11)*, !dbg !39601 %90 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %89, align 8, !dbg !39601, !tbaa !227, !alias.scope !230, !noalias !233, !enzyme_type !256 %91 = icmp eq {} addrspace(10)* %90, null, !dbg !39601 %92 = select i1 %91, {} addrspace(10)* %41, {} addrspace(10)* %90, !dbg !39601 br label %guard_exit5, !dbg !39601 guard_exit5: ; preds = %guard_pass4, %L61 %93 = phi {} addrspace(10)* [ %41, %L61 ], [ %92, %guard_pass4 ], !dbg !39601 store atomic {} addrspace(10)* %86, {} addrspace(10)* addrspace(13)* %56 release, align 8, !dbg !39601, !tbaa !307, !alias.scope !244, !noalias !39582 call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %93, {} addrspace(10)* nonnull %86) #324, !dbg !39601 %94 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %1, i64 0, i32 5, !dbg !39626 %95 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %94 unordered, align 8, !dbg !39626, !tbaa !227, !alias.scope !230, !noalias !233, !nonnull !0, !dereferenceable !782, !align !304, !enzyme_type !786, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Vector\7BFloat64\7D !0 %96 = icmp ult i64 %32, 4, !dbg !39627 br i1 %96, label %L78, label %L81, !dbg !39602 guard_pass6: ; preds = %L81 %97 = getelementptr inbounds { i64, {} addrspace(10)** }, { i64, {} addrspace(10)** } addrspace(11)* %44, i64 1, !dbg !39604 %98 = bitcast { i64, {} addrspace(10)** } addrspace(11)* %97 to {} addrspace(10)* addrspace(11)*, !dbg !39604 %99 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %98, align 8, !dbg !39604, !tbaa !227, !alias.scope !230, !noalias !233, !enzyme_type !256 %100 = icmp eq {} addrspace(10)* %99, null, !dbg !39604 %101 = select i1 %100, {} addrspace(10)* %41, {} addrspace(10)* %99, !dbg !39604 br label %guard_exit7, !dbg !39604 guard_exit7: ; preds = %guard_pass6, %L81 %102 = phi {} addrspace(10)* [ %41, %L81 ], [ %101, %guard_pass6 ], !dbg !39604 store atomic {} addrspace(10)* %95, {} addrspace(10)* addrspace(13)* %59 release, align 8, !dbg !39604, !tbaa !307, !alias.scope !244, !noalias !39582 call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %102, {} addrspace(10)* nonnull %95) #324, !dbg !39604 %103 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %1, i64 0, i32 6, !dbg !39628 %104 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %103 unordered, align 8, !dbg !39628, !tbaa !227, !alias.scope !230, !noalias !233, !nonnull !0, !dereferenceable !782, !align !304, !enzyme_type !786, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Vector\7BFloat64\7D !0 %105 = icmp ult i64 %32, 5, !dbg !39629 br i1 %105, label %L98, label %L101, !dbg !39605 guard_pass8: ; preds = %L101 %106 = getelementptr inbounds { i64, {} addrspace(10)** }, { i64, {} addrspace(10)** } addrspace(11)* %44, i64 1, !dbg !39607 %107 = bitcast { i64, {} addrspace(10)** } addrspace(11)* %106 to {} addrspace(10)* addrspace(11)*, !dbg !39607 %108 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %107, align 8, !dbg !39607, !tbaa !227, !alias.scope !230, !noalias !233, !enzyme_type !256 %109 = icmp eq {} addrspace(10)* %108, null, !dbg !39607 %110 = select i1 %109, {} addrspace(10)* %41, {} addrspace(10)* %108, !dbg !39607 br label %guard_exit9, !dbg !39607 guard_exit9: ; preds = %guard_pass8, %L101 %111 = phi {} addrspace(10)* [ %41, %L101 ], [ %110, %guard_pass8 ], !dbg !39607 store atomic {} addrspace(10)* %104, {} addrspace(10)* addrspace(13)* %62 release, align 8, !dbg !39607, !tbaa !307, !alias.scope !244, !noalias !39582 call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %111, {} addrspace(10)* nonnull %104) #324, !dbg !39607 %112 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %1, i64 0, i32 7, !dbg !39630 %113 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %112 unordered, align 8, !dbg !39630, !tbaa !227, !alias.scope !230, !noalias !233, !nonnull !0, !dereferenceable !782, !align !304, !enzyme_type !786, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Vector\7BFloat64\7D !0 %114 = icmp ult i64 %32, 6, !dbg !39631 br i1 %114, label %L118, label %L121, !dbg !39608 guard_pass10: ; preds = %L121 %115 = getelementptr inbounds { i64, {} addrspace(10)** }, { i64, {} addrspace(10)** } addrspace(11)* %44, i64 1, !dbg !39610 %116 = bitcast { i64, {} addrspace(10)** } addrspace(11)* %115 to {} addrspace(10)* addrspace(11)*, !dbg !39610 %117 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %116, align 8, !dbg !39610, !tbaa !227, !alias.scope !230, !noalias !233, !enzyme_type !256 %118 = icmp eq {} addrspace(10)* %117, null, !dbg !39610 %119 = select i1 %118, {} addrspace(10)* %41, {} addrspace(10)* %117, !dbg !39610 br label %guard_exit11, !dbg !39610 guard_exit11: ; preds = %guard_pass10, %L121 %120 = phi {} addrspace(10)* [ %41, %L121 ], [ %119, %guard_pass10 ], !dbg !39610 store atomic {} addrspace(10)* %113, {} addrspace(10)* addrspace(13)* %65 release, align 8, !dbg !39610, !tbaa !307, !alias.scope !244, !noalias !39582 call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %120, {} addrspace(10)* nonnull %113) #324, !dbg !39610 %121 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %1, i64 0, i32 8, !dbg !39632 %122 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %121 unordered, align 8, !dbg !39632, !tbaa !227, !alias.scope !230, !noalias !233, !nonnull !0, !dereferenceable !782, !align !304, !enzyme_type !786, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Vector\7BFloat64\7D !0 %123 = icmp ult i64 %32, 7, !dbg !39633 br i1 %123, label %L138, label %L141, !dbg !39611 guard_pass12: ; preds = %L141 %124 = getelementptr inbounds { i64, {} addrspace(10)** }, { i64, {} addrspace(10)** } addrspace(11)* %44, i64 1, !dbg !39613 %125 = bitcast { i64, {} addrspace(10)** } addrspace(11)* %124 to {} addrspace(10)* addrspace(11)*, !dbg !39613 %126 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %125, align 8, !dbg !39613, !tbaa !227, !alias.scope !230, !noalias !233, !enzyme_type !256 %127 = icmp eq {} addrspace(10)* %126, null, !dbg !39613 %128 = select i1 %127, {} addrspace(10)* %41, {} addrspace(10)* %126, !dbg !39613 br label %guard_exit13, !dbg !39613 guard_exit13: ; preds = %guard_pass12, %L141 %129 = phi {} addrspace(10)* [ %41, %L141 ], [ %128, %guard_pass12 ], !dbg !39613 store atomic {} addrspace(10)* %122, {} addrspace(10)* addrspace(13)* %68 release, align 8, !dbg !39613, !tbaa !307, !alias.scope !244, !noalias !39582 call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %129, {} addrspace(10)* nonnull %122) #324, !dbg !39613 %130 = getelementptr inbounds i8, i8 addrspace(11)* %19, i64 272, !dbg !39634 %.unpack.elt = bitcast i8 addrspace(11)* %130 to {} addrspace(10)* addrspace(11)*, !dbg !39634 %.unpack.unpack = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %.unpack.elt, align 8, !dbg !39634, !tbaa !254, !alias.scope !244, !noalias !309, !enzyme_type !854, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_FunctionWrappers.FunctionWrapper\7BNothing\2C\20Tuple\7BVector\7BFloat64\7D\2C\20Vector\7BFloat64\7D\2C\20Vector\7BFloat64\7D\2C\20Float64\7D\7D !0 %131 = getelementptr inbounds i8, i8 addrspace(11)* %19, i64 616, !dbg !39634 %132 = bitcast i8 addrspace(11)* %131 to {} addrspace(10)* addrspace(11)*, !dbg !39634 %133 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %132 unordered, align 8, !dbg !39634, !tbaa !254, !alias.scope !244, !noalias !309, !nonnull !0, !dereferenceable !782, !align !304, !enzyme_type !256 %134 = getelementptr inbounds i8, i8 addrspace(11)* %19, i64 320, !dbg !39634 %135 = bitcast i8 addrspace(11)* %134 to {} addrspace(10)* addrspace(11)*, !dbg !39634 %136 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %135 unordered, align 8, !dbg !39634, !tbaa !254, !alias.scope !244, !noalias !309, !nonnull !0, !dereferenceable !782, !align !304, !enzyme_type !786, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Vector\7BFloat64\7D !0 %137 = getelementptr inbounds i8, i8 addrspace(11)* %19, i64 312, !dbg !39634 %138 = bitcast i8 addrspace(11)* %137 to {} addrspace(10)* addrspace(11)*, !dbg !39634 %139 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %138 unordered, align 8, !dbg !39634, !tbaa !254, !alias.scope !244, !noalias !309, !nonnull !0, !dereferenceable !782, !align !304, !enzyme_type !786, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Vector\7BFloat64\7D !0 %140 = getelementptr inbounds i8, i8 addrspace(11)* %19, i64 256, !dbg !39634 %141 = bitcast i8 addrspace(11)* %140 to double addrspace(11)*, !dbg !39634 %142 = load double, double addrspace(11)* %141, align 8, !dbg !39634, !tbaa !254, !alias.scope !244, !noalias !309, !enzyme_type !856, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Float64 !0 %143 = bitcast {} addrspace(10)* %.unpack.unpack to i64 addrspace(10)*, !dbg !39635 %144 = addrspacecast i64 addrspace(10)* %143 to i64 addrspace(11)*, !dbg !39635 %145 = load i64, i64 addrspace(11)* %144, align 8, !dbg !39635, !tbaa !254, !alias.scope !244, !noalias !309, !enzyme_type !256, !enzyme_inactive !0, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BNothing\7D !0 %.not53 = icmp eq i64 %145, 0, !dbg !39637 br i1 %.not53, label %L165, label %L166, !dbg !39639 fail: ; preds = %L166 %146 = load {}*, {}** @jl_undefref_exception, align 8, !dbg !39621, !tbaa !227, !alias.scope !230, !noalias !233, !nonnull !0 %147 = addrspacecast {}* %146 to {} addrspace(12)*, !dbg !39621 call void @ijl_throw({} addrspace(12)* %147) #322, !dbg !39621 unreachable, !dbg !39621 pass: ; preds = %L166 %148 = bitcast {} addrspace(10)* %.unpack.unpack to i8 addrspace(10)*, !dbg !39640 %149 = addrspacecast i8 addrspace(10)* %148 to i8 addrspace(11)*, !dbg !39640 %150 = getelementptr inbounds i8, i8 addrspace(11)* %149, i64 8, !dbg !39640 %151 = bitcast i8 addrspace(11)* %150 to i64 addrspace(11)*, !dbg !39640 %152 = load i64, i64 addrspace(11)* %151, align 8, !dbg !39640, !tbaa !254, !alias.scope !244, !noalias !309, !enzyme_type !256, !enzyme_inactive !0, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BNothing\7D !0 %153 = inttoptr i64 %value_phi to void (i64, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, double)*, !dbg !39621 call void %153(i64 %152, {} addrspace(10)* nonnull %133, {} addrspace(10)* nonnull %136, {} addrspace(10)* nonnull %139, double %142) #322 [ "jl_roots"({} addrspace(10)* %139, {} addrspace(10)* %136, {} addrspace(10)* %133) ], !dbg !39621 %154 = getelementptr inbounds i8, i8 addrspace(11)* %19, i64 608, !dbg !39642 %155 = bitcast i8 addrspace(11)* %154 to i64 addrspace(10)* addrspace(11)*, !dbg !39642 %156 = load atomic i64 addrspace(10)*, i64 addrspace(10)* addrspace(11)* %155 unordered, align 8, !dbg !39642, !tbaa !254, !alias.scope !244, !noalias !309, !nonnull !0, !dereferenceable !868, !align !304, !enzyme_type !869, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_SciMLBase.DEStats !0 %157 = addrspacecast i64 addrspace(10)* %156 to i64 addrspace(11)*, !dbg !39644 %158 = load i64, i64 addrspace(11)* %157, align 8, !dbg !39644, !tbaa !254, !alias.scope !244, !noalias !309, !enzyme_type !238, !enzyme_inactive !0, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0 %159 = add i64 %158, 1, !dbg !39646 store i64 %159, i64 addrspace(11)* %157, align 8, !dbg !39647, !tbaa !254, !alias.scope !244, !noalias !39582 ret void, !dbg !39648 } No create nofree of unknown value %value_phi = phi i64 [ %63, %L165 ], [ %146, %guard_exit13 ] - %63 = extractvalue { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, i64 } %_augmented40, 1, !dbg !345 - %146 = load i64, i64 addrspace(11)* %145, align 8, !dbg !391, !tbaa !244, !alias.scope !393, !noalias !396, !enzyme_type !271, !enzyme_inactive !0, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BNothing\7D !0 at context: call void %153(i64 %152, {} addrspace(10)* nonnull %133, {} addrspace(10)* nonnull %136, {} addrspace(10)* nonnull %139, double %142) #322 [ "jl_roots"({} addrspace(10)* %139, {} addrspace(10)* %136, {} addrspace(10)* %133) ], !dbg !328 within func fakeaugmented_julia_initialize__106964 (fakeaugmented_julia_initialize__106964) Stacktrace: [1] macro expansion @ ~/.julia/packages/FunctionWrappers/Q5cBx/src/FunctionWrappers.jl:137 [2] do_ccall @ ~/.julia/packages/FunctionWrappers/Q5cBx/src/FunctionWrappers.jl:125 [3] FunctionWrapper @ ~/.julia/packages/FunctionWrappers/Q5cBx/src/FunctionWrappers.jl:144 [4] _call @ ~/.julia/packages/FunctionWrappersWrappers/9XR0m/src/FunctionWrappersWrappers.jl:12 [5] FunctionWrappersWrapper @ ~/.julia/packages/FunctionWrappersWrappers/9XR0m/src/FunctionWrappersWrappers.jl:10 [6] ODEFunction @ ~/.julia/packages/SciMLBase/gwbNe/src/scimlfunctions.jl:2580 [7] initialize! @ ~/.julia/packages/OrdinaryDiffEqTsit5/DHYtz/src/tsit_perform_step.jl:175 Stacktrace: [1] macro expansion @ ~/.julia/packages/FunctionWrappers/Q5cBx/src/FunctionWrappers.jl:137 [inlined] [2] do_ccall @ ~/.julia/packages/FunctionWrappers/Q5cBx/src/FunctionWrappers.jl:125 [inlined] [3] FunctionWrapper @ ~/.julia/packages/FunctionWrappers/Q5cBx/src/FunctionWrappers.jl:144 [inlined] [4] _call @ ~/.julia/packages/FunctionWrappersWrappers/9XR0m/src/FunctionWrappersWrappers.jl:12 [inlined] [5] FunctionWrappersWrapper @ ~/.julia/packages/FunctionWrappersWrappers/9XR0m/src/FunctionWrappersWrappers.jl:10 [inlined] [6] ODEFunction @ ~/.julia/packages/SciMLBase/gwbNe/src/scimlfunctions.jl:2580 [inlined] [7] initialize! @ ~/.julia/packages/OrdinaryDiffEqTsit5/DHYtz/src/tsit_perform_step.jl:175 [8] #__init#63 @ ~/.julia/packages/OrdinaryDiffEqCore/AYNr9/src/solve.jl:587 [9] solve! @ ~/.julia/packages/OrdinaryDiffEqCore/AYNr9/src/solve.jl:626 [10] solve_call @ ~/.julia/dev/DiffEqBase/src/solve.jl:627 [inlined] [11] solve_call @ ~/.julia/dev/DiffEqBase/src/solve.jl:0 [inlined] [12] augmented_julia_solve_call_105473_inner_191wrap @ ~/.julia/dev/DiffEqBase/src/solve.jl:0 [13] macro expansion @ ~/.julia/packages/Enzyme/VsOlr/src/compiler.jl:5516 [inlined] [14] enzyme_call @ ~/.julia/packages/Enzyme/VsOlr/src/compiler.jl:5050 [inlined] [15] AugmentedForwardThunk @ ~/.julia/packages/Enzyme/VsOlr/src/compiler.jl:4989 [inlined] [16] macro expansion @ ~/.julia/packages/Enzyme/VsOlr/src/rules/jitrules.jl:447 [inlined] [17] runtime_generic_augfwd(::Type{…}, ::Val{…}, ::Val{…}, ::Val{…}, ::Val{…}, ::Val{…}, ::typeof(Core.kwcall), ::Nothing, ::@NamedTuple{…}, ::Base.RefValue{…}, ::typeof(DiffEqBase.solve_call), ::Nothing, ::ODEProblem{…}, ::ODEProblem{…}, ::Tsit5{…}, ::Nothing) @ Enzyme.Compiler ~/.julia/packages/Enzyme/VsOlr/src/rules/jitrules.jl:574 [18] #solve_up#45 @ ~/.julia/dev/DiffEqBase/src/solve.jl:1224 [19] solve_up @ ~/.julia/dev/DiffEqBase/src/solve.jl:1201 [inlined] [20] #solve#43 @ ~/.julia/dev/DiffEqBase/src/solve.jl:1096 [21] solve @ ~/.julia/dev/DiffEqBase/src/solve.jl:1086 [inlined] [22] #452 @ ~/.julia/dev/SciMLSensitivity/src/concrete_solve.jl:1280 [inlined] [23] augmented_julia__452_333548_inner_1wrap @ ~/.julia/dev/SciMLSensitivity/src/concrete_solve.jl:0 [24] macro expansion @ ~/.julia/packages/Enzyme/VsOlr/src/compiler.jl:5516 [inlined] [25] enzyme_call(::Val{…}, ::Ptr{…}, ::Type{…}, ::Val{…}, ::Val{…}, ::Type{…}, ::Type{…}, ::Const{…}, ::Type{…}, ::Duplicated{…}, ::Duplicated{…}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/VsOlr/src/compiler.jl:5050 [26] (::Enzyme.Compiler.AugmentedForwardThunk{…})(::Const{…}, ::Duplicated{…}, ::Vararg{…}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/VsOlr/src/compiler.jl:4989 [27] _concrete_solve_adjoint(::ODEProblem{…}, ::Tsit5{…}, ::EnzymeAdjoint{…}, ::Vector{…}, ::Vector{…}, ::SciMLBase.ChainRulesOriginator; kwargs::@Kwargs{…}) @ SciMLSensitivity ~/.julia/dev/SciMLSensitivity/src/concrete_solve.jl:1291 [28] _concrete_solve_adjoint @ ~/.julia/dev/SciMLSensitivity/src/concrete_solve.jl:1263 [inlined] [29] #_solve_adjoint#67 @ ~/.julia/dev/DiffEqBase/src/solve.jl:1710 [inlined] [30] _solve_adjoint @ ~/.julia/dev/DiffEqBase/src/solve.jl:1683 [inlined] [31] #rrule#4 @ ~/.julia/dev/DiffEqBase/ext/DiffEqBaseChainRulesCoreExt.jl:28 [inlined] [32] rrule @ ~/.julia/dev/DiffEqBase/ext/DiffEqBaseChainRulesCoreExt.jl:24 [inlined] [33] rrule @ ~/.julia/packages/ChainRulesCore/XAgYn/src/rules.jl:144 [inlined] [34] chain_rrule_kw @ ~/.julia/packages/Zygote/55SqB/src/compiler/chainrules.jl:246 [inlined] [35] macro expansion …
f2195f8
to
36603cc
Compare
Failure on v1.10 seems to be an Enzyme issue with the update that was supposed to fix this. v1.11 seems to be fine though. |
The direct adjoint of Enzyme is working again:
However, the EnzymeAdjoint which should be doing the same thing is hitting some odd error message: enzymerror.txt