From 699faea69cc4d6bf12d081f4c0d1e7e7d237d770 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Wed, 22 Mar 2023 17:30:02 -0400 Subject: [PATCH] Dedicated width-overflow loop for SIMD transpose --- src/singeli/src/transpose.singeli | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/singeli/src/transpose.singeli b/src/singeli/src/transpose.singeli index 2ac55e64..aa196453 100644 --- a/src/singeli/src/transpose.singeli +++ b/src/singeli/src/transpose.singeli @@ -162,7 +162,10 @@ fn transpose{T, k, kh}(r0:*void, x0:*void, w:u64, h:u64) : void = { } } - if (wo!=0 and we==w) { ws := w-wo; call_base{rp+h*ws, xp+ws, wo, h } } + if (we==w) @for(ws from w-wo to w) { + xpo:=xp+ws; rpo:=rp+h*ws + @for (i to h) store{rpo, i, load{xpo, w*i}} + } } def transpose{T, k} = transpose{T, k, k}