Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

as(1)

cc(1)



sifilter(1)                       SDK R4.11                      sifilter(1)


NAME
       sifilter - preprocess MC88100 assembly language (88k only)

SYNOPSIS
       sifilter [options] [input] [output]

DESCRIPTION
       Sifilter manipulates MC88100 assembly language source code from input
       to work around known problems in the MC88100 silicon.  Sifilter is
       normally invoked transparently by the assembler /bin/as but can be
       used directly for testing purposes. The program can be expected to
       disappear when silicon is sufficiently mature.

       Input and output are normally omitted, defaulting to standard input
       and output paths.  Filenames may be specified for either path, and a
       dash (-), denoting standard input, may be used as a place holder for
       input.

       The translations performed by sifilter are controlled by the switches
       listed below.  The assembler /bin/as sets the "standard" option, -r.
       Since each revision of the silicon requires a different set of
       workarounds, the actual behavior of the "standard" option may vary.

   Switches
       a         Insert a trap-not-taken (tb1 0,r0,511) after each ld or
                 ld.d.

       b         Split each st.d into an equivalent sequence of two st
                 instructions.

       c         Do not pass comment lines through to the output.

       d         Issue each st or st.d twice.

       D         Synthesize immediate operands of div instructions.

       e         Enable literal synthesis. See Literal Synthesis below.

       F         Warn about use of double precision source operands in
                 floating point instructions.

       h         Produce code that converts double-precision floating-point
                 operands to single-precision operands before performing
                 floating-point operations.  The conversion checks for
                 values outside the range representable in single precision
                 and simulates an illegal instruction trap when conversion
                 is not possible.

       l         Split each ld.d into an equivalent sequence of two ld
                 instructions.

       l         Split each ld.d into an equivalent sequence of two ld
                 instructions.

       p         Insert a trap-not-taken before each st or st.d.

       q         Insert a dummy ld before each ld.  A dummy load is a load
                 in which the destination register is r0.  The source
                 operands in a dummy load are the same as those in the
                 actual load which follows.

       r         Perform a "standard" set of fixes for current silicon.
                 Check the DG/UX release notice to determine the behavior of
                 the current sifilter on the system.

       s         Produce a statistics dump on the standard error path on
                 termination.

       t         Synthesize immediate operands of div and mul instructions
                 which have any of the high 5 bits set.

       V         Displays a version identification message and exits
                 immediately.

       v         A single v enables "verbose" mode, in which various
                 messages detailing actions taken by sifilter are output as
                 comment lines. Two or more instances of v in the option
                 string generates a comment line containing the current
                 location counter value before each source line.

       y         Insert a no-op after each trap-not-taken generated by the z
                 option. If z has not been specified, this option has no
                 effect.

       z         Insert a trap-not-taken after each st or st.d.

   Defaults
       All switches default to "off".  Sifilter performs the following
       transformations regardless of the option switches specified.


       -    addu and subu instructions with operands r31,r31,lit32 where
            "lit32" is a constant whose value is greater than 64K are
            replaced with an equivalent sequence.

       -    Floating point instructions involving double operands may be
            moved if they would otherwise fall at the end of a cache line.

   Literal Synthesis
       Since sifilter must maintain an accurate location counter, it must
       perform the same fixups for "lit16" operands that would normally be
       done by a linker performing literal synthesis.

       Instructions with lit16 operands whose value cannot be determined by
       sifilter (for example, a label), or whose value would require more
       than 16 bits, are replaced with an equivalent sequence. This is
       called "literal synthesis", since a 32-bit value is "synthesized" in
       a register from the literal.

       There are two forms of literal synthesis. The short form:

                or.u   r29,r0,hi16(lit16)
                op     rd,r29,lo16(lit16)

       is used for the add, addu, ld, lda, or, st, xmem, and xor
       instructions (in all their variations) when the source register is
       r0.  When the source register is other than r0, these instructions
       are expanded into the long form:

                or.u   r29,r0,hi16(lit16)
                or     r29,r29,lo16(lit16)
                op     rd,rs,r29

       Instructions which always are expanded with the long form are all the
       variations on and, cmp, div, divu, mask, mul, sub, subu, and tbnd.

       No literal synthesis is done unless the e option has been specified.

   Scratch Registers
       Some of the fixups performed by sifilter require one or two scratch
       registers (split ld.d or st.d, addu, subu, and floats).

       Scratch registers are taken from the set r26-r29.

SEE ALSO
       as(1), cc(1).

NOTE
       Use of sifilter should be coordinated with the revision of silicon on
       the target machine and the revision of the DG/UX kernel.  See the
       DG/UX release notice for details.


Licensed material--property of copyright holder(s)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026