@@ -204,10 +204,18 @@ Base.transpose(::TSize{S,:any}) where {S,T} = TSize{reverse(S),:transpose}()
204
204
@inline mul_parent (A:: StaticMatrix ) = A
205
205
@inline mul_parent (A:: StaticVector ) = A
206
206
207
+ # Using the full StaticVecOrMatLike in dest of that one method of mul! takes a lot of load time
208
+ const StaticVecOrMatLikeForFiveArgMulDest{T} = Union{
209
+ StaticVector{<: Any , T},
210
+ StaticMatrix{<: Any , <: Any , T},
211
+ Transpose{T, <: StaticVecOrMat{T} },
212
+ Adjoint{T, <: StaticVecOrMat{T} }
213
+ }
214
+
207
215
# 5-argument matrix multiplication
208
216
# To avoid allocations, strip away Transpose type and store tranpose info in Size
209
- @inline LinearAlgebra. mul! (dest:: StaticVecOrMatLike , A:: StaticVecOrMatLike , B:: StaticVecOrMatLike ,
210
- α:: Real , β:: Real ) = _mul! (TSize (dest), mul_parent (dest), Size (A), Size (B), A, B,
217
+ @inline LinearAlgebra. mul! (dest:: StaticVecOrMatLikeForFiveArgMulDest , A:: StaticVecOrMatLike , B:: StaticVecOrMatLike ,
218
+ α:: Number , β:: Number ) = _mul! (TSize (dest), mul_parent (dest), Size (A), Size (B), A, B,
211
219
AlphaBeta (α,β))
212
220
213
221
@inline function LinearAlgebra. mul! (dest:: StaticVecOrMatLike{TDest} , A:: StaticVecOrMatLike{TA} ,
601
609
@inline mul_blas! (Sc:: TSize{<:Any,:transpose} , c:: StaticMatrix , Sa:: TSize , Sb:: TSize ,
602
610
a:: StaticMatrix , b:: StaticMatrix , _add:: MulAddMul ) =
603
611
mul_blas! (transpose (Sc), c, transpose (Sb), transpose (Sa), b, a, _add)
612
+
0 commit comments