Skip to content

Commit 6a81c01

Browse files
authored
Preserve memory layouts in special banded broadcast (#320)
* UnknownLayout tuple in _banded_broadcast * preserve layouts in banded broadcast * don't specialize eltypes in unknownlayout _banded_broadcast * remove unused type params
1 parent 5088cdd commit 6a81c01

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/generic/broadcast.jl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -617,8 +617,10 @@ copyto!(dest::AbstractArray, bc::Broadcasted{BandedStyle, <:Any, <:Any, <:Tuple{
617617
# matrix-matrix broadcast
618618
################
619619

620-
621-
function _banded_broadcast!(dest::AbstractMatrix, f, (A,B)::Tuple{AbstractMatrix{T},AbstractMatrix{V}}, _1, _2) where {T,V}
620+
function _banded_broadcast!(dest::AbstractMatrix, f, (A,B)::NTuple{2,AbstractMatrix}, _1, _2)
621+
__banded_broadcast!(dest, f, (A,B), _1, _2)
622+
end
623+
function __banded_broadcast!(dest::AbstractMatrix, f, (A,B)::Tuple{AbstractMatrix{T},AbstractMatrix{V}}, _1, _2) where {T,V}
622624
z = f(zero(T), zero(V))
623625
bc = broadcasted(f, A, B)
624626
l, u = bandwidths(bc)
@@ -694,7 +696,7 @@ function checkzerobands(dest, f, (A,B)::Tuple{AbstractMatrix,AbstractMatrix})
694696
end
695697

696698

697-
function _banded_broadcast!(dest::AbstractMatrix, f, (A,B)::Tuple{AbstractMatrix,AbstractMatrix}, ::BandedColumns, ::Tuple{<:BandedColumns,<:BandedColumns})
699+
function _banded_broadcast!(dest::AbstractMatrix, f, (A,B)::Tuple{AbstractMatrix,AbstractMatrix}, Mdest::BandedColumns, MAB::NTuple{2,BandedColumns})
698700
z = f(zero(eltype(A)), zero(eltype(B)))
699701
bc = broadcasted(f, A, B)
700702
l, u = bandwidths(bc)
@@ -703,7 +705,7 @@ function _banded_broadcast!(dest::AbstractMatrix, f, (A,B)::Tuple{AbstractMatrix
703705

704706
if size(A) size(dest) || size(B) size(dest)
705707
# special broadcast
706-
return _banded_broadcast!(dest, f, (A,B), UnknownLayout(), UnknownLayout())
708+
return __banded_broadcast!(dest, f, (A,B), Mdest, MAB)
707709
end
708710

709711
A_l,A_u = bandwidths(A)

0 commit comments

Comments
 (0)