@@ -3,7 +3,7 @@ variable_name(op::Operation, ::Nothing) = mangledvar(op)
33variable_name (op:: Operation , suffix) = Symbol (mangledvar (op), suffix, :_ )
44
55struct TileDescription{T}
6- u:: Int
6+ u:: Int32
77 unrolled:: Symbol
88 tiled:: Symbol
99 suffix:: T
@@ -16,18 +16,18 @@ function parentind(ind::Symbol, op::Operation)
1616end
1717function symbolind (ind:: Symbol , op:: Operation , td:: TileDescription )
1818 id = parentind (ind, op)
19- id == - 1 && return Expr (:call , :- , ind, 1 )
19+ id == - 1 && return Expr (:call , :- , ind, one (Int32) )
2020 @unpack u, unrolled, tiled, suffix = td
2121 parent = parents (op)[id]
22- pvar = if loopdependencies (parent) ∈ tiled
22+ pvar = if tiled ∈ loopdependencies (parent)
2323 variable_name (parent, suffix)
2424 else
2525 mangledvar (parent)
2626 end
27- if loopdependencies (parent) ∈ unrolled
27+ if unrolled ∈ loopdependencies (parent)
2828 pvar = Symbol (pvar, u)
2929 end
30- Expr (:call , :- , pvar, 1 )
30+ Expr (:call , :- , pvar, one (Int32) )
3131end
3232function mem_offset (op:: Operation , td:: TileDescription )
3333 @assert accesses_memory (op) " Computing memory offset only makes sense for operations that access memory."
110110# Expr(:call, :+, q, incr)
111111# end
112112# end
113- function varassignname (var:: Symbol , u:: Int , isunrolled:: Bool )
113+ function varassignname (var:: Symbol , u:: Int32 , isunrolled:: Bool )
114114 isunrolled ? Symbol (var, u) : var
115115end
116116# name_mo only gets called when vectorized
@@ -158,7 +158,7 @@ function lower_load_scalar!(
158158 ptr = refname (op)
159159 isunrolled = unrolled ∈ loopdeps
160160 U = isunrolled ? U : 1
161- for u ∈ 0 : U- 1
161+ for u ∈ zero (Int32) : Base . unsafe_trunc (Int32, U- 1 )
162162 varname = varassignname (var, u, isunrolled)
163163 td = TileDescription (u, unrolled, tiled, suffix)
164164 push! (q. args, Expr (:(= ), varname, Expr (:call , lv (:load ), ptr, mem_offset_u (op, td))))
@@ -172,17 +172,17 @@ function lower_load_vectorized!(
172172 loopdeps = loopdependencies (op)
173173 @assert vectorized ∈ loopdeps
174174 if unrolled ∈ loopdeps
175- umin = 0
175+ umin = zero (Int32)
176176 U = U
177177 else
178- umin = - 1
178+ umin = - one (Int32)
179179 U = 0
180180 end
181181 # Urange = unrolled ∈ loopdeps ? 0:U-1 : 0
182182 var = variable_name (op, suffix)
183183 vecnotunrolled = vectorized != = unrolled
184184 if first (getindices (op)) === vectorized # vload
185- for u ∈ umin: U- 1
185+ for u ∈ umin: Base . unsafe_trunc (Int32, U- 1 )
186186 td = TileDescription (u, unrolled, tiled, suffix)
187187 pushvectorload! (q, op, var, td, U, W, mask, vecnotunrolled)
188188 end
@@ -191,7 +191,7 @@ function lower_load_vectorized!(
191191 ustrides = Expr (:call , lv (:vmul ), Expr (:call , :stride , refname (op), sn), Expr (:call , lv (:vrange ), W))
192192 ustride = gensym (:ustride )
193193 push! (q. args, Expr (:(= ), ustride, ustrides))
194- for u ∈ umin: U- 1
194+ for u ∈ umin: Base . unsafe_trunc (Int32, U- 1 )
195195 td = TileDescription (u, unrolled, tiled, suffix)
196196 pushvectorgather! (q, op, var, td, U, W, mask, ustride, vecnotunrolled)
197197 end
@@ -273,7 +273,7 @@ function lower_store_reduction!(
273273 # need to find out reduction type
274274 instr = first (parents (op)). instruction
275275 reduct_instruct = CORRESPONDING_REDUCTION[instr]
276- for u ∈ 0 : U- 1
276+ for u ∈ zero (Int32) : Base . unsafe_trunc (Int32, U- 1 )
277277 reducedname = varassignname (var, u, isunrolled)
278278 storevar = Expr (reduct_instruct, reducedname)
279279 td = TileDescription (u, unrolled, tiled, suffix)
@@ -287,7 +287,7 @@ function lower_store_scalar!(
287287)
288288 var = pvariable_name (op, suffix)
289289 ptr = refname (op)
290- for u ∈ 0 : U- 1
290+ for u ∈ zero (Int32) : Base . unsafe_trunc (Int32, U- 1 )
291291 varname = varassignname (var, u, isunrolled)
292292 td = TileDescription (u, unrolled, tiled, suffix)
293293 push! (q. args, Expr (:call , lv (:store! ), ptr, varname, mem_offset_u (op, td)))
@@ -302,16 +302,16 @@ function lower_store_vectorized!(
302302 @assert unrolled ∈ loopdeps
303303 var = pvariable_name (op, suffix)
304304 if isunrolled
305- umin = 0
305+ umin = zero (Int32)
306306 U = U
307307 else
308- umin = - 1
308+ umin = - one (Int32)
309309 U = 0
310310 end
311311 ptr = refname (op)
312312 vecnotunrolled = vectorized != = unrolled
313313 if first (loopdependencies (op)) === vectorized # vstore!
314- for u ∈ 0 : U- 1
314+ for u ∈ zero (Int32) : Base . unsafe_trunc (Int32, U- 1 )
315315 td = TileDescription (u, unrolled, tiled, suffix)
316316 name, mo = name_mo (var, op, td, W, vecnotunrolled)
317317 instrcall = Expr (:call ,lv (:vstore! ), ptr, name, mo)
@@ -323,7 +323,7 @@ function lower_store_vectorized!(
323323 else
324324 sn = findfirst (x -> x === unrolled, loopdependencies (op)):: Int
325325 ustrides = Expr (:call , lv (:vmul ), Expr (:call , :stride , ptr, sn), Expr (:call , lv (:vrange ), W))
326- for u ∈ 0 : U- 1
326+ for u ∈ zero (Int32) : Base . unsafe_trunc (Int32, U- 1 )
327327 td = TileDescription (u, unrolled, tiled, suffix)
328328 name, mo = name_mo (var, op, td, W, vecnotunrolled)
329329 instrcall = Expr (:call , lv (:scatter! ), ptr, mo, ustrides, name)
0 commit comments