@@ -90,8 +90,13 @@ function add_mref!(ls::LoopSet, ars::ArrayRefStruct, arraysymbolinds::Vector{Sym
9090end
9191function add_mref! (ls:: LoopSet , ars:: ArrayRefStruct , arraysymbolinds:: Vector{Symbol} , opsymbols:: Vector{Symbol} , i:: Int , :: Type{StaticStridedStruct{T, X}} ) where {T, X <: Tuple }
9292 ar = ArrayReferenceMeta (ls, ars, arraysymbolinds, opsymbols, Symbol (" " ), gensym ())
93- pushpreamble! (ls, Expr (:(= ), vptr (ar), Expr (:macrocall , Symbol (" @inbounds" ), LineNumberNode (@__LINE__ , @__FILE__ ), Expr (:ref , :vargs , i))))
94- pushfirst! (getindices (ar), Symbol (" ##DISCONTIGUOUSSUBARRAY##" ))
93+ if last (X. parameters):: Int == 1
94+ reverse! (ar. loopedindex); reverse! (getindices (ar))
95+ pushpreamble! (ls, Expr (:(= ), vptr (ar), Expr (:call , lv (:Transpose ), Expr (:macrocall , Symbol (" @inbounds" ), LineNumberNode (@__LINE__ , @__FILE__ ), Expr (:ref , :vargs , i)))))
96+ else
97+ pushpreamble! (ls, Expr (:(= ), vptr (ar), Expr (:macrocall , Symbol (" @inbounds" ), LineNumberNode (@__LINE__ , @__FILE__ ), Expr (:ref , :vargs , i))))
98+ pushfirst! (getindices (ar), Symbol (" ##DISCONTIGUOUSSUBARRAY##" ))
99+ end
95100 ar
96101end
97102function add_mref! (ls:: LoopSet , ars:: ArrayRefStruct , arraysymbolinds:: Vector{Symbol} , opsymbols:: Vector{Symbol} , i:: Int , :: Type{LoopValue} )
0 commit comments