@@ -303,20 +303,22 @@ function determine_eltype(ls::LoopSet)
303303 end
304304 promote_q
305305end
306- function determine_width (ls:: LoopSet , vectorized:: Symbol )
306+ function determine_width (
307+ ls:: LoopSet , vectorized:: Symbol
308+ )
307309 vloop = getloop (ls, vectorized)
308310 vwidth_q = Expr (:call , lv (:pick_vector_width_val ))
309311 if isstaticloop (vloop)
310312 push! (vwidth_q. args, Expr (:call , Expr (:curly , :Val , length (vloop))))
311313 end
312314 # push!(vwidth_q.args, ls.T)
313- # if length(ls.includedactualarrays) < 2
314- push! (vwidth_q. args, ls. T)
315- # else
316- # for array ∈ ls.includedactualarrays
317- # push!(vwidth_q.args, Expr(:call, :eltype, array))
318- # end
319- # end
315+ if length (ls. includedactualarrays) < 2
316+ push! (vwidth_q. args, ls. T)
317+ else
318+ for array ∈ ls. includedactualarrays
319+ push! (vwidth_q. args, Expr (:call , :eltype , array))
320+ end
321+ end
320322 vwidth_q
321323end
322324function init_remblock (unrolledloop:: Loop , u₁loop:: Symbol = unrolledloop. itersymbol)
@@ -358,10 +360,10 @@ function setup_preamble!(ls::LoopSet, us::UnrollSpecification)
358360 vectorized = order[vectorizedloopnum]
359361 # println("Setup preamble")
360362 W = ls. W; typeT = ls. T
361- if length (ls. includedarrays ) > 0
363+ if length (ls. includedactualarrays ) > 0
362364 push! (ls. preamble. args, Expr (:(= ), typeT, determine_eltype (ls)))
365+ push! (ls. preamble. args, Expr (:(= ), W, determine_width (ls, vectorized)))
363366 end
364- push! (ls. preamble. args, Expr (:(= ), W, determine_width (ls, vectorized)))
365367 lower_licm_constants! (ls)
366368 pushpreamble! (ls, definemask (getloop (ls, vectorized), W))# , u₁ > 1 && u₁loopnum == vectorizedloopnum))
367369 for op ∈ operations (ls)
0 commit comments