|
1 | 1 |
|
2 |
| -@inline zerointeger(::Type{Float16}) = zero(Int16) |
3 |
| -@inline zerointeger(::Type{Float32}) = zero(Int32) |
4 |
| -@inline zerointeger(::Type{Float64}) = zero(Int64) |
5 |
| -@inline zerointeger(::Type{I}) where {I<:Integer} = zero(I) |
6 |
| -@inline zerofloat(::Type{Float16}) = zero(Float16) |
7 |
| -@inline zerofloat(::Type{Float32}) = zero(Float32) |
8 |
| -@inline zerofloat(::Type{Float64}) = zero(Float64) |
9 |
| -@inline zerofloat(::Type{UInt16}) = zero(Float16) |
10 |
| -@inline zerofloat(::Type{UInt32}) = zero(Float32) |
11 |
| -@inline zerofloat(::Type{UInt64}) = zero(Float64) |
12 |
| -@inline zerofloat(::Type{Int16}) = zero(Float16) |
13 |
| -@inline zerofloat(::Type{Int32}) = zero(Float32) |
14 |
| -@inline zerofloat(::Type{Int64}) = zero(Float64) |
| 2 | +@inline onefloat(::Type{T}) where {T} = one(sizeequivalentfloat(T)) |
| 3 | +@inline oneinteger(::Type{T}) where {T} = one(sizeequivalentint(T)) |
| 4 | +@inline zerofloat(::Type{T}) where {T} = zero(sizeequivalentfloat(T)) |
| 5 | +@inline zerointeger(::Type{T}) where {T} = zero(sizeequivalentint(T)) |
15 | 6 |
|
16 | 7 |
|
17 |
| -@inline oneinteger(::Type{Float16}) = one(Int16) |
18 |
| -@inline oneinteger(::Type{Float32}) = one(Int32) |
19 |
| -@inline oneinteger(::Type{Float64}) = one(Int64) |
20 |
| -@inline oneinteger(::Type{I}) where {I<:Integer} = one(I) |
21 |
| -@inline onefloat(::Type{Float16}) = one(Float16) |
22 |
| -@inline onefloat(::Type{Float32}) = one(Float32) |
23 |
| -@inline onefloat(::Type{Float64}) = one(Float64) |
24 |
| -@inline onefloat(::Type{UInt16}) = one(Float16) |
25 |
| -@inline onefloat(::Type{UInt32}) = one(Float32) |
26 |
| -@inline onefloat(::Type{UInt64}) = one(Float64) |
27 |
| -@inline onefloat(::Type{Int16}) = one(Float16) |
28 |
| -@inline onefloat(::Type{Int32}) = one(Float32) |
29 |
| -@inline onefloat(::Type{Int64}) = one(Float64) |
30 |
| - |
31 |
| -@inline equivalentint(::Type{I}) where {I<:Integer} = I |
32 |
| -@inline equivalentint(::Type{Float16}) = Int16 |
33 |
| -@inline equivalentint(::Type{Float32}) = Int32 |
34 |
| -@inline equivalentint(::Type{Float64}) = Int64 |
35 |
| -@inline equivalentfloat(::Type{Float16}) = Float16 |
36 |
| -@inline equivalentfloat(::Type{Float32}) = Float64 |
37 |
| -@inline equivalentfloat(::Type{Float64}) = Float64 |
38 |
| -@inline equivalentfloat(::Type{Int16}) = Float16 |
39 |
| -@inline equivalentfloat(::Type{Int32}) = Float64 |
40 |
| -@inline equivalentfloat(::Type{Int64}) = Float64 |
41 |
| -@inline equivalentfloat(::Type{UInt16}) = Float16 |
42 |
| -@inline equivalentfloat(::Type{UInt32}) = Float64 |
43 |
| -@inline equivalentfloat(::Type{UInt64}) = Float64 |
44 |
| - |
45 | 8 | function lower_zero!(
|
46 | 9 | q::Expr, op::Operation, vectorized::Symbol, ls::LoopSet, unrolled::Symbol, U::Int, suffix::Union{Nothing,Int}, zerotyp::NumberType = zerotype(ls, op)
|
47 | 10 | )
|
48 | 11 | W = ls.W; typeT = ls.T
|
49 | 12 | mvar = variable_name(op, suffix)
|
50 | 13 | if zerotyp == HardInt
|
51 | 14 | newtypeT = gensym(:IntType)
|
52 |
| - pushpreamble!(ls, Expr(:(=), newtypeT, Expr(:call, lv(:equivalentint), typeT))) |
| 15 | + pushpreamble!(ls, Expr(:(=), newtypeT, Expr(:call, lv(:sizeequivalentint), typeT))) |
53 | 16 | typeT = newtypeT
|
54 | 17 | elseif zerotyp == HardFloat
|
55 | 18 | newtypeT = gensym(:FloatType)
|
56 |
| - pushpreamble!(ls, Expr(:(=), newtypeT, Expr(:call, lv(:equivalentfloat), typeT))) |
| 19 | + pushpreamble!(ls, Expr(:(=), newtypeT, Expr(:call, lv(:sizeequivalentfloat), typeT))) |
57 | 20 | typeT = newtypeT
|
58 | 21 | end
|
59 | 22 | if vectorized ∈ loopdependencies(op) || vectorized ∈ reducedchildren(op) || vectorized ∈ reduceddependencies(op)
|
|
0 commit comments