home *** CD-ROM | disk | FTP | other *** search
- #include "register.h"
- #include "symtab.h"
- #include "diblock.h"
- #include "instrn.h"
- #include "process.h"
-
- dinstrn *
- i_ceq(dipc, fmt, ft, fs, fd)
- dinstrn *dipc;
- int fmt;
- int ft;
- int fs;
- int fd;
- {
- float singles;
- float singlet;
- double doubles;
- double doublet;
- int result;
- unsigned long cs;
-
- /*
- * equal
- */
- switch (fmt)
- {
- case FMT_SINGLE:
- procsget(CP1G(fs), *(unsigned long *)&singles);
-
- procsget(CP1G(ft), *(unsigned long *)&singlet);
-
- result = (singles == singlet);
-
- break;
-
- case FMT_DOUBLE:
- /*
- * Note apparent reversal of words within
- * doubles here -- no idea why.
- */
- procsget(CP1G(fs), *((unsigned long *)&doubles + 1));
-
- procsget(CP1G(fs) + 1, *(unsigned long *)&doubles);
-
- procsget(CP1G(ft), *((unsigned long *)&doublet + 1));
-
- procsget(CP1G(ft) + 1, *(unsigned long *)&doublet);
-
- result = (doubles == doublet);
-
- break;
-
- default:
- unrecognised(dipc);
- break;
- }
-
- procsget(CP1CS, cs);
-
- Set_Cond(cs, result);
-
- procsput(CP1CS, cs);
-
- return dipc;
- }
-
- dinstrn *
- i_cfc1(dipc, rt, fs)
- dinstrn *dipc;
- int rt;
- int fs;
- {
- unsigned long s;
-
- procsget(CP1C(fs), s);
-
- procsput(rt, s);
-
- return dipc;
- }
-
- dinstrn *
- i_cle(dipc, fmt, ft, fs, fd)
- dinstrn *dipc;
- int fmt;
- int ft;
- int fs;
- int fd;
- {
- float singles;
- float singlet;
- double doubles;
- double doublet;
- int result;
- unsigned long cs;
-
- /*
- * less than || equal
- *
- * TODO: exception if unordered
- */
- switch (fmt)
- {
- case FMT_SINGLE:
- procsget(CP1G(fs), *(unsigned long *)&singles);
-
- procsget(CP1G(ft), *(unsigned long *)&singlet);
-
- result = (singles <= singlet);
-
- break;
-
- case FMT_DOUBLE:
- /*
- * Note apparent reversal of words within
- * doubles here -- no idea why.
- */
- procsget(CP1G(fs), *((unsigned long *)&doubles + 1));
-
- procsget(CP1G(fs) + 1, *(unsigned long *)&doubles);
-
- procsget(CP1G(ft), *((unsigned long *)&doublet + 1));
-
- procsget(CP1G(ft) + 1, *(unsigned long *)&doublet);
-
- result = (doubles <= doublet);
-
- break;
-
- default:
- unrecognised(dipc);
- break;
- }
-
- procsget(CP1CS, cs);
-
- Set_Cond(cs, result);
-
- procsput(CP1CS, cs);
-
- return dipc;
- }
-
- dinstrn *
- i_clt(dipc, fmt, ft, fs, fd)
- dinstrn *dipc;
- int fmt;
- int ft;
- int fs;
- int fd;
- {
- float singles;
- float singlet;
- double doubles;
- double doublet;
- int result;
- unsigned long cs;
-
- /*
- * less than
- *
- * TODO: exception if unordered
- */
- switch (fmt)
- {
- case FMT_SINGLE:
- procsget(CP1G(fs), *(unsigned long *)&singles);
-
- procsget(CP1G(ft), *(unsigned long *)&singlet);
-
- result = (singles < singlet);
-
- break;
-
- case FMT_DOUBLE:
- /*
- * Note apparent reversal of words within
- * doubles here -- no idea why.
- */
- procsget(CP1G(fs), *((unsigned long *)&doubles + 1));
-
- procsget(CP1G(fs) + 1, *(unsigned long *)&doubles);
-
- procsget(CP1G(ft), *((unsigned long *)&doublet + 1));
-
- procsget(CP1G(ft) + 1, *(unsigned long *)&doublet);
-
- result = (doubles < doublet);
-
- break;
-
- default:
- unrecognised(dipc);
- break;
- }
-
- procsget(CP1CS, cs);
-
- Set_Cond(cs, result);
-
- procsput(CP1CS, cs);
-
- return dipc;
- }
-
- dinstrn *
- i_cole(dipc, fmt, ft, fs, fd)
- dinstrn *dipc;
- int fmt;
- int ft;
- int fs;
- int fd;
- {
- float singles;
- float singlet;
- double doubles;
- double doublet;
- int result;
- unsigned long cs;
-
- /*
- * ordered && (less than || equal)
- * (see p.7-6)
- *
- * TODO: ordered
- */
- switch (fmt)
- {
- case FMT_SINGLE:
- procsget(CP1G(fs), *(unsigned long *)&singles);
-
- procsget(CP1G(ft), *(unsigned long *)&singlet);
-
- result = (singles <= singlet);
-
- break;
-
- case FMT_DOUBLE:
- /*
- * Note apparent reversal of words within
- * doubles here -- no idea why.
- */
- procsget(CP1G(fs), *((unsigned long *)&doubles + 1));
-
- procsget(CP1G(fs) + 1, *(unsigned long *)&doubles);
-
- procsget(CP1G(ft), *((unsigned long *)&doublet + 1));
-
- procsget(CP1G(ft) + 1, *(unsigned long *)&doublet);
-
- result = (doubles <= doublet);
-
- break;
-
- default:
- unrecognised(dipc);
- break;
- }
-
- procsget(CP1CS, cs);
-
- Set_Cond(cs, result);
-
- procsput(CP1CS, cs);
-
- return dipc;
- }
-
- dinstrn *
- i_colt(dipc, fmt, ft, fs, fd)
- dinstrn *dipc;
- int fmt;
- int ft;
- int fs;
- int fd;
- {
- float singles;
- float singlet;
- double doubles;
- double doublet;
- int result;
- unsigned long cs;
-
- /*
- * ordered && less than
- * (see p.7-6)
- *
- * TODO: ordered
- */
- switch (fmt)
- {
- case FMT_SINGLE:
- procsget(CP1G(fs), *(unsigned long *)&singles);
-
- procsget(CP1G(ft), *(unsigned long *)&singlet);
-
- result = (singles < singlet);
-
- break;
-
- case FMT_DOUBLE:
- /*
- * Note apparent reversal of words within
- * doubles here -- no idea why.
- */
- procsget(CP1G(fs), *((unsigned long *)&doubles + 1));
-
- procsget(CP1G(fs) + 1, *(unsigned long *)&doubles);
-
- procsget(CP1G(ft), *((unsigned long *)&doublet + 1));
-
- procsget(CP1G(ft) + 1, *(unsigned long *)&doublet);
-
- result = (doubles < doublet);
-
- break;
-
- default:
- unrecognised(dipc);
- break;
- }
-
- procsget(CP1CS, cs);
-
- Set_Cond(cs, result);
-
- procsput(CP1CS, cs);
-
- return dipc;
- }
-
- dinstrn *
- i_ctc1(dipc, rt, fs)
- dinstrn *dipc;
- int rt;
- int fs;
- {
- unsigned long t;
-
- procsget(rt, t);
-
- procsput(CP1C(fs), t);
-
- return dipc;
- }
-
- dinstrn *
- i_cule(dipc, fmt, ft, fs, fd)
- dinstrn *dipc;
- int fmt;
- int ft;
- int fs;
- int fd;
- {
- float singles;
- float singlet;
- double doubles;
- double doublet;
- int result;
- unsigned long cs;
-
- /*
- * less than || equal
- *
- * TODO: unordered
- */
- switch (fmt)
- {
- case FMT_SINGLE:
- procsget(CP1G(fs), *(unsigned long *)&singles);
-
- procsget(CP1G(ft), *(unsigned long *)&singlet);
-
- result = (singles <= singlet);
-
- break;
-
- case FMT_DOUBLE:
- /*
- * Note apparent reversal of words within
- * doubles here -- no idea why.
- */
- procsget(CP1G(fs), *((unsigned long *)&doubles + 1));
-
- procsget(CP1G(fs) + 1, *(unsigned long *)&doubles);
-
- procsget(CP1G(ft), *((unsigned long *)&doublet + 1));
-
- procsget(CP1G(ft) + 1, *(unsigned long *)&doublet);
-
- result = (doubles <= doublet);
-
- break;
-
- default:
- unrecognised(dipc);
- break;
- }
-
- procsget(CP1CS, cs);
-
- Set_Cond(cs, result);
-
- procsput(CP1CS, cs);
-
- return dipc;
- }
-
- dinstrn *
- i_cult(dipc, fmt, ft, fs, fd)
- dinstrn *dipc;
- int fmt;
- int ft;
- int fs;
- int fd;
- {
- float singles;
- float singlet;
- double doubles;
- double doublet;
- int result;
- unsigned long cs;
-
- /*
- * unordered || less than
- * (see p.7-6)
- *
- * TODO: unordered
- */
- switch (fmt)
- {
- case FMT_SINGLE:
- procsget(CP1G(fs), *(unsigned long *)&singles);
-
- procsget(CP1G(ft), *(unsigned long *)&singlet);
-
- result = (singles < singlet);
-
- break;
-
- case FMT_DOUBLE:
- /*
- * Note apparent reversal of words within
- * doubles here -- no idea why.
- */
- procsget(CP1G(fs), *((unsigned long *)&doubles + 1));
-
- procsget(CP1G(fs) + 1, *(unsigned long *)&doubles);
-
- procsget(CP1G(ft), *((unsigned long *)&doublet + 1));
-
- procsget(CP1G(ft) + 1, *(unsigned long *)&doublet);
-
- result = (doubles < doublet);
-
- break;
-
- default:
- unrecognised(dipc);
- break;
- }
-
- procsget(CP1CS, cs);
-
- Set_Cond(cs, result);
-
- procsput(CP1CS, cs);
-
- return dipc;
- }
-
- dinstrn *
- i_cvtd(dipc, fmt, ft, fs, fd)
- dinstrn *dipc;
- int fmt;
- int ft;
- int fs;
- int fd;
- {
- float singlef;
- double doublef;
- long fixedf;
-
- switch (fmt)
- {
- case FMT_SINGLE:
- procsget(CP1G(fs), *(unsigned long *)&singlef);
-
- doublef = singlef;
- break;
-
- case FMT_FIXED:
- procsget(CP1G(fs), fixedf);
-
- doublef = fixedf;
- break;
-
- default:
- unrecognised(dipc);
- break;
- }
-
- /*
- * Note apparent reversal of words within
- * doubles here -- no idea why.
- */
-
- procsput(CP1G(fd), *((unsigned long *)&doublef + 1));
-
- procsput(CP1G(fd) + 1, *(unsigned long *)&doublef);
-
- return dipc;
- }
-
- dinstrn *
- i_cvts(dipc, fmt, ft, fs, fd)
- dinstrn *dipc;
- int fmt;
- int ft;
- int fs;
- int fd;
- {
- float singlef;
- double doublef;
- long fixedf;
-
- switch (fmt)
- {
- case FMT_DOUBLE:
- /*
- * Note apparent reversal of words within
- * doubles here -- no idea why.
- */
- procsget(CP1G(fs), *((unsigned long *)&doublef + 1));
-
- procsget(CP1G(fs) + 1, *(unsigned long *)&doublef);
-
- singlef = doublef;
- break;
-
- case FMT_FIXED:
- procsget(CP1G(fs), fixedf);
-
- singlef = fixedf;
- break;
-
- default:
- unrecognised(dipc);
- break;
- }
-
- procsput(CP1G(fd), *(unsigned long *)&singlef);
-
- return dipc;
- }
-
- dinstrn *
- i_cvtw(dipc, fmt, ft, fs, fd)
- dinstrn *dipc;
- int fmt;
- int ft;
- int fs;
- int fd;
- {
- float singlef;
- double doublef;
- long fixedf;
-
- switch (fmt)
- {
- case FMT_SINGLE:
- procsget(CP1G(fs), *(unsigned long *)&singlef);
-
- fixedf = singlef;
- break;
-
- case FMT_DOUBLE:
- /*
- * Note apparent reversal of words within
- * doubles here -- no idea why.
- */
- procsget(CP1G(fs), *((unsigned long *)&doublef + 1));
-
- procsget(CP1G(fs) + 1, *(unsigned long *)&doublef);
-
- fixedf = doublef;
- break;
-
- default:
- unrecognised(dipc);
- break;
- }
-
- procsput(CP1G(fd), fixedf);
-
- return dipc;
- }
-