Artifact c109fa30449787f9ef046c30c63008b80434b6e8:


0000: 2f 2a 20 53 6f 6d 65 20 72 61 6e 64 6f 6d 20 74  /* Some random t
0010: 65 73 74 73 20 66 6f 72 20 76 61 63 61 6c 6c 2e  ests for vacall.
0020: 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 43 6f 70 79 72   */../*. * Copyr
0030: 69 67 68 74 20 31 39 39 33 20 42 69 6c 6c 20 54  ight 1993 Bill T
0040: 72 69 67 67 73 2c 20 3c 42 69 6c 6c 2e 54 72 69  riggs, <Bill.Tri
0050: 67 67 73 40 69 6e 72 69 61 6c 70 65 73 2e 66 72  ggs@inrialpes.fr
0060: 3e 0a 20 2a 20 43 6f 70 79 72 69 67 68 74 20 31  >. * Copyright 1
0070: 39 39 35 2d 31 39 39 39 2c 20 32 30 30 32 20 42  995-1999, 2002 B
0080: 72 75 6e 6f 20 48 61 69 62 6c 65 2c 20 3c 62 72  runo Haible, <br
0090: 75 6e 6f 40 63 6c 69 73 70 2e 6f 72 67 3e 0a 20  uno@clisp.org>. 
00a0: 2a 0a 20 2a 20 54 68 69 73 20 69 73 20 66 72 65  *. * This is fre
00b0: 65 20 73 6f 66 74 77 61 72 65 20 64 69 73 74 72  e software distr
00c0: 69 62 75 74 65 64 20 75 6e 64 65 72 20 74 68 65  ibuted under the
00d0: 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62   GNU General Pub
00e0: 6c 69 63 20 4c 69 63 65 6e 63 65 0a 20 2a 20 64  lic Licence. * d
00f0: 65 73 63 72 69 62 65 64 20 69 6e 20 74 68 65 20  escribed in the 
0100: 66 69 6c 65 20 43 4f 50 59 49 4e 47 2e 20 43 6f  file COPYING. Co
0110: 6e 74 61 63 74 20 74 68 65 20 61 75 74 68 6f 72  ntact the author
0120: 20 69 66 20 79 6f 75 20 64 6f 6e 27 74 20 68 61   if you don't ha
0130: 76 65 20 74 68 69 73 0a 20 2a 20 6f 72 20 63 61  ve this. * or ca
0140: 6e 27 74 20 6c 69 76 65 20 77 69 74 68 20 69 74  n't live with it
0150: 2e 20 54 68 65 72 65 20 69 73 20 41 42 53 4f 4c  . There is ABSOL
0160: 55 54 45 4c 59 20 4e 4f 20 57 41 52 52 41 4e 54  UTELY NO WARRANT
0170: 59 2c 20 65 78 70 6c 69 63 69 74 20 6f 72 20 69  Y, explicit or i
0180: 6d 70 6c 69 65 64 2c 0a 20 2a 20 6f 6e 20 74 68  mplied,. * on th
0190: 69 73 20 73 6f 66 74 77 61 72 65 2e 0a 20 2a 2f  is software.. */
01a0: 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69  ..#include <stdi
01b0: 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73  o.h>.#include <s
01c0: 74 64 6c 69 62 2e 68 3e 0a 23 69 6e 63 6c 75 64  tdlib.h>.#includ
01d0: 65 20 3c 73 74 72 69 6e 67 2e 68 3e 0a 23 69 6e  e <string.h>.#in
01e0: 63 6c 75 64 65 20 22 63 61 6c 6c 62 61 63 6b 2e  clude "callback.
01f0: 68 22 0a 46 49 4c 45 2a 20 6f 75 74 3b 0a 0a 2f  h".FILE* out;../
0200: 2a 20 4e 42 20 73 69 6e 63 65 20 4b 26 52 20 43  * NB since K&R C
0210: 20 61 6c 77 61 79 73 20 70 61 73 73 65 73 20 63   always passes c
0220: 68 61 72 73 20 61 6e 64 20 73 68 6f 72 74 73 20  hars and shorts 
0230: 61 73 20 69 6e 74 73 20 61 6e 64 20 66 6c 6f 61  as ints and floa
0240: 74 73 20 61 73 20 64 6f 75 62 6c 65 73 2c 0a 20  ts as doubles,. 
0250: 2a 20 75 6e 70 72 6f 74 6f 74 79 70 65 64 20 41  * unprototyped A
0260: 4e 53 49 2d 43 20 66 75 6e 63 74 69 6f 6e 73 20  NSI-C functions 
0270: 6d 75 73 74 20 64 6f 20 74 68 65 20 73 61 6d 65  must do the same
0280: 2c 20 65 67 3a 0a 20 2a 20 2d 20 66 6f 6f 28 78  , eg:. * - foo(x
0290: 29 20 66 6c 6f 61 74 20 78 3b 20 7b 20 2e 2e 2e  ) float x; { ...
02a0: 20 7d 20 70 61 73 73 65 73 20 78 20 61 73 20 61   } passes x as a
02b0: 20 64 6f 75 62 6c 65 20 26 20 63 6f 6e 76 65 72   double & conver
02c0: 74 73 20 69 74 20 74 6f 20 61 20 66 6c 6f 61 74  ts it to a float
02d0: 20 69 6e 74 65 72 6e 61 6c 6c 79 2e 0a 20 2a 20   internally.. * 
02e0: 2d 20 66 6f 6f 28 66 6c 6f 61 74 20 78 29 20 7b  - foo(float x) {
02f0: 20 2e 2e 2e 20 7d 20 70 61 73 73 65 73 20 78 20   ... } passes x 
0300: 61 73 20 61 20 66 6c 6f 61 74 2e 0a 20 2a 2f 0a  as a float.. */.
0310: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 53 54  #if defined(__ST
0320: 44 43 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  DC__) || defined
0330: 28 5f 5f 47 4e 55 43 5f 5f 29 20 7c 7c 20 64 65  (__GNUC__) || de
0340: 66 69 6e 65 64 28 5f 5f 63 70 6c 75 73 70 6c 75  fined(__cplusplu
0350: 73 29 0a 23 64 65 66 69 6e 65 20 5f 20 2c 0a 23  s).#define _ ,.#
0360: 64 65 66 69 6e 65 20 5f 50 28 41 52 47 53 2c 54  define _P(ARGS,T
0370: 59 50 45 53 29 20 28 54 59 50 45 53 29 0a 23 64  YPES) (TYPES).#d
0380: 65 66 69 6e 65 20 46 54 59 50 45 28 52 45 54 54  efine FTYPE(RETT
0390: 59 50 45 2c 41 52 47 54 59 50 45 53 29 20 28 52  YPE,ARGTYPES) (R
03a0: 45 54 54 59 50 45 20 28 2a 29 20 41 52 47 54 59  ETTYPE (*) ARGTY
03b0: 50 45 53 29 0a 23 65 6c 73 65 0a 23 64 65 66 69  PES).#else.#defi
03c0: 6e 65 20 5f 20 3b 0a 23 64 65 66 69 6e 65 20 5f  ne _ ;.#define _
03d0: 50 28 41 52 47 53 2c 54 59 50 45 53 29 20 41 52  P(ARGS,TYPES) AR
03e0: 47 53 20 54 59 50 45 53 3b 0a 23 64 65 66 69 6e  GS TYPES;.#defin
03f0: 65 20 46 54 59 50 45 28 52 45 54 54 59 50 45 2c  e FTYPE(RETTYPE,
0400: 41 52 47 54 59 50 45 53 29 20 28 52 45 54 54 59  ARGTYPES) (RETTY
0410: 50 45 20 28 2a 29 20 28 29 29 0a 23 65 6e 64 69  PE (*) ()).#endi
0420: 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  f..#if defined(_
0430: 5f 68 70 70 61 5f 5f 29 20 26 26 20 64 65 66 69  _hppa__) && defi
0440: 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 0a 23 69  ned(__GNUC__).#i
0450: 66 20 28 5f 5f 47 4e 55 43 5f 5f 20 3d 3d 20 32  f (__GNUC__ == 2
0460: 20 26 26 20 5f 5f 47 4e 55 43 5f 4d 49 4e 4f 52   && __GNUC_MINOR
0470: 5f 5f 20 3c 20 36 29 0a 2f 2a 20 67 63 63 2d 32  __ < 6)./* gcc-2
0480: 2e 35 2e 32 20 62 75 67 73 20 70 72 65 76 65 6e  .5.2 bugs preven
0490: 74 20 74 68 65 20 54 20 74 65 73 74 20 66 72 6f  t the T test fro
04a0: 6d 20 77 6f 72 6b 69 6e 67 2e 20 2a 2f 0a 23 64  m working. */.#d
04b0: 65 66 69 6e 65 20 53 4b 49 50 5f 54 0a 23 65 6e  efine SKIP_T.#en
04c0: 64 69 66 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  dif.#endif.#if d
04d0: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29  efined(__m68k__)
04e0: 20 26 26 20 64 65 66 69 6e 65 64 28 73 75 6e 29   && defined(sun)
04f0: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 47   && !defined(__G
0500: 4e 55 43 5f 5f 29 0a 2f 2a 20 41 20 53 75 6e 4f  NUC__)./* A SunO
0510: 53 20 34 2e 30 2e 33 20 63 63 20 62 75 67 20 69  S 4.0.3 cc bug i
0520: 73 20 74 72 69 67 67 65 72 65 64 20 62 79 20 74  s triggered by t
0530: 68 65 20 76 61 5f 61 72 67 5f 73 74 72 75 63 74  he va_arg_struct
0540: 20 6d 61 63 72 6f 2e 20 2a 2f 0a 23 64 65 66 69   macro. */.#defi
0550: 6e 65 20 53 4b 49 50 5f 53 54 52 55 43 54 53 0a  ne SKIP_STRUCTS.
0560: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
0570: 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 26 26 20  ed(__m68k__) && 
0580: 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f  defined(__GNUC__
0590: 29 0a 2f 2a 20 22 67 63 63 2d 32 2e 36 2e 33 20  )./* "gcc-2.6.3 
05a0: 2d 66 72 65 67 2d 73 74 72 75 63 74 2d 72 65 74  -freg-struct-ret
05b0: 75 72 6e 22 20 72 65 74 75 72 6e 73 20 20 54 20  urn" returns  T 
05c0: 3d 20 73 74 72 75 63 74 20 7b 20 63 68 61 72 20  = struct { char 
05d0: 63 5b 33 5d 3b 20 7d 20 20 28 77 68 69 63 68 0a  c[3]; }  (which.
05e0: 20 2a 20 68 61 73 20 73 69 7a 65 20 34 20 21 29   * has size 4 !)
05f0: 20 69 6e 20 6d 65 6d 6f 72 79 2c 20 69 6e 20 63   in memory, in c
0600: 6f 6e 74 72 61 73 74 20 74 6f 20 20 73 74 72 75  ontrast to  stru
0610: 63 74 20 7b 20 63 68 61 72 20 61 2c 62 2c 63 3b  ct { char a,b,c;
0620: 20 7d 20 20 61 6e 64 0a 20 2a 20 73 74 72 75 63   }  and. * struc
0630: 74 20 7b 20 63 68 61 72 20 63 5b 34 5d 3b 20 7d  t { char c[4]; }
0640: 20 20 61 6e 64 20 20 73 74 72 75 63 74 20 7b 20    and  struct { 
0650: 63 68 61 72 20 61 2c 62 2c 63 2c 64 3b 20 7d 20  char a,b,c,d; } 
0660: 20 77 68 69 63 68 20 68 61 76 65 20 74 68 65 20   which have the 
0670: 73 61 6d 65 0a 20 2a 20 73 69 7a 65 20 61 6e 64  same. * size and
0680: 20 74 68 65 20 73 61 6d 65 20 61 6c 69 67 6e 6d   the same alignm
0690: 65 6e 74 20 62 75 74 20 61 72 65 20 72 65 74 75  ent but are retu
06a0: 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74 65 72  rned in register
06b0: 73 2e 20 49 20 64 6f 6e 27 74 20 6b 6e 6f 77 20  s. I don't know 
06c0: 77 68 79 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65  why.. */.#define
06d0: 20 53 4b 49 50 5f 54 0a 23 65 6e 64 69 66 0a 23   SKIP_T.#endif.#
06e0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38  if defined(__i38
06f0: 36 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28  6__) && defined(
0700: 5f 5f 47 4e 55 43 5f 5f 29 0a 23 69 66 20 28 5f  __GNUC__).#if (_
0710: 5f 47 4e 55 43 5f 5f 20 3d 3d 20 32 29 20 26 26  _GNUC__ == 2) &&
0720: 20 28 5f 5f 47 4e 55 43 5f 4d 49 4e 4f 52 5f 5f   (__GNUC_MINOR__
0730: 20 3d 3d 20 37 29 0a 2f 2a 20 50 72 6f 62 6c 65   == 7)./* Proble
0740: 6d 20 77 69 74 68 20 67 63 63 2d 32 2e 37 2e 78  m with gcc-2.7.x
0750: 20 6f 6e 20 4c 69 6e 75 78 2f 45 4c 46 3a 20 54   on Linux/ELF: T
0760: 68 65 20 58 20 74 65 73 74 20 66 61 69 6c 73 2e  he X test fails.
0770: 0a 20 2a 20 54 68 65 20 63 61 6c 6c 69 6e 67 20  . * The calling 
0780: 63 6f 6e 76 65 6e 74 69 6f 6e 20 66 6f 72 20 43  convention for C
0790: 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74 75 72   functions retur
07a0: 6e 69 6e 67 20 73 74 72 75 63 74 75 72 65 73 20  ning structures 
07b0: 6f 66 20 73 69 7a 65 20 3e 20 38 20 62 79 74 65  of size > 8 byte
07c0: 73 0a 20 2a 20 61 70 70 61 72 65 6e 74 6c 79 20  s. * apparently 
07d0: 68 61 73 20 63 68 61 6e 67 65 64 20 62 65 74 77  has changed betw
07e0: 65 65 6e 20 67 63 63 2d 32 2e 36 2e 33 20 61 6e  een gcc-2.6.3 an
07f0: 64 20 67 63 63 2d 32 2e 37 20 28 61 6c 6c 20 69  d gcc-2.7 (all i
0800: 33 38 36 20 70 6c 61 74 66 6f 72 6d 73 29 2c 0a  386 platforms),.
0810: 20 2a 20 61 6e 64 20 76 61 63 61 6c 6c 20 73 75   * and vacall su
0820: 70 70 6f 72 74 73 20 6f 6e 6c 79 20 74 68 65 20  pports only the 
0830: 6f 6c 64 20 6f 6e 65 2e 20 53 69 6e 63 65 20 67  old one. Since g
0840: 63 63 2d 32 2e 38 20 77 69 6c 6c 20 73 77 69 74  cc-2.8 will swit
0850: 63 68 20 62 61 63 6b 20 74 6f 0a 20 2a 20 67 63  ch back to. * gc
0860: 63 2d 32 2e 36 2e 33 27 73 20 63 61 6c 6c 69 6e  c-2.6.3's callin
0870: 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 20 49 20  g convention, I 
0880: 77 6f 6e 27 74 20 63 68 61 6e 67 65 20 66 66 63  won't change ffc
0890: 61 6c 6c 2f 76 61 63 61 6c 6c 20 66 6f 72 20 74  all/vacall for t
08a0: 68 69 73 2e 0a 20 2a 20 4a 75 73 74 20 68 69 64  his.. * Just hid
08b0: 65 20 74 68 65 20 70 72 6f 62 6c 65 6d 20 62 79  e the problem by
08c0: 20 6e 6f 74 20 72 75 6e 6e 69 6e 67 20 74 68 65   not running the
08d0: 20 74 65 73 74 2e 20 54 68 65 20 69 6d 70 61 63   test. The impac
08e0: 74 20 69 73 6e 27 74 20 62 69 67 20 66 6f 72 0a  t isn't big for.
08f0: 20 2a 20 43 4c 49 53 50 3a 20 43 61 6c 6c 62 61   * CLISP: Callba
0900: 63 6b 73 20 72 65 74 75 72 6e 69 6e 67 20 73 74  cks returning st
0910: 72 75 63 74 75 72 65 73 20 3e 20 38 20 62 79 74  ructures > 8 byt
0920: 65 73 20 77 6f 6e 27 74 20 77 6f 72 6b 2e 0a 20  es won't work.. 
0930: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 4b 49 50 5f  */.#define SKIP_
0940: 58 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a  X.#endif.#endif.
0950: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70  #if defined(__sp
0960: 61 72 63 5f 5f 29 20 26 26 20 64 65 66 69 6e 65  arc__) && define
0970: 64 28 73 75 6e 29 20 26 26 20 64 65 66 69 6e 65  d(sun) && define
0980: 64 28 5f 5f 53 55 4e 50 52 4f 5f 43 29 20 2f 2a  d(__SUNPRO_C) /*
0990: 20 53 55 4e 57 73 70 72 6f 20 63 63 20 2a 2f 0a   SUNWspro cc */.
09a0: 2f 2a 20 53 75 6e 50 52 4f 20 63 63 20 6d 69 73  /* SunPRO cc mis
09b0: 63 6f 6d 70 69 6c 65 73 20 74 68 65 20 73 69 6d  compiles the sim
09c0: 75 6c 61 74 6f 72 20 66 75 6e 63 74 69 6f 6e 20  ulator function 
09d0: 66 6f 72 20 58 5f 42 63 64 42 3a 20 64 2e 69 5b  for X_BcdB: d.i[
09e0: 31 5d 20 69 73 0a 20 2a 20 74 65 6d 70 6f 72 61  1] is. * tempora
09f0: 72 69 6c 79 20 73 74 6f 72 65 64 20 69 6e 20 25  rily stored in %
0a00: 6c 32 20 61 6e 64 20 70 75 74 20 6f 6e 74 6f 20  l2 and put onto 
0a10: 74 68 65 20 73 74 61 63 6b 20 66 72 6f 6d 20 25  the stack from %
0a20: 6c 32 2c 20 62 75 74 20 69 6e 20 62 65 74 77 65  l2, but in betwe
0a30: 65 6e 0a 20 2a 20 74 68 65 20 63 6f 70 79 20 6f  en. * the copy o
0a40: 66 20 58 20 68 61 73 20 75 73 65 64 20 25 6c 32  f X has used %l2
0a50: 20 61 73 20 61 20 63 6f 75 6e 74 65 72 20 77 69   as a counter wi
0a60: 74 68 6f 75 74 20 73 61 76 69 6e 67 20 61 6e 64  thout saving and
0a70: 20 72 65 73 74 6f 72 69 6e 67 20 69 74 73 0a 20   restoring its. 
0a80: 2a 20 76 61 6c 75 65 2e 0a 20 2a 2f 0a 23 64 65  * value.. */.#de
0a90: 66 69 6e 65 20 53 4b 49 50 5f 58 0a 23 65 6e 64  fine SKIP_X.#end
0aa0: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
0ab0: 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 26 26 20 21  _mipsn32__) && !
0ac0: 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f  defined(__GNUC__
0ad0: 29 0a 2f 2a 20 54 68 65 20 58 20 74 65 73 74 20  )./* The X test 
0ae0: 63 72 61 73 68 65 73 20 66 6f 72 20 61 6e 20 75  crashes for an u
0af0: 6e 6b 6e 6f 77 6e 20 72 65 61 73 6f 6e 2e 20 2a  nknown reason. *
0b00: 2f 0a 23 64 65 66 69 6e 65 20 53 4b 49 50 5f 58  /.#define SKIP_X
0b10: 0a 23 65 6e 64 69 66 0a 0a 23 64 65 66 69 6e 65  .#endif..#define
0b20: 20 75 63 68 61 72 20 75 6e 73 69 67 6e 65 64 20   uchar unsigned 
0b30: 63 68 61 72 0a 23 64 65 66 69 6e 65 20 75 73 68  char.#define ush
0b40: 6f 72 74 20 75 6e 73 69 67 6e 65 64 20 73 68 6f  ort unsigned sho
0b50: 72 74 0a 23 64 65 66 69 6e 65 20 75 69 6e 74 20  rt.#define uint 
0b60: 75 6e 73 69 67 6e 65 64 20 69 6e 74 0a 23 64 65  unsigned int.#de
0b70: 66 69 6e 65 20 75 6c 6f 6e 67 20 75 6e 73 69 67  fine ulong unsig
0b80: 6e 65 64 20 6c 6f 6e 67 0a 0a 74 79 70 65 64 65  ned long..typede
0b90: 66 20 73 74 72 75 63 74 20 7b 20 63 68 61 72 20  f struct { char 
0ba0: 78 3b 20 7d 20 43 68 61 72 3b 0a 74 79 70 65 64  x; } Char;.typed
0bb0: 65 66 20 73 74 72 75 63 74 20 7b 20 73 68 6f 72  ef struct { shor
0bc0: 74 20 78 3b 20 7d 20 53 68 6f 72 74 3b 0a 74 79  t x; } Short;.ty
0bd0: 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 20 69  pedef struct { i
0be0: 6e 74 20 78 3b 20 7d 20 49 6e 74 3b 0a 74 79 70  nt x; } Int;.typ
0bf0: 65 64 65 66 20 73 74 72 75 63 74 20 7b 20 6c 6f  edef struct { lo
0c00: 6e 67 20 78 3b 20 7d 20 4c 6f 6e 67 3b 0a 74 79  ng x; } Long;.ty
0c10: 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 20 66  pedef struct { f
0c20: 6c 6f 61 74 20 78 3b 20 7d 20 46 6c 6f 61 74 3b  loat x; } Float;
0c30: 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20  .typedef struct 
0c40: 7b 20 64 6f 75 62 6c 65 20 78 3b 20 7d 20 44 6f  { double x; } Do
0c50: 75 62 6c 65 3b 0a 74 79 70 65 64 65 66 20 73 74  uble;.typedef st
0c60: 72 75 63 74 20 7b 20 63 68 61 72 20 63 3b 20 66  ruct { char c; f
0c70: 6c 6f 61 74 20 66 3b 20 7d 20 41 3b 0a 74 79 70  loat f; } A;.typ
0c80: 65 64 65 66 20 73 74 72 75 63 74 20 7b 20 64 6f  edef struct { do
0c90: 75 62 6c 65 20 64 3b 20 69 6e 74 20 69 5b 33 5d  uble d; int i[3]
0ca0: 3b 20 7d 20 42 3b 0a 74 79 70 65 64 65 66 20 73  ; } B;.typedef s
0cb0: 74 72 75 63 74 20 7b 20 6c 6f 6e 67 20 6c 31 3b  truct { long l1;
0cc0: 20 6c 6f 6e 67 20 6c 32 3b 20 7d 20 4a 3b 0a 74   long l2; } J;.t
0cd0: 79 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 20  ypedef struct { 
0ce0: 63 68 61 72 20 63 5b 33 5d 3b 20 7d 20 54 3b 0a  char c[3]; } T;.
0cf0: 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 7b  typedef struct {
0d00: 20 63 68 61 72 20 63 5b 33 33 5d 2c 63 31 3b 20   char c[33],c1; 
0d10: 7d 20 58 3b 0a 0a 63 68 61 72 20 63 31 3d 27 61  } X;..char c1='a
0d20: 27 2c 20 63 32 3d 31 32 37 2c 20 63 33 3d 28 63  ', c2=127, c3=(c
0d30: 68 61 72 29 31 32 38 2c 20 63 34 3d 28 63 68 61  har)128, c4=(cha
0d40: 72 29 32 35 35 2c 20 63 35 3d 2d 31 3b 0a 73 68  r)255, c5=-1;.sh
0d50: 6f 72 74 20 73 31 3d 33 32 37 36 37 2c 20 73 32  ort s1=32767, s2
0d60: 3d 28 73 68 6f 72 74 29 33 32 37 36 38 2c 20 73  =(short)32768, s
0d70: 33 3d 33 2c 20 73 34 3d 34 2c 20 73 35 3d 35 2c  3=3, s4=4, s5=5,
0d80: 20 73 36 3d 36 2c 20 73 37 3d 37 2c 20 73 38 3d   s6=6, s7=7, s8=
0d90: 38 2c 20 73 39 3d 39 3b 0a 69 6e 74 20 69 31 3d  8, s9=9;.int i1=
0da0: 31 2c 20 69 32 3d 32 2c 20 69 33 3d 33 2c 20 69  1, i2=2, i3=3, i
0db0: 34 3d 34 2c 20 69 35 3d 35 2c 20 69 36 3d 36 2c  4=4, i5=5, i6=6,
0dc0: 20 69 37 3d 37 2c 20 69 38 3d 38 2c 20 69 39 3d   i7=7, i8=8, i9=
0dd0: 39 2c 0a 20 20 20 20 69 31 30 3d 31 31 2c 20 69  9,.    i10=11, i
0de0: 31 31 3d 31 32 2c 20 69 31 32 3d 31 33 2c 20 69  11=12, i12=13, i
0df0: 31 33 3d 31 34 2c 20 69 31 34 3d 31 35 2c 20 69  13=14, i14=15, i
0e00: 31 35 3d 31 36 2c 20 69 31 36 3d 31 37 3b 0a 6c  15=16, i16=17;.l
0e10: 6f 6e 67 20 6c 31 3d 31 2c 20 6c 32 3d 32 2c 20  ong l1=1, l2=2, 
0e20: 6c 33 3d 33 2c 20 6c 34 3d 34 2c 20 6c 35 3d 35  l3=3, l4=4, l5=5
0e30: 2c 20 6c 36 3d 36 2c 20 6c 37 3d 37 2c 20 6c 38  , l6=6, l7=7, l8
0e40: 3d 38 2c 20 6c 39 3d 39 3b 0a 23 69 66 64 65 66  =8, l9=9;.#ifdef
0e50: 20 48 41 56 45 5f 4c 4f 4e 47 4c 4f 4e 47 0a 6c   HAVE_LONGLONG.l
0e60: 6f 6e 67 20 6c 6f 6e 67 20 6c 6c 31 20 3d 20 33  ong long ll1 = 3
0e70: 38 37 35 30 35 36 31 34 33 31 33 30 36 38 39 35  8750561431306895
0e80: 33 30 4c 4c 3b 0a 23 65 6e 64 69 66 0a 66 6c 6f  30LL;.#endif.flo
0e90: 61 74 20 66 31 3d 30 2e 31 2c 20 66 32 3d 30 2e  at f1=0.1, f2=0.
0ea0: 32 2c 20 66 33 3d 30 2e 33 2c 20 66 34 3d 30 2e  2, f3=0.3, f4=0.
0eb0: 34 2c 20 66 35 3d 30 2e 35 2c 20 66 36 3d 30 2e  4, f5=0.5, f6=0.
0ec0: 36 2c 20 66 37 3d 30 2e 37 2c 20 66 38 3d 30 2e  6, f7=0.7, f8=0.
0ed0: 38 2c 20 66 39 3d 30 2e 39 2c 0a 20 20 20 20 20  8, f9=0.9,.     
0ee0: 20 66 31 30 3d 31 2e 31 2c 20 66 31 31 3d 31 2e   f10=1.1, f11=1.
0ef0: 32 2c 20 66 31 32 3d 31 2e 33 2c 20 66 31 33 3d  2, f12=1.3, f13=
0f00: 31 2e 34 2c 20 66 31 34 3d 31 2e 35 2c 20 66 31  1.4, f14=1.5, f1
0f10: 35 3d 31 2e 36 2c 20 66 31 36 3d 31 2e 37 3b 0a  5=1.6, f16=1.7;.
0f20: 64 6f 75 62 6c 65 20 64 31 3d 30 2e 31 2c 20 64  double d1=0.1, d
0f30: 32 3d 30 2e 32 2c 20 64 33 3d 30 2e 33 2c 20 64  2=0.2, d3=0.3, d
0f40: 34 3d 30 2e 34 2c 20 64 35 3d 30 2e 35 2c 20 64  4=0.4, d5=0.5, d
0f50: 36 3d 30 2e 36 2c 20 64 37 3d 30 2e 37 2c 20 64  6=0.6, d7=0.7, d
0f60: 38 3d 30 2e 38 2c 20 64 39 3d 30 2e 39 2c 0a 20  8=0.8, d9=0.9,. 
0f70: 20 20 20 20 20 20 64 31 30 3d 31 2e 31 2c 20 64        d10=1.1, d
0f80: 31 31 3d 31 2e 32 2c 20 64 31 32 3d 31 2e 33 2c  11=1.2, d12=1.3,
0f90: 20 64 31 33 3d 31 2e 34 2c 20 64 31 34 3d 31 2e   d13=1.4, d14=1.
0fa0: 35 2c 20 64 31 35 3d 31 2e 36 2c 20 64 31 36 3d  5, d15=1.6, d16=
0fb0: 31 2e 37 3b 0a 0a 75 63 68 61 72 20 75 63 31 3d  1.7;..uchar uc1=
0fc0: 27 61 27 2c 20 75 63 32 3d 31 32 37 2c 20 75 63  'a', uc2=127, uc
0fd0: 33 3d 31 32 38 2c 20 75 63 34 3d 32 35 35 2c 20  3=128, uc4=255, 
0fe0: 75 63 35 3d 2d 31 3b 0a 75 73 68 6f 72 74 20 75  uc5=-1;.ushort u
0ff0: 73 31 3d 31 2c 20 75 73 32 3d 32 2c 20 75 73 33  s1=1, us2=2, us3
1000: 3d 33 2c 20 75 73 34 3d 34 2c 20 75 73 35 3d 35  =3, us4=4, us5=5
1010: 2c 20 75 73 36 3d 36 2c 20 75 73 37 3d 37 2c 20  , us6=6, us7=7, 
1020: 75 73 38 3d 38 2c 20 75 73 39 3d 39 3b 0a 75 69  us8=8, us9=9;.ui
1030: 6e 74 20 75 69 31 3d 31 2c 20 75 69 32 3d 32 2c  nt ui1=1, ui2=2,
1040: 20 75 69 33 3d 33 2c 20 75 69 34 3d 34 2c 20 75   ui3=3, ui4=4, u
1050: 69 35 3d 35 2c 20 75 69 36 3d 36 2c 20 75 69 37  i5=5, ui6=6, ui7
1060: 3d 37 2c 20 75 69 38 3d 38 2c 20 75 69 39 3d 39  =7, ui8=8, ui9=9
1070: 3b 0a 75 6c 6f 6e 67 20 75 6c 31 3d 31 2c 20 75  ;.ulong ul1=1, u
1080: 6c 32 3d 32 2c 20 75 6c 33 3d 33 2c 20 75 6c 34  l2=2, ul3=3, ul4
1090: 3d 34 2c 20 75 6c 35 3d 35 2c 20 75 6c 36 3d 36  =4, ul5=5, ul6=6
10a0: 2c 20 75 6c 37 3d 37 2c 20 75 6c 38 3d 38 2c 20  , ul7=7, ul8=8, 
10b0: 75 6c 39 3d 39 3b 0a 0a 63 68 61 72 20 2a 73 74  ul9=9;..char *st
10c0: 72 31 3d 22 68 65 6c 6c 6f 22 2c 73 74 72 32 5b  r1="hello",str2[
10d0: 5d 3d 22 67 6f 6f 64 62 79 65 22 2c 2a 73 74 72  ]="goodbye",*str
10e0: 33 3d 22 73 74 69 6c 6c 20 68 65 72 65 3f 22 3b  3="still here?";
10f0: 0a 43 68 61 72 20 43 31 3d 7b 27 41 27 7d 2c 20  .Char C1={'A'}, 
1100: 43 32 3d 7b 27 42 27 7d 2c 20 43 33 3d 7b 27 43  C2={'B'}, C3={'C
1110: 27 7d 2c 20 43 34 3d 7b 27 5c 33 37 37 27 7d 2c  '}, C4={'\377'},
1120: 20 43 35 3d 7b 2d 31 7d 3b 0a 53 68 6f 72 74 20   C5={-1};.Short 
1130: 53 31 3d 7b 31 7d 2c 20 53 32 3d 7b 32 7d 2c 20  S1={1}, S2={2}, 
1140: 53 33 3d 7b 33 7d 2c 20 53 34 3d 7b 34 7d 2c 20  S3={3}, S4={4}, 
1150: 53 35 3d 7b 35 7d 2c 20 53 36 3d 7b 36 7d 2c 20  S5={5}, S6={6}, 
1160: 53 37 3d 7b 37 7d 2c 20 53 38 3d 7b 38 7d 2c 20  S7={7}, S8={8}, 
1170: 53 39 3d 7b 39 7d 3b 0a 49 6e 74 20 49 31 3d 7b  S9={9};.Int I1={
1180: 31 7d 2c 20 49 32 3d 7b 32 7d 2c 20 49 33 3d 7b  1}, I2={2}, I3={
1190: 33 7d 2c 20 49 34 3d 7b 34 7d 2c 20 49 35 3d 7b  3}, I4={4}, I5={
11a0: 35 7d 2c 20 49 36 3d 7b 36 7d 2c 20 49 37 3d 7b  5}, I6={6}, I7={
11b0: 37 7d 2c 20 49 38 3d 7b 38 7d 2c 20 49 39 3d 7b  7}, I8={8}, I9={
11c0: 39 7d 3b 0a 46 6c 6f 61 74 20 46 31 3d 7b 30 2e  9};.Float F1={0.
11d0: 31 7d 2c 20 46 32 3d 7b 30 2e 32 7d 2c 20 46 33  1}, F2={0.2}, F3
11e0: 3d 7b 30 2e 33 7d 2c 20 46 34 3d 7b 30 2e 34 7d  ={0.3}, F4={0.4}
11f0: 2c 20 46 35 3d 7b 30 2e 35 7d 2c 20 46 36 3d 7b  , F5={0.5}, F6={
1200: 30 2e 36 7d 2c 20 46 37 3d 7b 30 2e 37 7d 2c 20  0.6}, F7={0.7}, 
1210: 46 38 3d 7b 30 2e 38 7d 2c 20 46 39 3d 7b 30 2e  F8={0.8}, F9={0.
1220: 39 7d 3b 0a 44 6f 75 62 6c 65 20 44 31 3d 7b 30  9};.Double D1={0
1230: 2e 31 7d 2c 20 44 32 3d 7b 30 2e 32 7d 2c 20 44  .1}, D2={0.2}, D
1240: 33 3d 7b 30 2e 33 7d 2c 20 44 34 3d 7b 30 2e 34  3={0.3}, D4={0.4
1250: 7d 2c 20 44 35 3d 7b 30 2e 35 7d 2c 20 44 36 3d  }, D5={0.5}, D6=
1260: 7b 30 2e 36 7d 2c 20 44 37 3d 7b 30 2e 37 7d 2c  {0.6}, D7={0.7},
1270: 20 44 38 3d 7b 30 2e 38 7d 2c 20 44 39 3d 7b 30   D8={0.8}, D9={0
1280: 2e 39 7d 3b 0a 0a 41 20 41 31 3d 7b 27 61 27 2c  .9};..A A1={'a',
1290: 30 2e 31 7d 2c 41 32 3d 7b 27 62 27 2c 30 2e 32  0.1},A2={'b',0.2
12a0: 7d 2c 41 33 3d 7b 27 5c 33 37 37 27 2c 30 2e 33  },A3={'\377',0.3
12b0: 7d 3b 0a 42 20 42 31 3d 7b 30 2e 31 2c 7b 31 2c  };.B B1={0.1,{1,
12c0: 32 2c 33 7d 7d 2c 42 32 3d 7b 30 2e 32 2c 7b 35  2,3}},B2={0.2,{5
12d0: 2c 34 2c 33 7d 7d 3b 0a 4a 20 4a 31 3d 7b 34 37  ,4,3}};.J J1={47
12e0: 2c 31 31 7d 2c 4a 32 3d 7b 37 33 2c 35 35 7d 3b  ,11},J2={73,55};
12f0: 0a 54 20 54 31 3d 7b 27 74 27 2c 27 68 27 2c 27  .T T1={'t','h','
1300: 65 27 7d 2c 54 32 3d 7b 27 66 27 2c 27 6f 27 2c  e'},T2={'f','o',
1310: 27 78 27 7d 3b 0a 58 20 58 31 3d 7b 22 61 62 63  'x'};.X X1={"abc
1320: 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73  defghijklmnopqrs
1330: 74 75 76 77 78 79 7a 41 42 43 44 45 46 22 2c 27  tuvwxyzABCDEF",'
1340: 47 27 7d 2c 20 58 32 3d 7b 22 31 32 33 22 2c 27  G'}, X2={"123",'
1350: 39 27 7d 2c 20 58 33 3d 7b 22 72 65 74 75 72 6e  9'}, X3={"return
1360: 2d 72 65 74 75 72 6e 2d 72 65 74 75 72 6e 22 2c  -return-return",
1370: 27 52 27 7d 3b 0a 0a 2f 2a 20 76 6f 69 64 20 74  'R'};../* void t
1380: 65 73 74 73 20 2a 2f 0a 76 6f 69 64 20 76 5f 76  ests */.void v_v
1390: 28 29 0a 7b 0a 20 20 66 70 72 69 6e 74 66 28 6f  ().{.  fprintf(o
13a0: 75 74 2c 22 76 6f 69 64 20 66 28 76 6f 69 64 29  ut,"void f(void)
13b0: 3a 5c 6e 22 29 3b 0a 20 20 66 66 6c 75 73 68 28  :\n");.  fflush(
13c0: 6f 75 74 29 3b 0a 7d 0a 0a 2f 2a 20 69 6e 74 20  out);.}../* int 
13d0: 74 65 73 74 73 20 2a 2f 0a 69 6e 74 20 69 5f 76  tests */.int i_v
13e0: 28 29 0a 7b 0a 20 20 69 6e 74 20 72 3d 39 39 3b  ().{.  int r=99;
13f0: 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22  .  fprintf(out,"
1400: 69 6e 74 20 66 28 76 6f 69 64 29 3a 22 29 3b 0a  int f(void):");.
1410: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20    fflush(out);. 
1420: 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 69 6e 74   return r;.}.int
1430: 20 69 5f 69 20 5f 50 28 28 61 29 2c 20 69 6e 74   i_i _P((a), int
1440: 20 61 29 0a 7b 0a 20 20 69 6e 74 20 72 3d 61 2b   a).{.  int r=a+
1450: 31 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74  1;.  fprintf(out
1460: 2c 22 69 6e 74 20 66 28 69 6e 74 29 3a 28 25 64  ,"int f(int):(%d
1470: 29 22 2c 61 29 3b 0a 20 20 66 66 6c 75 73 68 28  )",a);.  fflush(
1480: 6f 75 74 29 3b 0a 20 20 72 65 74 75 72 6e 20 72  out);.  return r
1490: 3b 0a 7d 0a 69 6e 74 20 69 5f 69 32 20 5f 50 28  ;.}.int i_i2 _P(
14a0: 28 61 2c 62 29 2c 20 69 6e 74 20 61 20 5f 20 69  (a,b), int a _ i
14b0: 6e 74 20 62 29 0a 7b 0a 20 20 69 6e 74 20 72 3d  nt b).{.  int r=
14c0: 61 2b 62 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f  a+b;.  fprintf(o
14d0: 75 74 2c 22 69 6e 74 20 66 28 32 2a 69 6e 74 29  ut,"int f(2*int)
14e0: 3a 28 25 64 2c 25 64 29 22 2c 61 2c 62 29 3b 0a  :(%d,%d)",a,b);.
14f0: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20    fflush(out);. 
1500: 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 69 6e 74   return r;.}.int
1510: 20 69 5f 69 34 20 5f 50 28 28 61 2c 62 2c 63 2c   i_i4 _P((a,b,c,
1520: 64 29 2c 20 69 6e 74 20 61 20 5f 20 69 6e 74 20  d), int a _ int 
1530: 62 20 5f 20 69 6e 74 20 63 20 5f 20 69 6e 74 20  b _ int c _ int 
1540: 64 29 0a 7b 0a 20 20 69 6e 74 20 72 3d 61 2b 62  d).{.  int r=a+b
1550: 2b 63 2b 64 3b 0a 20 20 66 70 72 69 6e 74 66 28  +c+d;.  fprintf(
1560: 6f 75 74 2c 22 69 6e 74 20 66 28 34 2a 69 6e 74  out,"int f(4*int
1570: 29 3a 28 25 64 2c 25 64 2c 25 64 2c 25 64 29 22  ):(%d,%d,%d,%d)"
1580: 2c 61 2c 62 2c 63 2c 64 29 3b 0a 20 20 66 66 6c  ,a,b,c,d);.  ffl
1590: 75 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75  ush(out);.  retu
15a0: 72 6e 20 72 3b 0a 7d 0a 69 6e 74 20 69 5f 69 38  rn r;.}.int i_i8
15b0: 20 5f 50 28 28 61 2c 62 2c 63 2c 64 2c 65 2c 66   _P((a,b,c,d,e,f
15c0: 2c 67 2c 68 29 2c 0a 20 20 20 20 20 20 20 20 20  ,g,h),.         
15d0: 20 20 20 69 6e 74 20 61 20 5f 20 69 6e 74 20 62     int a _ int b
15e0: 20 5f 20 69 6e 74 20 63 20 5f 20 69 6e 74 20 64   _ int c _ int d
15f0: 20 5f 20 69 6e 74 20 65 20 5f 20 69 6e 74 20 66   _ int e _ int f
1600: 20 5f 20 69 6e 74 20 67 20 5f 20 69 6e 74 20 68   _ int g _ int h
1610: 29 0a 7b 0a 20 20 69 6e 74 20 72 3d 61 2b 62 2b  ).{.  int r=a+b+
1620: 63 2b 64 2b 65 2b 66 2b 67 2b 68 3b 0a 20 20 66  c+d+e+f+g+h;.  f
1630: 70 72 69 6e 74 66 28 6f 75 74 2c 22 69 6e 74 20  printf(out,"int 
1640: 66 28 38 2a 69 6e 74 29 3a 28 25 64 2c 25 64 2c  f(8*int):(%d,%d,
1650: 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25  %d,%d,%d,%d,%d,%
1660: 64 29 22 2c 61 2c 62 2c 63 2c 64 2c 65 2c 66 2c  d)",a,b,c,d,e,f,
1670: 67 2c 68 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f  g,h);.  fflush(o
1680: 75 74 29 3b 0a 20 20 72 65 74 75 72 6e 20 72 3b  ut);.  return r;
1690: 0a 7d 0a 69 6e 74 20 69 5f 69 31 36 20 5f 50 28  .}.int i_i16 _P(
16a0: 28 61 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67 2c 68  (a,b,c,d,e,f,g,h
16b0: 2c 69 2c 6a 2c 6b 2c 6c 2c 6d 2c 6e 2c 6f 2c 70  ,i,j,k,l,m,n,o,p
16c0: 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ),.             
16d0: 69 6e 74 20 61 20 5f 20 69 6e 74 20 62 20 5f 20  int a _ int b _ 
16e0: 69 6e 74 20 63 20 5f 20 69 6e 74 20 64 20 5f 20  int c _ int d _ 
16f0: 69 6e 74 20 65 20 5f 20 69 6e 74 20 66 20 5f 20  int e _ int f _ 
1700: 69 6e 74 20 67 20 5f 20 69 6e 74 20 68 0a 20 20  int g _ int h.  
1710: 20 20 20 20 20 20 20 20 20 20 20 5f 20 69 6e 74             _ int
1720: 20 69 20 5f 20 69 6e 74 20 6a 20 5f 20 69 6e 74   i _ int j _ int
1730: 20 6b 20 5f 20 69 6e 74 20 6c 20 5f 20 69 6e 74   k _ int l _ int
1740: 20 6d 20 5f 20 69 6e 74 20 6e 20 5f 20 69 6e 74   m _ int n _ int
1750: 20 6f 20 5f 20 69 6e 74 20 70 29 0a 7b 0a 20 20   o _ int p).{.  
1760: 69 6e 74 20 72 3d 61 2b 62 2b 63 2b 64 2b 65 2b  int r=a+b+c+d+e+
1770: 66 2b 67 2b 68 2b 69 2b 6a 2b 6b 2b 6c 2b 6d 2b  f+g+h+i+j+k+l+m+
1780: 6e 2b 6f 2b 70 3b 0a 20 20 66 70 72 69 6e 74 66  n+o+p;.  fprintf
1790: 28 6f 75 74 2c 22 69 6e 74 20 66 28 31 36 2a 69  (out,"int f(16*i
17a0: 6e 74 29 3a 28 25 64 2c 25 64 2c 25 64 2c 25 64  nt):(%d,%d,%d,%d
17b0: 2c 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25 64 2c  ,%d,%d,%d,%d,%d,
17c0: 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25  %d,%d,%d,%d,%d,%
17d0: 64 2c 25 64 29 22 2c 0a 20 20 20 20 20 20 20 20  d,%d)",.        
17e0: 20 20 61 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67 2c    a,b,c,d,e,f,g,
17f0: 68 2c 69 2c 6a 2c 6b 2c 6c 2c 6d 2c 6e 2c 6f 2c  h,i,j,k,l,m,n,o,
1800: 70 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74  p);.  fflush(out
1810: 29 3b 0a 20 20 72 65 74 75 72 6e 20 72 3b 0a 7d  );.  return r;.}
1820: 0a 0a 2f 2a 20 66 6c 6f 61 74 20 74 65 73 74 73  ../* float tests
1830: 20 2a 2f 0a 66 6c 6f 61 74 20 66 5f 66 20 5f 50   */.float f_f _P
1840: 28 28 61 29 2c 20 66 6c 6f 61 74 20 61 29 0a 7b  ((a), float a).{
1850: 0a 20 20 66 6c 6f 61 74 20 72 3d 61 2b 31 2e 30  .  float r=a+1.0
1860: 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c  ;.  fprintf(out,
1870: 22 66 6c 6f 61 74 20 66 28 66 6c 6f 61 74 29 3a  "float f(float):
1880: 28 25 67 29 22 2c 61 29 3b 0a 20 20 66 66 6c 75  (%g)",a);.  fflu
1890: 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 72  sh(out);.  retur
18a0: 6e 20 72 3b 0a 7d 0a 66 6c 6f 61 74 20 66 5f 66  n r;.}.float f_f
18b0: 32 20 5f 50 28 28 61 2c 62 29 2c 20 66 6c 6f 61  2 _P((a,b), floa
18c0: 74 20 61 20 5f 20 66 6c 6f 61 74 20 62 29 0a 7b  t a _ float b).{
18d0: 0a 20 20 66 6c 6f 61 74 20 72 3d 61 2b 62 3b 0a  .  float r=a+b;.
18e0: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 66    fprintf(out,"f
18f0: 6c 6f 61 74 20 66 28 32 2a 66 6c 6f 61 74 29 3a  loat f(2*float):
1900: 28 25 67 2c 25 67 29 22 2c 61 2c 62 29 3b 0a 20  (%g,%g)",a,b);. 
1910: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20   fflush(out);.  
1920: 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 66 6c 6f 61  return r;.}.floa
1930: 74 20 66 5f 66 34 20 5f 50 28 28 61 2c 62 2c 63  t f_f4 _P((a,b,c
1940: 2c 64 29 2c 20 66 6c 6f 61 74 20 61 20 5f 20 66  ,d), float a _ f
1950: 6c 6f 61 74 20 62 20 5f 20 66 6c 6f 61 74 20 63  loat b _ float c
1960: 20 5f 20 66 6c 6f 61 74 20 64 29 0a 7b 0a 20 20   _ float d).{.  
1970: 66 6c 6f 61 74 20 72 3d 61 2b 62 2b 63 2b 64 3b  float r=a+b+c+d;
1980: 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22  .  fprintf(out,"
1990: 66 6c 6f 61 74 20 66 28 34 2a 66 6c 6f 61 74 29  float f(4*float)
19a0: 3a 28 25 67 2c 25 67 2c 25 67 2c 25 67 29 22 2c  :(%g,%g,%g,%g)",
19b0: 61 2c 62 2c 63 2c 64 29 3b 0a 20 20 66 66 6c 75  a,b,c,d);.  fflu
19c0: 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 72  sh(out);.  retur
19d0: 6e 20 72 3b 0a 7d 0a 66 6c 6f 61 74 20 66 5f 66  n r;.}.float f_f
19e0: 38 20 5f 50 28 28 61 2c 62 2c 63 2c 64 2c 65 2c  8 _P((a,b,c,d,e,
19f0: 66 2c 67 2c 68 29 2c 20 66 6c 6f 61 74 20 61 20  f,g,h), float a 
1a00: 5f 20 66 6c 6f 61 74 20 62 20 5f 20 66 6c 6f 61  _ float b _ floa
1a10: 74 20 63 20 5f 20 66 6c 6f 61 74 20 64 20 5f 20  t c _ float d _ 
1a20: 66 6c 6f 61 74 20 65 20 5f 20 66 6c 6f 61 74 20  float e _ float 
1a30: 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  f.              
1a40: 5f 20 66 6c 6f 61 74 20 67 20 5f 20 66 6c 6f 61  _ float g _ floa
1a50: 74 20 68 29 0a 7b 0a 20 20 66 6c 6f 61 74 20 72  t h).{.  float r
1a60: 3d 61 2b 62 2b 63 2b 64 2b 65 2b 66 2b 67 2b 68  =a+b+c+d+e+f+g+h
1a70: 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c  ;.  fprintf(out,
1a80: 22 66 6c 6f 61 74 20 66 28 38 2a 66 6c 6f 61 74  "float f(8*float
1a90: 29 3a 28 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25  ):(%g,%g,%g,%g,%
1aa0: 67 2c 25 67 2c 25 67 2c 25 67 29 22 2c 61 2c 62  g,%g,%g,%g)",a,b
1ab0: 2c 63 2c 64 2c 65 2c 66 2c 67 2c 68 29 3b 0a 20  ,c,d,e,f,g,h);. 
1ac0: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20   fflush(out);.  
1ad0: 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 66 6c 6f 61  return r;.}.floa
1ae0: 74 20 66 5f 66 31 36 20 5f 50 28 28 61 2c 62 2c  t f_f16 _P((a,b,
1af0: 63 2c 64 2c 65 2c 66 2c 67 2c 68 2c 69 2c 6a 2c  c,d,e,f,g,h,i,j,
1b00: 6b 2c 6c 2c 6d 2c 6e 2c 6f 2c 70 29 2c 0a 20 20  k,l,m,n,o,p),.  
1b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6c 6f               flo
1b20: 61 74 20 61 20 5f 20 66 6c 6f 61 74 20 62 20 5f  at a _ float b _
1b30: 20 66 6c 6f 61 74 20 63 20 5f 20 66 6c 6f 61 74   float c _ float
1b40: 20 64 20 5f 20 66 6c 6f 61 74 20 65 20 5f 20 66   d _ float e _ f
1b50: 6c 6f 61 74 20 66 20 5f 20 66 6c 6f 61 74 20 67  loat f _ float g
1b60: 20 5f 20 66 6c 6f 61 74 20 68 0a 20 20 20 20 20   _ float h.     
1b70: 20 20 20 20 20 20 20 20 20 20 5f 20 66 6c 6f 61            _ floa
1b80: 74 20 69 20 5f 20 66 6c 6f 61 74 20 6a 20 5f 20  t i _ float j _ 
1b90: 66 6c 6f 61 74 20 6b 20 5f 20 66 6c 6f 61 74 20  float k _ float 
1ba0: 6c 20 5f 20 66 6c 6f 61 74 20 6d 20 5f 20 66 6c  l _ float m _ fl
1bb0: 6f 61 74 20 6e 20 5f 20 66 6c 6f 61 74 20 6f 20  oat n _ float o 
1bc0: 5f 20 66 6c 6f 61 74 20 70 29 0a 7b 0a 20 20 66  _ float p).{.  f
1bd0: 6c 6f 61 74 20 72 3d 61 2b 62 2b 63 2b 64 2b 65  loat r=a+b+c+d+e
1be0: 2b 66 2b 67 2b 68 2b 69 2b 6a 2b 6b 2b 6c 2b 6d  +f+g+h+i+j+k+l+m
1bf0: 2b 6e 2b 6f 2b 70 3b 0a 20 20 66 70 72 69 6e 74  +n+o+p;.  fprint
1c00: 66 28 6f 75 74 2c 22 66 6c 6f 61 74 20 66 28 31  f(out,"float f(1
1c10: 36 2a 66 6c 6f 61 74 29 3a 28 25 67 2c 25 67 2c  6*float):(%g,%g,
1c20: 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25  %g,%g,%g,%g,%g,%
1c30: 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67  g,%g,%g,%g,%g,%g
1c40: 2c 25 67 2c 25 67 2c 25 67 29 22 2c 61 2c 62 2c  ,%g,%g,%g)",a,b,
1c50: 63 2c 64 2c 65 2c 66 2c 67 2c 68 2c 69 2c 6a 2c  c,d,e,f,g,h,i,j,
1c60: 6b 2c 6c 2c 6d 2c 6e 2c 6f 2c 70 29 3b 0a 20 20  k,l,m,n,o,p);.  
1c70: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 72  fflush(out);.  r
1c80: 65 74 75 72 6e 20 72 3b 0a 7d 0a 0a 2f 2a 20 64  eturn r;.}../* d
1c90: 6f 75 62 6c 65 20 74 65 73 74 73 20 2a 2f 0a 64  ouble tests */.d
1ca0: 6f 75 62 6c 65 20 64 5f 64 20 5f 50 28 28 61 29  ouble d_d _P((a)
1cb0: 2c 20 64 6f 75 62 6c 65 20 61 29 0a 7b 0a 20 20  , double a).{.  
1cc0: 64 6f 75 62 6c 65 20 72 3d 61 2b 31 2e 30 3b 0a  double r=a+1.0;.
1cd0: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 64    fprintf(out,"d
1ce0: 6f 75 62 6c 65 20 66 28 64 6f 75 62 6c 65 29 3a  ouble f(double):
1cf0: 28 25 67 29 22 2c 61 29 3b 0a 20 20 66 66 6c 75  (%g)",a);.  fflu
1d00: 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 72  sh(out);.  retur
1d10: 6e 20 72 3b 0a 7d 0a 64 6f 75 62 6c 65 20 64 5f  n r;.}.double d_
1d20: 64 32 20 5f 50 28 28 61 2c 62 29 2c 20 64 6f 75  d2 _P((a,b), dou
1d30: 62 6c 65 20 61 20 5f 20 64 6f 75 62 6c 65 20 62  ble a _ double b
1d40: 29 0a 7b 0a 20 20 64 6f 75 62 6c 65 20 72 3d 61  ).{.  double r=a
1d50: 2b 62 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75  +b;.  fprintf(ou
1d60: 74 2c 22 64 6f 75 62 6c 65 20 66 28 32 2a 64 6f  t,"double f(2*do
1d70: 75 62 6c 65 29 3a 28 25 67 2c 25 67 29 22 2c 61  uble):(%g,%g)",a
1d80: 2c 62 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75  ,b);.  fflush(ou
1d90: 74 29 3b 0a 20 20 72 65 74 75 72 6e 20 72 3b 0a  t);.  return r;.
1da0: 7d 0a 64 6f 75 62 6c 65 20 64 5f 64 34 20 5f 50  }.double d_d4 _P
1db0: 28 28 61 2c 62 2c 63 2c 64 29 2c 20 64 6f 75 62  ((a,b,c,d), doub
1dc0: 6c 65 20 61 20 5f 20 64 6f 75 62 6c 65 20 62 20  le a _ double b 
1dd0: 5f 20 64 6f 75 62 6c 65 20 63 20 5f 20 64 6f 75  _ double c _ dou
1de0: 62 6c 65 20 64 29 0a 7b 0a 20 20 64 6f 75 62 6c  ble d).{.  doubl
1df0: 65 20 72 3d 61 2b 62 2b 63 2b 64 3b 0a 20 20 66  e r=a+b+c+d;.  f
1e00: 70 72 69 6e 74 66 28 6f 75 74 2c 22 64 6f 75 62  printf(out,"doub
1e10: 6c 65 20 66 28 34 2a 64 6f 75 62 6c 65 29 3a 28  le f(4*double):(
1e20: 25 67 2c 25 67 2c 25 67 2c 25 67 29 22 2c 61 2c  %g,%g,%g,%g)",a,
1e30: 62 2c 63 2c 64 29 3b 0a 20 20 66 66 6c 75 73 68  b,c,d);.  fflush
1e40: 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 72 6e 20  (out);.  return 
1e50: 72 3b 0a 7d 0a 64 6f 75 62 6c 65 20 64 5f 64 38  r;.}.double d_d8
1e60: 20 5f 50 28 28 61 2c 62 2c 63 2c 64 2c 65 2c 66   _P((a,b,c,d,e,f
1e70: 2c 67 2c 68 29 2c 0a 20 20 20 20 20 20 20 20 20  ,g,h),.         
1e80: 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 20 5f        double a _
1e90: 20 64 6f 75 62 6c 65 20 62 20 5f 20 64 6f 75 62   double b _ doub
1ea0: 6c 65 20 63 20 5f 20 64 6f 75 62 6c 65 20 64 20  le c _ double d 
1eb0: 5f 20 64 6f 75 62 6c 65 20 65 20 5f 20 64 6f 75  _ double e _ dou
1ec0: 62 6c 65 20 66 0a 20 20 20 20 20 20 20 20 20 20  ble f.          
1ed0: 20 20 20 20 20 5f 20 64 6f 75 62 6c 65 20 67 20       _ double g 
1ee0: 5f 20 64 6f 75 62 6c 65 20 68 29 0a 7b 0a 20 20  _ double h).{.  
1ef0: 64 6f 75 62 6c 65 20 72 3d 61 2b 62 2b 63 2b 64  double r=a+b+c+d
1f00: 2b 65 2b 66 2b 67 2b 68 3b 0a 20 20 66 70 72 69  +e+f+g+h;.  fpri
1f10: 6e 74 66 28 6f 75 74 2c 22 64 6f 75 62 6c 65 20  ntf(out,"double 
1f20: 66 28 38 2a 64 6f 75 62 6c 65 29 3a 28 25 67 2c  f(8*double):(%g,
1f30: 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25  %g,%g,%g,%g,%g,%
1f40: 67 2c 25 67 29 22 2c 61 2c 62 2c 63 2c 64 2c 65  g,%g)",a,b,c,d,e
1f50: 2c 66 2c 67 2c 68 29 3b 0a 20 20 66 66 6c 75 73  ,f,g,h);.  fflus
1f60: 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 72 6e  h(out);.  return
1f70: 20 72 3b 0a 7d 0a 64 6f 75 62 6c 65 20 64 5f 64   r;.}.double d_d
1f80: 31 36 20 5f 50 28 28 61 2c 62 2c 63 2c 64 2c 65  16 _P((a,b,c,d,e
1f90: 2c 66 2c 67 2c 68 2c 69 2c 6a 2c 6b 2c 6c 2c 6d  ,f,g,h,i,j,k,l,m
1fa0: 2c 6e 2c 6f 2c 70 29 2c 0a 20 20 20 20 20 20 20  ,n,o,p),.       
1fb0: 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20           double 
1fc0: 61 20 5f 20 64 6f 75 62 6c 65 20 62 20 5f 20 64  a _ double b _ d
1fd0: 6f 75 62 6c 65 20 63 20 5f 20 64 6f 75 62 6c 65  ouble c _ double
1fe0: 20 64 20 5f 20 64 6f 75 62 6c 65 20 65 20 5f 20   d _ double e _ 
1ff0: 64 6f 75 62 6c 65 20 66 0a 20 20 20 20 20 20 20  double f.       
2000: 20 20 20 20 20 20 20 20 20 5f 20 64 6f 75 62 6c           _ doubl
2010: 65 20 67 20 5f 20 64 6f 75 62 6c 65 20 68 20 5f  e g _ double h _
2020: 20 64 6f 75 62 6c 65 20 69 20 5f 20 64 6f 75 62   double i _ doub
2030: 6c 65 20 6a 20 5f 20 64 6f 75 62 6c 65 20 6b 20  le j _ double k 
2040: 5f 20 64 6f 75 62 6c 65 20 6c 0a 20 20 20 20 20  _ double l.     
2050: 20 20 20 20 20 20 20 20 20 20 20 5f 20 64 6f 75             _ dou
2060: 62 6c 65 20 6d 20 5f 20 64 6f 75 62 6c 65 20 6e  ble m _ double n
2070: 20 5f 20 64 6f 75 62 6c 65 20 6f 20 5f 20 64 6f   _ double o _ do
2080: 75 62 6c 65 20 70 29 0a 7b 0a 20 20 64 6f 75 62  uble p).{.  doub
2090: 6c 65 20 72 3d 61 2b 62 2b 63 2b 64 2b 65 2b 66  le r=a+b+c+d+e+f
20a0: 2b 67 2b 68 2b 69 2b 6a 2b 6b 2b 6c 2b 6d 2b 6e  +g+h+i+j+k+l+m+n
20b0: 2b 6f 2b 70 3b 0a 20 20 66 70 72 69 6e 74 66 28  +o+p;.  fprintf(
20c0: 6f 75 74 2c 22 64 6f 75 62 6c 65 20 66 28 31 36  out,"double f(16
20d0: 2a 64 6f 75 62 6c 65 29 3a 28 25 67 2c 25 67 2c  *double):(%g,%g,
20e0: 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25  %g,%g,%g,%g,%g,%
20f0: 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67  g,%g,%g,%g,%g,%g
2100: 2c 25 67 2c 25 67 2c 25 67 29 22 2c 61 2c 62 2c  ,%g,%g,%g)",a,b,
2110: 63 2c 64 2c 65 2c 66 2c 67 2c 68 2c 69 2c 6a 2c  c,d,e,f,g,h,i,j,
2120: 6b 2c 6c 2c 6d 2c 6e 2c 6f 2c 70 29 3b 0a 20 20  k,l,m,n,o,p);.  
2130: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 72  fflush(out);.  r
2140: 65 74 75 72 6e 20 72 3b 0a 7d 0a 0a 2f 2a 20 70  eturn r;.}../* p
2150: 6f 69 6e 74 65 72 20 74 65 73 74 73 20 2a 2f 0a  ointer tests */.
2160: 76 6f 69 64 2a 20 76 70 5f 76 70 64 70 63 70 73  void* vp_vpdpcps
2170: 70 20 5f 50 28 28 61 2c 62 2c 63 2c 64 29 2c 20  p _P((a,b,c,d), 
2180: 76 6f 69 64 2a 20 61 20 5f 20 64 6f 75 62 6c 65  void* a _ double
2190: 2a 20 62 20 5f 20 63 68 61 72 2a 20 63 20 5f 20  * b _ char* c _ 
21a0: 49 6e 74 2a 20 64 29 0a 7b 0a 20 20 76 6f 69 64  Int* d).{.  void
21b0: 2a 20 72 65 74 20 3d 20 28 63 68 61 72 2a 29 62  * ret = (char*)b
21c0: 20 2b 20 31 3b 0a 20 20 66 70 72 69 6e 74 66 28   + 1;.  fprintf(
21d0: 6f 75 74 2c 22 76 6f 69 64 2a 20 66 28 76 6f 69  out,"void* f(voi
21e0: 64 2a 2c 64 6f 75 62 6c 65 2a 2c 63 68 61 72 2a  d*,double*,char*
21f0: 2c 49 6e 74 2a 29 3a 28 30 78 25 6c 78 2c 30 78  ,Int*):(0x%lx,0x
2200: 25 6c 78 2c 30 78 25 6c 78 2c 30 78 25 6c 78 29  %lx,0x%lx,0x%lx)
2210: 22 2c 28 6c 6f 6e 67 29 61 2c 28 6c 6f 6e 67 29  ",(long)a,(long)
2220: 62 2c 28 6c 6f 6e 67 29 63 2c 28 6c 6f 6e 67 29  b,(long)c,(long)
2230: 64 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74  d);.  fflush(out
2240: 29 3b 0a 20 20 72 65 74 75 72 6e 20 72 65 74 3b  );.  return ret;
2250: 0a 7d 0a 0a 2f 2a 20 6d 69 78 65 64 20 6e 75 6d  .}../* mixed num
2260: 62 65 72 20 74 65 73 74 73 20 2a 2f 0a 75 63 68  ber tests */.uch
2270: 61 72 20 75 63 5f 75 63 73 69 6c 20 5f 50 28 28  ar uc_ucsil _P((
2280: 61 2c 62 2c 63 2c 64 29 2c 20 75 63 68 61 72 20  a,b,c,d), uchar 
2290: 61 20 5f 20 75 73 68 6f 72 74 20 62 20 5f 20 75  a _ ushort b _ u
22a0: 69 6e 74 20 63 20 5f 20 75 6c 6f 6e 67 20 64 29  int c _ ulong d)
22b0: 0a 7b 0a 20 20 75 63 68 61 72 20 72 20 3d 20 2d  .{.  uchar r = -
22c0: 31 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74  1;.  fprintf(out
22d0: 2c 22 75 63 68 61 72 20 66 28 75 63 68 61 72 2c  ,"uchar f(uchar,
22e0: 75 73 68 6f 72 74 2c 75 69 6e 74 2c 75 6c 6f 6e  ushort,uint,ulon
22f0: 67 29 3a 28 25 75 2c 25 75 2c 25 75 2c 25 6c 75  g):(%u,%u,%u,%lu
2300: 29 22 2c 61 2c 62 2c 63 2c 64 29 3b 0a 20 20 66  )",a,b,c,d);.  f
2310: 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 72 65  flush(out);.  re
2320: 74 75 72 6e 20 72 3b 0a 7d 0a 64 6f 75 62 6c 65  turn r;.}.double
2330: 20 64 5f 69 69 64 64 20 5f 50 28 28 61 2c 62 2c   d_iidd _P((a,b,
2340: 63 2c 64 29 2c 20 69 6e 74 20 61 20 5f 20 69 6e  c,d), int a _ in
2350: 74 20 62 20 5f 20 64 6f 75 62 6c 65 20 63 20 5f  t b _ double c _
2360: 20 64 6f 75 62 6c 65 20 64 29 0a 7b 0a 20 20 64   double d).{.  d
2370: 6f 75 62 6c 65 20 72 20 3d 20 61 2b 62 2b 63 2b  ouble r = a+b+c+
2380: 64 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74  d;.  fprintf(out
2390: 2c 22 64 6f 75 62 6c 65 20 66 28 69 6e 74 2c 69  ,"double f(int,i
23a0: 6e 74 2c 64 6f 75 62 6c 65 2c 64 6f 75 62 6c 65  nt,double,double
23b0: 29 3a 28 25 64 2c 25 64 2c 25 67 2c 25 67 29 22  ):(%d,%d,%g,%g)"
23c0: 2c 61 2c 62 2c 63 2c 64 29 3b 0a 20 20 66 66 6c  ,a,b,c,d);.  ffl
23d0: 75 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75  ush(out);.  retu
23e0: 72 6e 20 72 3b 0a 7d 0a 64 6f 75 62 6c 65 20 64  rn r;.}.double d
23f0: 5f 69 64 69 64 20 5f 50 28 28 61 2c 62 2c 63 2c  _idid _P((a,b,c,
2400: 64 29 2c 20 69 6e 74 20 61 20 5f 20 64 6f 75 62  d), int a _ doub
2410: 6c 65 20 62 20 5f 20 69 6e 74 20 63 20 5f 20 64  le b _ int c _ d
2420: 6f 75 62 6c 65 20 64 29 0a 7b 0a 20 20 64 6f 75  ouble d).{.  dou
2430: 62 6c 65 20 72 20 3d 20 61 2b 62 2b 63 2b 64 3b  ble r = a+b+c+d;
2440: 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22  .  fprintf(out,"
2450: 64 6f 75 62 6c 65 20 66 28 69 6e 74 2c 64 6f 75  double f(int,dou
2460: 62 6c 65 2c 69 6e 74 2c 64 6f 75 62 6c 65 29 3a  ble,int,double):
2470: 28 25 64 2c 25 67 2c 25 64 2c 25 67 29 22 2c 61  (%d,%g,%d,%g)",a
2480: 2c 62 2c 63 2c 64 29 3b 0a 20 20 66 66 6c 75 73  ,b,c,d);.  fflus
2490: 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 72 6e  h(out);.  return
24a0: 20 72 3b 0a 7d 0a 75 73 68 6f 72 74 20 75 73 5f   r;.}.ushort us_
24b0: 63 64 63 64 20 5f 50 28 28 61 2c 62 2c 63 2c 64  cdcd _P((a,b,c,d
24c0: 29 2c 20 63 68 61 72 20 61 20 5f 20 64 6f 75 62  ), char a _ doub
24d0: 6c 65 20 62 20 5f 20 63 68 61 72 20 63 20 5f 20  le b _ char c _ 
24e0: 64 6f 75 62 6c 65 20 64 29 0a 7b 0a 20 20 75 73  double d).{.  us
24f0: 68 6f 72 74 20 72 20 3d 20 28 75 73 68 6f 72 74  hort r = (ushort
2500: 29 28 61 20 2b 20 62 20 2b 20 63 20 2b 20 64 29  )(a + b + c + d)
2510: 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c  ;.  fprintf(out,
2520: 22 75 73 68 6f 72 74 20 66 28 63 68 61 72 2c 64  "ushort f(char,d
2530: 6f 75 62 6c 65 2c 63 68 61 72 2c 64 6f 75 62 6c  ouble,char,doubl
2540: 65 29 3a 28 27 25 63 27 2c 25 67 2c 27 25 63 27  e):('%c',%g,'%c'
2550: 2c 25 67 29 22 2c 61 2c 62 2c 63 2c 64 29 3b 0a  ,%g)",a,b,c,d);.
2560: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20    fflush(out);. 
2570: 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 0a 23 69   return r;.}..#i
2580: 66 64 65 66 20 48 41 56 45 5f 4c 4f 4e 47 4c 4f  fdef HAVE_LONGLO
2590: 4e 47 0a 6c 6f 6e 67 20 6c 6f 6e 67 20 6c 6c 5f  NG.long long ll_
25a0: 66 6c 6c 69 20 5f 50 28 28 61 2c 62 2c 63 29 2c  flli _P((a,b,c),
25b0: 20 66 6c 6f 61 74 20 61 20 5f 20 6c 6f 6e 67 20   float a _ long 
25c0: 6c 6f 6e 67 20 62 20 5f 20 69 6e 74 20 63 29 0a  long b _ int c).
25d0: 7b 0a 20 20 6c 6f 6e 67 20 6c 6f 6e 67 20 72 20  {.  long long r 
25e0: 3d 20 28 6c 6f 6e 67 20 6c 6f 6e 67 29 28 69 6e  = (long long)(in
25f0: 74 29 61 20 2b 20 62 20 2b 20 28 6c 6f 6e 67 20  t)a + b + (long 
2600: 6c 6f 6e 67 29 63 3b 0a 20 20 66 70 72 69 6e 74  long)c;.  fprint
2610: 66 28 6f 75 74 2c 22 6c 6f 6e 67 20 6c 6f 6e 67  f(out,"long long
2620: 20 66 28 66 6c 6f 61 74 2c 6c 6f 6e 67 20 6c 6f   f(float,long lo
2630: 6e 67 2c 69 6e 74 29 3a 28 25 67 2c 30 78 25 6c  ng,int):(%g,0x%l
2640: 78 25 30 38 6c 78 2c 30 78 25 6c 78 29 22 2c 61  x%08lx,0x%lx)",a
2650: 2c 28 6c 6f 6e 67 29 28 62 3e 3e 33 32 29 2c 28  ,(long)(b>>32),(
2660: 6c 6f 6e 67 29 28 62 26 30 78 66 66 66 66 66 66  long)(b&0xffffff
2670: 66 66 29 2c 28 6c 6f 6e 67 29 63 29 3b 0a 20 20  ff),(long)c);.  
2680: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 72  fflush(out);.  r
2690: 65 74 75 72 6e 20 72 3b 0a 7d 0a 23 65 6e 64 69  eturn r;.}.#endi
26a0: 66 0a 0a 2f 2a 20 73 74 72 75 63 74 75 72 65 20  f../* structure 
26b0: 74 65 73 74 73 20 2a 2f 0a 49 6e 74 20 49 5f 49  tests */.Int I_I
26c0: 49 49 20 5f 50 28 28 61 2c 62 2c 63 29 2c 20 49  II _P((a,b,c), I
26d0: 6e 74 20 61 20 5f 20 49 6e 74 20 62 20 5f 20 49  nt a _ Int b _ I
26e0: 6e 74 20 63 29 0a 7b 0a 20 20 49 6e 74 20 72 3b  nt c).{.  Int r;
26f0: 0a 20 20 72 2e 78 20 3d 20 61 2e 78 20 2b 20 62  .  r.x = a.x + b
2700: 2e 78 20 2b 20 63 2e 78 3b 0a 20 20 66 70 72 69  .x + c.x;.  fpri
2710: 6e 74 66 28 6f 75 74 2c 22 49 6e 74 20 66 28 49  ntf(out,"Int f(I
2720: 6e 74 2c 49 6e 74 2c 49 6e 74 29 3a 28 7b 25 64  nt,Int,Int):({%d
2730: 7d 2c 7b 25 64 7d 2c 7b 25 64 7d 29 22 2c 61 2e  },{%d},{%d})",a.
2740: 78 2c 62 2e 78 2c 63 2e 78 29 3b 0a 20 20 66 66  x,b.x,c.x);.  ff
2750: 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74  lush(out);.  ret
2760: 75 72 6e 20 72 3b 0a 7d 0a 43 68 61 72 20 43 5f  urn r;.}.Char C_
2770: 43 64 43 20 5f 50 28 28 61 2c 62 2c 63 29 2c 20  CdC _P((a,b,c), 
2780: 43 68 61 72 20 61 20 5f 20 64 6f 75 62 6c 65 20  Char a _ double 
2790: 62 20 5f 20 43 68 61 72 20 63 29 0a 7b 0a 20 20  b _ Char c).{.  
27a0: 43 68 61 72 20 72 3b 0a 20 20 72 2e 78 20 3d 20  Char r;.  r.x = 
27b0: 28 61 2e 78 20 2b 20 63 2e 78 29 2f 32 3b 0a 20  (a.x + c.x)/2;. 
27c0: 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 43 68   fprintf(out,"Ch
27d0: 61 72 20 66 28 43 68 61 72 2c 64 6f 75 62 6c 65  ar f(Char,double
27e0: 2c 43 68 61 72 29 3a 28 7b 27 25 63 27 7d 2c 25  ,Char):({'%c'},%
27f0: 67 2c 7b 27 25 63 27 7d 29 22 2c 61 2e 78 2c 62  g,{'%c'})",a.x,b
2800: 2c 63 2e 78 29 3b 0a 20 20 66 66 6c 75 73 68 28  ,c.x);.  fflush(
2810: 6f 75 74 29 3b 0a 20 20 72 65 74 75 72 6e 20 72  out);.  return r
2820: 3b 0a 7d 0a 46 6c 6f 61 74 20 46 5f 46 66 64 20  ;.}.Float F_Ffd 
2830: 5f 50 28 28 61 2c 62 2c 63 29 2c 20 46 6c 6f 61  _P((a,b,c), Floa
2840: 74 20 61 20 5f 20 66 6c 6f 61 74 20 62 20 5f 20  t a _ float b _ 
2850: 64 6f 75 62 6c 65 20 63 29 0a 7b 0a 20 20 46 6c  double c).{.  Fl
2860: 6f 61 74 20 72 3b 0a 20 20 72 2e 78 20 3d 20 61  oat r;.  r.x = a
2870: 2e 78 20 2b 20 62 20 2b 20 63 3b 0a 20 20 66 70  .x + b + c;.  fp
2880: 72 69 6e 74 66 28 6f 75 74 2c 22 46 6c 6f 61 74  rintf(out,"Float
2890: 20 66 28 46 6c 6f 61 74 2c 66 6c 6f 61 74 2c 64   f(Float,float,d
28a0: 6f 75 62 6c 65 29 3a 28 7b 25 67 7d 2c 25 67 2c  ouble):({%g},%g,
28b0: 25 67 29 22 2c 61 2e 78 2c 62 2c 63 29 3b 0a 20  %g)",a.x,b,c);. 
28c0: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20   fflush(out);.  
28d0: 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 44 6f 75 62  return r;.}.Doub
28e0: 6c 65 20 44 5f 66 44 64 20 5f 50 28 28 61 2c 62  le D_fDd _P((a,b
28f0: 2c 63 29 2c 20 66 6c 6f 61 74 20 61 20 5f 20 44  ,c), float a _ D
2900: 6f 75 62 6c 65 20 62 20 5f 20 64 6f 75 62 6c 65  ouble b _ double
2910: 20 63 29 0a 7b 0a 20 20 44 6f 75 62 6c 65 20 72   c).{.  Double r
2920: 3b 0a 20 20 72 2e 78 20 3d 20 61 20 2b 20 62 2e  ;.  r.x = a + b.
2930: 78 20 2b 20 63 3b 0a 20 20 66 70 72 69 6e 74 66  x + c;.  fprintf
2940: 28 6f 75 74 2c 22 44 6f 75 62 6c 65 20 66 28 66  (out,"Double f(f
2950: 6c 6f 61 74 2c 44 6f 75 62 6c 65 2c 64 6f 75 62  loat,Double,doub
2960: 6c 65 29 3a 28 25 67 2c 7b 25 67 7d 2c 25 67 29  le):(%g,{%g},%g)
2970: 22 2c 61 2c 62 2e 78 2c 63 29 3b 0a 20 20 66 66  ",a,b.x,c);.  ff
2980: 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74  lush(out);.  ret
2990: 75 72 6e 20 72 3b 0a 7d 0a 4a 20 4a 5f 4a 69 4a  urn r;.}.J J_JiJ
29a0: 20 5f 50 28 28 61 2c 62 2c 63 29 2c 20 4a 20 61   _P((a,b,c), J a
29b0: 20 5f 20 69 6e 74 20 62 20 5f 20 4a 20 63 29 0a   _ int b _ J c).
29c0: 7b 0a 20 20 4a 20 72 3b 0a 20 20 72 2e 6c 31 20  {.  J r;.  r.l1 
29d0: 3d 20 61 2e 6c 31 2b 63 2e 6c 31 3b 20 72 2e 6c  = a.l1+c.l1; r.l
29e0: 32 20 3d 20 61 2e 6c 32 2b 62 2b 63 2e 6c 32 3b  2 = a.l2+b+c.l2;
29f0: 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22  .  fprintf(out,"
2a00: 4a 20 66 28 4a 2c 69 6e 74 2c 4a 29 3a 28 7b 25  J f(J,int,J):({%
2a10: 6c 64 2c 25 6c 64 7d 2c 25 64 2c 7b 25 6c 64 2c  ld,%ld},%d,{%ld,
2a20: 25 6c 64 7d 29 22 2c 61 2e 6c 31 2c 61 2e 6c 32  %ld})",a.l1,a.l2
2a30: 2c 62 2c 63 2e 6c 31 2c 63 2e 6c 32 29 3b 0a 20  ,b,c.l1,c.l2);. 
2a40: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20   fflush(out);.  
2a50: 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 54 20 54 5f  return r;.}.T T_
2a60: 54 63 54 20 5f 50 28 28 61 2c 62 2c 63 29 2c 20  TcT _P((a,b,c), 
2a70: 54 20 61 20 5f 20 63 68 61 72 20 62 20 5f 20 54  T a _ char b _ T
2a80: 20 63 29 0a 7b 0a 20 20 54 20 72 3b 0a 20 20 72   c).{.  T r;.  r
2a90: 2e 63 5b 30 5d 3d 27 62 27 3b 20 72 2e 63 5b 31  .c[0]='b'; r.c[1
2aa0: 5d 3d 63 2e 63 5b 31 5d 3b 20 72 2e 63 5b 32 5d  ]=c.c[1]; r.c[2]
2ab0: 3d 63 2e 63 5b 32 5d 3b 0a 20 20 66 70 72 69 6e  =c.c[2];.  fprin
2ac0: 74 66 28 6f 75 74 2c 22 54 20 66 28 54 2c 63 68  tf(out,"T f(T,ch
2ad0: 61 72 2c 54 29 3a 28 7b 5c 22 25 63 25 63 25 63  ar,T):({\"%c%c%c
2ae0: 5c 22 7d 2c 27 25 63 27 2c 7b 5c 22 25 63 25 63  \"},'%c',{\"%c%c
2af0: 25 63 5c 22 7d 29 22 2c 61 2e 63 5b 30 5d 2c 61  %c\"})",a.c[0],a
2b00: 2e 63 5b 31 5d 2c 61 2e 63 5b 32 5d 2c 62 2c 63  .c[1],a.c[2],b,c
2b10: 2e 63 5b 30 5d 2c 63 2e 63 5b 31 5d 2c 63 2e 63  .c[0],c.c[1],c.c
2b20: 5b 32 5d 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f  [2]);.  fflush(o
2b30: 75 74 29 3b 0a 20 20 72 65 74 75 72 6e 20 72 3b  ut);.  return r;
2b40: 0a 7d 0a 58 20 58 5f 42 63 64 42 20 5f 50 28 28  .}.X X_BcdB _P((
2b50: 61 2c 62 2c 63 2c 64 29 2c 20 42 20 61 20 5f 20  a,b,c,d), B a _ 
2b60: 63 68 61 72 20 62 20 5f 20 64 6f 75 62 6c 65 20  char b _ double 
2b70: 63 20 5f 20 42 20 64 29 0a 7b 0a 20 20 73 74 61  c _ B d).{.  sta
2b80: 74 69 63 20 58 20 78 72 3d 7b 22 72 65 74 75 72  tic X xr={"retur
2b90: 6e 20 76 61 6c 22 2c 27 52 27 7d 3b 0a 20 20 58  n val",'R'};.  X
2ba0: 20 72 3b 0a 20 20 72 20 3d 20 78 72 3b 0a 20 20   r;.  r = xr;.  
2bb0: 72 2e 63 31 20 3d 20 62 3b 0a 20 20 66 70 72 69  r.c1 = b;.  fpri
2bc0: 6e 74 66 28 6f 75 74 2c 22 58 20 66 28 42 2c 63  ntf(out,"X f(B,c
2bd0: 68 61 72 2c 64 6f 75 62 6c 65 2c 42 29 3a 28 7b  har,double,B):({
2be0: 25 67 2c 7b 25 64 2c 25 64 2c 25 64 7d 7d 2c 27  %g,{%d,%d,%d}},'
2bf0: 25 63 27 2c 25 67 2c 7b 25 67 2c 7b 25 64 2c 25  %c',%g,{%g,{%d,%
2c00: 64 2c 25 64 7d 7d 29 22 2c 0a 20 20 20 20 20 20  d,%d}})",.      
2c10: 20 20 20 20 61 2e 64 2c 61 2e 69 5b 30 5d 2c 61      a.d,a.i[0],a
2c20: 2e 69 5b 31 5d 2c 61 2e 69 5b 32 5d 2c 62 2c 63  .i[1],a.i[2],b,c
2c30: 2c 64 2e 64 2c 64 2e 69 5b 30 5d 2c 64 2e 69 5b  ,d.d,d.i[0],d.i[
2c40: 31 5d 2c 64 2e 69 5b 32 5d 29 3b 0a 20 20 66 66  1],d.i[2]);.  ff
2c50: 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74  lush(out);.  ret
2c60: 75 72 6e 20 72 3b 0a 7d 0a 0a 0a 2f 2a 20 54 68  urn r;.}.../* Th
2c70: 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 73 69  ese functions si
2c80: 6d 75 6c 61 74 65 20 74 68 65 20 62 65 68 61 76  mulate the behav
2c90: 69 6f 75 72 20 6f 66 20 74 68 65 20 66 75 6e 63  iour of the func
2ca0: 74 69 6f 6e 73 20 61 62 6f 76 65 2e 20 2a 2f 0a  tions above. */.
2cb0: 0a 2f 2a 20 76 6f 69 64 20 74 65 73 74 73 20 2a  ./* void tests *
2cc0: 2f 0a 76 6f 69 64 20 76 5f 76 5f 73 69 6d 75 6c  /.void v_v_simul
2cd0: 61 74 6f 72 20 5f 50 28 28 64 61 74 61 2c 61 6c  ator _P((data,al
2ce0: 69 73 74 29 2c 20 76 6f 69 64 2a 20 64 61 74 61  ist), void* data
2cf0: 20 5f 20 76 61 5f 61 6c 69 73 74 20 61 6c 69 73   _ va_alist alis
2d00: 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61 20  t).{.  if (data 
2d10: 21 3d 20 28 76 6f 69 64 2a 29 26 76 5f 76 29 20  != (void*)&v_v) 
2d20: 7b 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 77  { fprintf(out,"w
2d30: 72 6f 6e 67 20 64 61 74 61 20 66 6f 72 20 76 5f  rong data for v_
2d40: 76 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 3b 20  v\n"); exit(1); 
2d50: 7d 0a 20 20 76 61 5f 73 74 61 72 74 5f 76 6f 69  }.  va_start_voi
2d60: 64 28 61 6c 69 73 74 29 3b 0a 20 20 66 70 72 69  d(alist);.  fpri
2d70: 6e 74 66 28 6f 75 74 2c 22 76 6f 69 64 20 66 28  ntf(out,"void f(
2d80: 76 6f 69 64 29 3a 5c 6e 22 29 3b 0a 20 20 66 66  void):\n");.  ff
2d90: 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 76 61 5f  lush(out);.  va_
2da0: 72 65 74 75 72 6e 5f 76 6f 69 64 28 61 6c 69 73  return_void(alis
2db0: 74 29 3b 0a 7d 0a 0a 2f 2a 20 69 6e 74 20 74 65  t);.}../* int te
2dc0: 73 74 73 20 2a 2f 0a 76 6f 69 64 20 69 5f 76 5f  sts */.void i_v_
2dd0: 73 69 6d 75 6c 61 74 6f 72 20 5f 50 28 28 64 61  simulator _P((da
2de0: 74 61 2c 61 6c 69 73 74 29 2c 20 76 6f 69 64 2a  ta,alist), void*
2df0: 20 64 61 74 61 20 5f 20 76 61 5f 61 6c 69 73 74   data _ va_alist
2e00: 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66 20 28   alist).{.  if (
2e10: 64 61 74 61 20 21 3d 20 28 76 6f 69 64 2a 29 26  data != (void*)&
2e20: 69 5f 76 29 20 7b 20 66 70 72 69 6e 74 66 28 6f  i_v) { fprintf(o
2e30: 75 74 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66  ut,"wrong data f
2e40: 6f 72 20 69 5f 76 5c 6e 22 29 3b 20 65 78 69 74  or i_v\n"); exit
2e50: 28 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72  (1); }.  va_star
2e60: 74 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 7b  t_int(alist);. {
2e70: 69 6e 74 20 72 3d 39 39 3b 0a 20 20 66 70 72 69  int r=99;.  fpri
2e80: 6e 74 66 28 6f 75 74 2c 22 69 6e 74 20 66 28 76  ntf(out,"int f(v
2e90: 6f 69 64 29 3a 22 29 3b 0a 20 20 66 66 6c 75 73  oid):");.  fflus
2ea0: 68 28 6f 75 74 29 3b 0a 20 20 76 61 5f 72 65 74  h(out);.  va_ret
2eb0: 75 72 6e 5f 69 6e 74 28 61 6c 69 73 74 2c 20 72  urn_int(alist, r
2ec0: 29 3b 0a 7d 7d 0a 76 6f 69 64 20 69 5f 69 5f 73  );.}}.void i_i_s
2ed0: 69 6d 75 6c 61 74 6f 72 20 5f 50 28 28 64 61 74  imulator _P((dat
2ee0: 61 2c 61 6c 69 73 74 29 2c 20 76 6f 69 64 2a 20  a,alist), void* 
2ef0: 64 61 74 61 20 5f 20 76 61 5f 61 6c 69 73 74 20  data _ va_alist 
2f00: 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66 20 28 64  alist).{.  if (d
2f10: 61 74 61 20 21 3d 20 28 76 6f 69 64 2a 29 26 69  ata != (void*)&i
2f20: 5f 69 29 20 7b 20 66 70 72 69 6e 74 66 28 6f 75  _i) { fprintf(ou
2f30: 74 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66 6f  t,"wrong data fo
2f40: 72 20 69 5f 69 5c 6e 22 29 3b 20 65 78 69 74 28  r i_i\n"); exit(
2f50: 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72 74  1); }.  va_start
2f60: 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 7b 69  _int(alist);. {i
2f70: 6e 74 20 61 20 3d 20 76 61 5f 61 72 67 5f 69 6e  nt a = va_arg_in
2f80: 74 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20  t(alist);.  int 
2f90: 72 3d 61 2b 31 3b 0a 20 20 66 70 72 69 6e 74 66  r=a+1;.  fprintf
2fa0: 28 6f 75 74 2c 22 69 6e 74 20 66 28 69 6e 74 29  (out,"int f(int)
2fb0: 3a 28 25 64 29 22 2c 61 29 3b 0a 20 20 66 66 6c  :(%d)",a);.  ffl
2fc0: 75 73 68 28 6f 75 74 29 3b 0a 20 20 76 61 5f 72  ush(out);.  va_r
2fd0: 65 74 75 72 6e 5f 69 6e 74 28 61 6c 69 73 74 2c  eturn_int(alist,
2fe0: 20 72 29 3b 0a 7d 7d 0a 76 6f 69 64 20 69 5f 69   r);.}}.void i_i
2ff0: 32 5f 73 69 6d 75 6c 61 74 6f 72 20 5f 50 28 28  2_simulator _P((
3000: 64 61 74 61 2c 61 6c 69 73 74 29 2c 20 76 6f 69  data,alist), voi
3010: 64 2a 20 64 61 74 61 20 5f 20 76 61 5f 61 6c 69  d* data _ va_ali
3020: 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66  st alist).{.  if
3030: 20 28 64 61 74 61 20 21 3d 20 28 76 6f 69 64 2a   (data != (void*
3040: 29 26 69 5f 69 32 29 20 7b 20 66 70 72 69 6e 74  )&i_i2) { fprint
3050: 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20 64 61 74  f(out,"wrong dat
3060: 61 20 66 6f 72 20 69 5f 69 32 5c 6e 22 29 3b 20  a for i_i2\n"); 
3070: 65 78 69 74 28 31 29 3b 20 7d 0a 20 20 76 61 5f  exit(1); }.  va_
3080: 73 74 61 72 74 5f 69 6e 74 28 61 6c 69 73 74 29  start_int(alist)
3090: 3b 0a 20 7b 69 6e 74 20 61 20 3d 20 76 61 5f 61  ;. {int a = va_a
30a0: 72 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20  rg_int(alist);. 
30b0: 20 69 6e 74 20 62 20 3d 20 76 61 5f 61 72 67 5f   int b = va_arg_
30c0: 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e  int(alist);.  in
30d0: 74 20 72 3d 61 2b 62 3b 0a 20 20 66 70 72 69 6e  t r=a+b;.  fprin
30e0: 74 66 28 6f 75 74 2c 22 69 6e 74 20 66 28 32 2a  tf(out,"int f(2*
30f0: 69 6e 74 29 3a 28 25 64 2c 25 64 29 22 2c 61 2c  int):(%d,%d)",a,
3100: 62 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74  b);.  fflush(out
3110: 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f 69  );.  va_return_i
3120: 6e 74 28 61 6c 69 73 74 2c 20 72 29 3b 0a 7d 7d  nt(alist, r);.}}
3130: 0a 76 6f 69 64 20 69 5f 69 34 5f 73 69 6d 75 6c  .void i_i4_simul
3140: 61 74 6f 72 20 5f 50 28 28 64 61 74 61 2c 61 6c  ator _P((data,al
3150: 69 73 74 29 2c 20 76 6f 69 64 2a 20 64 61 74 61  ist), void* data
3160: 20 5f 20 76 61 5f 61 6c 69 73 74 20 61 6c 69 73   _ va_alist alis
3170: 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61 20  t).{.  if (data 
3180: 21 3d 20 28 76 6f 69 64 2a 29 26 69 5f 69 34 29  != (void*)&i_i4)
3190: 20 7b 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22   { fprintf(out,"
31a0: 77 72 6f 6e 67 20 64 61 74 61 20 66 6f 72 20 69  wrong data for i
31b0: 5f 69 34 5c 6e 22 29 3b 20 65 78 69 74 28 31 29  _i4\n"); exit(1)
31c0: 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72 74 5f 69  ; }.  va_start_i
31d0: 6e 74 28 61 6c 69 73 74 29 3b 0a 20 7b 69 6e 74  nt(alist);. {int
31e0: 20 61 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28   a = va_arg_int(
31f0: 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 62 20  alist);.  int b 
3200: 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69  = va_arg_int(ali
3210: 73 74 29 3b 0a 20 20 69 6e 74 20 63 20 3d 20 76  st);.  int c = v
3220: 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73 74 29  a_arg_int(alist)
3230: 3b 0a 20 20 69 6e 74 20 64 20 3d 20 76 61 5f 61  ;.  int d = va_a
3240: 72 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20  rg_int(alist);. 
3250: 20 69 6e 74 20 72 3d 61 2b 62 2b 63 2b 64 3b 0a   int r=a+b+c+d;.
3260: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 69    fprintf(out,"i
3270: 6e 74 20 66 28 34 2a 69 6e 74 29 3a 28 25 64 2c  nt f(4*int):(%d,
3280: 25 64 2c 25 64 2c 25 64 29 22 2c 61 2c 62 2c 63  %d,%d,%d)",a,b,c
3290: 2c 64 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75  ,d);.  fflush(ou
32a0: 74 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f  t);.  va_return_
32b0: 69 6e 74 28 61 6c 69 73 74 2c 20 72 29 3b 0a 7d  int(alist, r);.}
32c0: 7d 0a 76 6f 69 64 20 69 5f 69 38 5f 73 69 6d 75  }.void i_i8_simu
32d0: 6c 61 74 6f 72 20 5f 50 28 28 64 61 74 61 2c 61  lator _P((data,a
32e0: 6c 69 73 74 29 2c 20 76 6f 69 64 2a 20 64 61 74  list), void* dat
32f0: 61 20 5f 20 76 61 5f 61 6c 69 73 74 20 61 6c 69  a _ va_alist ali
3300: 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61  st).{.  if (data
3310: 20 21 3d 20 28 76 6f 69 64 2a 29 26 69 5f 69 38   != (void*)&i_i8
3320: 29 20 7b 20 66 70 72 69 6e 74 66 28 6f 75 74 2c  ) { fprintf(out,
3330: 22 77 72 6f 6e 67 20 64 61 74 61 20 66 6f 72 20  "wrong data for 
3340: 69 5f 69 38 5c 6e 22 29 3b 20 65 78 69 74 28 31  i_i8\n"); exit(1
3350: 29 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72 74 5f  ); }.  va_start_
3360: 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 7b 69 6e  int(alist);. {in
3370: 74 20 61 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74  t a = va_arg_int
3380: 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 62  (alist);.  int b
3390: 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c   = va_arg_int(al
33a0: 69 73 74 29 3b 0a 20 20 69 6e 74 20 63 20 3d 20  ist);.  int c = 
33b0: 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73 74  va_arg_int(alist
33c0: 29 3b 0a 20 20 69 6e 74 20 64 20 3d 20 76 61 5f  );.  int d = va_
33d0: 61 72 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a  arg_int(alist);.
33e0: 20 20 69 6e 74 20 65 20 3d 20 76 61 5f 61 72 67    int e = va_arg
33f0: 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 69  _int(alist);.  i
3400: 6e 74 20 66 20 3d 20 76 61 5f 61 72 67 5f 69 6e  nt f = va_arg_in
3410: 74 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20  t(alist);.  int 
3420: 67 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61  g = va_arg_int(a
3430: 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 68 20 3d  list);.  int h =
3440: 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73   va_arg_int(alis
3450: 74 29 3b 0a 20 20 69 6e 74 20 72 3d 61 2b 62 2b  t);.  int r=a+b+
3460: 63 2b 64 2b 65 2b 66 2b 67 2b 68 3b 0a 20 20 66  c+d+e+f+g+h;.  f
3470: 70 72 69 6e 74 66 28 6f 75 74 2c 22 69 6e 74 20  printf(out,"int 
3480: 66 28 38 2a 69 6e 74 29 3a 28 25 64 2c 25 64 2c  f(8*int):(%d,%d,
3490: 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25  %d,%d,%d,%d,%d,%
34a0: 64 29 22 2c 61 2c 62 2c 63 2c 64 2c 65 2c 66 2c  d)",a,b,c,d,e,f,
34b0: 67 2c 68 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f  g,h);.  fflush(o
34c0: 75 74 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e  ut);.  va_return
34d0: 5f 69 6e 74 28 61 6c 69 73 74 2c 20 72 29 3b 0a  _int(alist, r);.
34e0: 7d 7d 0a 76 6f 69 64 20 69 5f 69 31 36 5f 73 69  }}.void i_i16_si
34f0: 6d 75 6c 61 74 6f 72 20 5f 50 28 28 64 61 74 61  mulator _P((data
3500: 2c 61 6c 69 73 74 29 2c 20 76 6f 69 64 2a 20 64  ,alist), void* d
3510: 61 74 61 20 5f 20 76 61 5f 61 6c 69 73 74 20 61  ata _ va_alist a
3520: 6c 69 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 61  list).{.  if (da
3530: 74 61 20 21 3d 20 28 76 6f 69 64 2a 29 26 69 5f  ta != (void*)&i_
3540: 69 31 36 29 20 7b 20 66 70 72 69 6e 74 66 28 6f  i16) { fprintf(o
3550: 75 74 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66  ut,"wrong data f
3560: 6f 72 20 69 5f 69 31 36 5c 6e 22 29 3b 20 65 78  or i_i16\n"); ex
3570: 69 74 28 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74  it(1); }.  va_st
3580: 61 72 74 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a  art_int(alist);.
3590: 20 7b 69 6e 74 20 61 20 3d 20 76 61 5f 61 72 67   {int a = va_arg
35a0: 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 69  _int(alist);.  i
35b0: 6e 74 20 62 20 3d 20 76 61 5f 61 72 67 5f 69 6e  nt b = va_arg_in
35c0: 74 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20  t(alist);.  int 
35d0: 63 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61  c = va_arg_int(a
35e0: 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 64 20 3d  list);.  int d =
35f0: 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73   va_arg_int(alis
3600: 74 29 3b 0a 20 20 69 6e 74 20 65 20 3d 20 76 61  t);.  int e = va
3610: 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b  _arg_int(alist);
3620: 0a 20 20 69 6e 74 20 66 20 3d 20 76 61 5f 61 72  .  int f = va_ar
3630: 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20  g_int(alist);.  
3640: 69 6e 74 20 67 20 3d 20 76 61 5f 61 72 67 5f 69  int g = va_arg_i
3650: 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74  nt(alist);.  int
3660: 20 68 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28   h = va_arg_int(
3670: 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 69 20  alist);.  int i 
3680: 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69  = va_arg_int(ali
3690: 73 74 29 3b 0a 20 20 69 6e 74 20 6a 20 3d 20 76  st);.  int j = v
36a0: 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73 74 29  a_arg_int(alist)
36b0: 3b 0a 20 20 69 6e 74 20 6b 20 3d 20 76 61 5f 61  ;.  int k = va_a
36c0: 72 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20  rg_int(alist);. 
36d0: 20 69 6e 74 20 6c 20 3d 20 76 61 5f 61 72 67 5f   int l = va_arg_
36e0: 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e  int(alist);.  in
36f0: 74 20 6d 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74  t m = va_arg_int
3700: 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 6e  (alist);.  int n
3710: 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c   = va_arg_int(al
3720: 69 73 74 29 3b 0a 20 20 69 6e 74 20 6f 20 3d 20  ist);.  int o = 
3730: 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73 74  va_arg_int(alist
3740: 29 3b 0a 20 20 69 6e 74 20 70 20 3d 20 76 61 5f  );.  int p = va_
3750: 61 72 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a  arg_int(alist);.
3760: 20 20 69 6e 74 20 72 3d 61 2b 62 2b 63 2b 64 2b    int r=a+b+c+d+
3770: 65 2b 66 2b 67 2b 68 2b 69 2b 6a 2b 6b 2b 6c 2b  e+f+g+h+i+j+k+l+
3780: 6d 2b 6e 2b 6f 2b 70 3b 0a 20 20 66 70 72 69 6e  m+n+o+p;.  fprin
3790: 74 66 28 6f 75 74 2c 22 69 6e 74 20 66 28 31 36  tf(out,"int f(16
37a0: 2a 69 6e 74 29 3a 28 25 64 2c 25 64 2c 25 64 2c  *int):(%d,%d,%d,
37b0: 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25  %d,%d,%d,%d,%d,%
37c0: 64 2c 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25 64  d,%d,%d,%d,%d,%d
37d0: 2c 25 64 2c 25 64 29 22 2c 0a 20 20 20 20 20 20  ,%d,%d)",.      
37e0: 20 20 20 20 61 2c 62 2c 63 2c 64 2c 65 2c 66 2c      a,b,c,d,e,f,
37f0: 67 2c 68 2c 69 2c 6a 2c 6b 2c 6c 2c 6d 2c 6e 2c  g,h,i,j,k,l,m,n,
3800: 6f 2c 70 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f  o,p);.  fflush(o
3810: 75 74 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e  ut);.  va_return
3820: 5f 69 6e 74 28 61 6c 69 73 74 2c 20 72 29 3b 0a  _int(alist, r);.
3830: 7d 7d 0a 0a 2f 2a 20 66 6c 6f 61 74 20 74 65 73  }}../* float tes
3840: 74 73 20 2a 2f 0a 76 6f 69 64 20 66 5f 66 5f 73  ts */.void f_f_s
3850: 69 6d 75 6c 61 74 6f 72 20 5f 50 28 28 64 61 74  imulator _P((dat
3860: 61 2c 61 6c 69 73 74 29 2c 20 76 6f 69 64 2a 20  a,alist), void* 
3870: 64 61 74 61 20 5f 20 76 61 5f 61 6c 69 73 74 20  data _ va_alist 
3880: 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66 20 28 64  alist).{.  if (d
3890: 61 74 61 20 21 3d 20 28 76 6f 69 64 2a 29 26 66  ata != (void*)&f
38a0: 5f 66 29 20 7b 20 66 70 72 69 6e 74 66 28 6f 75  _f) { fprintf(ou
38b0: 74 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66 6f  t,"wrong data fo
38c0: 72 20 66 5f 66 5c 6e 22 29 3b 20 65 78 69 74 28  r f_f\n"); exit(
38d0: 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72 74  1); }.  va_start
38e0: 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20  _float(alist);. 
38f0: 7b 66 6c 6f 61 74 20 61 20 3d 20 76 61 5f 61 72  {float a = va_ar
3900: 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a  g_float(alist);.
3910: 20 20 66 6c 6f 61 74 20 72 3d 61 2b 31 2e 30 3b    float r=a+1.0;
3920: 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22  .  fprintf(out,"
3930: 66 6c 6f 61 74 20 66 28 66 6c 6f 61 74 29 3a 28  float f(float):(
3940: 25 67 29 22 2c 61 29 3b 0a 20 20 66 66 6c 75 73  %g)",a);.  fflus
3950: 68 28 6f 75 74 29 3b 0a 20 20 76 61 5f 72 65 74  h(out);.  va_ret
3960: 75 72 6e 5f 66 6c 6f 61 74 28 61 6c 69 73 74 2c  urn_float(alist,
3970: 20 72 29 3b 0a 7d 7d 0a 76 6f 69 64 20 66 5f 66   r);.}}.void f_f
3980: 32 5f 73 69 6d 75 6c 61 74 6f 72 20 5f 50 28 28  2_simulator _P((
3990: 64 61 74 61 2c 61 6c 69 73 74 29 2c 20 76 6f 69  data,alist), voi
39a0: 64 2a 20 64 61 74 61 20 5f 20 76 61 5f 61 6c 69  d* data _ va_ali
39b0: 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66  st alist).{.  if
39c0: 20 28 64 61 74 61 20 21 3d 20 28 76 6f 69 64 2a   (data != (void*
39d0: 29 26 66 5f 66 32 29 20 7b 20 66 70 72 69 6e 74  )&f_f2) { fprint
39e0: 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20 64 61 74  f(out,"wrong dat
39f0: 61 20 66 6f 72 20 66 5f 66 32 5c 6e 22 29 3b 20  a for f_f2\n"); 
3a00: 65 78 69 74 28 31 29 3b 20 7d 0a 20 20 76 61 5f  exit(1); }.  va_
3a10: 73 74 61 72 74 5f 66 6c 6f 61 74 28 61 6c 69 73  start_float(alis
3a20: 74 29 3b 0a 20 7b 66 6c 6f 61 74 20 61 20 3d 20  t);. {float a = 
3a30: 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c 69  va_arg_float(ali
3a40: 73 74 29 3b 0a 20 20 66 6c 6f 61 74 20 62 20 3d  st);.  float b =
3a50: 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c   va_arg_float(al
3a60: 69 73 74 29 3b 0a 20 20 66 6c 6f 61 74 20 72 3d  ist);.  float r=
3a70: 61 2b 62 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f  a+b;.  fprintf(o
3a80: 75 74 2c 22 66 6c 6f 61 74 20 66 28 32 2a 66 6c  ut,"float f(2*fl
3a90: 6f 61 74 29 3a 28 25 67 2c 25 67 29 22 2c 61 2c  oat):(%g,%g)",a,
3aa0: 62 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74  b);.  fflush(out
3ab0: 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f 66  );.  va_return_f
3ac0: 6c 6f 61 74 28 61 6c 69 73 74 2c 20 72 29 3b 0a  loat(alist, r);.
3ad0: 7d 7d 0a 76 6f 69 64 20 66 5f 66 34 5f 73 69 6d  }}.void f_f4_sim
3ae0: 75 6c 61 74 6f 72 20 5f 50 28 28 64 61 74 61 2c  ulator _P((data,
3af0: 61 6c 69 73 74 29 2c 20 76 6f 69 64 2a 20 64 61  alist), void* da
3b00: 74 61 20 5f 20 76 61 5f 61 6c 69 73 74 20 61 6c  ta _ va_alist al
3b10: 69 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74  ist).{.  if (dat
3b20: 61 20 21 3d 20 28 76 6f 69 64 2a 29 26 66 5f 66  a != (void*)&f_f
3b30: 34 29 20 7b 20 66 70 72 69 6e 74 66 28 6f 75 74  4) { fprintf(out
3b40: 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66 6f 72  ,"wrong data for
3b50: 20 66 5f 66 34 5c 6e 22 29 3b 20 65 78 69 74 28   f_f4\n"); exit(
3b60: 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72 74  1); }.  va_start
3b70: 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20  _float(alist);. 
3b80: 7b 66 6c 6f 61 74 20 61 20 3d 20 76 61 5f 61 72  {float a = va_ar
3b90: 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a  g_float(alist);.
3ba0: 20 20 66 6c 6f 61 74 20 62 20 3d 20 76 61 5f 61    float b = va_a
3bb0: 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b  rg_float(alist);
3bc0: 0a 20 20 66 6c 6f 61 74 20 63 20 3d 20 76 61 5f  .  float c = va_
3bd0: 61 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29  arg_float(alist)
3be0: 3b 0a 20 20 66 6c 6f 61 74 20 64 20 3d 20 76 61  ;.  float d = va
3bf0: 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74  _arg_float(alist
3c00: 29 3b 0a 20 20 66 6c 6f 61 74 20 72 3d 61 2b 62  );.  float r=a+b
3c10: 2b 63 2b 64 3b 0a 20 20 66 70 72 69 6e 74 66 28  +c+d;.  fprintf(
3c20: 6f 75 74 2c 22 66 6c 6f 61 74 20 66 28 34 2a 66  out,"float f(4*f
3c30: 6c 6f 61 74 29 3a 28 25 67 2c 25 67 2c 25 67 2c  loat):(%g,%g,%g,
3c40: 25 67 29 22 2c 61 2c 62 2c 63 2c 64 29 3b 0a 20  %g)",a,b,c,d);. 
3c50: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20   fflush(out);.  
3c60: 76 61 5f 72 65 74 75 72 6e 5f 66 6c 6f 61 74 28  va_return_float(
3c70: 61 6c 69 73 74 2c 20 72 29 3b 0a 7d 7d 0a 76 6f  alist, r);.}}.vo
3c80: 69 64 20 66 5f 66 38 5f 73 69 6d 75 6c 61 74 6f  id f_f8_simulato
3c90: 72 20 5f 50 28 28 64 61 74 61 2c 61 6c 69 73 74  r _P((data,alist
3ca0: 29 2c 20 76 6f 69 64 2a 20 64 61 74 61 20 5f 20  ), void* data _ 
3cb0: 76 61 5f 61 6c 69 73 74 20 61 6c 69 73 74 29 0a  va_alist alist).
3cc0: 7b 0a 20 20 69 66 20 28 64 61 74 61 20 21 3d 20  {.  if (data != 
3cd0: 28 76 6f 69 64 2a 29 26 66 5f 66 38 29 20 7b 20  (void*)&f_f8) { 
3ce0: 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 77 72 6f  fprintf(out,"wro
3cf0: 6e 67 20 64 61 74 61 20 66 6f 72 20 66 5f 66 38  ng data for f_f8
3d00: 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 3b 20 7d  \n"); exit(1); }
3d10: 0a 20 20 76 61 5f 73 74 61 72 74 5f 66 6c 6f 61  .  va_start_floa
3d20: 74 28 61 6c 69 73 74 29 3b 0a 20 7b 66 6c 6f 61  t(alist);. {floa
3d30: 74 20 61 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f  t a = va_arg_flo
3d40: 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c 6f  at(alist);.  flo
3d50: 61 74 20 62 20 3d 20 76 61 5f 61 72 67 5f 66 6c  at b = va_arg_fl
3d60: 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c  oat(alist);.  fl
3d70: 6f 61 74 20 63 20 3d 20 76 61 5f 61 72 67 5f 66  oat c = va_arg_f
3d80: 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 66  loat(alist);.  f
3d90: 6c 6f 61 74 20 64 20 3d 20 76 61 5f 61 72 67 5f  loat d = va_arg_
3da0: 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20 20  float(alist);.  
3db0: 66 6c 6f 61 74 20 65 20 3d 20 76 61 5f 61 72 67  float e = va_arg
3dc0: 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20  _float(alist);. 
3dd0: 20 66 6c 6f 61 74 20 66 20 3d 20 76 61 5f 61 72   float f = va_ar
3de0: 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a  g_float(alist);.
3df0: 20 20 66 6c 6f 61 74 20 67 20 3d 20 76 61 5f 61    float g = va_a
3e00: 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b  rg_float(alist);
3e10: 0a 20 20 66 6c 6f 61 74 20 68 20 3d 20 76 61 5f  .  float h = va_
3e20: 61 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29  arg_float(alist)
3e30: 3b 0a 20 20 66 6c 6f 61 74 20 72 3d 61 2b 62 2b  ;.  float r=a+b+
3e40: 63 2b 64 2b 65 2b 66 2b 67 2b 68 3b 0a 20 20 66  c+d+e+f+g+h;.  f
3e50: 70 72 69 6e 74 66 28 6f 75 74 2c 22 66 6c 6f 61  printf(out,"floa
3e60: 74 20 66 28 38 2a 66 6c 6f 61 74 29 3a 28 25 67  t f(8*float):(%g
3e70: 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c  ,%g,%g,%g,%g,%g,
3e80: 25 67 2c 25 67 29 22 2c 61 2c 62 2c 63 2c 64 2c  %g,%g)",a,b,c,d,
3e90: 65 2c 66 2c 67 2c 68 29 3b 0a 20 20 66 66 6c 75  e,f,g,h);.  fflu
3ea0: 73 68 28 6f 75 74 29 3b 0a 20 20 76 61 5f 72 65  sh(out);.  va_re
3eb0: 74 75 72 6e 5f 66 6c 6f 61 74 28 61 6c 69 73 74  turn_float(alist
3ec0: 2c 20 72 29 3b 0a 7d 7d 0a 76 6f 69 64 20 66 5f  , r);.}}.void f_
3ed0: 66 31 36 5f 73 69 6d 75 6c 61 74 6f 72 20 5f 50  f16_simulator _P
3ee0: 28 28 64 61 74 61 2c 61 6c 69 73 74 29 2c 20 76  ((data,alist), v
3ef0: 6f 69 64 2a 20 64 61 74 61 20 5f 20 76 61 5f 61  oid* data _ va_a
3f00: 6c 69 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20  list alist).{.  
3f10: 69 66 20 28 64 61 74 61 20 21 3d 20 28 76 6f 69  if (data != (voi
3f20: 64 2a 29 26 66 5f 66 31 36 29 20 7b 20 66 70 72  d*)&f_f16) { fpr
3f30: 69 6e 74 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20  intf(out,"wrong 
3f40: 64 61 74 61 20 66 6f 72 20 66 5f 66 31 36 5c 6e  data for f_f16\n
3f50: 22 29 3b 20 65 78 69 74 28 31 29 3b 20 7d 0a 20  "); exit(1); }. 
3f60: 20 76 61 5f 73 74 61 72 74 5f 66 6c 6f 61 74 28   va_start_float(
3f70: 61 6c 69 73 74 29 3b 0a 20 7b 66 6c 6f 61 74 20  alist);. {float 
3f80: 61 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74  a = va_arg_float
3f90: 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c 6f 61 74  (alist);.  float
3fa0: 20 62 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f 61   b = va_arg_floa
3fb0: 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c 6f 61  t(alist);.  floa
3fc0: 74 20 63 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f  t c = va_arg_flo
3fd0: 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c 6f  at(alist);.  flo
3fe0: 61 74 20 64 20 3d 20 76 61 5f 61 72 67 5f 66 6c  at d = va_arg_fl
3ff0: 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c  oat(alist);.  fl
4000: 6f 61 74 20 65 20 3d 20 76 61 5f 61 72 67 5f 66  oat e = va_arg_f
4010: 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 66  loat(alist);.  f
4020: 6c 6f 61 74 20 66 20 3d 20 76 61 5f 61 72 67 5f  loat f = va_arg_
4030: 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20 20  float(alist);.  
4040: 66 6c 6f 61 74 20 67 20 3d 20 76 61 5f 61 72 67  float g = va_arg
4050: 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20  _float(alist);. 
4060: 20 66 6c 6f 61 74 20 68 20 3d 20 76 61 5f 61 72   float h = va_ar
4070: 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a  g_float(alist);.
4080: 20 20 66 6c 6f 61 74 20 69 20 3d 20 76 61 5f 61    float i = va_a
4090: 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b  rg_float(alist);
40a0: 0a 20 20 66 6c 6f 61 74 20 6a 20 3d 20 76 61 5f  .  float j = va_
40b0: 61 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29  arg_float(alist)
40c0: 3b 0a 20 20 66 6c 6f 61 74 20 6b 20 3d 20 76 61  ;.  float k = va
40d0: 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74  _arg_float(alist
40e0: 29 3b 0a 20 20 66 6c 6f 61 74 20 6c 20 3d 20 76  );.  float l = v
40f0: 61 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73  a_arg_float(alis
4100: 74 29 3b 0a 20 20 66 6c 6f 61 74 20 6d 20 3d 20  t);.  float m = 
4110: 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c 69  va_arg_float(ali
4120: 73 74 29 3b 0a 20 20 66 6c 6f 61 74 20 6e 20 3d  st);.  float n =
4130: 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c   va_arg_float(al
4140: 69 73 74 29 3b 0a 20 20 66 6c 6f 61 74 20 6f 20  ist);.  float o 
4150: 3d 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 61  = va_arg_float(a
4160: 6c 69 73 74 29 3b 0a 20 20 66 6c 6f 61 74 20 70  list);.  float p
4170: 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28   = va_arg_float(
4180: 61 6c 69 73 74 29 3b 0a 20 20 66 6c 6f 61 74 20  alist);.  float 
4190: 72 3d 61 2b 62 2b 63 2b 64 2b 65 2b 66 2b 67 2b  r=a+b+c+d+e+f+g+
41a0: 68 2b 69 2b 6a 2b 6b 2b 6c 2b 6d 2b 6e 2b 6f 2b  h+i+j+k+l+m+n+o+
41b0: 70 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74  p;.  fprintf(out
41c0: 2c 22 66 6c 6f 61 74 20 66 28 31 36 2a 66 6c 6f  ,"float f(16*flo
41d0: 61 74 29 3a 28 25 67 2c 25 67 2c 25 67 2c 25 67  at):(%g,%g,%g,%g
41e0: 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c  ,%g,%g,%g,%g,%g,
41f0: 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25  %g,%g,%g,%g,%g,%
4200: 67 2c 25 67 29 22 2c 61 2c 62 2c 63 2c 64 2c 65  g,%g)",a,b,c,d,e
4210: 2c 66 2c 67 2c 68 2c 69 2c 6a 2c 6b 2c 6c 2c 6d  ,f,g,h,i,j,k,l,m
4220: 2c 6e 2c 6f 2c 70 29 3b 0a 20 20 66 66 6c 75 73  ,n,o,p);.  fflus
4230: 68 28 6f 75 74 29 3b 0a 20 20 76 61 5f 72 65 74  h(out);.  va_ret
4240: 75 72 6e 5f 66 6c 6f 61 74 28 61 6c 69 73 74 2c  urn_float(alist,
4250: 20 72 29 3b 0a 7d 7d 0a 0a 2f 2a 20 64 6f 75 62   r);.}}../* doub
4260: 6c 65 20 74 65 73 74 73 20 2a 2f 0a 76 6f 69 64  le tests */.void
4270: 20 64 5f 64 5f 73 69 6d 75 6c 61 74 6f 72 20 5f   d_d_simulator _
4280: 50 28 28 64 61 74 61 2c 61 6c 69 73 74 29 2c 20  P((data,alist), 
4290: 76 6f 69 64 2a 20 64 61 74 61 20 5f 20 76 61 5f  void* data _ va_
42a0: 61 6c 69 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20  alist alist).{. 
42b0: 20 69 66 20 28 64 61 74 61 20 21 3d 20 28 76 6f   if (data != (vo
42c0: 69 64 2a 29 26 64 5f 64 29 20 7b 20 66 70 72 69  id*)&d_d) { fpri
42d0: 6e 74 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20 64  ntf(out,"wrong d
42e0: 61 74 61 20 66 6f 72 20 64 5f 64 5c 6e 22 29 3b  ata for d_d\n");
42f0: 20 65 78 69 74 28 31 29 3b 20 7d 0a 20 20 76 61   exit(1); }.  va
4300: 5f 73 74 61 72 74 5f 64 6f 75 62 6c 65 28 61 6c  _start_double(al
4310: 69 73 74 29 3b 0a 20 7b 64 6f 75 62 6c 65 20 61  ist);. {double a
4320: 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65   = va_arg_double
4330: 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c  (alist);.  doubl
4340: 65 20 72 3d 61 2b 31 2e 30 3b 0a 20 20 66 70 72  e r=a+1.0;.  fpr
4350: 69 6e 74 66 28 6f 75 74 2c 22 64 6f 75 62 6c 65  intf(out,"double
4360: 20 66 28 64 6f 75 62 6c 65 29 3a 28 25 67 29 22   f(double):(%g)"
4370: 2c 61 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75  ,a);.  fflush(ou
4380: 74 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f  t);.  va_return_
4390: 64 6f 75 62 6c 65 28 61 6c 69 73 74 2c 20 72 29  double(alist, r)
43a0: 3b 0a 7d 7d 0a 76 6f 69 64 20 64 5f 64 32 5f 73  ;.}}.void d_d2_s
43b0: 69 6d 75 6c 61 74 6f 72 20 5f 50 28 28 64 61 74  imulator _P((dat
43c0: 61 2c 61 6c 69 73 74 29 2c 20 76 6f 69 64 2a 20  a,alist), void* 
43d0: 64 61 74 61 20 5f 20 76 61 5f 61 6c 69 73 74 20  data _ va_alist 
43e0: 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66 20 28 64  alist).{.  if (d
43f0: 61 74 61 20 21 3d 20 28 76 6f 69 64 2a 29 26 64  ata != (void*)&d
4400: 5f 64 32 29 20 7b 20 66 70 72 69 6e 74 66 28 6f  _d2) { fprintf(o
4410: 75 74 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66  ut,"wrong data f
4420: 6f 72 20 64 5f 64 32 5c 6e 22 29 3b 20 65 78 69  or d_d2\n"); exi
4430: 74 28 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74 61  t(1); }.  va_sta
4440: 72 74 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29  rt_double(alist)
4450: 3b 0a 20 7b 64 6f 75 62 6c 65 20 61 20 3d 20 76  ;. {double a = v
4460: 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69  a_arg_double(ali
4470: 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 62 20  st);.  double b 
4480: 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28  = va_arg_double(
4490: 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65  alist);.  double
44a0: 20 72 3d 61 2b 62 3b 0a 20 20 66 70 72 69 6e 74   r=a+b;.  fprint
44b0: 66 28 6f 75 74 2c 22 64 6f 75 62 6c 65 20 66 28  f(out,"double f(
44c0: 32 2a 64 6f 75 62 6c 65 29 3a 28 25 67 2c 25 67  2*double):(%g,%g
44d0: 29 22 2c 61 2c 62 29 3b 0a 20 20 66 66 6c 75 73  )",a,b);.  fflus
44e0: 68 28 6f 75 74 29 3b 0a 20 20 76 61 5f 72 65 74  h(out);.  va_ret
44f0: 75 72 6e 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74  urn_double(alist
4500: 2c 20 72 29 3b 0a 7d 7d 0a 76 6f 69 64 20 64 5f  , r);.}}.void d_
4510: 64 34 5f 73 69 6d 75 6c 61 74 6f 72 20 5f 50 28  d4_simulator _P(
4520: 28 64 61 74 61 2c 61 6c 69 73 74 29 2c 20 76 6f  (data,alist), vo
4530: 69 64 2a 20 64 61 74 61 20 5f 20 76 61 5f 61 6c  id* data _ va_al
4540: 69 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69  ist alist).{.  i
4550: 66 20 28 64 61 74 61 20 21 3d 20 28 76 6f 69 64  f (data != (void
4560: 2a 29 26 64 5f 64 34 29 20 7b 20 66 70 72 69 6e  *)&d_d4) { fprin
4570: 74 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20 64 61  tf(out,"wrong da
4580: 74 61 20 66 6f 72 20 64 5f 64 34 5c 6e 22 29 3b  ta for d_d4\n");
4590: 20 65 78 69 74 28 31 29 3b 20 7d 0a 20 20 76 61   exit(1); }.  va
45a0: 5f 73 74 61 72 74 5f 64 6f 75 62 6c 65 28 61 6c  _start_double(al
45b0: 69 73 74 29 3b 0a 20 7b 64 6f 75 62 6c 65 20 61  ist);. {double a
45c0: 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65   = va_arg_double
45d0: 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c  (alist);.  doubl
45e0: 65 20 62 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75  e b = va_arg_dou
45f0: 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f  ble(alist);.  do
4600: 75 62 6c 65 20 63 20 3d 20 76 61 5f 61 72 67 5f  uble c = va_arg_
4610: 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20  double(alist);. 
4620: 20 64 6f 75 62 6c 65 20 64 20 3d 20 76 61 5f 61   double d = va_a
4630: 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29  rg_double(alist)
4640: 3b 0a 20 20 64 6f 75 62 6c 65 20 72 3d 61 2b 62  ;.  double r=a+b
4650: 2b 63 2b 64 3b 0a 20 20 66 70 72 69 6e 74 66 28  +c+d;.  fprintf(
4660: 6f 75 74 2c 22 64 6f 75 62 6c 65 20 66 28 34 2a  out,"double f(4*
4670: 64 6f 75 62 6c 65 29 3a 28 25 67 2c 25 67 2c 25  double):(%g,%g,%
4680: 67 2c 25 67 29 22 2c 61 2c 62 2c 63 2c 64 29 3b  g,%g)",a,b,c,d);
4690: 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a  .  fflush(out);.
46a0: 20 20 76 61 5f 72 65 74 75 72 6e 5f 64 6f 75 62    va_return_doub
46b0: 6c 65 28 61 6c 69 73 74 2c 20 72 29 3b 0a 7d 7d  le(alist, r);.}}
46c0: 0a 76 6f 69 64 20 64 5f 64 38 5f 73 69 6d 75 6c  .void d_d8_simul
46d0: 61 74 6f 72 20 5f 50 28 28 64 61 74 61 2c 61 6c  ator _P((data,al
46e0: 69 73 74 29 2c 20 76 6f 69 64 2a 20 64 61 74 61  ist), void* data
46f0: 20 5f 20 76 61 5f 61 6c 69 73 74 20 61 6c 69 73   _ va_alist alis
4700: 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61 20  t).{.  if (data 
4710: 21 3d 20 28 76 6f 69 64 2a 29 26 64 5f 64 38 29  != (void*)&d_d8)
4720: 20 7b 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22   { fprintf(out,"
4730: 77 72 6f 6e 67 20 64 61 74 61 20 66 6f 72 20 64  wrong data for d
4740: 5f 64 38 5c 6e 22 29 3b 20 65 78 69 74 28 31 29  _d8\n"); exit(1)
4750: 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72 74 5f 64  ; }.  va_start_d
4760: 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 7b  ouble(alist);. {
4770: 64 6f 75 62 6c 65 20 61 20 3d 20 76 61 5f 61 72  double a = va_ar
4780: 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b  g_double(alist);
4790: 0a 20 20 64 6f 75 62 6c 65 20 62 20 3d 20 76 61  .  double b = va
47a0: 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73  _arg_double(alis
47b0: 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 63 20 3d  t);.  double c =
47c0: 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61   va_arg_double(a
47d0: 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20  list);.  double 
47e0: 64 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c  d = va_arg_doubl
47f0: 65 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62  e(alist);.  doub
4800: 6c 65 20 65 20 3d 20 76 61 5f 61 72 67 5f 64 6f  le e = va_arg_do
4810: 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 64  uble(alist);.  d
4820: 6f 75 62 6c 65 20 66 20 3d 20 76 61 5f 61 72 67  ouble f = va_arg
4830: 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a  _double(alist);.
4840: 20 20 64 6f 75 62 6c 65 20 67 20 3d 20 76 61 5f    double g = va_
4850: 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74  arg_double(alist
4860: 29 3b 0a 20 20 64 6f 75 62 6c 65 20 68 20 3d 20  );.  double h = 
4870: 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c  va_arg_double(al
4880: 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 72  ist);.  double r
4890: 3d 61 2b 62 2b 63 2b 64 2b 65 2b 66 2b 67 2b 68  =a+b+c+d+e+f+g+h
48a0: 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c  ;.  fprintf(out,
48b0: 22 64 6f 75 62 6c 65 20 66 28 38 2a 64 6f 75 62  "double f(8*doub
48c0: 6c 65 29 3a 28 25 67 2c 25 67 2c 25 67 2c 25 67  le):(%g,%g,%g,%g
48d0: 2c 25 67 2c 25 67 2c 25 67 2c 25 67 29 22 2c 61  ,%g,%g,%g,%g)",a
48e0: 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67 2c 68 29 3b  ,b,c,d,e,f,g,h);
48f0: 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a  .  fflush(out);.
4900: 20 20 76 61 5f 72 65 74 75 72 6e 5f 64 6f 75 62    va_return_doub
4910: 6c 65 28 61 6c 69 73 74 2c 20 72 29 3b 0a 7d 7d  le(alist, r);.}}
4920: 0a 76 6f 69 64 20 64 5f 64 31 36 5f 73 69 6d 75  .void d_d16_simu
4930: 6c 61 74 6f 72 20 5f 50 28 28 64 61 74 61 2c 61  lator _P((data,a
4940: 6c 69 73 74 29 2c 20 76 6f 69 64 2a 20 64 61 74  list), void* dat
4950: 61 20 5f 20 76 61 5f 61 6c 69 73 74 20 61 6c 69  a _ va_alist ali
4960: 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61  st).{.  if (data
4970: 20 21 3d 20 28 76 6f 69 64 2a 29 26 64 5f 64 31   != (void*)&d_d1
4980: 36 29 20 7b 20 66 70 72 69 6e 74 66 28 6f 75 74  6) { fprintf(out
4990: 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66 6f 72  ,"wrong data for
49a0: 20 64 5f 64 31 36 5c 6e 22 29 3b 20 65 78 69 74   d_d16\n"); exit
49b0: 28 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72  (1); }.  va_star
49c0: 74 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b  t_double(alist);
49d0: 0a 20 7b 64 6f 75 62 6c 65 20 61 20 3d 20 76 61  . {double a = va
49e0: 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73  _arg_double(alis
49f0: 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 62 20 3d  t);.  double b =
4a00: 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61   va_arg_double(a
4a10: 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20  list);.  double 
4a20: 63 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c  c = va_arg_doubl
4a30: 65 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62  e(alist);.  doub
4a40: 6c 65 20 64 20 3d 20 76 61 5f 61 72 67 5f 64 6f  le d = va_arg_do
4a50: 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 64  uble(alist);.  d
4a60: 6f 75 62 6c 65 20 65 20 3d 20 76 61 5f 61 72 67  ouble e = va_arg
4a70: 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a  _double(alist);.
4a80: 20 20 64 6f 75 62 6c 65 20 66 20 3d 20 76 61 5f    double f = va_
4a90: 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74  arg_double(alist
4aa0: 29 3b 0a 20 20 64 6f 75 62 6c 65 20 67 20 3d 20  );.  double g = 
4ab0: 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c  va_arg_double(al
4ac0: 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 68  ist);.  double h
4ad0: 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65   = va_arg_double
4ae0: 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c  (alist);.  doubl
4af0: 65 20 69 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75  e i = va_arg_dou
4b00: 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f  ble(alist);.  do
4b10: 75 62 6c 65 20 6a 20 3d 20 76 61 5f 61 72 67 5f  uble j = va_arg_
4b20: 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20  double(alist);. 
4b30: 20 64 6f 75 62 6c 65 20 6b 20 3d 20 76 61 5f 61   double k = va_a
4b40: 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29  rg_double(alist)
4b50: 3b 0a 20 20 64 6f 75 62 6c 65 20 6c 20 3d 20 76  ;.  double l = v
4b60: 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69  a_arg_double(ali
4b70: 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 6d 20  st);.  double m 
4b80: 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28  = va_arg_double(
4b90: 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65  alist);.  double
4ba0: 20 6e 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62   n = va_arg_doub
4bb0: 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75  le(alist);.  dou
4bc0: 62 6c 65 20 6f 20 3d 20 76 61 5f 61 72 67 5f 64  ble o = va_arg_d
4bd0: 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20  ouble(alist);.  
4be0: 64 6f 75 62 6c 65 20 70 20 3d 20 76 61 5f 61 72  double p = va_ar
4bf0: 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b  g_double(alist);
4c00: 0a 20 20 64 6f 75 62 6c 65 20 72 3d 61 2b 62 2b  .  double r=a+b+
4c10: 63 2b 64 2b 65 2b 66 2b 67 2b 68 2b 69 2b 6a 2b  c+d+e+f+g+h+i+j+
4c20: 6b 2b 6c 2b 6d 2b 6e 2b 6f 2b 70 3b 0a 20 20 66  k+l+m+n+o+p;.  f
4c30: 70 72 69 6e 74 66 28 6f 75 74 2c 22 64 6f 75 62  printf(out,"doub
4c40: 6c 65 20 66 28 31 36 2a 64 6f 75 62 6c 65 29 3a  le f(16*double):
4c50: 28 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c  (%g,%g,%g,%g,%g,
4c60: 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25  %g,%g,%g,%g,%g,%
4c70: 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67  g,%g,%g,%g,%g,%g
4c80: 29 22 2c 61 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67  )",a,b,c,d,e,f,g
4c90: 2c 68 2c 69 2c 6a 2c 6b 2c 6c 2c 6d 2c 6e 2c 6f  ,h,i,j,k,l,m,n,o
4ca0: 2c 70 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75  ,p);.  fflush(ou
4cb0: 74 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f  t);.  va_return_
4cc0: 64 6f 75 62 6c 65 28 61 6c 69 73 74 2c 20 72 29  double(alist, r)
4cd0: 3b 0a 7d 7d 0a 0a 2f 2a 20 70 6f 69 6e 74 65 72  ;.}}../* pointer
4ce0: 20 74 65 73 74 73 20 2a 2f 0a 76 6f 69 64 20 76   tests */.void v
4cf0: 70 5f 76 70 64 70 63 70 73 70 5f 73 69 6d 75 6c  p_vpdpcpsp_simul
4d00: 61 74 6f 72 20 5f 50 28 28 64 61 74 61 2c 61 6c  ator _P((data,al
4d10: 69 73 74 29 2c 20 76 6f 69 64 2a 20 64 61 74 61  ist), void* data
4d20: 20 5f 20 76 61 5f 61 6c 69 73 74 20 61 6c 69 73   _ va_alist alis
4d30: 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61 20  t).{.  if (data 
4d40: 21 3d 20 28 76 6f 69 64 2a 29 26 76 70 5f 76 70  != (void*)&vp_vp
4d50: 64 70 63 70 73 70 29 20 7b 20 66 70 72 69 6e 74  dpcpsp) { fprint
4d60: 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20 64 61 74  f(out,"wrong dat
4d70: 61 20 66 6f 72 20 76 70 5f 76 70 64 70 63 70 73  a for vp_vpdpcps
4d80: 70 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 3b 20  p\n"); exit(1); 
4d90: 7d 0a 20 20 76 61 5f 73 74 61 72 74 5f 70 74 72  }.  va_start_ptr
4da0: 28 61 6c 69 73 74 2c 20 76 6f 69 64 2a 29 3b 0a  (alist, void*);.
4db0: 20 7b 76 6f 69 64 2a 20 61 20 3d 20 76 61 5f 61   {void* a = va_a
4dc0: 72 67 5f 70 74 72 28 61 6c 69 73 74 2c 20 76 6f  rg_ptr(alist, vo
4dd0: 69 64 2a 29 3b 0a 20 20 64 6f 75 62 6c 65 2a 20  id*);.  double* 
4de0: 62 20 3d 20 76 61 5f 61 72 67 5f 70 74 72 28 61  b = va_arg_ptr(a
4df0: 6c 69 73 74 2c 20 64 6f 75 62 6c 65 2a 29 3b 0a  list, double*);.
4e00: 20 20 63 68 61 72 2a 20 63 20 3d 20 76 61 5f 61    char* c = va_a
4e10: 72 67 5f 70 74 72 28 61 6c 69 73 74 2c 20 63 68  rg_ptr(alist, ch
4e20: 61 72 2a 29 3b 0a 20 20 49 6e 74 2a 20 64 20 3d  ar*);.  Int* d =
4e30: 20 76 61 5f 61 72 67 5f 70 74 72 28 61 6c 69 73   va_arg_ptr(alis
4e40: 74 2c 20 49 6e 74 2a 29 3b 0a 20 20 76 6f 69 64  t, Int*);.  void
4e50: 2a 20 72 65 74 20 3d 20 28 63 68 61 72 2a 29 62  * ret = (char*)b
4e60: 20 2b 20 31 3b 0a 20 20 66 70 72 69 6e 74 66 28   + 1;.  fprintf(
4e70: 6f 75 74 2c 22 76 6f 69 64 2a 20 66 28 76 6f 69  out,"void* f(voi
4e80: 64 2a 2c 64 6f 75 62 6c 65 2a 2c 63 68 61 72 2a  d*,double*,char*
4e90: 2c 49 6e 74 2a 29 3a 28 30 78 25 6c 78 2c 30 78  ,Int*):(0x%lx,0x
4ea0: 25 6c 78 2c 30 78 25 6c 78 2c 30 78 25 6c 78 29  %lx,0x%lx,0x%lx)
4eb0: 22 2c 28 6c 6f 6e 67 29 61 2c 28 6c 6f 6e 67 29  ",(long)a,(long)
4ec0: 62 2c 28 6c 6f 6e 67 29 63 2c 28 6c 6f 6e 67 29  b,(long)c,(long)
4ed0: 64 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74  d);.  fflush(out
4ee0: 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f 70  );.  va_return_p
4ef0: 74 72 28 61 6c 69 73 74 2c 20 76 6f 69 64 2a 2c  tr(alist, void*,
4f00: 20 72 65 74 29 3b 0a 7d 7d 0a 0a 2f 2a 20 6d 69   ret);.}}../* mi
4f10: 78 65 64 20 6e 75 6d 62 65 72 20 74 65 73 74 73  xed number tests
4f20: 20 2a 2f 0a 76 6f 69 64 20 75 63 5f 75 63 73 69   */.void uc_ucsi
4f30: 6c 5f 73 69 6d 75 6c 61 74 6f 72 20 5f 50 28 28  l_simulator _P((
4f40: 64 61 74 61 2c 61 6c 69 73 74 29 2c 20 76 6f 69  data,alist), voi
4f50: 64 2a 20 64 61 74 61 20 5f 20 76 61 5f 61 6c 69  d* data _ va_ali
4f60: 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66  st alist).{.  if
4f70: 20 28 64 61 74 61 20 21 3d 20 28 76 6f 69 64 2a   (data != (void*
4f80: 29 26 75 63 5f 75 63 73 69 6c 29 20 7b 20 66 70  )&uc_ucsil) { fp
4f90: 72 69 6e 74 66 28 6f 75 74 2c 22 77 72 6f 6e 67  rintf(out,"wrong
4fa0: 20 64 61 74 61 20 66 6f 72 20 75 63 5f 75 63 73   data for uc_ucs
4fb0: 69 6c 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 3b  il\n"); exit(1);
4fc0: 20 7d 0a 20 20 76 61 5f 73 74 61 72 74 5f 75 63   }.  va_start_uc
4fd0: 68 61 72 28 61 6c 69 73 74 29 3b 0a 20 7b 75 63  har(alist);. {uc
4fe0: 68 61 72 20 61 20 3d 20 76 61 5f 61 72 67 5f 75  har a = va_arg_u
4ff0: 63 68 61 72 28 61 6c 69 73 74 29 3b 0a 20 20 75  char(alist);.  u
5000: 73 68 6f 72 74 20 62 20 3d 20 76 61 5f 61 72 67  short b = va_arg
5010: 5f 75 73 68 6f 72 74 28 61 6c 69 73 74 29 3b 0a  _ushort(alist);.
5020: 20 20 75 69 6e 74 20 63 20 3d 20 76 61 5f 61 72    uint c = va_ar
5030: 67 5f 75 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20  g_uint(alist);. 
5040: 20 75 6c 6f 6e 67 20 64 20 3d 20 76 61 5f 61 72   ulong d = va_ar
5050: 67 5f 75 6c 6f 6e 67 28 61 6c 69 73 74 29 3b 0a  g_ulong(alist);.
5060: 20 20 75 63 68 61 72 20 72 3d 2d 31 3b 0a 20 20    uchar r=-1;.  
5070: 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 75 63 68  fprintf(out,"uch
5080: 61 72 20 66 28 75 63 68 61 72 2c 75 73 68 6f 72  ar f(uchar,ushor
5090: 74 2c 75 69 6e 74 2c 75 6c 6f 6e 67 29 3a 28 25  t,uint,ulong):(%
50a0: 75 2c 25 75 2c 25 75 2c 25 6c 75 29 22 2c 61 2c  u,%u,%u,%lu)",a,
50b0: 62 2c 63 2c 64 29 3b 0a 20 20 66 66 6c 75 73 68  b,c,d);.  fflush
50c0: 28 6f 75 74 29 3b 0a 20 20 76 61 5f 72 65 74 75  (out);.  va_retu
50d0: 72 6e 5f 75 63 68 61 72 28 61 6c 69 73 74 2c 20  rn_uchar(alist, 
50e0: 72 29 3b 0a 7d 7d 0a 76 6f 69 64 20 64 5f 69 69  r);.}}.void d_ii
50f0: 64 64 5f 73 69 6d 75 6c 61 74 6f 72 20 5f 50 28  dd_simulator _P(
5100: 28 64 61 74 61 2c 61 6c 69 73 74 29 2c 20 76 6f  (data,alist), vo
5110: 69 64 2a 20 64 61 74 61 20 5f 20 76 61 5f 61 6c  id* data _ va_al
5120: 69 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69  ist alist).{.  i
5130: 66 20 28 64 61 74 61 20 21 3d 20 28 76 6f 69 64  f (data != (void
5140: 2a 29 26 64 5f 69 69 64 64 29 20 7b 20 66 70 72  *)&d_iidd) { fpr
5150: 69 6e 74 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20  intf(out,"wrong 
5160: 64 61 74 61 20 66 6f 72 20 64 5f 69 69 64 64 5c  data for d_iidd\
5170: 6e 22 29 3b 20 65 78 69 74 28 31 29 3b 20 7d 0a  n"); exit(1); }.
5180: 20 20 76 61 5f 73 74 61 72 74 5f 64 6f 75 62 6c    va_start_doubl
5190: 65 28 61 6c 69 73 74 29 3b 0a 20 7b 69 6e 74 20  e(alist);. {int 
51a0: 61 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61  a = va_arg_int(a
51b0: 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 62 20 3d  list);.  int b =
51c0: 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73   va_arg_int(alis
51d0: 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 63 20 3d  t);.  double c =
51e0: 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61   va_arg_double(a
51f0: 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20  list);.  double 
5200: 64 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c  d = va_arg_doubl
5210: 65 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62  e(alist);.  doub
5220: 6c 65 20 72 3d 61 2b 62 2b 63 2b 64 3b 0a 20 20  le r=a+b+c+d;.  
5230: 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 64 6f 75  fprintf(out,"dou
5240: 62 6c 65 20 66 28 69 6e 74 2c 69 6e 74 2c 64 6f  ble f(int,int,do
5250: 75 62 6c 65 2c 64 6f 75 62 6c 65 29 3a 28 25 64  uble,double):(%d
5260: 2c 25 64 2c 25 67 2c 25 67 29 22 2c 61 2c 62 2c  ,%d,%g,%g)",a,b,
5270: 63 2c 64 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f  c,d);.  fflush(o
5280: 75 74 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e  ut);.  va_return
5290: 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 2c 20 72  _double(alist, r
52a0: 29 3b 0a 7d 7d 0a 76 6f 69 64 20 64 5f 69 64 69  );.}}.void d_idi
52b0: 64 5f 73 69 6d 75 6c 61 74 6f 72 20 5f 50 28 28  d_simulator _P((
52c0: 64 61 74 61 2c 61 6c 69 73 74 29 2c 20 76 6f 69  data,alist), voi
52d0: 64 2a 20 64 61 74 61 20 5f 20 76 61 5f 61 6c 69  d* data _ va_ali
52e0: 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66  st alist).{.  if
52f0: 20 28 64 61 74 61 20 21 3d 20 28 76 6f 69 64 2a   (data != (void*
5300: 29 26 64 5f 69 64 69 64 29 20 7b 20 66 70 72 69  )&d_idid) { fpri
5310: 6e 74 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20 64  ntf(out,"wrong d
5320: 61 74 61 20 66 6f 72 20 64 5f 69 64 69 64 5c 6e  ata for d_idid\n
5330: 22 29 3b 20 65 78 69 74 28 31 29 3b 20 7d 0a 20  "); exit(1); }. 
5340: 20 76 61 5f 73 74 61 72 74 5f 64 6f 75 62 6c 65   va_start_double
5350: 28 61 6c 69 73 74 29 3b 0a 20 7b 69 6e 74 20 61  (alist);. {int a
5360: 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c   = va_arg_int(al
5370: 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 62  ist);.  double b
5380: 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65   = va_arg_double
5390: 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 63  (alist);.  int c
53a0: 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c   = va_arg_int(al
53b0: 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 64  ist);.  double d
53c0: 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65   = va_arg_double
53d0: 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c  (alist);.  doubl
53e0: 65 20 72 3d 61 2b 62 2b 63 2b 64 3b 0a 20 20 66  e r=a+b+c+d;.  f
53f0: 70 72 69 6e 74 66 28 6f 75 74 2c 22 64 6f 75 62  printf(out,"doub
5400: 6c 65 20 66 28 69 6e 74 2c 64 6f 75 62 6c 65 2c  le f(int,double,
5410: 69 6e 74 2c 64 6f 75 62 6c 65 29 3a 28 25 64 2c  int,double):(%d,
5420: 25 67 2c 25 64 2c 25 67 29 22 2c 61 2c 62 2c 63  %g,%d,%g)",a,b,c
5430: 2c 64 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75  ,d);.  fflush(ou
5440: 74 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f  t);.  va_return_
5450: 64 6f 75 62 6c 65 28 61 6c 69 73 74 2c 20 72 29  double(alist, r)
5460: 3b 0a 7d 7d 0a 76 6f 69 64 20 75 73 5f 63 64 63  ;.}}.void us_cdc
5470: 64 5f 73 69 6d 75 6c 61 74 6f 72 20 5f 50 28 28  d_simulator _P((
5480: 64 61 74 61 2c 61 6c 69 73 74 29 2c 20 76 6f 69  data,alist), voi
5490: 64 2a 20 64 61 74 61 20 5f 20 76 61 5f 61 6c 69  d* data _ va_ali
54a0: 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66  st alist).{.  if
54b0: 20 28 64 61 74 61 20 21 3d 20 28 76 6f 69 64 2a   (data != (void*
54c0: 29 26 75 73 5f 63 64 63 64 29 20 7b 20 66 70 72  )&us_cdcd) { fpr
54d0: 69 6e 74 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20  intf(out,"wrong 
54e0: 64 61 74 61 20 66 6f 72 20 75 73 5f 63 64 63 64  data for us_cdcd
54f0: 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 3b 20 7d  \n"); exit(1); }
5500: 0a 20 20 76 61 5f 73 74 61 72 74 5f 75 73 68 6f  .  va_start_usho
5510: 72 74 28 61 6c 69 73 74 29 3b 0a 20 7b 63 68 61  rt(alist);. {cha
5520: 72 20 61 20 3d 20 76 61 5f 61 72 67 5f 63 68 61  r a = va_arg_cha
5530: 72 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62  r(alist);.  doub
5540: 6c 65 20 62 20 3d 20 76 61 5f 61 72 67 5f 64 6f  le b = va_arg_do
5550: 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 63  uble(alist);.  c
5560: 68 61 72 20 63 20 3d 20 76 61 5f 61 72 67 5f 63  har c = va_arg_c
5570: 68 61 72 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f  har(alist);.  do
5580: 75 62 6c 65 20 64 20 3d 20 76 61 5f 61 72 67 5f  uble d = va_arg_
5590: 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20  double(alist);. 
55a0: 20 75 73 68 6f 72 74 20 72 20 3d 20 28 75 73 68   ushort r = (ush
55b0: 6f 72 74 29 28 61 20 2b 20 62 20 2b 20 63 20 2b  ort)(a + b + c +
55c0: 20 64 29 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f   d);.  fprintf(o
55d0: 75 74 2c 22 75 73 68 6f 72 74 20 66 28 63 68 61  ut,"ushort f(cha
55e0: 72 2c 64 6f 75 62 6c 65 2c 63 68 61 72 2c 64 6f  r,double,char,do
55f0: 75 62 6c 65 29 3a 28 27 25 63 27 2c 25 67 2c 27  uble):('%c',%g,'
5600: 25 63 27 2c 25 67 29 22 2c 61 2c 62 2c 63 2c 64  %c',%g)",a,b,c,d
5610: 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 29  );.  fflush(out)
5620: 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f 75 73  ;.  va_return_us
5630: 68 6f 72 74 28 61 6c 69 73 74 2c 20 72 29 3b 0a  hort(alist, r);.
5640: 7d 7d 0a 23 69 66 64 65 66 20 48 41 56 45 5f 4c  }}.#ifdef HAVE_L
5650: 4f 4e 47 4c 4f 4e 47 0a 76 6f 69 64 20 6c 6c 5f  ONGLONG.void ll_
5660: 66 6c 6c 69 5f 73 69 6d 75 6c 61 74 6f 72 20 5f  flli_simulator _
5670: 50 28 28 64 61 74 61 2c 61 6c 69 73 74 29 2c 20  P((data,alist), 
5680: 76 6f 69 64 2a 20 64 61 74 61 20 5f 20 76 61 5f  void* data _ va_
5690: 61 6c 69 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20  alist alist).{. 
56a0: 20 69 66 20 28 64 61 74 61 20 21 3d 20 28 76 6f   if (data != (vo
56b0: 69 64 2a 29 26 6c 6c 5f 66 6c 6c 69 29 20 7b 20  id*)&ll_flli) { 
56c0: 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 77 72 6f  fprintf(out,"wro
56d0: 6e 67 20 64 61 74 61 20 66 6f 72 20 6c 6c 5f 66  ng data for ll_f
56e0: 6c 6c 69 5c 6e 22 29 3b 20 65 78 69 74 28 31 29  lli\n"); exit(1)
56f0: 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72 74 5f 6c  ; }.  va_start_l
5700: 6f 6e 67 6c 6f 6e 67 28 61 6c 69 73 74 29 3b 0a  onglong(alist);.
5710: 20 7b 66 6c 6f 61 74 20 61 20 3d 20 76 61 5f 61   {float a = va_a
5720: 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b  rg_float(alist);
5730: 0a 20 20 6c 6f 6e 67 20 6c 6f 6e 67 20 62 20 3d  .  long long b =
5740: 20 76 61 5f 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67   va_arg_longlong
5750: 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 63  (alist);.  int c
5760: 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c   = va_arg_int(al
5770: 69 73 74 29 3b 0a 20 20 6c 6f 6e 67 20 6c 6f 6e  ist);.  long lon
5780: 67 20 72 20 3d 20 28 6c 6f 6e 67 20 6c 6f 6e 67  g r = (long long
5790: 29 28 69 6e 74 29 61 20 2b 20 62 20 2b 20 28 6c  )(int)a + b + (l
57a0: 6f 6e 67 20 6c 6f 6e 67 29 63 3b 0a 20 20 66 70  ong long)c;.  fp
57b0: 72 69 6e 74 66 28 6f 75 74 2c 22 6c 6f 6e 67 20  rintf(out,"long 
57c0: 6c 6f 6e 67 20 66 28 66 6c 6f 61 74 2c 6c 6f 6e  long f(float,lon
57d0: 67 20 6c 6f 6e 67 2c 69 6e 74 29 3a 28 25 67 2c  g long,int):(%g,
57e0: 30 78 25 6c 78 25 30 38 6c 78 2c 30 78 25 6c 78  0x%lx%08lx,0x%lx
57f0: 29 22 2c 61 2c 28 6c 6f 6e 67 29 28 62 3e 3e 33  )",a,(long)(b>>3
5800: 32 29 2c 28 6c 6f 6e 67 29 28 62 26 30 78 66 66  2),(long)(b&0xff
5810: 66 66 66 66 66 66 29 2c 28 6c 6f 6e 67 29 63 29  ffffff),(long)c)
5820: 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b  ;.  fflush(out);
5830: 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f 6c 6f 6e  .  va_return_lon
5840: 67 6c 6f 6e 67 28 61 6c 69 73 74 2c 20 72 29 3b  glong(alist, r);
5850: 0a 7d 7d 0a 23 65 6e 64 69 66 0a 0a 23 69 66 6e  .}}.#endif..#ifn
5860: 64 65 66 20 53 4b 49 50 5f 53 54 52 55 43 54 53  def SKIP_STRUCTS
5870: 0a 2f 2a 20 73 74 72 75 63 74 75 72 65 20 74 65  ./* structure te
5880: 73 74 73 20 2a 2f 0a 76 6f 69 64 20 49 5f 49 49  sts */.void I_II
5890: 49 5f 73 69 6d 75 6c 61 74 6f 72 20 5f 50 28 28  I_simulator _P((
58a0: 64 61 74 61 2c 61 6c 69 73 74 29 2c 20 76 6f 69  data,alist), voi
58b0: 64 2a 20 64 61 74 61 20 5f 20 76 61 5f 61 6c 69  d* data _ va_ali
58c0: 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66  st alist).{.  if
58d0: 20 28 64 61 74 61 20 21 3d 20 28 76 6f 69 64 2a   (data != (void*
58e0: 29 26 49 5f 49 49 49 29 20 7b 20 66 70 72 69 6e  )&I_III) { fprin
58f0: 74 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20 64 61  tf(out,"wrong da
5900: 74 61 20 66 6f 72 20 49 5f 49 49 49 5c 6e 22 29  ta for I_III\n")
5910: 3b 20 65 78 69 74 28 31 29 3b 20 7d 0a 20 7b 49  ; exit(1); }. {I
5920: 6e 74 20 61 3b 0a 20 20 49 6e 74 20 62 3b 0a 20  nt a;.  Int b;. 
5930: 20 49 6e 74 20 63 3b 0a 20 20 49 6e 74 20 72 3b   Int c;.  Int r;
5940: 0a 20 20 76 61 5f 73 74 61 72 74 5f 73 74 72 75  .  va_start_stru
5950: 63 74 28 61 6c 69 73 74 2c 20 49 6e 74 2c 20 31  ct(alist, Int, 1
5960: 29 3b 0a 20 20 61 20 3d 20 76 61 5f 61 72 67 5f  );.  a = va_arg_
5970: 73 74 72 75 63 74 28 61 6c 69 73 74 2c 20 49 6e  struct(alist, In
5980: 74 29 3b 0a 20 20 62 20 3d 20 76 61 5f 61 72 67  t);.  b = va_arg
5990: 5f 73 74 72 75 63 74 28 61 6c 69 73 74 2c 20 49  _struct(alist, I
59a0: 6e 74 29 3b 0a 20 20 63 20 3d 20 76 61 5f 61 72  nt);.  c = va_ar
59b0: 67 5f 73 74 72 75 63 74 28 61 6c 69 73 74 2c 20  g_struct(alist, 
59c0: 49 6e 74 29 3b 0a 20 20 72 2e 78 20 3d 20 61 2e  Int);.  r.x = a.
59d0: 78 20 2b 20 62 2e 78 20 2b 20 63 2e 78 3b 0a 20  x + b.x + c.x;. 
59e0: 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 49 6e   fprintf(out,"In
59f0: 74 20 66 28 49 6e 74 2c 49 6e 74 2c 49 6e 74 29  t f(Int,Int,Int)
5a00: 3a 28 7b 25 64 7d 2c 7b 25 64 7d 2c 7b 25 64 7d  :({%d},{%d},{%d}
5a10: 29 22 2c 61 2e 78 2c 62 2e 78 2c 63 2e 78 29 3b  )",a.x,b.x,c.x);
5a20: 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a  .  fflush(out);.
5a30: 20 20 76 61 5f 72 65 74 75 72 6e 5f 73 74 72 75    va_return_stru
5a40: 63 74 28 61 6c 69 73 74 2c 20 49 6e 74 2c 20 72  ct(alist, Int, r
5a50: 29 3b 0a 7d 7d 0a 23 69 66 6e 64 65 66 20 53 4b  );.}}.#ifndef SK
5a60: 49 50 5f 45 58 54 52 41 5f 53 54 52 55 43 54 53  IP_EXTRA_STRUCTS
5a70: 0a 76 6f 69 64 20 43 5f 43 64 43 5f 73 69 6d 75  .void C_CdC_simu
5a80: 6c 61 74 6f 72 20 5f 50 28 28 64 61 74 61 2c 61  lator _P((data,a
5a90: 6c 69 73 74 29 2c 20 76 6f 69 64 2a 20 64 61 74  list), void* dat
5aa0: 61 20 5f 20 76 61 5f 61 6c 69 73 74 20 61 6c 69  a _ va_alist ali
5ab0: 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61  st).{.  if (data
5ac0: 20 21 3d 20 28 76 6f 69 64 2a 29 26 43 5f 43 64   != (void*)&C_Cd
5ad0: 43 29 20 7b 20 66 70 72 69 6e 74 66 28 6f 75 74  C) { fprintf(out
5ae0: 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66 6f 72  ,"wrong data for
5af0: 20 43 5f 43 64 43 5c 6e 22 29 3b 20 65 78 69 74   C_CdC\n"); exit
5b00: 28 31 29 3b 20 7d 0a 20 7b 43 68 61 72 20 61 3b  (1); }. {Char a;
5b10: 0a 20 20 64 6f 75 62 6c 65 20 62 3b 0a 20 20 43  .  double b;.  C
5b20: 68 61 72 20 63 3b 0a 20 20 43 68 61 72 20 72 3b  har c;.  Char r;
5b30: 0a 20 20 76 61 5f 73 74 61 72 74 5f 73 74 72 75  .  va_start_stru
5b40: 63 74 28 61 6c 69 73 74 2c 20 43 68 61 72 2c 20  ct(alist, Char, 
5b50: 31 29 3b 0a 20 20 61 20 3d 20 76 61 5f 61 72 67  1);.  a = va_arg
5b60: 5f 73 74 72 75 63 74 28 61 6c 69 73 74 2c 20 43  _struct(alist, C
5b70: 68 61 72 29 3b 0a 20 20 62 20 3d 20 76 61 5f 61  har);.  b = va_a
5b80: 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29  rg_double(alist)
5b90: 3b 0a 20 20 63 20 3d 20 76 61 5f 61 72 67 5f 73  ;.  c = va_arg_s
5ba0: 74 72 75 63 74 28 61 6c 69 73 74 2c 20 43 68 61  truct(alist, Cha
5bb0: 72 29 3b 0a 20 20 72 2e 78 20 3d 20 28 61 2e 78  r);.  r.x = (a.x
5bc0: 20 2b 20 63 2e 78 29 2f 32 3b 0a 20 20 66 70 72   + c.x)/2;.  fpr
5bd0: 69 6e 74 66 28 6f 75 74 2c 22 43 68 61 72 20 66  intf(out,"Char f
5be0: 28 43 68 61 72 2c 64 6f 75 62 6c 65 2c 43 68 61  (Char,double,Cha
5bf0: 72 29 3a 28 7b 27 25 63 27 7d 2c 25 67 2c 7b 27  r):({'%c'},%g,{'
5c00: 25 63 27 7d 29 22 2c 61 2e 78 2c 62 2c 63 2e 78  %c'})",a.x,b,c.x
5c10: 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 29  );.  fflush(out)
5c20: 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f 73 74  ;.  va_return_st
5c30: 72 75 63 74 28 61 6c 69 73 74 2c 20 43 68 61 72  ruct(alist, Char
5c40: 2c 20 72 29 3b 0a 7d 7d 0a 76 6f 69 64 20 46 5f  , r);.}}.void F_
5c50: 46 66 64 5f 73 69 6d 75 6c 61 74 6f 72 20 5f 50  Ffd_simulator _P
5c60: 28 28 64 61 74 61 2c 61 6c 69 73 74 29 2c 20 76  ((data,alist), v
5c70: 6f 69 64 2a 20 64 61 74 61 20 5f 20 76 61 5f 61  oid* data _ va_a
5c80: 6c 69 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20  list alist).{.  
5c90: 69 66 20 28 64 61 74 61 20 21 3d 20 28 76 6f 69  if (data != (voi
5ca0: 64 2a 29 26 46 5f 46 66 64 29 20 7b 20 66 70 72  d*)&F_Ffd) { fpr
5cb0: 69 6e 74 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20  intf(out,"wrong 
5cc0: 64 61 74 61 20 66 6f 72 20 46 5f 46 66 64 5c 6e  data for F_Ffd\n
5cd0: 22 29 3b 20 65 78 69 74 28 31 29 3b 20 7d 0a 20  "); exit(1); }. 
5ce0: 7b 46 6c 6f 61 74 20 61 3b 0a 20 20 66 6c 6f 61  {Float a;.  floa
5cf0: 74 20 62 3b 0a 20 20 64 6f 75 62 6c 65 20 63 3b  t b;.  double c;
5d00: 0a 20 20 46 6c 6f 61 74 20 72 3b 0a 20 20 76 61  .  Float r;.  va
5d10: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 28 61 6c  _start_struct(al
5d20: 69 73 74 2c 20 46 6c 6f 61 74 2c 20 76 61 5f 77  ist, Float, va_w
5d30: 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c 65 5f 31  ord_splittable_1
5d40: 28 66 6c 6f 61 74 29 29 3b 0a 20 20 61 20 3d 20  (float));.  a = 
5d50: 76 61 5f 61 72 67 5f 73 74 72 75 63 74 28 61 6c  va_arg_struct(al
5d60: 69 73 74 2c 20 46 6c 6f 61 74 29 3b 0a 20 20 62  ist, Float);.  b
5d70: 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28   = va_arg_float(
5d80: 61 6c 69 73 74 29 3b 0a 20 20 63 20 3d 20 76 61  alist);.  c = va
5d90: 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73  _arg_double(alis
5da0: 74 29 3b 0a 20 20 72 2e 78 20 3d 20 61 2e 78 20  t);.  r.x = a.x 
5db0: 2b 20 62 20 2b 20 63 3b 0a 20 20 66 70 72 69 6e  + b + c;.  fprin
5dc0: 74 66 28 6f 75 74 2c 22 46 6c 6f 61 74 20 66 28  tf(out,"Float f(
5dd0: 46 6c 6f 61 74 2c 66 6c 6f 61 74 2c 64 6f 75 62  Float,float,doub
5de0: 6c 65 29 3a 28 7b 25 67 7d 2c 25 67 2c 25 67 29  le):({%g},%g,%g)
5df0: 22 2c 61 2e 78 2c 62 2c 63 29 3b 0a 20 20 66 66  ",a.x,b,c);.  ff
5e00: 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 76 61 5f  lush(out);.  va_
5e10: 72 65 74 75 72 6e 5f 73 74 72 75 63 74 28 61 6c  return_struct(al
5e20: 69 73 74 2c 20 46 6c 6f 61 74 2c 20 72 29 3b 0a  ist, Float, r);.
5e30: 7d 7d 0a 76 6f 69 64 20 44 5f 66 44 64 5f 73 69  }}.void D_fDd_si
5e40: 6d 75 6c 61 74 6f 72 20 5f 50 28 28 64 61 74 61  mulator _P((data
5e50: 2c 61 6c 69 73 74 29 2c 20 76 6f 69 64 2a 20 64  ,alist), void* d
5e60: 61 74 61 20 5f 20 76 61 5f 61 6c 69 73 74 20 61  ata _ va_alist a
5e70: 6c 69 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 61  list).{.  if (da
5e80: 74 61 20 21 3d 20 28 76 6f 69 64 2a 29 26 44 5f  ta != (void*)&D_
5e90: 66 44 64 29 20 7b 20 66 70 72 69 6e 74 66 28 6f  fDd) { fprintf(o
5ea0: 75 74 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66  ut,"wrong data f
5eb0: 6f 72 20 44 5f 66 44 64 5c 6e 22 29 3b 20 65 78  or D_fDd\n"); ex
5ec0: 69 74 28 31 29 3b 20 7d 0a 20 7b 66 6c 6f 61 74  it(1); }. {float
5ed0: 20 61 3b 0a 20 20 44 6f 75 62 6c 65 20 62 3b 0a   a;.  Double b;.
5ee0: 20 20 64 6f 75 62 6c 65 20 63 3b 0a 20 20 44 6f    double c;.  Do
5ef0: 75 62 6c 65 20 72 3b 0a 20 20 76 61 5f 73 74 61  uble r;.  va_sta
5f00: 72 74 5f 73 74 72 75 63 74 28 61 6c 69 73 74 2c  rt_struct(alist,
5f10: 20 44 6f 75 62 6c 65 2c 20 76 61 5f 77 6f 72 64   Double, va_word
5f20: 5f 73 70 6c 69 74 74 61 62 6c 65 5f 31 28 64 6f  _splittable_1(do
5f30: 75 62 6c 65 29 29 3b 0a 20 20 61 20 3d 20 76 61  uble));.  a = va
5f40: 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74  _arg_float(alist
5f50: 29 3b 0a 20 20 62 20 3d 20 76 61 5f 61 72 67 5f  );.  b = va_arg_
5f60: 73 74 72 75 63 74 28 61 6c 69 73 74 2c 20 44 6f  struct(alist, Do
5f70: 75 62 6c 65 29 3b 0a 20 20 63 20 3d 20 76 61 5f  uble);.  c = va_
5f80: 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74  arg_double(alist
5f90: 29 3b 0a 20 20 72 2e 78 20 3d 20 61 20 2b 20 62  );.  r.x = a + b
5fa0: 2e 78 20 2b 20 63 3b 0a 20 20 66 70 72 69 6e 74  .x + c;.  fprint
5fb0: 66 28 6f 75 74 2c 22 44 6f 75 62 6c 65 20 66 28  f(out,"Double f(
5fc0: 66 6c 6f 61 74 2c 44 6f 75 62 6c 65 2c 64 6f 75  float,Double,dou
5fd0: 62 6c 65 29 3a 28 25 67 2c 7b 25 67 7d 2c 25 67  ble):(%g,{%g},%g
5fe0: 29 22 2c 61 2c 62 2e 78 2c 63 29 3b 0a 20 20 66  )",a,b.x,c);.  f
5ff0: 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 76 61  flush(out);.  va
6000: 5f 72 65 74 75 72 6e 5f 73 74 72 75 63 74 28 61  _return_struct(a
6010: 6c 69 73 74 2c 20 44 6f 75 62 6c 65 2c 20 72 29  list, Double, r)
6020: 3b 0a 7d 7d 0a 23 65 6e 64 69 66 0a 76 6f 69 64  ;.}}.#endif.void
6030: 20 4a 5f 4a 69 4a 5f 73 69 6d 75 6c 61 74 6f 72   J_JiJ_simulator
6040: 20 5f 50 28 28 64 61 74 61 2c 61 6c 69 73 74 29   _P((data,alist)
6050: 2c 20 76 6f 69 64 2a 20 64 61 74 61 20 5f 20 76  , void* data _ v
6060: 61 5f 61 6c 69 73 74 20 61 6c 69 73 74 29 0a 7b  a_alist alist).{
6070: 0a 20 20 69 66 20 28 64 61 74 61 20 21 3d 20 28  .  if (data != (
6080: 76 6f 69 64 2a 29 26 4a 5f 4a 69 4a 29 20 7b 20  void*)&J_JiJ) { 
6090: 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 77 72 6f  fprintf(out,"wro
60a0: 6e 67 20 64 61 74 61 20 66 6f 72 20 4a 5f 4a 69  ng data for J_Ji
60b0: 4a 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 3b 20  J\n"); exit(1); 
60c0: 7d 0a 20 7b 4a 20 61 3b 0a 20 20 69 6e 74 20 62  }. {J a;.  int b
60d0: 3b 0a 20 20 4a 20 63 3b 0a 20 20 4a 20 72 3b 0a  ;.  J c;.  J r;.
60e0: 20 20 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63    va_start_struc
60f0: 74 28 61 6c 69 73 74 2c 20 4a 2c 20 76 61 5f 77  t(alist, J, va_w
6100: 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c 65 5f 32  ord_splittable_2
6110: 28 6c 6f 6e 67 2c 6c 6f 6e 67 29 29 3b 0a 20 20  (long,long));.  
6120: 61 20 3d 20 76 61 5f 61 72 67 5f 73 74 72 75 63  a = va_arg_struc
6130: 74 28 61 6c 69 73 74 2c 20 4a 29 3b 0a 20 20 62  t(alist, J);.  b
6140: 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c   = va_arg_int(al
6150: 69 73 74 29 3b 0a 20 20 63 20 3d 20 76 61 5f 61  ist);.  c = va_a
6160: 72 67 5f 73 74 72 75 63 74 28 61 6c 69 73 74 2c  rg_struct(alist,
6170: 20 4a 29 3b 0a 20 20 72 2e 6c 31 20 3d 20 61 2e   J);.  r.l1 = a.
6180: 6c 31 2b 63 2e 6c 31 3b 20 72 2e 6c 32 20 3d 20  l1+c.l1; r.l2 = 
6190: 61 2e 6c 32 2b 62 2b 63 2e 6c 32 3b 0a 20 20 66  a.l2+b+c.l2;.  f
61a0: 70 72 69 6e 74 66 28 6f 75 74 2c 22 4a 20 66 28  printf(out,"J f(
61b0: 4a 2c 69 6e 74 2c 4a 29 3a 28 7b 25 6c 64 2c 25  J,int,J):({%ld,%
61c0: 6c 64 7d 2c 25 64 2c 7b 25 6c 64 2c 25 6c 64 7d  ld},%d,{%ld,%ld}
61d0: 29 22 2c 61 2e 6c 31 2c 61 2e 6c 32 2c 62 2c 63  )",a.l1,a.l2,b,c
61e0: 2e 6c 31 2c 63 2e 6c 32 29 3b 0a 20 20 66 66 6c  .l1,c.l2);.  ffl
61f0: 75 73 68 28 6f 75 74 29 3b 0a 20 20 76 61 5f 72  ush(out);.  va_r
6200: 65 74 75 72 6e 5f 73 74 72 75 63 74 28 61 6c 69  eturn_struct(ali
6210: 73 74 2c 20 4a 2c 20 72 29 3b 0a 7d 7d 0a 23 69  st, J, r);.}}.#i
6220: 66 6e 64 65 66 20 53 4b 49 50 5f 45 58 54 52 41  fndef SKIP_EXTRA
6230: 5f 53 54 52 55 43 54 53 0a 76 6f 69 64 20 54 5f  _STRUCTS.void T_
6240: 54 63 54 5f 73 69 6d 75 6c 61 74 6f 72 20 5f 50  TcT_simulator _P
6250: 28 28 64 61 74 61 2c 61 6c 69 73 74 29 2c 20 76  ((data,alist), v
6260: 6f 69 64 2a 20 64 61 74 61 20 5f 20 76 61 5f 61  oid* data _ va_a
6270: 6c 69 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20  list alist).{.  
6280: 69 66 20 28 64 61 74 61 20 21 3d 20 28 76 6f 69  if (data != (voi
6290: 64 2a 29 26 54 5f 54 63 54 29 20 7b 20 66 70 72  d*)&T_TcT) { fpr
62a0: 69 6e 74 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20  intf(out,"wrong 
62b0: 64 61 74 61 20 66 6f 72 20 54 5f 54 63 54 5c 6e  data for T_TcT\n
62c0: 22 29 3b 20 65 78 69 74 28 31 29 3b 20 7d 0a 20  "); exit(1); }. 
62d0: 7b 54 20 61 3b 0a 20 20 63 68 61 72 20 62 3b 0a  {T a;.  char b;.
62e0: 20 20 54 20 63 3b 0a 20 20 54 20 72 3b 0a 20 20    T c;.  T r;.  
62f0: 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74 28  va_start_struct(
6300: 61 6c 69 73 74 2c 20 54 2c 20 31 29 3b 0a 20 20  alist, T, 1);.  
6310: 61 20 3d 20 76 61 5f 61 72 67 5f 73 74 72 75 63  a = va_arg_struc
6320: 74 28 61 6c 69 73 74 2c 20 54 29 3b 0a 20 20 62  t(alist, T);.  b
6330: 20 3d 20 76 61 5f 61 72 67 5f 63 68 61 72 28 61   = va_arg_char(a
6340: 6c 69 73 74 29 3b 0a 20 20 63 20 3d 20 76 61 5f  list);.  c = va_
6350: 61 72 67 5f 73 74 72 75 63 74 28 61 6c 69 73 74  arg_struct(alist
6360: 2c 20 54 29 3b 0a 20 20 72 2e 63 5b 30 5d 3d 27  , T);.  r.c[0]='
6370: 62 27 3b 20 72 2e 63 5b 31 5d 3d 63 2e 63 5b 31  b'; r.c[1]=c.c[1
6380: 5d 3b 20 72 2e 63 5b 32 5d 3d 63 2e 63 5b 32 5d  ]; r.c[2]=c.c[2]
6390: 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c  ;.  fprintf(out,
63a0: 22 54 20 66 28 54 2c 63 68 61 72 2c 54 29 3a 28  "T f(T,char,T):(
63b0: 7b 5c 22 25 63 25 63 25 63 5c 22 7d 2c 27 25 63  {\"%c%c%c\"},'%c
63c0: 27 2c 7b 5c 22 25 63 25 63 25 63 5c 22 7d 29 22  ',{\"%c%c%c\"})"
63d0: 2c 61 2e 63 5b 30 5d 2c 61 2e 63 5b 31 5d 2c 61  ,a.c[0],a.c[1],a
63e0: 2e 63 5b 32 5d 2c 62 2c 63 2e 63 5b 30 5d 2c 63  .c[2],b,c.c[0],c
63f0: 2e 63 5b 31 5d 2c 63 2e 63 5b 32 5d 29 3b 0a 20  .c[1],c.c[2]);. 
6400: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20   fflush(out);.  
6410: 76 61 5f 72 65 74 75 72 6e 5f 73 74 72 75 63 74  va_return_struct
6420: 28 61 6c 69 73 74 2c 20 54 2c 20 72 29 3b 0a 7d  (alist, T, r);.}
6430: 7d 0a 76 6f 69 64 20 58 5f 42 63 64 42 5f 73 69  }.void X_BcdB_si
6440: 6d 75 6c 61 74 6f 72 20 5f 50 28 28 64 61 74 61  mulator _P((data
6450: 2c 61 6c 69 73 74 29 2c 20 76 6f 69 64 2a 20 64  ,alist), void* d
6460: 61 74 61 20 5f 20 76 61 5f 61 6c 69 73 74 20 61  ata _ va_alist a
6470: 6c 69 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 61  list).{.  if (da
6480: 74 61 20 21 3d 20 28 76 6f 69 64 2a 29 26 58 5f  ta != (void*)&X_
6490: 42 63 64 42 29 20 7b 20 66 70 72 69 6e 74 66 28  BcdB) { fprintf(
64a0: 6f 75 74 2c 22 77 72 6f 6e 67 20 64 61 74 61 20  out,"wrong data 
64b0: 66 6f 72 20 58 5f 42 63 64 42 5c 6e 22 29 3b 20  for X_BcdB\n"); 
64c0: 65 78 69 74 28 31 29 3b 20 7d 0a 20 7b 42 20 61  exit(1); }. {B a
64d0: 3b 0a 20 20 63 68 61 72 20 62 3b 0a 20 20 64 6f  ;.  char b;.  do
64e0: 75 62 6c 65 20 63 3b 0a 20 20 42 20 64 3b 0a 20  uble c;.  B d;. 
64f0: 20 73 74 61 74 69 63 20 58 20 78 72 3d 7b 22 72   static X xr={"r
6500: 65 74 75 72 6e 20 76 61 6c 22 2c 27 52 27 7d 3b  eturn val",'R'};
6510: 0a 20 20 58 20 72 3b 0a 20 20 76 61 5f 73 74 61  .  X r;.  va_sta
6520: 72 74 5f 73 74 72 75 63 74 28 61 6c 69 73 74 2c  rt_struct(alist,
6530: 20 58 2c 20 30 29 3b 0a 20 20 61 20 3d 20 76 61   X, 0);.  a = va
6540: 5f 61 72 67 5f 73 74 72 75 63 74 28 61 6c 69 73  _arg_struct(alis
6550: 74 2c 20 42 29 3b 0a 20 20 62 20 3d 20 76 61 5f  t, B);.  b = va_
6560: 61 72 67 5f 63 68 61 72 28 61 6c 69 73 74 29 3b  arg_char(alist);
6570: 0a 20 20 63 20 3d 20 76 61 5f 61 72 67 5f 64 6f  .  c = va_arg_do
6580: 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 64  uble(alist);.  d
6590: 20 3d 20 76 61 5f 61 72 67 5f 73 74 72 75 63 74   = va_arg_struct
65a0: 28 61 6c 69 73 74 2c 20 42 29 3b 0a 20 20 72 20  (alist, B);.  r 
65b0: 3d 20 78 72 3b 0a 20 20 72 2e 63 31 20 3d 20 62  = xr;.  r.c1 = b
65c0: 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c  ;.  fprintf(out,
65d0: 22 58 20 66 28 42 2c 63 68 61 72 2c 64 6f 75 62  "X f(B,char,doub
65e0: 6c 65 2c 42 29 3a 28 7b 25 67 2c 7b 25 64 2c 25  le,B):({%g,{%d,%
65f0: 64 2c 25 64 7d 7d 2c 27 25 63 27 2c 25 67 2c 7b  d,%d}},'%c',%g,{
6600: 25 67 2c 7b 25 64 2c 25 64 2c 25 64 7d 7d 29 22  %g,{%d,%d,%d}})"
6610: 2c 0a 20 20 20 20 20 20 20 20 20 20 61 2e 64 2c  ,.          a.d,
6620: 61 2e 69 5b 30 5d 2c 61 2e 69 5b 31 5d 2c 61 2e  a.i[0],a.i[1],a.
6630: 69 5b 32 5d 2c 62 2c 63 2c 64 2e 64 2c 64 2e 69  i[2],b,c,d.d,d.i
6640: 5b 30 5d 2c 64 2e 69 5b 31 5d 2c 64 2e 69 5b 32  [0],d.i[1],d.i[2
6650: 5d 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74  ]);.  fflush(out
6660: 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f 73  );.  va_return_s
6670: 74 72 75 63 74 28 61 6c 69 73 74 2c 20 58 2c 20  truct(alist, X, 
6680: 72 29 3b 0a 7d 7d 0a 23 65 6e 64 69 66 0a 23 65  r);.}}.#endif.#e
6690: 6e 64 69 66 0a 0a 2f 2a 0a 20 2a 20 54 68 65 20  ndif../*. * The 
66a0: 77 61 79 20 77 65 20 72 75 6e 20 74 68 65 73 65  way we run these
66b0: 20 74 65 73 74 73 20 2d 20 66 69 72 73 74 20 63   tests - first c
66c0: 61 6c 6c 20 74 68 65 20 66 75 6e 63 74 69 6f 6e  all the function
66d0: 20 64 69 72 65 63 74 6c 79 2c 20 74 68 65 6e 0a   directly, then.
66e0: 20 2a 20 74 68 72 6f 75 67 68 20 76 61 63 61 6c   * through vacal
66f0: 6c 28 29 20 2d 20 74 68 65 72 65 20 69 73 20 74  l() - there is t
6700: 68 65 20 64 61 6e 67 65 72 20 74 68 61 74 20 61  he danger that a
6710: 72 67 75 6d 65 6e 74 73 20 6f 72 20 72 65 73 75  rguments or resu
6720: 6c 74 73 20 73 65 65 6d 0a 20 2a 20 74 6f 20 62  lts seem. * to b
6730: 65 20 70 61 73 73 65 64 20 63 6f 72 72 65 63 74  e passed correct
6740: 6c 79 2c 20 62 75 74 20 77 68 61 74 20 77 65 20  ly, but what we 
6750: 61 72 65 20 73 65 65 69 6e 67 20 61 72 65 20 69  are seeing are i
6760: 6e 20 66 61 63 74 20 74 68 65 20 76 65 73 74 69  n fact the vesti
6770: 67 65 73 0a 20 2a 20 28 74 72 61 63 65 73 29 20  ges. * (traces) 
6780: 6f 72 20 74 68 65 20 70 72 65 76 69 6f 75 73 20  or the previous 
6790: 63 61 6c 6c 2e 20 54 68 69 73 20 6d 61 79 20 73  call. This may s
67a0: 65 72 69 6f 75 73 6c 79 20 66 61 6b 65 20 74 68  eriously fake th
67b0: 65 20 74 65 73 74 2e 0a 20 2a 20 41 76 6f 69 64  e test.. * Avoid
67c0: 20 74 68 69 73 20 62 79 20 63 6c 65 61 72 69 6e   this by clearin
67d0: 67 20 74 68 65 20 72 65 67 69 73 74 65 72 73 20  g the registers 
67e0: 62 65 74 77 65 65 6e 20 74 68 65 20 66 69 72 73  between the firs
67f0: 74 20 61 6e 64 20 74 68 65 20 73 65 63 6f 6e 64  t and the second
6800: 20 63 61 6c 6c 2e 0a 20 2a 2f 0a 6c 6f 6e 67 20   call.. */.long 
6810: 63 6c 65 61 72 5f 74 72 61 63 65 73 5f 69 20 5f  clear_traces_i _
6820: 50 28 28 61 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67  P((a,b,c,d,e,f,g
6830: 2c 68 2c 69 2c 6a 2c 6b 2c 6c 2c 6d 2c 6e 2c 6f  ,h,i,j,k,l,m,n,o
6840: 2c 70 29 2c 0a 20 20 6c 6f 6e 67 20 61 20 5f 20  ,p),.  long a _ 
6850: 6c 6f 6e 67 20 62 20 5f 20 6c 6f 6e 67 20 63 20  long b _ long c 
6860: 5f 20 6c 6f 6e 67 20 64 20 5f 20 6c 6f 6e 67 20  _ long d _ long 
6870: 65 20 5f 20 6c 6f 6e 67 20 66 20 5f 20 6c 6f 6e  e _ long f _ lon
6880: 67 20 67 20 5f 20 6c 6f 6e 67 20 68 20 5f 0a 20  g g _ long h _. 
6890: 20 6c 6f 6e 67 20 69 20 5f 20 6c 6f 6e 67 20 6a   long i _ long j
68a0: 20 5f 20 6c 6f 6e 67 20 6b 20 5f 20 6c 6f 6e 67   _ long k _ long
68b0: 20 6c 20 5f 20 6c 6f 6e 67 20 6d 20 5f 20 6c 6f   l _ long m _ lo
68c0: 6e 67 20 6e 20 5f 20 6c 6f 6e 67 20 6f 20 5f 20  ng n _ long o _ 
68d0: 6c 6f 6e 67 20 70 29 0a 7b 20 72 65 74 75 72 6e  long p).{ return
68e0: 20 30 3b 20 7d 0a 66 6c 6f 61 74 20 63 6c 65 61   0; }.float clea
68f0: 72 5f 74 72 61 63 65 73 5f 66 20 5f 50 28 28 61  r_traces_f _P((a
6900: 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67 2c 68 2c 69  ,b,c,d,e,f,g,h,i
6910: 2c 6a 2c 6b 2c 6c 2c 6d 2c 6e 2c 6f 2c 70 29 2c  ,j,k,l,m,n,o,p),
6920: 0a 20 20 66 6c 6f 61 74 20 61 20 5f 20 66 6c 6f  .  float a _ flo
6930: 61 74 20 62 20 5f 20 66 6c 6f 61 74 20 63 20 5f  at b _ float c _
6940: 20 66 6c 6f 61 74 20 64 20 5f 20 66 6c 6f 61 74   float d _ float
6950: 20 65 20 5f 20 66 6c 6f 61 74 20 66 20 5f 20 66   e _ float f _ f
6960: 6c 6f 61 74 20 67 20 5f 0a 20 20 66 6c 6f 61 74  loat g _.  float
6970: 20 68 20 5f 20 66 6c 6f 61 74 20 69 20 5f 20 66   h _ float i _ f
6980: 6c 6f 61 74 20 6a 20 5f 20 66 6c 6f 61 74 20 6b  loat j _ float k
6990: 20 5f 20 66 6c 6f 61 74 20 6c 20 5f 20 66 6c 6f   _ float l _ flo
69a0: 61 74 20 6d 20 5f 20 66 6c 6f 61 74 20 6e 20 5f  at m _ float n _
69b0: 0a 20 20 66 6c 6f 61 74 20 6f 20 5f 20 66 6c 6f  .  float o _ flo
69c0: 61 74 20 70 29 0a 7b 20 72 65 74 75 72 6e 20 30  at p).{ return 0
69d0: 2e 30 3b 20 7d 0a 64 6f 75 62 6c 65 20 63 6c 65  .0; }.double cle
69e0: 61 72 5f 74 72 61 63 65 73 5f 64 20 5f 50 28 28  ar_traces_d _P((
69f0: 61 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67 2c 68 2c  a,b,c,d,e,f,g,h,
6a00: 69 2c 6a 2c 6b 2c 6c 2c 6d 2c 6e 2c 6f 2c 70 29  i,j,k,l,m,n,o,p)
6a10: 2c 0a 20 20 64 6f 75 62 6c 65 20 61 20 5f 20 64  ,.  double a _ d
6a20: 6f 75 62 6c 65 20 62 20 5f 20 64 6f 75 62 6c 65  ouble b _ double
6a30: 20 63 20 5f 20 64 6f 75 62 6c 65 20 64 20 5f 20   c _ double d _ 
6a40: 64 6f 75 62 6c 65 20 65 20 5f 20 64 6f 75 62 6c  double e _ doubl
6a50: 65 20 66 20 5f 20 64 6f 75 62 6c 65 20 67 20 5f  e f _ double g _
6a60: 0a 20 20 64 6f 75 62 6c 65 20 68 20 5f 20 64 6f  .  double h _ do
6a70: 75 62 6c 65 20 69 20 5f 20 64 6f 75 62 6c 65 20  uble i _ double 
6a80: 6a 20 5f 20 64 6f 75 62 6c 65 20 6b 20 5f 20 64  j _ double k _ d
6a90: 6f 75 62 6c 65 20 6c 20 5f 20 64 6f 75 62 6c 65  ouble l _ double
6aa0: 20 6d 20 5f 20 64 6f 75 62 6c 65 20 6e 20 5f 0a   m _ double n _.
6ab0: 20 20 64 6f 75 62 6c 65 20 6f 20 5f 20 64 6f 75    double o _ dou
6ac0: 62 6c 65 20 70 29 0a 7b 20 72 65 74 75 72 6e 20  ble p).{ return 
6ad0: 30 2e 30 3b 20 7d 0a 4a 20 63 6c 65 61 72 5f 74  0.0; }.J clear_t
6ae0: 72 61 63 65 73 5f 4a 20 28 29 0a 7b 20 4a 20 6a  races_J ().{ J j
6af0: 3b 20 6a 2e 6c 31 20 3d 20 6a 2e 6c 32 20 3d 20  ; j.l1 = j.l2 = 
6b00: 30 3b 20 72 65 74 75 72 6e 20 6a 3b 20 7d 0a 76  0; return j; }.v
6b10: 6f 69 64 20 63 6c 65 61 72 5f 74 72 61 63 65 73  oid clear_traces
6b20: 28 29 0a 7b 20 63 6c 65 61 72 5f 74 72 61 63 65  ().{ clear_trace
6b30: 73 5f 69 28 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c  s_i(0,0,0,0,0,0,
6b40: 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c  0,0,0,0,0,0,0,0,
6b50: 30 2c 30 29 3b 0a 20 20 63 6c 65 61 72 5f 74 72  0,0);.  clear_tr
6b60: 61 63 65 73 5f 66 28 30 2e 30 2c 30 2e 30 2c 30  aces_f(0.0,0.0,0
6b70: 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30  .0,0.0,0.0,0.0,0
6b80: 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30  .0,0.0,0.0,0.0,0
6b90: 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30  .0,0.0,0.0,0.0,0
6ba0: 2e 30 2c 30 2e 30 29 3b 0a 20 20 63 6c 65 61 72  .0,0.0);.  clear
6bb0: 5f 74 72 61 63 65 73 5f 64 28 30 2e 30 2c 30 2e  _traces_d(0.0,0.
6bc0: 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e  0,0.0,0.0,0.0,0.
6bd0: 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e  0,0.0,0.0,0.0,0.
6be0: 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e  0,0.0,0.0,0.0,0.
6bf0: 30 2c 30 2e 30 2c 30 2e 30 29 3b 0a 20 20 63 6c  0,0.0,0.0);.  cl
6c00: 65 61 72 5f 74 72 61 63 65 73 5f 4a 28 29 3b 0a  ear_traces_J();.
6c10: 7d 0a 0a 69 6e 74 20 6d 61 69 6e 20 28 29 0a 7b  }..int main ().{
6c20: 0a 20 20 5f 5f 54 52 5f 66 75 6e 63 74 69 6f 6e  .  __TR_function
6c30: 20 63 61 6c 6c 62 61 63 6b 3b 0a 0a 20 20 6f 75   callback;..  ou
6c40: 74 20 3d 20 73 74 64 6f 75 74 3b 0a 0a 20 20 2f  t = stdout;..  /
6c50: 2a 20 76 6f 69 64 20 74 65 73 74 73 20 2a 2f 0a  * void tests */.
6c60: 20 20 76 5f 76 28 29 3b 0a 20 20 63 6c 65 61 72    v_v();.  clear
6c70: 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 63 61 6c  _traces();.  cal
6c80: 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61  lback = alloc_ca
6c90: 6c 6c 62 61 63 6b 28 26 76 5f 76 5f 73 69 6d 75  llback(&v_v_simu
6ca0: 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 26 76 5f  lator,(void*)&v_
6cb0: 76 29 3b 0a 20 20 28 46 54 59 50 45 28 76 6f 69  v);.  (FTYPE(voi
6cc0: 64 2c 28 76 6f 69 64 29 29 20 63 61 6c 6c 62 61  d,(void)) callba
6cd0: 63 6b 29 20 28 29 3b 0a 0a 20 20 2f 2a 20 69 6e  ck) ();..  /* in
6ce0: 74 20 74 65 73 74 73 20 2a 2f 0a 20 20 7b 20 69  t tests */.  { i
6cf0: 6e 74 20 69 72 3b 0a 0a 20 20 20 20 69 72 20 3d  nt ir;..    ir =
6d00: 20 69 5f 76 28 29 3b 0a 20 20 20 20 66 70 72 69   i_v();.    fpri
6d10: 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 64 5c 6e 22  ntf(out,"->%d\n"
6d20: 2c 69 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68  ,ir);.    fflush
6d30: 28 6f 75 74 29 3b 0a 20 20 20 20 69 72 20 3d 20  (out);.    ir = 
6d40: 30 3b 20 63 6c 65 61 72 5f 74 72 61 63 65 73 28  0; clear_traces(
6d50: 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20  );.    callback 
6d60: 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b  = alloc_callback
6d70: 28 26 69 5f 76 5f 73 69 6d 75 6c 61 74 6f 72 2c  (&i_v_simulator,
6d80: 28 76 6f 69 64 2a 29 26 69 5f 76 29 3b 0a 20 20  (void*)&i_v);.  
6d90: 20 20 69 72 20 3d 20 28 46 54 59 50 45 28 69 6e    ir = (FTYPE(in
6da0: 74 2c 28 76 6f 69 64 29 29 20 63 61 6c 6c 62 61  t,(void)) callba
6db0: 63 6b 29 20 28 29 3b 0a 20 20 20 20 66 70 72 69  ck) ();.    fpri
6dc0: 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 64 5c 6e 22  ntf(out,"->%d\n"
6dd0: 2c 69 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68  ,ir);.    fflush
6de0: 28 6f 75 74 29 3b 0a 0a 20 20 20 20 69 72 20 3d  (out);..    ir =
6df0: 20 69 5f 69 28 69 31 29 3b 0a 20 20 20 20 66 70   i_i(i1);.    fp
6e00: 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 64 5c  rintf(out,"->%d\
6e10: 6e 22 2c 69 72 29 3b 0a 20 20 20 20 66 66 6c 75  n",ir);.    fflu
6e20: 73 68 28 6f 75 74 29 3b 0a 20 20 20 20 69 72 20  sh(out);.    ir 
6e30: 3d 20 30 3b 20 63 6c 65 61 72 5f 74 72 61 63 65  = 0; clear_trace
6e40: 73 28 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63  s();.    callbac
6e50: 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61  k = alloc_callba
6e60: 63 6b 28 26 69 5f 69 5f 73 69 6d 75 6c 61 74 6f  ck(&i_i_simulato
6e70: 72 2c 28 76 6f 69 64 2a 29 26 69 5f 69 29 3b 0a  r,(void*)&i_i);.
6e80: 20 20 20 20 69 72 20 3d 20 28 46 54 59 50 45 28      ir = (FTYPE(
6e90: 69 6e 74 2c 28 69 6e 74 29 29 20 63 61 6c 6c 62  int,(int)) callb
6ea0: 61 63 6b 29 20 28 69 31 29 3b 0a 20 20 20 20 66  ack) (i1);.    f
6eb0: 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 64  printf(out,"->%d
6ec0: 5c 6e 22 2c 69 72 29 3b 0a 20 20 20 20 66 66 6c  \n",ir);.    ffl
6ed0: 75 73 68 28 6f 75 74 29 3b 0a 0a 20 20 20 20 69  ush(out);..    i
6ee0: 72 20 3d 20 69 5f 69 32 28 69 31 2c 69 32 29 3b  r = i_i2(i1,i2);
6ef0: 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74  .    fprintf(out
6f00: 2c 22 2d 3e 25 64 5c 6e 22 2c 69 72 29 3b 0a 20  ,"->%d\n",ir);. 
6f10: 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a     fflush(out);.
6f20: 20 20 20 20 69 72 20 3d 20 30 3b 20 63 6c 65 61      ir = 0; clea
6f30: 72 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 20 20  r_traces();.    
6f40: 63 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63  callback = alloc
6f50: 5f 63 61 6c 6c 62 61 63 6b 28 26 69 5f 69 32 5f  _callback(&i_i2_
6f60: 73 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a  simulator,(void*
6f70: 29 26 69 5f 69 32 29 3b 0a 20 20 20 20 69 72 20  )&i_i2);.    ir 
6f80: 3d 20 28 46 54 59 50 45 28 69 6e 74 2c 28 69 6e  = (FTYPE(int,(in
6f90: 74 2c 69 6e 74 29 29 20 63 61 6c 6c 62 61 63 6b  t,int)) callback
6fa0: 29 20 28 69 31 2c 69 32 29 3b 0a 20 20 20 20 66  ) (i1,i2);.    f
6fb0: 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 64  printf(out,"->%d
6fc0: 5c 6e 22 2c 69 72 29 3b 0a 20 20 20 20 66 66 6c  \n",ir);.    ffl
6fd0: 75 73 68 28 6f 75 74 29 3b 0a 0a 20 20 20 20 69  ush(out);..    i
6fe0: 72 20 3d 20 69 5f 69 34 28 69 31 2c 69 32 2c 69  r = i_i4(i1,i2,i
6ff0: 33 2c 69 34 29 3b 0a 20 20 20 20 66 70 72 69 6e  3,i4);.    fprin
7000: 74 66 28 6f 75 74 2c 22 2d 3e 25 64 5c 6e 22 2c  tf(out,"->%d\n",
7010: 69 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28  ir);.    fflush(
7020: 6f 75 74 29 3b 0a 20 20 20 20 69 72 20 3d 20 30  out);.    ir = 0
7030: 3b 20 63 6c 65 61 72 5f 74 72 61 63 65 73 28 29  ; clear_traces()
7040: 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d  ;.    callback =
7050: 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b 28   alloc_callback(
7060: 26 69 5f 69 34 5f 73 69 6d 75 6c 61 74 6f 72 2c  &i_i4_simulator,
7070: 28 76 6f 69 64 2a 29 26 69 5f 69 34 29 3b 0a 20  (void*)&i_i4);. 
7080: 20 20 20 69 72 20 3d 20 28 46 54 59 50 45 28 69     ir = (FTYPE(i
7090: 6e 74 2c 28 69 6e 74 2c 69 6e 74 2c 69 6e 74 2c  nt,(int,int,int,
70a0: 69 6e 74 29 29 20 63 61 6c 6c 62 61 63 6b 29 20  int)) callback) 
70b0: 28 69 31 2c 69 32 2c 69 33 2c 69 34 29 3b 0a 20  (i1,i2,i3,i4);. 
70c0: 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22     fprintf(out,"
70d0: 2d 3e 25 64 5c 6e 22 2c 69 72 29 3b 0a 20 20 20  ->%d\n",ir);.   
70e0: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 0a 20   fflush(out);.. 
70f0: 20 20 20 69 72 20 3d 20 69 5f 69 38 28 69 31 2c     ir = i_i8(i1,
7100: 69 32 2c 69 33 2c 69 34 2c 69 35 2c 69 36 2c 69  i2,i3,i4,i5,i6,i
7110: 37 2c 69 38 29 3b 0a 20 20 20 20 66 70 72 69 6e  7,i8);.    fprin
7120: 74 66 28 6f 75 74 2c 22 2d 3e 25 64 5c 6e 22 2c  tf(out,"->%d\n",
7130: 69 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28  ir);.    fflush(
7140: 6f 75 74 29 3b 0a 20 20 20 20 69 72 20 3d 20 30  out);.    ir = 0
7150: 3b 20 63 6c 65 61 72 5f 74 72 61 63 65 73 28 29  ; clear_traces()
7160: 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d  ;.    callback =
7170: 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b 28   alloc_callback(
7180: 26 69 5f 69 38 5f 73 69 6d 75 6c 61 74 6f 72 2c  &i_i8_simulator,
7190: 28 76 6f 69 64 2a 29 26 69 5f 69 38 29 3b 0a 20  (void*)&i_i8);. 
71a0: 20 20 20 69 72 20 3d 20 28 46 54 59 50 45 28 69     ir = (FTYPE(i
71b0: 6e 74 2c 28 69 6e 74 2c 69 6e 74 2c 69 6e 74 2c  nt,(int,int,int,
71c0: 69 6e 74 2c 69 6e 74 2c 69 6e 74 2c 69 6e 74 2c  int,int,int,int,
71d0: 69 6e 74 29 29 20 63 61 6c 6c 62 61 63 6b 29 20  int)) callback) 
71e0: 28 69 31 2c 69 32 2c 69 33 2c 69 34 2c 69 35 2c  (i1,i2,i3,i4,i5,
71f0: 69 36 2c 69 37 2c 69 38 29 3b 0a 20 20 20 20 66  i6,i7,i8);.    f
7200: 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 64  printf(out,"->%d
7210: 5c 6e 22 2c 69 72 29 3b 0a 20 20 20 20 66 66 6c  \n",ir);.    ffl
7220: 75 73 68 28 6f 75 74 29 3b 0a 0a 20 20 20 20 69  ush(out);..    i
7230: 72 20 3d 20 69 5f 69 31 36 28 69 31 2c 69 32 2c  r = i_i16(i1,i2,
7240: 69 33 2c 69 34 2c 69 35 2c 69 36 2c 69 37 2c 69  i3,i4,i5,i6,i7,i
7250: 38 2c 69 39 2c 69 31 30 2c 69 31 31 2c 69 31 32  8,i9,i10,i11,i12
7260: 2c 69 31 33 2c 69 31 34 2c 69 31 35 2c 69 31 36  ,i13,i14,i15,i16
7270: 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f  );.    fprintf(o
7280: 75 74 2c 22 2d 3e 25 64 5c 6e 22 2c 69 72 29 3b  ut,"->%d\n",ir);
7290: 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29  .    fflush(out)
72a0: 3b 0a 20 20 20 20 69 72 20 3d 20 30 3b 20 63 6c  ;.    ir = 0; cl
72b0: 65 61 72 5f 74 72 61 63 65 73 28 29 3b 0a 20 20  ear_traces();.  
72c0: 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c    callback = all
72d0: 6f 63 5f 63 61 6c 6c 62 61 63 6b 28 26 69 5f 69  oc_callback(&i_i
72e0: 31 36 5f 73 69 6d 75 6c 61 74 6f 72 2c 28 76 6f  16_simulator,(vo
72f0: 69 64 2a 29 26 69 5f 69 31 36 29 3b 0a 20 20 20  id*)&i_i16);.   
7300: 20 69 72 20 3d 20 28 46 54 59 50 45 28 69 6e 74   ir = (FTYPE(int
7310: 2c 28 69 6e 74 2c 69 6e 74 2c 69 6e 74 2c 69 6e  ,(int,int,int,in
7320: 74 2c 69 6e 74 2c 69 6e 74 2c 69 6e 74 2c 69 6e  t,int,int,int,in
7330: 74 2c 69 6e 74 2c 69 6e 74 2c 69 6e 74 2c 69 6e  t,int,int,int,in
7340: 74 2c 69 6e 74 2c 69 6e 74 2c 69 6e 74 2c 69 6e  t,int,int,int,in
7350: 74 29 29 20 63 61 6c 6c 62 61 63 6b 29 20 28 69  t)) callback) (i
7360: 31 2c 69 32 2c 69 33 2c 69 34 2c 69 35 2c 69 36  1,i2,i3,i4,i5,i6
7370: 2c 69 37 2c 69 38 2c 69 39 2c 69 31 30 2c 69 31  ,i7,i8,i9,i10,i1
7380: 31 2c 69 31 32 2c 69 31 33 2c 69 31 34 2c 69 31  1,i12,i13,i14,i1
7390: 35 2c 69 31 36 29 3b 0a 20 20 20 20 66 70 72 69  5,i16);.    fpri
73a0: 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 64 5c 6e 22  ntf(out,"->%d\n"
73b0: 2c 69 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68  ,ir);.    fflush
73c0: 28 6f 75 74 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a  (out);.  }..  /*
73d0: 20 66 6c 6f 61 74 20 74 65 73 74 73 20 2a 2f 0a   float tests */.
73e0: 20 20 7b 20 66 6c 6f 61 74 20 66 72 3b 0a 0a 20    { float fr;.. 
73f0: 20 20 20 66 72 20 3d 20 66 5f 66 28 66 31 29 3b     fr = f_f(f1);
7400: 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74  .    fprintf(out
7410: 2c 22 2d 3e 25 67 5c 6e 22 2c 66 72 29 3b 0a 20  ,"->%g\n",fr);. 
7420: 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a     fflush(out);.
7430: 20 20 20 20 66 72 20 3d 20 30 2e 30 3b 20 63 6c      fr = 0.0; cl
7440: 65 61 72 5f 74 72 61 63 65 73 28 29 3b 0a 20 20  ear_traces();.  
7450: 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c    callback = all
7460: 6f 63 5f 63 61 6c 6c 62 61 63 6b 28 26 66 5f 66  oc_callback(&f_f
7470: 5f 73 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64  _simulator,(void
7480: 2a 29 26 66 5f 66 29 3b 0a 20 20 20 20 66 72 20  *)&f_f);.    fr 
7490: 3d 20 28 46 54 59 50 45 28 66 6c 6f 61 74 2c 28  = (FTYPE(float,(
74a0: 66 6c 6f 61 74 29 29 20 63 61 6c 6c 62 61 63 6b  float)) callback
74b0: 29 20 28 66 31 29 3b 0a 20 20 20 20 66 70 72 69  ) (f1);.    fpri
74c0: 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22  ntf(out,"->%g\n"
74d0: 2c 66 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68  ,fr);.    fflush
74e0: 28 6f 75 74 29 3b 0a 0a 20 20 20 20 66 72 20 3d  (out);..    fr =
74f0: 20 66 5f 66 32 28 66 31 2c 66 32 29 3b 0a 20 20   f_f2(f1,f2);.  
7500: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d    fprintf(out,"-
7510: 3e 25 67 5c 6e 22 2c 66 72 29 3b 0a 20 20 20 20  >%g\n",fr);.    
7520: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20  fflush(out);.   
7530: 20 66 72 20 3d 20 30 2e 30 3b 20 63 6c 65 61 72   fr = 0.0; clear
7540: 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63  _traces();.    c
7550: 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f  allback = alloc_
7560: 63 61 6c 6c 62 61 63 6b 28 26 66 5f 66 32 5f 73  callback(&f_f2_s
7570: 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29  imulator,(void*)
7580: 26 66 5f 66 32 29 3b 0a 20 20 20 20 66 72 20 3d  &f_f2);.    fr =
7590: 20 28 46 54 59 50 45 28 66 6c 6f 61 74 2c 28 66   (FTYPE(float,(f
75a0: 6c 6f 61 74 2c 66 6c 6f 61 74 29 29 20 63 61 6c  loat,float)) cal
75b0: 6c 62 61 63 6b 29 20 28 66 31 2c 66 32 29 3b 0a  lback) (f1,f2);.
75c0: 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c      fprintf(out,
75d0: 22 2d 3e 25 67 5c 6e 22 2c 66 72 29 3b 0a 20 20  "->%g\n",fr);.  
75e0: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 0a    fflush(out);..
75f0: 20 20 20 20 66 72 20 3d 20 66 5f 66 34 28 66 31      fr = f_f4(f1
7600: 2c 66 32 2c 66 33 2c 66 34 29 3b 0a 20 20 20 20  ,f2,f3,f4);.    
7610: 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 25  fprintf(out,"->%
7620: 67 5c 6e 22 2c 66 72 29 3b 0a 20 20 20 20 66 66  g\n",fr);.    ff
7630: 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 20 66  lush(out);.    f
7640: 72 20 3d 20 30 2e 30 3b 20 63 6c 65 61 72 5f 74  r = 0.0; clear_t
7650: 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63 61 6c  races();.    cal
7660: 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61  lback = alloc_ca
7670: 6c 6c 62 61 63 6b 28 26 66 5f 66 34 5f 73 69 6d  llback(&f_f4_sim
7680: 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 26 66  ulator,(void*)&f
7690: 5f 66 34 29 3b 0a 20 20 20 20 66 72 20 3d 20 28  _f4);.    fr = (
76a0: 46 54 59 50 45 28 66 6c 6f 61 74 2c 28 66 6c 6f  FTYPE(float,(flo
76b0: 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74 2c 66  at,float,float,f
76c0: 6c 6f 61 74 29 29 20 63 61 6c 6c 62 61 63 6b 29  loat)) callback)
76d0: 20 28 66 31 2c 66 32 2c 66 33 2c 66 34 29 3b 0a   (f1,f2,f3,f4);.
76e0: 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c      fprintf(out,
76f0: 22 2d 3e 25 67 5c 6e 22 2c 66 72 29 3b 0a 20 20  "->%g\n",fr);.  
7700: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 0a    fflush(out);..
7710: 20 20 20 20 66 72 20 3d 20 66 5f 66 38 28 66 31      fr = f_f8(f1
7720: 2c 66 32 2c 66 33 2c 66 34 2c 66 35 2c 66 36 2c  ,f2,f3,f4,f5,f6,
7730: 66 37 2c 66 38 29 3b 0a 20 20 20 20 66 70 72 69  f7,f8);.    fpri
7740: 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22  ntf(out,"->%g\n"
7750: 2c 66 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68  ,fr);.    fflush
7760: 28 6f 75 74 29 3b 0a 20 20 20 20 66 72 20 3d 20  (out);.    fr = 
7770: 30 2e 30 3b 20 63 6c 65 61 72 5f 74 72 61 63 65  0.0; clear_trace
7780: 73 28 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63  s();.    callbac
7790: 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61  k = alloc_callba
77a0: 63 6b 28 26 66 5f 66 38 5f 73 69 6d 75 6c 61 74  ck(&f_f8_simulat
77b0: 6f 72 2c 28 76 6f 69 64 2a 29 26 66 5f 66 38 29  or,(void*)&f_f8)
77c0: 3b 0a 20 20 20 20 66 72 20 3d 20 28 46 54 59 50  ;.    fr = (FTYP
77d0: 45 28 66 6c 6f 61 74 2c 28 66 6c 6f 61 74 2c 66  E(float,(float,f
77e0: 6c 6f 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74  loat,float,float
77f0: 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f  ,float,float,flo
7800: 61 74 2c 66 6c 6f 61 74 29 29 20 63 61 6c 6c 62  at,float)) callb
7810: 61 63 6b 29 20 28 66 31 2c 66 32 2c 66 33 2c 66  ack) (f1,f2,f3,f
7820: 34 2c 66 35 2c 66 36 2c 66 37 2c 66 38 29 3b 0a  4,f5,f6,f7,f8);.
7830: 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c      fprintf(out,
7840: 22 2d 3e 25 67 5c 6e 22 2c 66 72 29 3b 0a 20 20  "->%g\n",fr);.  
7850: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 0a    fflush(out);..
7860: 20 20 20 20 66 72 20 3d 20 66 5f 66 31 36 28 66      fr = f_f16(f
7870: 31 2c 66 32 2c 66 33 2c 66 34 2c 66 35 2c 66 36  1,f2,f3,f4,f5,f6
7880: 2c 66 37 2c 66 38 2c 66 39 2c 66 31 30 2c 66 31  ,f7,f8,f9,f10,f1
7890: 31 2c 66 31 32 2c 66 31 33 2c 66 31 34 2c 66 31  1,f12,f13,f14,f1
78a0: 35 2c 66 31 36 29 3b 0a 20 20 20 20 66 70 72 69  5,f16);.    fpri
78b0: 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22  ntf(out,"->%g\n"
78c0: 2c 66 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68  ,fr);.    fflush
78d0: 28 6f 75 74 29 3b 0a 20 20 20 20 66 72 20 3d 20  (out);.    fr = 
78e0: 30 2e 30 3b 20 63 6c 65 61 72 5f 74 72 61 63 65  0.0; clear_trace
78f0: 73 28 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63  s();.    callbac
7900: 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61  k = alloc_callba
7910: 63 6b 28 26 66 5f 66 31 36 5f 73 69 6d 75 6c 61  ck(&f_f16_simula
7920: 74 6f 72 2c 28 76 6f 69 64 2a 29 26 66 5f 66 31  tor,(void*)&f_f1
7930: 36 29 3b 0a 20 20 20 20 66 72 20 3d 20 28 46 54  6);.    fr = (FT
7940: 59 50 45 28 66 6c 6f 61 74 2c 28 66 6c 6f 61 74  YPE(float,(float
7950: 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f  ,float,float,flo
7960: 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74 2c 66  at,float,float,f
7970: 6c 6f 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74  loat,float,float
7980: 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f  ,float,float,flo
7990: 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74 2c 66  at,float,float,f
79a0: 6c 6f 61 74 2c 66 6c 6f 61 74 29 29 20 63 61 6c  loat,float)) cal
79b0: 6c 62 61 63 6b 29 20 28 66 31 2c 66 32 2c 66 33  lback) (f1,f2,f3
79c0: 2c 66 34 2c 66 35 2c 66 36 2c 66 37 2c 66 38 2c  ,f4,f5,f6,f7,f8,
79d0: 66 39 2c 66 31 30 2c 66 31 31 2c 66 31 32 2c 66  f9,f10,f11,f12,f
79e0: 31 33 2c 66 31 34 2c 66 31 35 2c 66 31 36 29 3b  13,f14,f15,f16);
79f0: 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74  .    fprintf(out
7a00: 2c 22 2d 3e 25 67 5c 6e 22 2c 66 72 29 3b 0a 20  ,"->%g\n",fr);. 
7a10: 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a     fflush(out);.
7a20: 20 20 7d 0a 0a 20 20 2f 2a 20 64 6f 75 62 6c 65    }..  /* double
7a30: 20 74 65 73 74 73 20 2a 2f 0a 20 20 7b 20 64 6f   tests */.  { do
7a40: 75 62 6c 65 20 64 72 3b 0a 0a 20 20 20 20 64 72  uble dr;..    dr
7a50: 20 3d 20 64 5f 64 28 64 31 29 3b 0a 20 20 20 20   = d_d(d1);.    
7a60: 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 25  fprintf(out,"->%
7a70: 67 5c 6e 22 2c 64 72 29 3b 0a 20 20 20 20 66 66  g\n",dr);.    ff
7a80: 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 20 64  lush(out);.    d
7a90: 72 20 3d 20 30 2e 30 3b 20 63 6c 65 61 72 5f 74  r = 0.0; clear_t
7aa0: 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63 61 6c  races();.    cal
7ab0: 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61  lback = alloc_ca
7ac0: 6c 6c 62 61 63 6b 28 26 64 5f 64 5f 73 69 6d 75  llback(&d_d_simu
7ad0: 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 26 64 5f  lator,(void*)&d_
7ae0: 64 29 3b 0a 20 20 20 20 64 72 20 3d 20 28 46 54  d);.    dr = (FT
7af0: 59 50 45 28 64 6f 75 62 6c 65 2c 28 64 6f 75 62  YPE(double,(doub
7b00: 6c 65 29 29 20 63 61 6c 6c 62 61 63 6b 29 20 28  le)) callback) (
7b10: 64 31 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66  d1);.    fprintf
7b20: 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22 2c 64 72  (out,"->%g\n",dr
7b30: 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75  );.    fflush(ou
7b40: 74 29 3b 0a 0a 20 20 20 20 64 72 20 3d 20 64 5f  t);..    dr = d_
7b50: 64 32 28 64 31 2c 64 32 29 3b 0a 20 20 20 20 66  d2(d1,d2);.    f
7b60: 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 67  printf(out,"->%g
7b70: 5c 6e 22 2c 64 72 29 3b 0a 20 20 20 20 66 66 6c  \n",dr);.    ffl
7b80: 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 20 64 72  ush(out);.    dr
7b90: 20 3d 20 30 2e 30 3b 20 63 6c 65 61 72 5f 74 72   = 0.0; clear_tr
7ba0: 61 63 65 73 28 29 3b 0a 20 20 20 20 63 61 6c 6c  aces();.    call
7bb0: 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61 6c  back = alloc_cal
7bc0: 6c 62 61 63 6b 28 26 64 5f 64 32 5f 73 69 6d 75  lback(&d_d2_simu
7bd0: 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 26 64 5f  lator,(void*)&d_
7be0: 64 32 29 3b 0a 20 20 20 20 64 72 20 3d 20 28 46  d2);.    dr = (F
7bf0: 54 59 50 45 28 64 6f 75 62 6c 65 2c 28 64 6f 75  TYPE(double,(dou
7c00: 62 6c 65 2c 64 6f 75 62 6c 65 29 29 20 63 61 6c  ble,double)) cal
7c10: 6c 62 61 63 6b 29 20 28 64 31 2c 64 32 29 3b 0a  lback) (d1,d2);.
7c20: 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c      fprintf(out,
7c30: 22 2d 3e 25 67 5c 6e 22 2c 64 72 29 3b 0a 20 20  "->%g\n",dr);.  
7c40: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 0a    fflush(out);..
7c50: 20 20 20 20 64 72 20 3d 20 64 5f 64 34 28 64 31      dr = d_d4(d1
7c60: 2c 64 32 2c 64 33 2c 64 34 29 3b 0a 20 20 20 20  ,d2,d3,d4);.    
7c70: 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 25  fprintf(out,"->%
7c80: 67 5c 6e 22 2c 64 72 29 3b 0a 20 20 20 20 66 66  g\n",dr);.    ff
7c90: 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 20 64  lush(out);.    d
7ca0: 72 20 3d 20 30 2e 30 3b 20 63 6c 65 61 72 5f 74  r = 0.0; clear_t
7cb0: 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63 61 6c  races();.    cal
7cc0: 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61  lback = alloc_ca
7cd0: 6c 6c 62 61 63 6b 28 26 64 5f 64 34 5f 73 69 6d  llback(&d_d4_sim
7ce0: 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 26 64  ulator,(void*)&d
7cf0: 5f 64 34 29 3b 0a 20 20 20 20 64 72 20 3d 20 28  _d4);.    dr = (
7d00: 46 54 59 50 45 28 64 6f 75 62 6c 65 2c 28 64 6f  FTYPE(double,(do
7d10: 75 62 6c 65 2c 64 6f 75 62 6c 65 2c 64 6f 75 62  uble,double,doub
7d20: 6c 65 2c 64 6f 75 62 6c 65 29 29 20 63 61 6c 6c  le,double)) call
7d30: 62 61 63 6b 29 20 28 64 31 2c 64 32 2c 64 33 2c  back) (d1,d2,d3,
7d40: 64 34 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66  d4);.    fprintf
7d50: 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22 2c 64 72  (out,"->%g\n",dr
7d60: 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75  );.    fflush(ou
7d70: 74 29 3b 0a 0a 20 20 20 20 64 72 20 3d 20 64 5f  t);..    dr = d_
7d80: 64 38 28 64 31 2c 64 32 2c 64 33 2c 64 34 2c 64  d8(d1,d2,d3,d4,d
7d90: 35 2c 64 36 2c 64 37 2c 64 38 29 3b 0a 20 20 20  5,d6,d7,d8);.   
7da0: 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e   fprintf(out,"->
7db0: 25 67 5c 6e 22 2c 64 72 29 3b 0a 20 20 20 20 66  %g\n",dr);.    f
7dc0: 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 20  flush(out);.    
7dd0: 64 72 20 3d 20 30 2e 30 3b 20 63 6c 65 61 72 5f  dr = 0.0; clear_
7de0: 74 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63 61  traces();.    ca
7df0: 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63  llback = alloc_c
7e00: 61 6c 6c 62 61 63 6b 28 26 64 5f 64 38 5f 73 69  allback(&d_d8_si
7e10: 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 26  mulator,(void*)&
7e20: 64 5f 64 38 29 3b 0a 20 20 20 20 64 72 20 3d 20  d_d8);.    dr = 
7e30: 28 46 54 59 50 45 28 64 6f 75 62 6c 65 2c 28 64  (FTYPE(double,(d
7e40: 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 2c 64 6f 75  ouble,double,dou
7e50: 62 6c 65 2c 64 6f 75 62 6c 65 2c 64 6f 75 62 6c  ble,double,doubl
7e60: 65 2c 64 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 2c  e,double,double,
7e70: 64 6f 75 62 6c 65 29 29 20 63 61 6c 6c 62 61 63  double)) callbac
7e80: 6b 29 20 28 64 31 2c 64 32 2c 64 33 2c 64 34 2c  k) (d1,d2,d3,d4,
7e90: 64 35 2c 64 36 2c 64 37 2c 64 38 29 3b 0a 20 20  d5,d6,d7,d8);.  
7ea0: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d    fprintf(out,"-
7eb0: 3e 25 67 5c 6e 22 2c 64 72 29 3b 0a 20 20 20 20  >%g\n",dr);.    
7ec0: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 0a 20 20  fflush(out);..  
7ed0: 20 20 64 72 20 3d 20 64 5f 64 31 36 28 64 31 2c    dr = d_d16(d1,
7ee0: 64 32 2c 64 33 2c 64 34 2c 64 35 2c 64 36 2c 64  d2,d3,d4,d5,d6,d
7ef0: 37 2c 64 38 2c 64 39 2c 64 31 30 2c 64 31 31 2c  7,d8,d9,d10,d11,
7f00: 64 31 32 2c 64 31 33 2c 64 31 34 2c 64 31 35 2c  d12,d13,d14,d15,
7f10: 64 31 36 29 3b 0a 20 20 20 20 66 70 72 69 6e 74  d16);.    fprint
7f20: 66 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22 2c 64  f(out,"->%g\n",d
7f30: 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f  r);.    fflush(o
7f40: 75 74 29 3b 0a 20 20 20 20 64 72 20 3d 20 30 2e  ut);.    dr = 0.
7f50: 30 3b 20 63 6c 65 61 72 5f 74 72 61 63 65 73 28  0; clear_traces(
7f60: 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20  );.    callback 
7f70: 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b  = alloc_callback
7f80: 28 26 64 5f 64 31 36 5f 73 69 6d 75 6c 61 74 6f  (&d_d16_simulato
7f90: 72 2c 28 76 6f 69 64 2a 29 26 64 5f 64 31 36 29  r,(void*)&d_d16)
7fa0: 3b 0a 20 20 20 20 64 72 20 3d 20 28 46 54 59 50  ;.    dr = (FTYP
7fb0: 45 28 64 6f 75 62 6c 65 2c 28 64 6f 75 62 6c 65  E(double,(double
7fc0: 2c 64 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 2c 64  ,double,double,d
7fd0: 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 2c 64 6f 75  ouble,double,dou
7fe0: 62 6c 65 2c 64 6f 75 62 6c 65 2c 64 6f 75 62 6c  ble,double,doubl
7ff0: 65 2c 64 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 2c  e,double,double,
8000: 64 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 2c 64 6f  double,double,do
8010: 75 62 6c 65 2c 64 6f 75 62 6c 65 2c 64 6f 75 62  uble,double,doub
8020: 6c 65 2c 64 6f 75 62 6c 65 29 29 20 63 61 6c 6c  le,double)) call
8030: 62 61 63 6b 29 20 28 64 31 2c 64 32 2c 64 33 2c  back) (d1,d2,d3,
8040: 64 34 2c 64 35 2c 64 36 2c 64 37 2c 64 38 2c 64  d4,d5,d6,d7,d8,d
8050: 39 2c 64 31 30 2c 64 31 31 2c 64 31 32 2c 64 31  9,d10,d11,d12,d1
8060: 33 2c 64 31 34 2c 64 31 35 2c 64 31 36 29 3b 0a  3,d14,d15,d16);.
8070: 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c      fprintf(out,
8080: 22 2d 3e 25 67 5c 6e 22 2c 64 72 29 3b 0a 20 20  "->%g\n",dr);.  
8090: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20    fflush(out);. 
80a0: 20 7d 0a 0a 20 20 2f 2a 20 70 6f 69 6e 74 65 72   }..  /* pointer
80b0: 20 74 65 73 74 73 20 2a 2f 0a 20 20 7b 20 76 6f   tests */.  { vo
80c0: 69 64 2a 20 76 70 72 3b 0a 0a 20 20 20 20 76 70  id* vpr;..    vp
80d0: 72 20 3d 20 76 70 5f 76 70 64 70 63 70 73 70 28  r = vp_vpdpcpsp(
80e0: 26 75 63 31 2c 26 64 32 2c 73 74 72 33 2c 26 49  &uc1,&d2,str3,&I
80f0: 34 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28  4);.    fprintf(
8100: 6f 75 74 2c 22 2d 3e 30 78 25 6c 78 5c 6e 22 2c  out,"->0x%lx\n",
8110: 28 6c 6f 6e 67 29 76 70 72 29 3b 0a 20 20 20 20  (long)vpr);.    
8120: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20  fflush(out);.   
8130: 20 76 70 72 20 3d 20 30 3b 20 63 6c 65 61 72 5f   vpr = 0; clear_
8140: 74 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63 61  traces();.    ca
8150: 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63  llback = alloc_c
8160: 61 6c 6c 62 61 63 6b 28 26 76 70 5f 76 70 64 70  allback(&vp_vpdp
8170: 63 70 73 70 5f 73 69 6d 75 6c 61 74 6f 72 2c 28  cpsp_simulator,(
8180: 76 6f 69 64 2a 29 26 76 70 5f 76 70 64 70 63 70  void*)&vp_vpdpcp
8190: 73 70 29 3b 0a 20 20 20 20 76 70 72 20 3d 20 28  sp);.    vpr = (
81a0: 46 54 59 50 45 28 76 6f 69 64 2a 2c 28 76 6f 69  FTYPE(void*,(voi
81b0: 64 2a 2c 64 6f 75 62 6c 65 2a 2c 63 68 61 72 2a  d*,double*,char*
81c0: 2c 49 6e 74 2a 29 29 20 63 61 6c 6c 62 61 63 6b  ,Int*)) callback
81d0: 29 20 28 26 75 63 31 2c 26 64 32 2c 73 74 72 33  ) (&uc1,&d2,str3
81e0: 2c 26 49 34 29 3b 0a 20 20 20 20 66 70 72 69 6e  ,&I4);.    fprin
81f0: 74 66 28 6f 75 74 2c 22 2d 3e 30 78 25 6c 78 5c  tf(out,"->0x%lx\
8200: 6e 22 2c 28 6c 6f 6e 67 29 76 70 72 29 3b 0a 20  n",(long)vpr);. 
8210: 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a     fflush(out);.
8220: 20 20 7d 0a 0a 20 20 2f 2a 20 6d 69 78 65 64 20    }..  /* mixed 
8230: 6e 75 6d 62 65 72 20 74 65 73 74 73 20 2a 2f 0a  number tests */.
8240: 20 20 7b 20 75 63 68 61 72 20 75 63 72 3b 0a 20    { uchar ucr;. 
8250: 20 20 20 75 73 68 6f 72 74 20 75 73 72 3b 0a 20     ushort usr;. 
8260: 20 20 20 64 6f 75 62 6c 65 20 64 72 3b 0a 23 69     double dr;.#i
8270: 66 64 65 66 20 48 41 56 45 5f 4c 4f 4e 47 4c 4f  fdef HAVE_LONGLO
8280: 4e 47 0a 20 20 20 20 6c 6f 6e 67 20 6c 6f 6e 67  NG.    long long
8290: 20 6c 6c 72 3b 0a 23 65 6e 64 69 66 0a 0a 20 20   llr;.#endif..  
82a0: 20 20 75 63 72 20 3d 20 75 63 5f 75 63 73 69 6c    ucr = uc_ucsil
82b0: 28 75 63 31 2c 75 73 32 2c 75 69 33 2c 75 6c 34  (uc1,us2,ui3,ul4
82c0: 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f  );.    fprintf(o
82d0: 75 74 2c 22 2d 3e 25 75 5c 6e 22 2c 75 63 72 29  ut,"->%u\n",ucr)
82e0: 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 74  ;.    fflush(out
82f0: 29 3b 0a 20 20 20 20 75 63 72 20 3d 20 30 3b 20  );.    ucr = 0; 
8300: 63 6c 65 61 72 5f 74 72 61 63 65 73 28 29 3b 0a  clear_traces();.
8310: 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20 61      callback = a
8320: 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b 28 26 75  lloc_callback(&u
8330: 63 5f 75 63 73 69 6c 5f 73 69 6d 75 6c 61 74 6f  c_ucsil_simulato
8340: 72 2c 28 76 6f 69 64 2a 29 26 75 63 5f 75 63 73  r,(void*)&uc_ucs
8350: 69 6c 29 3b 0a 20 20 20 20 75 63 72 20 3d 20 28  il);.    ucr = (
8360: 46 54 59 50 45 28 75 63 68 61 72 2c 28 75 63 68  FTYPE(uchar,(uch
8370: 61 72 2c 75 73 68 6f 72 74 2c 75 69 6e 74 2c 75  ar,ushort,uint,u
8380: 6c 6f 6e 67 29 29 20 63 61 6c 6c 62 61 63 6b 29  long)) callback)
8390: 20 28 75 63 31 2c 75 73 32 2c 75 69 33 2c 75 6c   (uc1,us2,ui3,ul
83a0: 34 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28  4);.    fprintf(
83b0: 6f 75 74 2c 22 2d 3e 25 75 5c 6e 22 2c 75 63 72  out,"->%u\n",ucr
83c0: 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75  );.    fflush(ou
83d0: 74 29 3b 0a 0a 20 20 20 20 64 72 20 3d 20 64 5f  t);..    dr = d_
83e0: 69 69 64 64 28 69 31 2c 69 32 2c 64 33 2c 64 34  iidd(i1,i2,d3,d4
83f0: 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f  );.    fprintf(o
8400: 75 74 2c 22 2d 3e 25 67 5c 6e 22 2c 64 72 29 3b  ut,"->%g\n",dr);
8410: 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29  .    fflush(out)
8420: 3b 0a 20 20 20 20 64 72 20 3d 20 30 2e 30 3b 20  ;.    dr = 0.0; 
8430: 63 6c 65 61 72 5f 74 72 61 63 65 73 28 29 3b 0a  clear_traces();.
8440: 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20 61      callback = a
8450: 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b 28 26 64  lloc_callback(&d
8460: 5f 69 69 64 64 5f 73 69 6d 75 6c 61 74 6f 72 2c  _iidd_simulator,
8470: 28 76 6f 69 64 2a 29 26 64 5f 69 69 64 64 29 3b  (void*)&d_iidd);
8480: 0a 20 20 20 20 64 72 20 3d 20 28 46 54 59 50 45  .    dr = (FTYPE
8490: 28 64 6f 75 62 6c 65 2c 28 69 6e 74 2c 69 6e 74  (double,(int,int
84a0: 2c 64 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 29 29  ,double,double))
84b0: 20 63 61 6c 6c 62 61 63 6b 29 20 28 69 31 2c 69   callback) (i1,i
84c0: 32 2c 64 33 2c 64 34 29 3b 0a 20 20 20 20 66 70  2,d3,d4);.    fp
84d0: 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 67 5c  rintf(out,"->%g\
84e0: 6e 22 2c 64 72 29 3b 0a 20 20 20 20 66 66 6c 75  n",dr);.    fflu
84f0: 73 68 28 6f 75 74 29 3b 0a 0a 20 20 20 20 64 72  sh(out);..    dr
8500: 20 3d 20 64 5f 69 64 69 64 28 69 31 2c 64 32 2c   = d_idid(i1,d2,
8510: 69 33 2c 64 34 29 3b 0a 20 20 20 20 66 70 72 69  i3,d4);.    fpri
8520: 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22  ntf(out,"->%g\n"
8530: 2c 64 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68  ,dr);.    fflush
8540: 28 6f 75 74 29 3b 0a 20 20 20 20 64 72 20 3d 20  (out);.    dr = 
8550: 30 2e 30 3b 20 63 6c 65 61 72 5f 74 72 61 63 65  0.0; clear_trace
8560: 73 28 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63  s();.    callbac
8570: 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61  k = alloc_callba
8580: 63 6b 28 26 64 5f 69 64 69 64 5f 73 69 6d 75 6c  ck(&d_idid_simul
8590: 61 74 6f 72 2c 28 76 6f 69 64 2a 29 26 64 5f 69  ator,(void*)&d_i
85a0: 64 69 64 29 3b 0a 20 20 20 20 64 72 20 3d 20 28  did);.    dr = (
85b0: 46 54 59 50 45 28 64 6f 75 62 6c 65 2c 28 69 6e  FTYPE(double,(in
85c0: 74 2c 64 6f 75 62 6c 65 2c 69 6e 74 2c 64 6f 75  t,double,int,dou
85d0: 62 6c 65 29 29 20 63 61 6c 6c 62 61 63 6b 29 20  ble)) callback) 
85e0: 28 69 31 2c 64 32 2c 69 33 2c 64 34 29 3b 0a 20  (i1,d2,i3,d4);. 
85f0: 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22     fprintf(out,"
8600: 2d 3e 25 67 5c 6e 22 2c 64 72 29 3b 0a 20 20 20  ->%g\n",dr);.   
8610: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 0a 20   fflush(out);.. 
8620: 20 20 20 75 73 72 20 3d 20 75 73 5f 63 64 63 64     usr = us_cdcd
8630: 28 63 31 2c 64 32 2c 63 33 2c 64 34 29 3b 0a 20  (c1,d2,c3,d4);. 
8640: 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22     fprintf(out,"
8650: 2d 3e 25 75 5c 6e 22 2c 75 73 72 29 3b 0a 20 20  ->%u\n",usr);.  
8660: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20    fflush(out);. 
8670: 20 20 20 75 73 72 20 3d 20 30 3b 20 63 6c 65 61     usr = 0; clea
8680: 72 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 20 20  r_traces();.    
8690: 63 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63  callback = alloc
86a0: 5f 63 61 6c 6c 62 61 63 6b 28 26 75 73 5f 63 64  _callback(&us_cd
86b0: 63 64 5f 73 69 6d 75 6c 61 74 6f 72 2c 28 76 6f  cd_simulator,(vo
86c0: 69 64 2a 29 26 75 73 5f 63 64 63 64 29 3b 0a 20  id*)&us_cdcd);. 
86d0: 20 20 20 75 73 72 20 3d 20 28 46 54 59 50 45 28     usr = (FTYPE(
86e0: 75 73 68 6f 72 74 2c 28 63 68 61 72 2c 64 6f 75  ushort,(char,dou
86f0: 62 6c 65 2c 63 68 61 72 2c 64 6f 75 62 6c 65 29  ble,char,double)
8700: 29 20 63 61 6c 6c 62 61 63 6b 29 20 28 63 31 2c  ) callback) (c1,
8710: 64 32 2c 63 33 2c 64 34 29 3b 0a 20 20 20 20 66  d2,c3,d4);.    f
8720: 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 75  printf(out,"->%u
8730: 5c 6e 22 2c 75 73 72 29 3b 0a 20 20 20 20 66 66  \n",usr);.    ff
8740: 6c 75 73 68 28 6f 75 74 29 3b 0a 0a 23 69 66 64  lush(out);..#ifd
8750: 65 66 20 48 41 56 45 5f 4c 4f 4e 47 4c 4f 4e 47  ef HAVE_LONGLONG
8760: 0a 20 20 20 20 6c 6c 72 20 3d 20 6c 6c 5f 66 6c  .    llr = ll_fl
8770: 6c 69 28 66 31 33 2c 6c 6c 31 2c 69 31 33 29 3b  li(f13,ll1,i13);
8780: 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74  .    fprintf(out
8790: 2c 22 2d 3e 30 78 25 6c 78 25 30 38 6c 78 5c 6e  ,"->0x%lx%08lx\n
87a0: 22 2c 28 6c 6f 6e 67 29 28 6c 6c 72 3e 3e 33 32  ",(long)(llr>>32
87b0: 29 2c 28 6c 6f 6e 67 29 28 6c 6c 72 26 30 78 66  ),(long)(llr&0xf
87c0: 66 66 66 66 66 66 66 29 29 3b 0a 20 20 20 20 66  fffffff));.    f
87d0: 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 20  flush(out);.    
87e0: 6c 6c 72 20 3d 20 30 3b 20 63 6c 65 61 72 5f 74  llr = 0; clear_t
87f0: 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63 61 6c  races();.    cal
8800: 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61  lback = alloc_ca
8810: 6c 6c 62 61 63 6b 28 26 6c 6c 5f 66 6c 6c 69 5f  llback(&ll_flli_
8820: 73 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a  simulator,(void*
8830: 29 26 6c 6c 5f 66 6c 6c 69 29 3b 0a 20 20 20 20  )&ll_flli);.    
8840: 6c 6c 72 20 3d 20 28 46 54 59 50 45 28 6c 6f 6e  llr = (FTYPE(lon
8850: 67 20 6c 6f 6e 67 2c 28 66 6c 6f 61 74 2c 6c 6f  g long,(float,lo
8860: 6e 67 20 6c 6f 6e 67 2c 69 6e 74 29 29 20 63 61  ng long,int)) ca
8870: 6c 6c 62 61 63 6b 29 20 28 66 31 33 2c 6c 6c 31  llback) (f13,ll1
8880: 2c 69 31 33 29 3b 0a 20 20 20 20 66 70 72 69 6e  ,i13);.    fprin
8890: 74 66 28 6f 75 74 2c 22 2d 3e 30 78 25 6c 78 25  tf(out,"->0x%lx%
88a0: 30 38 6c 78 5c 6e 22 2c 28 6c 6f 6e 67 29 28 6c  08lx\n",(long)(l
88b0: 6c 72 3e 3e 33 32 29 2c 28 6c 6f 6e 67 29 28 6c  lr>>32),(long)(l
88c0: 6c 72 26 30 78 66 66 66 66 66 66 66 66 29 29 3b  lr&0xffffffff));
88d0: 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29  .    fflush(out)
88e0: 3b 0a 23 65 6e 64 69 66 0a 20 20 7d 0a 0a 23 69  ;.#endif.  }..#i
88f0: 66 6e 64 65 66 20 53 4b 49 50 5f 53 54 52 55 43  fndef SKIP_STRUC
8900: 54 53 0a 20 20 2f 2a 20 73 74 72 75 63 74 75 72  TS.  /* structur
8910: 65 20 74 65 73 74 73 20 2a 2f 0a 20 20 7b 20 49  e tests */.  { I
8920: 6e 74 20 49 72 3b 0a 20 20 20 20 43 68 61 72 20  nt Ir;.    Char 
8930: 43 72 3b 0a 20 20 20 20 46 6c 6f 61 74 20 46 72  Cr;.    Float Fr
8940: 3b 0a 20 20 20 20 44 6f 75 62 6c 65 20 44 72 3b  ;.    Double Dr;
8950: 0a 20 20 20 20 4a 20 4a 72 3b 0a 20 20 20 20 54  .    J Jr;.    T
8960: 20 54 72 3b 0a 20 20 20 20 58 20 58 72 3b 0a 0a   Tr;.    X Xr;..
8970: 20 20 20 20 49 72 20 3d 20 49 5f 49 49 49 28 49      Ir = I_III(I
8980: 31 2c 49 32 2c 49 33 29 3b 0a 20 20 20 20 66 70  1,I2,I3);.    fp
8990: 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 7b 25 64  rintf(out,"->{%d
89a0: 7d 5c 6e 22 2c 49 72 2e 78 29 3b 0a 20 20 20 20  }\n",Ir.x);.    
89b0: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20  fflush(out);.   
89c0: 20 49 72 2e 78 20 3d 20 30 3b 20 63 6c 65 61 72   Ir.x = 0; clear
89d0: 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63  _traces();.    c
89e0: 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f  allback = alloc_
89f0: 63 61 6c 6c 62 61 63 6b 28 26 49 5f 49 49 49 5f  callback(&I_III_
8a00: 73 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a  simulator,(void*
8a10: 29 26 49 5f 49 49 49 29 3b 0a 20 20 20 20 49 72  )&I_III);.    Ir
8a20: 20 3d 20 28 46 54 59 50 45 28 49 6e 74 2c 28 49   = (FTYPE(Int,(I
8a30: 6e 74 2c 49 6e 74 2c 49 6e 74 29 29 20 63 61 6c  nt,Int,Int)) cal
8a40: 6c 62 61 63 6b 29 20 28 49 31 2c 49 32 2c 49 33  lback) (I1,I2,I3
8a50: 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f  );.    fprintf(o
8a60: 75 74 2c 22 2d 3e 7b 25 64 7d 5c 6e 22 2c 49 72  ut,"->{%d}\n",Ir
8a70: 2e 78 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28  .x);.    fflush(
8a80: 6f 75 74 29 3b 0a 0a 23 69 66 6e 64 65 66 20 53  out);..#ifndef S
8a90: 4b 49 50 5f 45 58 54 52 41 5f 53 54 52 55 43 54  KIP_EXTRA_STRUCT
8aa0: 53 0a 20 20 20 20 43 72 20 3d 20 43 5f 43 64 43  S.    Cr = C_CdC
8ab0: 28 43 31 2c 64 32 2c 43 33 29 3b 0a 20 20 20 20  (C1,d2,C3);.    
8ac0: 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 7b  fprintf(out,"->{
8ad0: 27 25 63 27 7d 5c 6e 22 2c 43 72 2e 78 29 3b 0a  '%c'}\n",Cr.x);.
8ae0: 20 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b      fflush(out);
8af0: 0a 20 20 20 20 43 72 2e 78 20 3d 20 27 5c 30 27  .    Cr.x = '\0'
8b00: 3b 20 63 6c 65 61 72 5f 74 72 61 63 65 73 28 29  ; clear_traces()
8b10: 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d  ;.    callback =
8b20: 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b 28   alloc_callback(
8b30: 26 43 5f 43 64 43 5f 73 69 6d 75 6c 61 74 6f 72  &C_CdC_simulator
8b40: 2c 28 76 6f 69 64 2a 29 26 43 5f 43 64 43 29 3b  ,(void*)&C_CdC);
8b50: 0a 20 20 20 20 43 72 20 3d 20 28 46 54 59 50 45  .    Cr = (FTYPE
8b60: 28 43 68 61 72 2c 28 43 68 61 72 2c 64 6f 75 62  (Char,(Char,doub
8b70: 6c 65 2c 43 68 61 72 29 29 20 63 61 6c 6c 62 61  le,Char)) callba
8b80: 63 6b 29 20 28 43 31 2c 64 32 2c 43 33 29 3b 0a  ck) (C1,d2,C3);.
8b90: 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c      fprintf(out,
8ba0: 22 2d 3e 7b 27 25 63 27 7d 5c 6e 22 2c 43 72 2e  "->{'%c'}\n",Cr.
8bb0: 78 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f  x);.    fflush(o
8bc0: 75 74 29 3b 0a 0a 20 20 20 20 46 72 20 3d 20 46  ut);..    Fr = F
8bd0: 5f 46 66 64 28 46 31 2c 66 32 2c 64 33 29 3b 0a  _Ffd(F1,f2,d3);.
8be0: 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c      fprintf(out,
8bf0: 22 2d 3e 7b 25 67 7d 5c 6e 22 2c 46 72 2e 78 29  "->{%g}\n",Fr.x)
8c00: 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 74  ;.    fflush(out
8c10: 29 3b 0a 20 20 20 20 46 72 2e 78 20 3d 20 30 2e  );.    Fr.x = 0.
8c20: 30 3b 20 63 6c 65 61 72 5f 74 72 61 63 65 73 28  0; clear_traces(
8c30: 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20  );.    callback 
8c40: 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b  = alloc_callback
8c50: 28 26 46 5f 46 66 64 5f 73 69 6d 75 6c 61 74 6f  (&F_Ffd_simulato
8c60: 72 2c 28 76 6f 69 64 2a 29 26 46 5f 46 66 64 29  r,(void*)&F_Ffd)
8c70: 3b 0a 20 20 20 20 46 72 20 3d 20 28 46 54 59 50  ;.    Fr = (FTYP
8c80: 45 28 46 6c 6f 61 74 2c 28 46 6c 6f 61 74 2c 66  E(Float,(Float,f
8c90: 6c 6f 61 74 2c 64 6f 75 62 6c 65 29 29 20 63 61  loat,double)) ca
8ca0: 6c 6c 62 61 63 6b 29 20 28 46 31 2c 66 32 2c 64  llback) (F1,f2,d
8cb0: 33 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28  3);.    fprintf(
8cc0: 6f 75 74 2c 22 2d 3e 7b 25 67 7d 5c 6e 22 2c 46  out,"->{%g}\n",F
8cd0: 72 2e 78 29 3b 0a 20 20 20 20 66 66 6c 75 73 68  r.x);.    fflush
8ce0: 28 6f 75 74 29 3b 0a 0a 20 20 20 20 44 72 20 3d  (out);..    Dr =
8cf0: 20 44 5f 66 44 64 28 66 31 2c 44 32 2c 64 33 29   D_fDd(f1,D2,d3)
8d00: 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75  ;.    fprintf(ou
8d10: 74 2c 22 2d 3e 7b 25 67 7d 5c 6e 22 2c 44 72 2e  t,"->{%g}\n",Dr.
8d20: 78 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f  x);.    fflush(o
8d30: 75 74 29 3b 0a 20 20 20 20 44 72 2e 78 20 3d 20  ut);.    Dr.x = 
8d40: 30 2e 30 3b 20 63 6c 65 61 72 5f 74 72 61 63 65  0.0; clear_trace
8d50: 73 28 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63  s();.    callbac
8d60: 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61  k = alloc_callba
8d70: 63 6b 28 26 44 5f 66 44 64 5f 73 69 6d 75 6c 61  ck(&D_fDd_simula
8d80: 74 6f 72 2c 28 76 6f 69 64 2a 29 26 44 5f 66 44  tor,(void*)&D_fD
8d90: 64 29 3b 0a 20 20 20 20 44 72 20 3d 20 28 46 54  d);.    Dr = (FT
8da0: 59 50 45 28 44 6f 75 62 6c 65 2c 28 66 6c 6f 61  YPE(Double,(floa
8db0: 74 2c 44 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 29  t,Double,double)
8dc0: 29 20 63 61 6c 6c 62 61 63 6b 29 20 28 66 31 2c  ) callback) (f1,
8dd0: 44 32 2c 64 33 29 3b 0a 20 20 20 20 66 70 72 69  D2,d3);.    fpri
8de0: 6e 74 66 28 6f 75 74 2c 22 2d 3e 7b 25 67 7d 5c  ntf(out,"->{%g}\
8df0: 6e 22 2c 44 72 2e 78 29 3b 0a 20 20 20 20 66 66  n",Dr.x);.    ff
8e00: 6c 75 73 68 28 6f 75 74 29 3b 0a 23 65 6e 64 69  lush(out);.#endi
8e10: 66 0a 0a 20 20 20 20 4a 72 20 3d 20 4a 5f 4a 69  f..    Jr = J_Ji
8e20: 4a 28 4a 31 2c 69 32 2c 4a 32 29 3b 0a 20 20 20  J(J1,i2,J2);.   
8e30: 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e   fprintf(out,"->
8e40: 7b 25 6c 64 2c 25 6c 64 7d 5c 6e 22 2c 4a 72 2e  {%ld,%ld}\n",Jr.
8e50: 6c 31 2c 4a 72 2e 6c 32 29 3b 0a 20 20 20 20 66  l1,Jr.l2);.    f
8e60: 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 20  flush(out);.    
8e70: 4a 72 2e 6c 31 20 3d 20 4a 72 2e 6c 32 20 3d 20  Jr.l1 = Jr.l2 = 
8e80: 30 3b 20 63 6c 65 61 72 5f 74 72 61 63 65 73 28  0; clear_traces(
8e90: 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20  );.    callback 
8ea0: 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b  = alloc_callback
8eb0: 28 26 4a 5f 4a 69 4a 5f 73 69 6d 75 6c 61 74 6f  (&J_JiJ_simulato
8ec0: 72 2c 28 76 6f 69 64 2a 29 26 4a 5f 4a 69 4a 29  r,(void*)&J_JiJ)
8ed0: 3b 0a 20 20 20 20 4a 72 20 3d 20 28 46 54 59 50  ;.    Jr = (FTYP
8ee0: 45 28 4a 2c 28 4a 2c 69 6e 74 2c 4a 29 29 20 63  E(J,(J,int,J)) c
8ef0: 61 6c 6c 62 61 63 6b 29 20 28 4a 31 2c 69 32 2c  allback) (J1,i2,
8f00: 4a 32 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66  J2);.    fprintf
8f10: 28 6f 75 74 2c 22 2d 3e 7b 25 6c 64 2c 25 6c 64  (out,"->{%ld,%ld
8f20: 7d 5c 6e 22 2c 4a 72 2e 6c 31 2c 4a 72 2e 6c 32  }\n",Jr.l1,Jr.l2
8f30: 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75  );.    fflush(ou
8f40: 74 29 3b 0a 0a 23 69 66 6e 64 65 66 20 53 4b 49  t);..#ifndef SKI
8f50: 50 5f 45 58 54 52 41 5f 53 54 52 55 43 54 53 0a  P_EXTRA_STRUCTS.
8f60: 23 69 66 6e 64 65 66 20 53 4b 49 50 5f 54 0a 20  #ifndef SKIP_T. 
8f70: 20 20 20 54 72 20 3d 20 54 5f 54 63 54 28 54 31     Tr = T_TcT(T1
8f80: 2c 27 20 27 2c 54 32 29 3b 0a 20 20 20 20 66 70  ,' ',T2);.    fp
8f90: 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 7b 5c 22  rintf(out,"->{\"
8fa0: 25 63 25 63 25 63 5c 22 7d 5c 6e 22 2c 54 72 2e  %c%c%c\"}\n",Tr.
8fb0: 63 5b 30 5d 2c 54 72 2e 63 5b 31 5d 2c 54 72 2e  c[0],Tr.c[1],Tr.
8fc0: 63 5b 32 5d 29 3b 0a 20 20 20 20 66 66 6c 75 73  c[2]);.    fflus
8fd0: 68 28 6f 75 74 29 3b 0a 20 20 20 20 54 72 2e 63  h(out);.    Tr.c
8fe0: 5b 30 5d 20 3d 20 54 72 2e 63 5b 31 5d 20 3d 20  [0] = Tr.c[1] = 
8ff0: 54 72 2e 63 5b 32 5d 20 3d 20 30 3b 20 63 6c 65  Tr.c[2] = 0; cle
9000: 61 72 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 20  ar_traces();.   
9010: 20 63 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f   callback = allo
9020: 63 5f 63 61 6c 6c 62 61 63 6b 28 26 54 5f 54 63  c_callback(&T_Tc
9030: 54 5f 73 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69  T_simulator,(voi
9040: 64 2a 29 26 54 5f 54 63 54 29 3b 0a 20 20 20 20  d*)&T_TcT);.    
9050: 54 72 20 3d 20 28 46 54 59 50 45 28 54 2c 28 54  Tr = (FTYPE(T,(T
9060: 2c 63 68 61 72 2c 54 29 29 20 63 61 6c 6c 62 61  ,char,T)) callba
9070: 63 6b 29 20 28 54 31 2c 27 20 27 2c 54 32 29 3b  ck) (T1,' ',T2);
9080: 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74  .    fprintf(out
9090: 2c 22 2d 3e 7b 5c 22 25 63 25 63 25 63 5c 22 7d  ,"->{\"%c%c%c\"}
90a0: 5c 6e 22 2c 54 72 2e 63 5b 30 5d 2c 54 72 2e 63  \n",Tr.c[0],Tr.c
90b0: 5b 31 5d 2c 54 72 2e 63 5b 32 5d 29 3b 0a 20 20  [1],Tr.c[2]);.  
90c0: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 23    fflush(out);.#
90d0: 65 6e 64 69 66 0a 0a 23 69 66 6e 64 65 66 20 53  endif..#ifndef S
90e0: 4b 49 50 5f 58 0a 20 20 20 20 58 72 20 3d 20 58  KIP_X.    Xr = X
90f0: 5f 42 63 64 42 28 42 31 2c 63 32 2c 64 33 2c 42  _BcdB(B1,c2,d3,B
9100: 32 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28  2);.    fprintf(
9110: 6f 75 74 2c 22 2d 3e 7b 5c 22 25 73 5c 22 2c 27  out,"->{\"%s\",'
9120: 25 63 27 7d 5c 6e 22 2c 58 72 2e 63 2c 58 72 2e  %c'}\n",Xr.c,Xr.
9130: 63 31 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28  c1);.    fflush(
9140: 6f 75 74 29 3b 0a 20 20 20 20 58 72 2e 63 5b 30  out);.    Xr.c[0
9150: 5d 3d 58 72 2e 63 31 3d 27 5c 30 27 3b 20 63 6c  ]=Xr.c1='\0'; cl
9160: 65 61 72 5f 74 72 61 63 65 73 28 29 3b 0a 20 20  ear_traces();.  
9170: 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c    callback = all
9180: 6f 63 5f 63 61 6c 6c 62 61 63 6b 28 26 58 5f 42  oc_callback(&X_B
9190: 63 64 42 5f 73 69 6d 75 6c 61 74 6f 72 2c 28 76  cdB_simulator,(v
91a0: 6f 69 64 2a 29 26 58 5f 42 63 64 42 29 3b 0a 20  oid*)&X_BcdB);. 
91b0: 20 20 20 58 72 20 3d 20 28 46 54 59 50 45 28 58     Xr = (FTYPE(X
91c0: 2c 28 42 2c 63 68 61 72 2c 64 6f 75 62 6c 65 2c  ,(B,char,double,
91d0: 42 29 29 20 63 61 6c 6c 62 61 63 6b 29 20 28 42  B)) callback) (B
91e0: 31 2c 63 32 2c 64 33 2c 42 32 29 3b 0a 20 20 20  1,c2,d3,B2);.   
91f0: 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e   fprintf(out,"->
9200: 7b 5c 22 25 73 5c 22 2c 27 25 63 27 7d 5c 6e 22  {\"%s\",'%c'}\n"
9210: 2c 58 72 2e 63 2c 58 72 2e 63 31 29 3b 0a 20 20  ,Xr.c,Xr.c1);.  
9220: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 23    fflush(out);.#
9230: 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 20 20 7d  endif.#endif.  }
9240: 0a 23 65 6e 64 69 66 0a 0a 20 20 65 78 69 74 28  .#endif..  exit(
9250: 30 29 3b 0a 7d 0a                                0);.}.