##compare-float-ordered


Vocabulary
compiler.cfg.instructions

Definition
IN: compiler.cfg.instructions

TUPLE: ##compare-float-ordered < foldable-insn
dst src1 src2 cc temp insn# ;


Methods
USING: accessors compiler.cfg.gvn.avail
compiler.cfg.instructions kernel ;

M: ##compare-float-ordered >avail-insn-defs
[ ] change-dst drop ;


USING: accessors compiler.cfg.gvn.avail
compiler.cfg.instructions kernel ;

M: ##compare-float-ordered >avail-insn-temps
[ ] change-temp drop ;


USING: accessors compiler.cfg.gvn.avail
compiler.cfg.instructions kernel ;

M: ##compare-float-ordered >avail-insn-uses
[ dup >avail-vreg swap or ] change-src1
[ dup >avail-vreg swap or ] change-src2 drop ;


USING: accessors arrays compiler.cfg.instructions
compiler.cfg.value-numbering.expressions
compiler.cfg.value-numbering.graph kernel sequences.private ;

M: ##compare-float-ordered >expr
\ ##compare-float-ordered swap [ src1>> vreg>vn ] keep
[ src2>> vreg>vn ] keep [ cc>> ] keep drop 4 f <array>
3 swap [ set-array-nth ] keep 2 swap [ set-array-nth ] keep
1 swap [ set-array-nth ] keep 0 swap [ set-array-nth ] keep
;


USING: accessors arrays compiler.cfg.gvn.expressions
compiler.cfg.gvn.graph compiler.cfg.instructions kernel
sequences.private ;

M: ##compare-float-ordered >expr
\ ##compare-float-ordered swap [ src1>> vreg>vn ] keep
[ src2>> vreg>vn ] keep [ cc>> ] keep drop 4 f <array>
3 swap [ set-array-nth ] keep 2 swap [ set-array-nth ] keep
1 swap [ set-array-nth ] keep 0 swap [ set-array-nth ] keep
;


USING: accessors compiler.cfg.instructions
compiler.cfg.linear-scan.assignment kernel ;

M: ##compare-float-ordered assign-insn-defs
[ vreg>reg ] change-dst drop ;


USING: accessors compiler.cfg.instructions
compiler.cfg.linear-scan.assignment kernel ;

M: ##compare-float-ordered assign-insn-temps
[ vreg>reg ] change-temp drop ;


USING: accessors compiler.cfg.instructions
compiler.cfg.linear-scan.assignment kernel ;

M: ##compare-float-ordered assign-insn-uses
[ vreg>reg ] change-src1 [ vreg>reg ] change-src2 drop ;


USING: accessors compiler.cfg.instructions
compiler.cfg.representations.rewrite kernel ;

M: ##compare-float-ordered convert-insn-defs
[ converted-value ] change-dst drop ;


USING: accessors compiler.cfg.instructions
compiler.cfg.representations.rewrite kernel ;

M: ##compare-float-ordered convert-insn-temps
[ ] change-temp drop ;


USING: accessors compiler.cfg.instructions
compiler.cfg.representations.rewrite kernel ;

M: ##compare-float-ordered convert-insn-uses
[ converted-value ] change-src1
[ converted-value ] change-src2 drop ;


USING: compiler.cfg.instructions
compiler.cfg.representations.preferred cpu.architecture kernel
;

M: ##compare-float-ordered defs-vreg-reps drop { tagged-rep } ;


USING: accessors arrays compiler.cfg.def-use
compiler.cfg.instructions ;

M: ##compare-float-ordered defs-vregs dst>> 1array ;


USING: accessors compiler.cfg.instructions compiler.codegen
cpu.architecture kernel ;

M: ##compare-float-ordered generate-insn
[ dst>> ] keep [ src1>> ] keep [ src2>> ] keep
[ cc>> ] keep [ temp>> ] keep drop %compare-float-ordered ;


USING: accessors compiler.cfg.instructions
compiler.cfg.renaming kernel ;

M: ##compare-float-ordered rename-insn-defs
[ rename-value ] change-dst drop ;


USING: accessors compiler.cfg.instructions
compiler.cfg.registers compiler.cfg.renaming kernel ;

M: ##compare-float-ordered rename-insn-temps
[ drop next-vreg ] change-temp drop ;


USING: accessors compiler.cfg.instructions
compiler.cfg.renaming kernel ;

M: ##compare-float-ordered rename-insn-uses
[ rename-value ] change-src1 [ rename-value ] change-src2
drop ;


USING: accessors compiler.cfg.instructions
compiler.cfg.ssa.construction.private kernel ;

M: ##compare-float-ordered ssa-rename-insn-defs
[ gen-name ] change-dst drop ;


USING: accessors compiler.cfg.instructions
compiler.cfg.ssa.construction.private kernel ;

M: ##compare-float-ordered ssa-rename-insn-temps
[ ] change-temp drop ;


USING: accessors compiler.cfg.instructions
compiler.cfg.ssa.construction.private kernel ;

M: ##compare-float-ordered ssa-rename-insn-uses
[ top-name ] change-src1 [ top-name ] change-src2 drop ;


USING: compiler.cfg.instructions
compiler.cfg.representations.preferred cpu.architecture kernel
;

M: ##compare-float-ordered temp-vreg-reps drop { int-rep } ;


USING: accessors arrays compiler.cfg.def-use
compiler.cfg.instructions ;

M: ##compare-float-ordered temp-vregs temp>> 1array ;


USING: compiler.cfg.instructions
compiler.cfg.representations.preferred cpu.architecture kernel
;

M: ##compare-float-ordered uses-vreg-reps
drop { double-rep double-rep } ;


USING: accessors arrays compiler.cfg.def-use
compiler.cfg.instructions kernel ;

M: ##compare-float-ordered uses-vregs
[ src1>> ] [ src2>> ] bi 2array ;