From 4dbe72ae03f5c00619342baee941c57b006989b2 Mon Sep 17 00:00:00 2001 From: dzaima Date: Fri, 23 Jun 2023 11:50:44 +0300 Subject: [PATCH] properly indicate estimating Singeli instructions --- src/singeli/src/avx.singeli | 12 ++++++------ src/singeli/src/sse2.singeli | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/singeli/src/avx.singeli b/src/singeli/src/avx.singeli index 7a4b4d3b..7e00347d 100644 --- a/src/singeli/src/avx.singeli +++ b/src/singeli/src/avx.singeli @@ -71,12 +71,12 @@ def __mul{a:T,b:T & T==[8]f32} = emit{T, '_mm256_mul_ps', a, b} def __div{a:T,b:T & T==[8]f32} = emit{T, '_mm256_div_ps', a, b} def max{a:T,b:T & T==[8]f32} = emit{T, '_mm256_max_ps', a, b} def min{a:T,b:T & T==[8]f32} = emit{T, '_mm256_min_ps', a, b} -def sqrt{a:[8]f32} = emit{[8]f32, '_mm256_sqrt_ps', a} -def rsqrt{a:[8]f32} = emit{[8]f32, '_mm256_rsqrt_ps', a} -def rcp{a:[8]f32} = emit{[8]f32, '_mm256_rcp_ps', a} -def abs{a:[8]f32} = emit{[8]f32, '_mm256_and_ps', a, v2f{[8]u32 ** 0x7FFFFFFF}} -def floor{a:[8]f32} = emit{[8]f32, '_mm256_floor_ps', a} -def ceil{a:[8]f32} = emit{[8]f32, '_mm256_ceil_ps', a} +def sqrt{a:[8]f32} = emit{[8]f32, '_mm256_sqrt_ps', a} +def rsqrtE{a:[8]f32} = emit{[8]f32, '_mm256_rsqrt_ps', a} +def rcpE{a:[8]f32} = emit{[8]f32, '_mm256_rcp_ps', a} +def abs{a:[8]f32} = emit{[8]f32, '_mm256_and_ps', a, v2f{[8]u32 ** 0x7FFFFFFF}} +def floor{a:[8]f32} = emit{[8]f32, '_mm256_floor_ps', a} +def ceil{a:[8]f32} = emit{[8]f32, '_mm256_ceil_ps', a} # f64 arith def __add{a:T,b:T & T==[4]f64} = emit{T, '_mm256_add_pd', a, b} diff --git a/src/singeli/src/sse2.singeli b/src/singeli/src/sse2.singeli index e7556f0e..94c6d350 100644 --- a/src/singeli/src/sse2.singeli +++ b/src/singeli/src/sse2.singeli @@ -156,11 +156,11 @@ def __mul{a:T,b:T & T==[4]f32} = emit{T, '_mm_mul_ps', a, b}; def __mul{a:T,b:T def __div{a:T,b:T & T==[4]f32} = emit{T, '_mm_div_ps', a, b}; def __div{a:T,b:T & T==[2]f64} = emit{T, '_mm_div_pd', a, b} def max{a:T,b:T & T==[4]f32} = emit{T, '_mm_max_ps', a, b}; def max{a:T,b:T & T==[2]f64} = emit{T, '_mm_max_pd', a, b} def min{a:T,b:T & T==[4]f32} = emit{T, '_mm_min_ps', a, b}; def min{a:T,b:T & T==[2]f64} = emit{T, '_mm_min_pd', a, b} -def sqrt{a:[4]f32} = emit{[4]f32, '_mm_sqrt_ps', a}; def sqrt{a:[2]f64} = emit{[2]f64, '_mm_sqrt_pd', a} -def rsqrt{a:[4]f32} = emit{[4]f32, '_mm_rsqrt_ps', a} -def rcp{a:[4]f32} = emit{[4]f32, '_mm_rcp_ps', a} -def abs{a:[4]f32} = emit{[4]f32, '_mm_and_ps', a, v2f{[4]u32 ** 0x7FFFFFFF}} -def abs{a:[2]f64} = emit{[2]f64, '_mm_and_pd', a, v2d{[2]u64 ** ((cast{u64,1}<<63)-1)}} +def sqrt{a:[4]f32} = emit{[4]f32, '_mm_sqrt_ps', a}; def sqrt{a:[2]f64} = emit{[2]f64, '_mm_sqrt_pd', a} +def rsqrtE{a:[4]f32} = emit{[4]f32, '_mm_rsqrt_ps', a} +def rcpE{a:[4]f32} = emit{[4]f32, '_mm_rcp_ps', a} +def abs{a:[4]f32} = emit{[4]f32, '_mm_and_ps', a, v2f{[4]u32 ** 0x7FFFFFFF}} +def abs{a:[2]f64} = emit{[2]f64, '_mm_and_pd', a, v2d{[2]u64 ** ((cast{u64,1}<<63)-1)}} # mask stuff def andAllZero{x:T, y:T & w128i{T}} = homAll{(x & y) == T**0}