|
29 | 29 | @overlay Base.div(x::T, y::T, ::typeof(RoundUp)) where {T <: Unsigned} = Intrinsics.cldi(x, y, SignednessUnsigned) |
30 | 30 | @overlay Base.rem(x::T, y::T) where {T <: Signed} = Intrinsics.remi(x, y, SignednessSigned) |
31 | 31 | @overlay Base.rem(x::T, y::T) where {T <: Unsigned} = Intrinsics.remi(x, y, SignednessUnsigned) |
| 32 | +@overlay Base.mod1(x::T, y::T) where {T <: ScalarInt} = (m = mod(x, y); m == zero(m) ? y : m) |
32 | 33 |
|
33 | 34 | # float |
34 | 35 | @overlay Base.:+(x::T, y::T) where {T <: ScalarFloat} = Intrinsics.addf(x, y) |
|
77 | 78 | @inline Base.:(-)(a::Tile{T, S}, b::Tile{T, S}) where {T <: Integer, S} = Intrinsics.subi(a, b) |
78 | 79 |
|
79 | 80 | # broadcasted arithmetic (float) |
80 | | -for (op, intrinsic) in ((:+, :addf), (:-, :subf), (:*, :mulf), (:/, :divf)) |
| 81 | +for (op, intrinsic) in ((:+, :addf), (:-, :subf), (:*, :mulf), (:/, :divf), (:max, :maxf), (:min, :minf)) |
81 | 82 | @eval @inline function Base.Broadcast.broadcasted(::TileStyle, ::typeof($op), a::Tile{T,S1}, b::Tile{T,S2}) where {T<:AbstractFloat,S1,S2} |
82 | 83 | S = broadcast_shape(S1, S2) |
83 | 84 | Intrinsics.$intrinsic(broadcast_to(a, S), broadcast_to(b, S)) |
|
157 | 158 | @inline Base.:(/)(a::Tile{T, S}, b::Number) where {T <: AbstractFloat, S} = Intrinsics.divf(a, broadcast_to(Tile(T(b)), S)) |
158 | 159 |
|
159 | 160 | # broadcasted arithmetic (float) |
160 | | -for (op, intrinsic) in ((:+, :addf), (:-, :subf), (:*, :mulf), (:/, :divf)) |
| 161 | +for (op, intrinsic) in ((:+, :addf), (:-, :subf), (:*, :mulf), (:/, :divf), (:max, :maxf), (:min, :minf)) |
161 | 162 | @eval begin |
162 | 163 | @inline Base.Broadcast.broadcasted(::TileStyle, ::typeof($op), a::Tile{T,S}, b::Number) where {T<:AbstractFloat,S} = |
163 | 164 | Intrinsics.$intrinsic(a, broadcast_to(Tile(T(b)), S)) |
|
0 commit comments