Annotation of tme/ic/sparc/sparc-fpu-auto.sh, revision 1.1

1.1     ! root        1: #! /bin/sh
        !             2: 
        !             3: # $Id: sparc-fpu-auto.sh,v 1.4 2007/01/14 16:40:12 fredette Exp $
        !             4: 
        !             5: # ic/sparc-fpu-auto.sh - automatically generates C code for many SPARC FPU
        !             6: # emulation instructions:
        !             7: 
        !             8: #
        !             9: # Copyright (c) 2005 Matt Fredette
        !            10: # All rights reserved.
        !            11: #
        !            12: # Redistribution and use in source and binary forms, with or without
        !            13: # modification, are permitted provided that the following conditions
        !            14: # are met:
        !            15: # 1. Redistributions of source code must retain the above copyright
        !            16: #    notice, this list of conditions and the following disclaimer.
        !            17: # 2. Redistributions in binary form must reproduce the above copyright
        !            18: #    notice, this list of conditions and the following disclaimer in the
        !            19: #    documentation and/or other materials provided with the distribution.
        !            20: # 3. All advertising materials mentioning features or use of this software
        !            21: #    must display the following acknowledgement:
        !            22: #      This product includes software developed by Matt Fredette.
        !            23: # 4. The name of the author may not be used to endorse or promote products
        !            24: #    derived from this software without specific prior written permission.
        !            25: #
        !            26: # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            27: # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        !            28: # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        !            29: # DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
        !            30: # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        !            31: # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        !            32: # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            33: # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        !            34: # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
        !            35: # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        !            36: # POSSIBILITY OF SUCH DAMAGE.
        !            37: #
        !            38: 
        !            39: header=false
        !            40: 
        !            41: for option
        !            42: do
        !            43:     case $option in
        !            44:     --header) header=true ;;
        !            45:     esac
        !            46: done
        !            47: 
        !            48: PROG=`basename $0`
        !            49: cat <<EOF
        !            50: /* automatically generated by $PROG, do not edit! */
        !            51: _TME_RCSID("\$Id: sparc-fpu-auto.sh,v 1.4 2007/01/14 16:40:12 fredette Exp $");
        !            52: EOF
        !            53: 
        !            54: # the precision information helper script:
        !            55: #
        !            56: ieee754_precision_sh=`echo $0 | sed -e "s%$PROG%../ieee754/ieee754-precision.sh%"`
        !            57: 
        !            58: # permute for the different precisions:
        !            59: #
        !            60: for precision in single double quad; do
        !            61:     
        !            62:     # get information about this precision:
        !            63:     #
        !            64:     eval `sh ${ieee754_precision_sh} ${precision}`
        !            65: 
        !            66:     dst_formats="(TME_FLOAT_FORMAT_IEEE754_${capprecision} | TME_FLOAT_FORMAT_IEEE754_${capprecision}_BUILTIN)"
        !            67: 
        !            68:     cat <<EOF
        !            69: 
        !            70: /* this sets the floating-point condition codes after a
        !            71:    ${precision}-precision operation: */
        !            72: static void inline
        !            73: _tme_sparc_fpu_fcc_${precision}(struct tme_sparc *ic, const struct tme_float *dst, int trap_on_nan)
        !            74: {
        !            75:   tme_uint32_t fcc;
        !            76: 
        !            77:   /* set fcc: */
        !            78:   fcc = (tme_float_is_nan(dst, ${dst_formats})
        !            79:          ? TME_SPARC_FSR_FCC_UN
        !            80:         : tme_float_is_zero(dst, ${dst_formats})
        !            81:         ? TME_SPARC_FSR_FCC_EQ
        !            82:         : tme_float_is_negative(dst, ${dst_formats})
        !            83:         ? TME_SPARC_FSR_FCC_LT
        !            84:         : TME_SPARC_FSR_FCC_GT);
        !            85: 
        !            86:   /* if this is an FCMPE and this is a NaN, we always cause an invalid exception: */
        !            87:   if (trap_on_nan && fcc == TME_SPARC_FSR_FCC_UN) {
        !            88:     _tme_sparc_fpu_exception_ieee754(&ic->tme_sparc_fpu_ieee754_ctl, TME_FLOAT_EXCEPTION_INVALID);
        !            89:   }
        !            90: 
        !            91:   /* set the floating-point condition codes: */
        !            92:   ic->tme_sparc_fpu_fsr = (ic->tme_sparc_fpu_fsr & ~TME_SPARC_FSR_FCC) | fcc;
        !            93: }
        !            94: 
        !            95: /* if the most significant bit of the NaN fraction is zero,
        !            96:    this is a signaling NaN: */
        !            97: #define _TME_SPARC_FPU_IS_SNAN_${capprecision}(a) (((*(a))${chunk_member_0} & ((${chunk_mask_0} | (${chunk_mask_0} >> 1)) ^ (${chunk_mask_0} >> 1))) != 0)
        !            98: static tme_int8_t
        !            99: _tme_sparc_fpu_is_snan_${precision}(${integral} *value)
        !           100: {
        !           101:   return (_TME_SPARC_FPU_IS_SNAN_${capprecision}(value));
        !           102: }
        !           103: 
        !           104: /* ${precision}-precision NaN propagation: */
        !           105: static void
        !           106: _tme_sparc_fpu_nan_from_nans_${precision}(struct tme_ieee754_ctl *ctl, 
        !           107:                                     const ${integral} *a,
        !           108:                                     const ${integral} *b,
        !           109:                                     ${integral} *z)
        !           110: {
        !           111:   struct tme_sparc *ic;
        !           112:   int a_is_snan;
        !           113:   int b_is_snan;
        !           114: 
        !           115:   /* recover our data structure : */
        !           116:   ic = ctl->tme_ieee754_ctl_private;    
        !           117: 
        !           118:   /* see if any of the NaNs are signaling NaNs: */
        !           119:   a_is_snan = _TME_SPARC_FPU_IS_SNAN_${capprecision}(a);
        !           120:   b_is_snan = _TME_SPARC_FPU_IS_SNAN_${capprecision}(b);
        !           121: 
        !           122:   /* if either operand is a signaling NaN: */
        !           123:   if (a_is_snan || b_is_snan) {
        !           124: 
        !           125:     /* signal the signaling NaN: */
        !           126:     _tme_sparc_fpu_exception_ieee754(ctl, TME_FLOAT_EXCEPTION_INVALID);
        !           127:   }
        !           128: 
        !           129:   /* if and only if a (corresponding to f[rs1]) is a signaling NaN, do 
        !           130:      we return a. at all other times we return b (corresponding to f[rs2]): */
        !           131:   if (a_is_snan) {
        !           132:     b = a;
        !           133:   }
        !           134: 
        !           135:   /* return the NaN, but make sure it's nonsignaling: */
        !           136:   *z = *b;
        !           137:   (*(z))${chunk_member_0} |= ((${chunk_mask_0} | (${chunk_mask_0} >> 1)) ^ (${chunk_mask_0} >> 1));
        !           138: }
        !           139: 
        !           140: EOF
        !           141: 
        !           142: done
        !           143: 
        !           144: if $header; then :; else
        !           145:     echo "#define _TME_SPARC_FPU_UNIMPL tme_sparc_fpu_exception(ic, TME_SPARC_FSR_FTT_unimplemented_FPop)"
        !           146:     echo "#define _TME_SPARC_FPU_UNIMPL_IF(flags) do { if ((ic->tme_sparc_fpu_flags & (flags)) != 0) { _TME_SPARC_FPU_UNIMPL; } } while (/* CONSTCOND */ 0)"
        !           147: fi
        !           148: quad="_TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_QUAD);"
        !           149: 
        !           150: # permute over fpop1/fpop2:
        !           151: #
        !           152: for fpop in fpop1 fpop2; do
        !           153: 
        !           154:     # placeholder for another permutation:
        !           155:     #
        !           156:     :
        !           157:        
        !           158:        # open the function:
        !           159:        #
        !           160:        echo ""
        !           161:        echo "void"
        !           162:        echo "tme_sparc_fpu_${fpop}(struct tme_sparc *ic)"
        !           163:        echo "{"
        !           164:        echo "  tme_uint8_t rounding_mode;"
        !           165:        echo "  unsigned int opf;"
        !           166:        echo "  unsigned int fpreg_rd_number;"
        !           167:        echo "  const struct tme_float *fpreg_rs1;"
        !           168:        echo "  const struct tme_float *fpreg_rs2;"
        !           169:        if test ${fpop} = fpop1; then
        !           170:            echo "  struct tme_float fpreg_rs1_buffer;"
        !           171:            echo "  struct tme_float fpreg_rs2_buffer;"
        !           172:        fi
        !           173:        echo "  struct tme_float fpreg_rd;"
        !           174:        echo "  unsigned int fpreg_rd_format;"
        !           175: 
        !           176:        echo ""
        !           177:        echo "  /* set the rounding mode: */"
        !           178:        echo "  switch (ic->tme_sparc_fpu_fsr & TME_SPARC_FSR_RND) {"
        !           179:        echo "  default: assert(FALSE);"
        !           180:        echo "  case TME_SPARC_FSR_RND_RN: rounding_mode = TME_FLOAT_ROUND_NEAREST_EVEN; break;"
        !           181:        echo "  case TME_SPARC_FSR_RND_RZ: rounding_mode = TME_FLOAT_ROUND_TO_ZERO; break;"
        !           182:        echo "  case TME_SPARC_FSR_RND_RM: rounding_mode = TME_FLOAT_ROUND_DOWN; break;"
        !           183:        echo "  case TME_SPARC_FSR_RND_RP: rounding_mode = TME_FLOAT_ROUND_UP; break;"
        !           184:        echo "  }"
        !           185:        echo "  ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = rounding_mode;"
        !           186: 
        !           187:        echo ""
        !           188:        echo "  /* decode the rd and opf fields: */"
        !           189:        echo "  fpreg_rd_number = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, TME_SPARC_FORMAT3_MASK_RD);"
        !           190:        echo "  opf = TME_FIELD_MASK_EXTRACTU(TME_SPARC_INSN, (0x1ff << 5));"
        !           191: 
        !           192:        echo ""
        !           193:        echo "  /* dispatch on the opf field: */"
        !           194:        echo "  switch (opf) {"
        !           195:        echo "#define _TME_SPARC_FPU_FORMAT_RS1(format) fpreg_rs1 = tme_sparc_fpu_fpreg_read(ic, TME_SPARC_FORMAT3_MASK_RS1, (format))"
        !           196:        echo "#define _TME_SPARC_FPU_FORMAT_RS2(format) fpreg_rs2 = tme_sparc_fpu_fpreg_read(ic, TME_SPARC_FORMAT3_MASK_RS2, (format))"
        !           197:        echo "#define _TME_SPARC_FPU_FORMAT_RD(format) do { fpreg_rd_format = (format) | TME_IEEE754_FPREG_FORMAT_BUILTIN; tme_sparc_fpu_fpreg_aligned(ic, fpreg_rd_number, fpreg_rd_format); } while (/* CONSTCOND */ 0)"
        !           198:        echo ""
        !           199: 
        !           200:        # permute over the opf field:
        !           201:        #
        !           202:        opf_decimal=-1
        !           203:        while test ${opf_decimal} != 511; do
        !           204:            opf_decimal=`expr ${opf_decimal} + 1`
        !           205: 
        !           206:            # make the binary version of the opf field:
        !           207:            #
        !           208:            bits=9
        !           209:            opf=
        !           210:            opf_shifted=${opf_decimal}
        !           211:            while test ${bits} != 0; do
        !           212:                bits=`expr ${bits} - 1`
        !           213:                opf_shifted_next=`expr ${opf_shifted} / 2`
        !           214:                opf_test=`expr ${opf_shifted_next} \* 2`
        !           215:                if test ${opf_test} = ${opf_shifted}; then
        !           216:                    opf="0${opf}"
        !           217:                else
        !           218:                    opf="1${opf}"
        !           219:                fi
        !           220:                opf_shifted=${opf_shifted_next}
        !           221:            done
        !           222: 
        !           223:            # dispatch on the fpop/opf combination:
        !           224:            #
        !           225:            default=false
        !           226:            case "${fpop}:${opf}" in
        !           227:            fpop1:011000100)
        !           228:                echo "  case ${opf_decimal}:  /* ${opf} FiTOs: */"
        !           229:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           230:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           231:                echo "    _TME_SPARC_FPU_BEGIN;"
        !           232:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_from_int32,"
        !           233:                echo "                              fpreg_rs2->tme_float_value_ieee754_single, &fpreg_rd);"
        !           234:                ;;
        !           235:            fpop1:011001000)
        !           236:                echo "  case ${opf_decimal}:  /* ${opf} FiTOd: */"
        !           237:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           238:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
        !           239:                echo "    _TME_SPARC_FPU_BEGIN;"
        !           240:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_int32,"
        !           241:                echo "                              fpreg_rs2->tme_float_value_ieee754_single, &fpreg_rd);"
        !           242:                ;;
        !           243:            fpop1:011001100)
        !           244:                echo "  case ${opf_decimal}:  /* ${opf} FiTOq: */"
        !           245:                echo "    ${quad}"
        !           246:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           247:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
        !           248:                echo "    _TME_SPARC_FPU_BEGIN;"
        !           249:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_int32,"
        !           250:                echo "                              fpreg_rs2->tme_float_value_ieee754_single, &fpreg_rd);"
        !           251:                ;;
        !           252:            fpop1:011010001)
        !           253:                echo "  case ${opf_decimal}:  /* ${opf} FsTOi: */"
        !           254:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           255:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           256:                echo "    _TME_SPARC_FPU_BEGIN;"
        !           257:                echo "    fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_SINGLE;"
        !           258:                echo "    ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = TME_FLOAT_ROUND_TO_ZERO;"
        !           259:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_to_int32,"
        !           260:                echo "                              fpreg_rs2, (tme_int32_t *) &fpreg_rd.tme_float_value_ieee754_single);"
        !           261:                ;;
        !           262:            fpop1:011010010)
        !           263:                echo "  case ${opf_decimal}:  /* ${opf} FdTOi: */"
        !           264:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           265:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           266:                echo "    _TME_SPARC_FPU_BEGIN;"
        !           267:                echo "    fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_SINGLE;"
        !           268:                echo "    ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = TME_FLOAT_ROUND_TO_ZERO;"
        !           269:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_to_int32,"
        !           270:                echo "                              fpreg_rs2, (tme_int32_t *) &fpreg_rd.tme_float_value_ieee754_single);"
        !           271:                ;;
        !           272:            fpop1:011010011)
        !           273:                echo "  case ${opf_decimal}:  /* ${opf} FqTOi: */"
        !           274:                echo "    ${quad}"
        !           275:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           276:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           277:                echo "    _TME_SPARC_FPU_BEGIN;"
        !           278:                echo "    fpreg_rd.tme_float_format = TME_FLOAT_FORMAT_IEEE754_SINGLE;"
        !           279:                echo "    ic->tme_sparc_fpu_ieee754_ctl.tme_ieee754_ctl_rounding_mode = TME_FLOAT_ROUND_TO_ZERO;"
        !           280:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_to_int32,"
        !           281:                echo "                              fpreg_rs2, (tme_int32_t *) &fpreg_rd.tme_float_value_ieee754_single);"
        !           282:                ;;
        !           283:            fpop1:011001001)
        !           284:                echo "  case ${opf_decimal}:  /* ${opf} FsTOd: */"
        !           285:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           286:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
        !           287:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_single,"
        !           288:                echo "                              fpreg_rs2, &fpreg_rd);"
        !           289:                ;;
        !           290:            fpop1:011001101)
        !           291:                echo "  case ${opf_decimal}:  /* ${opf} FsTOq: */"
        !           292:                echo "    ${quad}"
        !           293:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           294:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
        !           295:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_single,"
        !           296:                echo "                              fpreg_rs2, &fpreg_rd);"
        !           297:                ;;
        !           298:            fpop1:011000110)
        !           299:                echo "  case ${opf_decimal}:  /* ${opf} FdTOs: */"
        !           300:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           301:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           302:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_from_double,"
        !           303:                echo "                              fpreg_rs2, &fpreg_rd);"
        !           304:                ;;
        !           305:            fpop1:011001110)
        !           306:                echo "  case ${opf_decimal}:  /* ${opf} FdTOq: */"
        !           307:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           308:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
        !           309:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_double,"
        !           310:                echo "                              fpreg_rs2, &fpreg_rd);"
        !           311:                ;;
        !           312:            fpop1:011000111)
        !           313:                echo "  case ${opf_decimal}:  /* ${opf} FqTOs: */"
        !           314:                echo "    ${quad}"
        !           315:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           316:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           317:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_from_quad,"
        !           318:                echo "                              fpreg_rs2, &fpreg_rd);"
        !           319:                ;;
        !           320:            fpop1:011001011)
        !           321:                echo "  case ${opf_decimal}:  /* ${opf} FqTOd: */"
        !           322:                echo "    ${quad}"
        !           323:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           324:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
        !           325:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_quad,"
        !           326:                echo "                              fpreg_rs2, &fpreg_rd);"
        !           327:                ;;
        !           328:            fpop1:000000001)
        !           329:                echo "  case ${opf_decimal}:  /* ${opf} FMOVs: */"
        !           330:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           331:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           332:                echo "    _TME_SPARC_FPU_BEGIN;"
        !           333:                echo "    fpreg_rd = *fpreg_rs2;"
        !           334:                ;;
        !           335:            fpop1:000000101)
        !           336:                echo "  case ${opf_decimal}:  /* ${opf} FNEGs: */"
        !           337:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           338:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           339:                echo "    _TME_SPARC_FPU_BEGIN;"
        !           340:                echo "    fpreg_rd = *fpreg_rs2;"
        !           341:                echo "    fpreg_rd.tme_float_value_ieee754_single ^= 0x80000000;"
        !           342:                ;;
        !           343:            fpop1:000001001)
        !           344:                echo "  case ${opf_decimal}:  /* ${opf} FABSs: */"
        !           345:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           346:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           347:                echo "    _TME_SPARC_FPU_BEGIN;"
        !           348:                echo "    fpreg_rd = *fpreg_rs2;"
        !           349:                echo "    fpreg_rd.tme_float_value_ieee754_single &= ~0x80000000;"
        !           350:                ;;
        !           351:            fpop1:000101001)
        !           352:                echo "  case ${opf_decimal}:  /* ${opf} FSQRTs: */"
        !           353:                echo "    _TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_FSQRT);"
        !           354:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           355:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           356:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_single_sqrt,"
        !           357:                echo "                              fpreg_rs2, &fpreg_rd);"
        !           358:                ;;
        !           359:            fpop1:000101010)
        !           360:                echo "  case ${opf_decimal}:  /* ${opf} FSQRTd: */"
        !           361:                echo "    _TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_FSQRT);"
        !           362:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           363:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
        !           364:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_sqrt,"
        !           365:                echo "                              fpreg_rs2, &fpreg_rd);"
        !           366:                ;;
        !           367:            fpop1:000101011)
        !           368:                echo "  case ${opf_decimal}:  /* ${opf} FSQRTq: */"
        !           369:                echo "    _TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_FSQRT | TME_SPARC_FPU_FLAG_NO_QUAD);"
        !           370:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           371:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
        !           372:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_sqrt,"
        !           373:                echo "                              fpreg_rs2, &fpreg_rd);"
        !           374:                ;;
        !           375:            fpop1:001000001)
        !           376:                echo "  case ${opf_decimal}:  /* ${opf} FADDs: */"
        !           377:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           378:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           379:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           380:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_add,"
        !           381:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           382:                ;;
        !           383:            fpop1:001000010)
        !           384:                echo "  case ${opf_decimal}:  /* ${opf} FADDd: */"
        !           385:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           386:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           387:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
        !           388:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_add,"
        !           389:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           390:                ;;
        !           391:            fpop1:001000011)
        !           392:                echo "  case ${opf_decimal}:  /* ${opf} FADDq: */"
        !           393:                echo "    ${quad}"
        !           394:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           395:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           396:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
        !           397:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_add,"
        !           398:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           399:                ;;
        !           400:            fpop1:001000101)
        !           401:                echo "  case ${opf_decimal}:  /* ${opf} FSUBs: */"
        !           402:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           403:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           404:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           405:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_sub,"
        !           406:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           407:                ;;
        !           408:            fpop1:001000110)
        !           409:                echo "  case ${opf_decimal}:  /* ${opf} FSUBd: */"
        !           410:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           411:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           412:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
        !           413:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_sub,"
        !           414:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           415:                ;;
        !           416:            fpop1:001000111)
        !           417:                echo "  case ${opf_decimal}:  /* ${opf} FSUBq: */"
        !           418:                echo "    ${quad}"
        !           419:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           420:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           421:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
        !           422:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_sub,"
        !           423:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           424:                ;;
        !           425:            fpop1:001001001)
        !           426:                echo "  case ${opf_decimal}:  /* ${opf} FMULs: */"
        !           427:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           428:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           429:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           430:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_mul,"
        !           431:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           432:                ;;
        !           433:            fpop1:001001010)
        !           434:                echo "  case ${opf_decimal}:  /* ${opf} FMULd: */"
        !           435:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           436:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           437:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
        !           438:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_mul,"
        !           439:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           440:                ;;
        !           441:            fpop1:001001011)
        !           442:                echo "  case ${opf_decimal}:  /* ${opf} FMULq: */"
        !           443:                echo "    ${quad}"
        !           444:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           445:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           446:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
        !           447:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_mul,"
        !           448:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           449:                ;;
        !           450:            fpop1:001101001)
        !           451:                echo "  case ${opf_decimal}:  /* ${opf} FsMULd: */"
        !           452:                echo "    _TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_FMUL_WIDER);"
        !           453:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           454:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           455:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
        !           456:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_single,"
        !           457:                echo "                              fpreg_rs1, &fpreg_rs1_buffer);"
        !           458:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_double_from_single,"
        !           459:                echo "                              fpreg_rs2, &fpreg_rs2_buffer);"
        !           460:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_mul,"
        !           461:                echo "                             &fpreg_rs1_buffer, &fpreg_rs2_buffer, &fpreg_rd);"
        !           462:                ;;
        !           463:            fpop1:001101110)
        !           464:                echo "  case ${opf_decimal}:  /* ${opf} FdMULq: */"
        !           465:                echo "    _TME_SPARC_FPU_UNIMPL_IF(TME_SPARC_FPU_FLAG_NO_FMUL_WIDER | TME_SPARC_FPU_FLAG_NO_QUAD);"
        !           466:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           467:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           468:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
        !           469:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_double,"
        !           470:                echo "                              fpreg_rs1, &fpreg_rs1_buffer);"
        !           471:                echo "    _TME_SPARC_FPU_OP_MONADIC(tme_ieee754_ops_quad_from_double,"
        !           472:                echo "                              fpreg_rs2, &fpreg_rs2_buffer);"
        !           473:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_mul,"
        !           474:                echo "                             &fpreg_rs1_buffer, &fpreg_rs2_buffer, &fpreg_rd);"
        !           475:                ;;
        !           476:            fpop1:001001101)
        !           477:                echo "  case ${opf_decimal}:  /* ${opf} FDIVs: */"
        !           478:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           479:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           480:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_SINGLE);"
        !           481:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_div,"
        !           482:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           483:                ;;
        !           484:            fpop1:001001110)
        !           485:                echo "  case ${opf_decimal}:  /* ${opf} FDIVd: */"
        !           486:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           487:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           488:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_DOUBLE);"
        !           489:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_div,"
        !           490:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           491:                ;;
        !           492:            fpop1:001001111)
        !           493:                echo "  case ${opf_decimal}:  /* ${opf} FDIVq: */"
        !           494:                echo "    ${quad}"
        !           495:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           496:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           497:                echo "    _TME_SPARC_FPU_FORMAT_RD(TME_IEEE754_FPREG_FORMAT_QUAD);"
        !           498:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_div,"
        !           499:                echo "                              fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           500:                ;;
        !           501:            fpop2:001010001)
        !           502:                echo "  case ${opf_decimal}:  /* ${opf} FCMPs: */"
        !           503:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           504:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           505:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_sub,"
        !           506:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           507:                echo "    _tme_sparc_fpu_fcc_single(ic, &fpreg_rd, FALSE);"
        !           508:                echo "    fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
        !           509:                ;;
        !           510:            fpop2:001010010)
        !           511:                echo "  case ${opf_decimal}:  /* ${opf} FCMPd: */"
        !           512:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           513:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           514:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_sub,"
        !           515:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           516:                echo "    _tme_sparc_fpu_fcc_double(ic, &fpreg_rd, FALSE);"
        !           517:                echo "    fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
        !           518:                ;;
        !           519:            fpop2:001010011)
        !           520:                echo "  case ${opf_decimal}:  /* ${opf} FCMPq: */"
        !           521:                echo "    ${quad}"
        !           522:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           523:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           524:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_sub,"
        !           525:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           526:                echo "    _tme_sparc_fpu_fcc_quad(ic, &fpreg_rd, FALSE);"
        !           527:                echo "    fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
        !           528:                ;;
        !           529:            fpop2:001010101)
        !           530:                echo "  case ${opf_decimal}:  /* ${opf} FCMPEs: */"
        !           531:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           532:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_SINGLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           533:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_single_sub,"
        !           534:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           535:                echo "    _tme_sparc_fpu_fcc_single(ic, &fpreg_rd, TRUE);"
        !           536:                echo "    fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
        !           537:                ;;
        !           538:            fpop2:001010110)
        !           539:                echo "  case ${opf_decimal}:  /* ${opf} FCMPEd: */"
        !           540:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           541:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_DOUBLE | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           542:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_double_sub,"
        !           543:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           544:                echo "    _tme_sparc_fpu_fcc_double(ic, &fpreg_rd, TRUE);"
        !           545:                echo "    fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
        !           546:                ;;
        !           547:            fpop2:001010111)
        !           548:                echo "  case ${opf_decimal}:  /* ${opf} FCMPEq: */"
        !           549:                echo "    ${quad}"
        !           550:                echo "    _TME_SPARC_FPU_FORMAT_RS1(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           551:                echo "    _TME_SPARC_FPU_FORMAT_RS2(TME_IEEE754_FPREG_FORMAT_QUAD | TME_IEEE754_FPREG_FORMAT_BUILTIN);"
        !           552:                echo "    _TME_SPARC_FPU_OP_DYADIC(tme_ieee754_ops_quad_sub,"
        !           553:                echo "                             fpreg_rs1, fpreg_rs2, &fpreg_rd);"
        !           554:                echo "    _tme_sparc_fpu_fcc_quad(ic, &fpreg_rd, TRUE);"
        !           555:                echo "    fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL;"
        !           556:                ;;
        !           557:            *) default=true ;;
        !           558:            esac
        !           559:            if $default; then :; else echo "    break;"; echo ""; fi
        !           560:        done
        !           561:        echo "  default: _TME_SPARC_FPU_UNIMPL; fpreg_rd_format = TME_IEEE754_FPREG_FORMAT_NULL; break;"
        !           562:        echo ""
        !           563:        echo "#undef _TME_SPARC_FPU_FORMAT_RS1"
        !           564:        echo "#undef _TME_SPARC_FPU_FORMAT_RS2"
        !           565:        echo "#undef _TME_SPARC_FPU_FORMAT_RD"
        !           566:        echo "  }"
        !           567: 
        !           568:        echo ""
        !           569:        echo "  /* store any destination: */"
        !           570:        echo "  if (fpreg_rd_format != TME_IEEE754_FPREG_FORMAT_NULL) {"
        !           571:        echo "    tme_sparc_fpu_fpreg_format(ic, fpreg_rd_number, fpreg_rd_format);"
        !           572:        echo "    ic->tme_sparc_fpu_fpregs[fpreg_rd_number] = fpreg_rd;"
        !           573:        echo "  }"
        !           574: 
        !           575:        echo ""
        !           576:        echo "}"
        !           577:    : 
        !           578: done
        !           579: 
        !           580: # done:
        !           581: #
        !           582: exit 0

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.