@@ -2,7 +2,7 @@ module LoopVectorization
2
2
3
3
using VectorizationBase, SIMDPirates, SLEEFPirates, MacroTools
4
4
using VectorizationBase: REGISTER_SIZE, extract_data, num_vector_load_expr
5
- using SIMDPirates: VECTOR_SYMBOLS
5
+ using SIMDPirates: VECTOR_SYMBOLS, evadd, evmul
6
6
using MacroTools: @capture , prewalk, postwalk
7
7
8
8
export vectorizable, @vectorize , @vvectorize
133
133
throw (" Type $Tsym is not supported." )
134
134
end
135
135
end
136
- @noinline function vectorize_body (N, T:: DataType , unroll_factor:: Int , n, body, vecdict = SLEEFPiratesDict, VType = SVec, gcpreserve:: Bool = true , mod = :LoopVectorization )
136
+ @noinline function vectorize_body (
137
+ N, :: Type{T} , unroll_factor:: Int , n:: Symbol , body:: Array{Any} ,
138
+ vecdict:: Dict{Symbol,Tuple{Symbol,Symbol}} = SLEEFPiratesDict,
139
+ @nospecialize (VType = SVec), gcpreserve:: Bool = true , mod = :LoopVectorization
140
+ ) where {T}
137
141
# unroll_factor == 1 || throw("Only unroll factor of 1 is currently supported. Was set to $unroll_factor.")
138
142
T_size = sizeof (T)
139
143
if isa (N, Integer)
295
299
pushfirst! (q. args, :($ gsym = $ mod. vbroadcast ($ V,one ($ T))))
296
300
end
297
301
end
298
- func = ((op == :* ) | (op == :/ )) ? :($ mod. vmul ) : :($ mod. vadd )
302
+ func = ((op == :* ) | (op == :/ )) ? :($ mod. evmul ) : :($ mod. evadd )
299
303
uf_new = unroll_factor
300
304
while uf_new > 1
301
305
uf_new, uf_prev = uf_new >> 1 , uf_new
0 commit comments