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.