From 48111d48734a6d1e6156d4e3ef68af9c8f11abac Mon Sep 17 00:00:00 2001 From: dzaima Date: Wed, 19 Jul 2023 17:24:20 +0300 Subject: [PATCH] extract iota{} for AVX-512 --- src/singeli/src/slash.singeli | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/singeli/src/slash.singeli b/src/singeli/src/slash.singeli index be001d32..d3a00a0d 100644 --- a/src/singeli/src/slash.singeli +++ b/src/singeli/src/slash.singeli @@ -11,6 +11,7 @@ if (hasarch{'AVX512F'}) { def p = each{{c}=>promote{eltype{T},c},reverse{xs}} emit{T, mti{'set',T}, ...p} } + def iota{T & isvec{T} & 512==width{T}} = make{T, iota{vcount{T}}} def broadcast{T, v & isvec{T} & 512==width{T}} = { emit{T, mti{'set1',T}, promote{eltype{T},v}} } @@ -97,10 +98,9 @@ def getter{c, V, x} = { i:u64 = 0 {} => { v:=load{*V~~x, i}; ++i; v } } else { - def k = vcount{V} - i := make{V, iota{k}} + i := iota{V} if (isreg{x}) i += V**cast_i{eltype{V},x} - ii := V**k + ii := V**vcount{V} {} => { v:=i; i+=ii; v } } }