master: Don't let the CONJUGATE VOPs be overridden by a transform
stassats via Sbcl-commits <[email protected]> Fri, 01 May 2026 00:07:14 +0000
| Newsgroups | gmane.lisp.steel-bank.cvs |
|---|---|
| Message-ID | <[email protected]> |
The branch "master" has been updated in SBCL:
via 373080b6a4e13da702b983426a1ec76e92cecc54 (commit)
from 64efbd61f73d03db0f093053fb826bfddb50c9c6 (commit)
- Log -----------------------------------------------------------------
commit 373080b6a4e13da702b983426a1ec76e92cecc54
Author: Stas Boukarev <[email protected]>
Date: Fri May 1 03:03:37 2026 +0300
Don't let the CONJUGATE VOPs be overridden by a transform
---
src/compiler/arm64/arith.lisp | 2 +-
src/compiler/arm64/float.lisp | 6 ++++++
src/compiler/float-tran.lisp | 3 ++-
src/compiler/x86-64/float.lisp | 6 ++++++
tests/timing | 4 +++-
5 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/src/compiler/arm64/arith.lisp b/src/compiler/arm64/arith.lisp
index c7cc42f3d..a0e063f40 100644
--- a/src/compiler/arm64/arith.lisp
+++ b/src/compiler/arm64/arith.lisp
@@ -3905,7 +3905,7 @@
(:generator 1
(inst rbit res arg)))
-(deftransform abs ((x) (:or ((signed-word) signed-word)) * :vop t)
+(deftransform abs ((x) ((signed-word) signed-word) * :vop t)
t)
(define-vop (abs)
diff --git a/src/compiler/arm64/float.lisp b/src/compiler/arm64/float.lisp
index acbb7aaa0..2af5cd1ff 100644
--- a/src/compiler/arm64/float.lisp
+++ b/src/compiler/arm64/float.lisp
@@ -413,6 +413,12 @@
(frob %negate/complex-double-float s-fneg %negate
complex-double-reg complex-double-float :2d))
+
+(deftransform conjugate ((number) (:or ((complex-double-float) *)
+ ((complex-single-float) *)) *
+ :vop t)
+ t)
+
(macrolet ((frob (name sc type real-inst-size complex-inst-size)
`(define-vop (,name)
(:args (x :scs (,sc)))
diff --git a/src/compiler/float-tran.lisp b/src/compiler/float-tran.lisp
index c809e6a37..dc448cc29 100644
--- a/src/compiler/float-tran.lisp
+++ b/src/compiler/float-tran.lisp
@@ -689,7 +689,8 @@
(deftransform conjugate ((x) (real))
'x)
-(deftransform conjugate ((x) (complex))
+(deftransform conjugate ((x) (complex) * :node node)
+ (delay-ir1-transform node :ir1-phases)
`(complex (realpart x) (- (imagpart x))))
;;; The number is of type REAL.
diff --git a/src/compiler/x86-64/float.lisp b/src/compiler/x86-64/float.lisp
index 723981572..7a9101251 100644
--- a/src/compiler/x86-64/float.lisp
+++ b/src/compiler/x86-64/float.lisp
@@ -854,6 +854,12 @@
(note-float-location 'sqrt vop x)
(inst sqrtss y x)))
+
+(deftransform conjugate ((number) (:or ((complex-double-float) *)
+ ((complex-single-float) *)) *
+ :vop t)
+ t)
+
(macrolet ((frob ((name translate sc type) &body body)
`(define-vop (,name)
(:args (x :scs (,sc) :target y))
diff --git a/tests/timing b/tests/timing
index 8703981d3..e1b8fd2aa 100644
--- a/tests/timing
+++ b/tests/timing
@@ -330,4 +330,6 @@
("iso-8859-2.pure" 765)
("iso-8859-3.pure" 765)
("fifo-slow.impure" 2070)
-("utf-8.pure" 700))
+("utf-8.pure" 700)
+("threads-slow.pure" 6296)
+("semaphore.pure" 7578))
-----------------------------------------------------------------------
hooks/post-receive
--
SBCL