Changeset 11297


Ignore:
Timestamp:
Nov 5, 2008, 10:52:14 AM (12 years ago)
Author:
gb
Message:

Lose the speculative MARK-AS-NODE-PRESERVING-FLAGS.

Add a MARK-TEMP1-AS-NODE-PRESERVING-FLAGS, which doesn't clobber as many flage.

Add a TEMP-POP-TEMP1-AS-UNBOXED-WORD, which sets the direction flag to indicate the unboxed state of %temp1/%edx as it pops a word into that register.

ALIGN-LOOP-HEAD was a bad idea (adds NOPs but doesn't improve performance), but attempts to actually remove uses of it failed for some unknown reason. Make the vinsn a NOP for now.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/X86/X8632/x8632-vinsns.lisp

    r11290 r11297  
    39493949  (btsl (:$ub (:apply %hard-regspec-value reg)) (:@ (:%seg :rcontext) x8632::tcr.node-regs-mask)))
    39503950
    3951 ;;; We can't safely push %eflags on the lisp stack, so we have to clobber
    3952 ;;; %ah.
    3953 (define-x8632-vinsn mark-as-node-preserving-flags (()
    3954                                                    ((reg :imm))
    3955                                                    ((ah (:u8 #.x8632::imm0))))
    3956   (:byte #x9f)                          ;lahf
    3957   (xorl (:%l reg) (:%l reg))
    3958   (btsl (:$ub (:apply %hard-regspec-value reg)) (:@ (:%seg :rcontext) x8632::tcr.node-regs-mask))
    3959   (:byte #x9e))
     3951(define-x8632-vinsn mark-temp1-as-node-preserving-flags (()
     3952                                                        ()
     3953                                                        ((reg (:u32 #.x8632::temp1))))
     3954  (movl (:$l 0) (:%l reg))              ;not xorl!
     3955  (cld))                                ;well, preserving most flags.
     3956
     3957 
     3958
    39603959 
    39613960(define-x8632-vinsn (temp-push-unboxed-word :push :word :csp)
     
    39743973     ())
    39753974  (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l w))
     3975  (movl (:@ 8 (:%l w)) (:%l w))
     3976  (addl (:$b 16) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)))
     3977
     3978(define-x8632-vinsn (temp-pop-temp1-as-unboxed-word :pop :word :csp)
     3979    (()
     3980     ()
     3981     ((w (:u32 #.x8632::temp1))))
     3982  (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l w))
     3983  (std)
    39763984  (movl (:@ 8 (:%l w)) (:%l w))
    39773985  (addl (:$b 16) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)))
     
    40554063(define-x8632-vinsn align-loop-head (()
    40564064                                     ())
    4057   (:align 4))
     4065)
    40584066
    40594067(queue-fixup
Note: See TracChangeset for help on using the changeset viewer.