YaoCompiler.jl
YaoCompiler.jl copied to clipboard
fail to emit invoke on nightly
e.g
using Test
using YaoAPI
using MLStyle
using YaoLocations
using YaoCompiler
using GPUCompiler
using YaoCompiler.Intrinsics
using CompilerPluginTools
using YaoCompiler.Intrinsics: measure
struct DummyReg <: AbstractRegister{1} end
@device function where_is_my_invoke()
1 => X
end
op = where_is_my_invoke()
interp = YaoInterpreter()
ci, type = code_typed(Intrinsics.apply, (DummyReg, typeof(op)); interp)[1]
on 1.6
julia> ci, type = code_typed(Intrinsics.apply, (DummyReg, typeof(op)); interp)[1]
CodeInfo(
1 ─ %1 = invoke YaoCompiler.Intrinsics.apply(_2::DummyReg, $(QuoteNode(XGate))::YaoCompiler.Intrinsics.XGate, $(QuoteNode(Locations(1)))::Locations{Int64})::Const(nothing)
└── return %1
) => Nothing
on nightly
julia> ci, type = code_typed(Intrinsics.apply, (DummyReg, typeof(op)); interp)[1]
CodeInfo(
1 ─ %1 = YaoCompiler.Intrinsics.apply(#register#, $(QuoteNode(XGate)), $(QuoteNode(Locations(1))))::Nothing
└── return %1
) => Nothing
cc: @vchuravy @femtomc
So this looks like inference deciding that it can't resolve that call to a precise method instance.