Don't let the CONJUGATE VOPs be overridden by a transform

This commit is contained in:
Stas Boukarev 2026-05-01 03:03:37 +03:00
parent 64efbd61f7
commit 373080b6a4
5 changed files with 18 additions and 3 deletions

View file

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

View file

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

View file

@ -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.

View file

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

View file

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