From 7c46a4e35a9af06c5ab69d39286fd5ff3fb7dc56 Mon Sep 17 00:00:00 2001 From: dominik martinez Date: Wed, 21 May 2025 23:17:28 -0700 Subject: [PATCH] Better simd abs --- src/cl-blas.lisp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/cl-blas.lisp b/src/cl-blas.lisp index 4e8da46..366722d 100644 --- a/src/cl-blas.lisp +++ b/src/cl-blas.lisp @@ -90,12 +90,14 @@ (declaim (inline simd-abs-f32.8 simd-abs-f64.4)) (defun simd-abs-f32.8 (pack) - (declare (f32.8 pack)) - (f32.8-sqrt (f32.8* pack pack))) + (declare (f32.8 pack) + (optimize . #.*optimize-qualities*)) + (f32.8-if (f32.8< pack (f32.8 0.0)) (f32.8* pack (f32.8 -1.0)) pack)) (defun simd-abs-f64.4 (pack) - (declare (f64.4 pack)) - (f64.4-sqrt (f64.4* pack pack))) + (declare (f64.4 pack) + (optimize . #.*optimize-qualities*)) + (f64.4-if (f64.4< pack 0) (f64.4* pack -1) pack)) (push '(simd-abs simd-abs-f32.8) *single-float-fn-generic*) (push '(simd-abs simd-abs-f64.4) *double-float-fn-generic*)