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*)