YaoCompiler.jl icon indicating copy to clipboard operation
YaoCompiler.jl copied to clipboard

fail to emit invoke on nightly

Open Roger-luo opened this issue 4 years ago • 1 comments

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

Roger-luo avatar Apr 28 '21 21:04 Roger-luo

So this looks like inference deciding that it can't resolve that call to a precise method instance.

vchuravy avatar Apr 28 '21 22:04 vchuravy