I’m try to look into the @avx
macro offered by LoopVectorization.jl, which replace the Base.materialize(!)
with the auther defined function.
I want to use the same design to make my own module to support macro like @par b .= f.(a)
to perform multithreads broadcast, then I found that the @view
macro will add a true &&
before the view call, leading to IR with Core.GotoNode
and Expr(:gotoifnot,true,...)
, while @views
don’t.
LoopVectorization.jl will throw a error when this happen.
It confuse me that the meaning of true &&
here. For macro I want, a replacement of Expr(::&&)
before Meta.lower()
is enough, but I still wonder why we need it.