Add pat cms !defined($1)
authorGeorge Koehler <xkernigh@netscape.net>
Mon, 13 Feb 2017 21:52:32 +0000 (16:52 -0500)
committerGeorge Koehler <xkernigh@netscape.net>
Mon, 13 Feb 2017 21:52:32 +0000 (16:52 -0500)
commitdc05cb2dc84851ae9eedfde7da04a50e7dd41c1f
tree44d20584b452f5f5100c19b0dd999a2c92b7f15b
parent89dd80e34dc3e53485ba26f607f0af48cd05c037
Add pat cms !defined($1)

Switch .cms to pass inputs and outputs on the real stack, not in
registers; like we do with .and, .or (81c677d) and .xor (c578c49).

At this point, nearly all functions in libem use the real stack, not
registers, for passing inputs and outputs.  This simplifies the ncg
table (which needs fewer lists of specific registers) but slows calls
to libem.

For example, after ba9b021, each call to .aar4 is about 10
instructions slower.  I moved 3 inputs and 1 output from registers to
the real stack.  A program would take 4 instructions to move registers
to stack, 4 to move stack to registers, and perhaps 2 to adjust the
stack pointer.
mach/powerpc/libem/cms.s
mach/powerpc/ncg/table