00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #include <stdio.h>
00037 #include "arith.h"
00038
00039 #ifndef _CRAY
00040 main(int argc, char *argv[])
00041 {
00042 printf("%s: cannot be run on this host machine type.\n", argv[0]);
00043 exit (0);
00044 }
00045 #else
00046
00047
00048
00049 #if _RELEASE < 4
00050 #error Must be compiled with Cray Standard C Compiler, version 4.0 or later.
00051 #endif
00052
00053
00054 #define INT_OVERFLOWS_46_BITS(OPND) \
00055 (((OPND) & 0xffffe00000000000) != 0xffffe00000000000 && \
00056 ((OPND) & 0xffffe00000000000) != 0)
00057
00058
00059 typedef unsigned long UINT64;
00060 typedef signed long SINT64;
00061 typedef signed int SINT46;
00062 typedef unsigned short UINT32;
00063 typedef signed short SINT32;
00064 typedef unsigned char UINT8;
00065 typedef signed char SINT8;
00066
00067 typedef struct {
00068 unsigned int part1: 16;
00069 unsigned int part2: 16;
00070 unsigned int part3: 16;
00071 unsigned int part4: 16;
00072 } AR_INT_64;
00073
00074 AR_INT_64 cool_64_ints[] =
00075 {
00076
00077 {0x0000, 0x0000, 0x0000, 0x0000},
00078 {0x0000, 0x0000, 0x0000, 0x0001},
00079 {0x0000, 0x0000, 0x0000, 0x0002},
00080 {0x0000, 0x0000, 0x0000, 0x0004},
00081 {0x0000, 0x0000, 0x0000, 0x0008},
00082 {0x0000, 0x0000, 0x0000, 0x0010},
00083 {0x0000, 0x0000, 0x0000, 0x0020},
00084 {0x0000, 0x0000, 0x0000, 0x0040},
00085 {0x0000, 0x0000, 0x0000, 0x0080},
00086 {0x0000, 0x0000, 0x0000, 0x0100},
00087 {0x0000, 0x0000, 0x0000, 0x0200},
00088 {0x0000, 0x0000, 0x0000, 0x0400},
00089 {0x0000, 0x0000, 0x0000, 0x0800},
00090 {0x0000, 0x0000, 0x0000, 0x1000},
00091 {0x0000, 0x0000, 0x0000, 0x2000},
00092 {0x0000, 0x0000, 0x0000, 0x4000},
00093 {0x0000, 0x0000, 0x0000, 0x8000},
00094 {0x0000, 0x0000, 0x0001, 0x0000},
00095 {0x0000, 0x0000, 0x0002, 0x0000},
00096 {0x0000, 0x0000, 0x0004, 0x0000},
00097 {0x0000, 0x0000, 0x0008, 0x0000},
00098 {0x0000, 0x0000, 0x0010, 0x0000},
00099 {0x0000, 0x0000, 0x0020, 0x0000},
00100 {0x0000, 0x0000, 0x0040, 0x0000},
00101 {0x0000, 0x0000, 0x0080, 0x0000},
00102 {0x0000, 0x0000, 0x0100, 0x0000},
00103 {0x0000, 0x0000, 0x0200, 0x0000},
00104 {0x0000, 0x0000, 0x0400, 0x0000},
00105 {0x0000, 0x0000, 0x0800, 0x0000},
00106 {0x0000, 0x0000, 0x1000, 0x0000},
00107 {0x0000, 0x0000, 0x2000, 0x0000},
00108 {0x0000, 0x0000, 0x4000, 0x0000},
00109 {0x0000, 0x0000, 0x8000, 0x0000},
00110 {0x0000, 0x0001, 0x0000, 0x0000},
00111 {0x0000, 0x0002, 0x0000, 0x0000},
00112 {0x0000, 0x0004, 0x0000, 0x0000},
00113 {0x0000, 0x0008, 0x0000, 0x0000},
00114 {0x0000, 0x0010, 0x0000, 0x0000},
00115 {0x0000, 0x0020, 0x0000, 0x0000},
00116 {0x0000, 0x0040, 0x0000, 0x0000},
00117 {0x0000, 0x0080, 0x0000, 0x0000},
00118 {0x0000, 0x0100, 0x0000, 0x0000},
00119 {0x0000, 0x0200, 0x0000, 0x0000},
00120 {0x0000, 0x0400, 0x0000, 0x0000},
00121 {0x0000, 0x0800, 0x0000, 0x0000},
00122 {0x0000, 0x1000, 0x0000, 0x0000},
00123 {0x0000, 0x2000, 0x0000, 0x0000},
00124 {0x0000, 0x4000, 0x0000, 0x0000},
00125 {0x0000, 0x8000, 0x0000, 0x0000},
00126 {0x0001, 0x0000, 0x0000, 0x0000},
00127 {0x0002, 0x0000, 0x0000, 0x0000},
00128 {0x0004, 0x0000, 0x0000, 0x0000},
00129 {0x0008, 0x0000, 0x0000, 0x0000},
00130 {0x0010, 0x0000, 0x0000, 0x0000},
00131 {0x0020, 0x0000, 0x0000, 0x0000},
00132 {0x0040, 0x0000, 0x0000, 0x0000},
00133 {0x0080, 0x0000, 0x0000, 0x0000},
00134 {0x0100, 0x0000, 0x0000, 0x0000},
00135 {0x0200, 0x0000, 0x0000, 0x0000},
00136 {0x0400, 0x0000, 0x0000, 0x0000},
00137 {0x0800, 0x0000, 0x0000, 0x0000},
00138 {0x1000, 0x0000, 0x0000, 0x0000},
00139 {0x2000, 0x0000, 0x0000, 0x0000},
00140 {0x4000, 0x0000, 0x0000, 0x0000},
00141 {0x8000, 0x0000, 0x0000, 0x0000},
00142
00143
00144
00145 {0x8000, 0x0000, 0x0000, 0x0001},
00146 {0x8000, 0x0000, 0x0000, 0x0002},
00147 {0x8000, 0x0000, 0x0000, 0x0004},
00148 {0x8000, 0x0000, 0x0000, 0x0008},
00149 {0x8000, 0x0000, 0x0000, 0x0010},
00150 {0x8000, 0x0000, 0x0000, 0x0020},
00151 {0x8000, 0x0000, 0x0000, 0x0040},
00152 {0x8000, 0x0000, 0x0000, 0x0080},
00153 {0x8000, 0x0000, 0x0000, 0x0100},
00154 {0x8000, 0x0000, 0x0000, 0x0200},
00155 {0x8000, 0x0000, 0x0000, 0x0400},
00156 {0x8000, 0x0000, 0x0000, 0x0800},
00157 {0x8000, 0x0000, 0x0000, 0x1000},
00158 {0x8000, 0x0000, 0x0000, 0x2000},
00159 {0x8000, 0x0000, 0x0000, 0x4000},
00160 {0x8000, 0x0000, 0x0000, 0x8000},
00161 {0x8000, 0x0000, 0x0001, 0x0000},
00162 {0x8000, 0x0000, 0x0002, 0x0000},
00163 {0x8000, 0x0000, 0x0004, 0x0000},
00164 {0x8000, 0x0000, 0x0008, 0x0000},
00165 {0x8000, 0x0000, 0x0010, 0x0000},
00166 {0x8000, 0x0000, 0x0020, 0x0000},
00167 {0x8000, 0x0000, 0x0040, 0x0000},
00168 {0x8000, 0x0000, 0x0080, 0x0000},
00169 {0x8000, 0x0000, 0x0100, 0x0000},
00170 {0x8000, 0x0000, 0x0200, 0x0000},
00171 {0x8000, 0x0000, 0x0400, 0x0000},
00172 {0x8000, 0x0000, 0x0800, 0x0000},
00173 {0x8000, 0x0000, 0x1000, 0x0000},
00174 {0x8000, 0x0000, 0x2000, 0x0000},
00175 {0x8000, 0x0000, 0x4000, 0x0000},
00176 {0x8000, 0x0000, 0x8000, 0x0000},
00177 {0x8000, 0x0001, 0x0000, 0x0000},
00178 {0x8000, 0x0002, 0x0000, 0x0000},
00179 {0x8000, 0x0004, 0x0000, 0x0000},
00180 {0x8000, 0x0008, 0x0000, 0x0000},
00181 {0x8000, 0x0010, 0x0000, 0x0000},
00182 {0x8000, 0x0020, 0x0000, 0x0000},
00183 {0x8000, 0x0040, 0x0000, 0x0000},
00184 {0x8000, 0x0080, 0x0000, 0x0000},
00185 {0x8000, 0x0100, 0x0000, 0x0000},
00186 {0x8000, 0x0200, 0x0000, 0x0000},
00187 {0x8000, 0x0400, 0x0000, 0x0000},
00188 {0x8000, 0x0800, 0x0000, 0x0000},
00189 {0x8000, 0x1000, 0x0000, 0x0000},
00190 {0x8000, 0x2000, 0x0000, 0x0000},
00191 {0x8000, 0x4000, 0x0000, 0x0000},
00192 {0x8000, 0x8000, 0x0000, 0x0000},
00193 {0x8001, 0x0000, 0x0000, 0x0000},
00194 {0x8002, 0x0000, 0x0000, 0x0000},
00195 {0x8004, 0x0000, 0x0000, 0x0000},
00196 {0x8008, 0x0000, 0x0000, 0x0000},
00197 {0x8010, 0x0000, 0x0000, 0x0000},
00198 {0x8020, 0x0000, 0x0000, 0x0000},
00199 {0x8040, 0x0000, 0x0000, 0x0000},
00200 {0x8080, 0x0000, 0x0000, 0x0000},
00201 {0x8100, 0x0000, 0x0000, 0x0000},
00202 {0x8200, 0x0000, 0x0000, 0x0000},
00203 {0x8400, 0x0000, 0x0000, 0x0000},
00204 {0x8800, 0x0000, 0x0000, 0x0000},
00205 {0x9000, 0x0000, 0x0000, 0x0000},
00206 {0xa000, 0x0000, 0x0000, 0x0000},
00207 {0xc000, 0x0000, 0x0000, 0x0000},
00208
00209
00210
00211
00212 {0x0000, 0x0000, 0x0000, 0x0003},
00213 {0x0000, 0x0000, 0x0000, 0x0007},
00214 {0x0000, 0x0000, 0x0000, 0x000f},
00215 {0x0000, 0x0000, 0x0000, 0x001f},
00216 {0x0000, 0x0000, 0x0000, 0x003f},
00217 {0x0000, 0x0000, 0x0000, 0x007f},
00218 {0x0000, 0x0000, 0x0000, 0x00ff},
00219 {0x0000, 0x0000, 0x0000, 0x01ff},
00220 {0x0000, 0x0000, 0x0000, 0x03ff},
00221 {0x0000, 0x0000, 0x0000, 0x07ff},
00222 {0x0000, 0x0000, 0x0000, 0x0fff},
00223 {0x0000, 0x0000, 0x0000, 0x1fff},
00224 {0x0000, 0x0000, 0x0000, 0x3fff},
00225 {0x0000, 0x0000, 0x0000, 0x7fff},
00226 {0x0000, 0x0000, 0x0000, 0xffff},
00227 {0x0000, 0x0000, 0x0001, 0xffff},
00228 {0x0000, 0x0000, 0x0003, 0xffff},
00229 {0x0000, 0x0000, 0x0007, 0xffff},
00230 {0x0000, 0x0000, 0x000f, 0xffff},
00231 {0x0000, 0x0000, 0x001f, 0xffff},
00232 {0x0000, 0x0000, 0x003f, 0xffff},
00233 {0x0000, 0x0000, 0x007f, 0xffff},
00234 {0x0000, 0x0000, 0x00ff, 0xffff},
00235 {0x0000, 0x0000, 0x01ff, 0xffff},
00236 {0x0000, 0x0000, 0x03ff, 0xffff},
00237 {0x0000, 0x0000, 0x07ff, 0xffff},
00238 {0x0000, 0x0000, 0x0fff, 0xffff},
00239 {0x0000, 0x0000, 0x1fff, 0xffff},
00240 {0x0000, 0x0000, 0x3fff, 0xffff},
00241 {0x0000, 0x0000, 0x7fff, 0xffff},
00242 {0x0000, 0x0000, 0xffff, 0xffff},
00243 {0x0000, 0x0001, 0xffff, 0xffff},
00244 {0x0000, 0x0003, 0xffff, 0xffff},
00245 {0x0000, 0x0007, 0xffff, 0xffff},
00246 {0x0000, 0x000f, 0xffff, 0xffff},
00247 {0x0000, 0x001f, 0xffff, 0xffff},
00248 {0x0000, 0x003f, 0xffff, 0xffff},
00249 {0x0000, 0x007f, 0xffff, 0xffff},
00250 {0x0000, 0x00ff, 0xffff, 0xffff},
00251 {0x0000, 0x01ff, 0xffff, 0xffff},
00252 {0x0000, 0x03ff, 0xffff, 0xffff},
00253 {0x0000, 0x07ff, 0xffff, 0xffff},
00254 {0x0000, 0x0fff, 0xffff, 0xffff},
00255 {0x0000, 0x1fff, 0xffff, 0xffff},
00256 {0x0000, 0x3fff, 0xffff, 0xffff},
00257 {0x0000, 0x7fff, 0xffff, 0xffff},
00258 {0x0000, 0xffff, 0xffff, 0xffff},
00259 {0x0001, 0xffff, 0xffff, 0xffff},
00260 {0x0003, 0xffff, 0xffff, 0xffff},
00261 {0x0007, 0xffff, 0xffff, 0xffff},
00262 {0x000f, 0xffff, 0xffff, 0xffff},
00263 {0x001f, 0xffff, 0xffff, 0xffff},
00264 {0x003f, 0xffff, 0xffff, 0xffff},
00265 {0x007f, 0xffff, 0xffff, 0xffff},
00266 {0x00ff, 0xffff, 0xffff, 0xffff},
00267 {0x01ff, 0xffff, 0xffff, 0xffff},
00268 {0x03ff, 0xffff, 0xffff, 0xffff},
00269 {0x07ff, 0xffff, 0xffff, 0xffff},
00270 {0x0fff, 0xffff, 0xffff, 0xffff},
00271 {0x1fff, 0xffff, 0xffff, 0xffff},
00272 {0x3fff, 0xffff, 0xffff, 0xffff},
00273 {0x7fff, 0xffff, 0xffff, 0xffff},
00274 {0x7fff, 0xffff, 0xffff, 0xfffe},
00275 {0x7fff, 0xffff, 0xffff, 0xfffc},
00276 {0x7fff, 0xffff, 0xffff, 0xfff8},
00277 {0x7fff, 0xffff, 0xffff, 0xfff0},
00278 {0x7fff, 0xffff, 0xffff, 0xffe0},
00279 {0x7fff, 0xffff, 0xffff, 0xffc0},
00280 {0x7fff, 0xffff, 0xffff, 0xff80},
00281 {0x7fff, 0xffff, 0xffff, 0xff00},
00282 {0x7fff, 0xffff, 0xffff, 0xfe00},
00283 {0x7fff, 0xffff, 0xffff, 0xfc00},
00284 {0x7fff, 0xffff, 0xffff, 0xf800},
00285 {0x7fff, 0xffff, 0xffff, 0xf000},
00286 {0x7fff, 0xffff, 0xffff, 0xe000},
00287 {0x7fff, 0xffff, 0xffff, 0xc000},
00288 {0x7fff, 0xffff, 0xffff, 0x8000},
00289 {0x7fff, 0xffff, 0xffff, 0x0000},
00290 {0x7fff, 0xffff, 0xfffe, 0x0000},
00291 {0x7fff, 0xffff, 0xfffc, 0x0000},
00292 {0x7fff, 0xffff, 0xfff8, 0x0000},
00293 {0x7fff, 0xffff, 0xfff0, 0x0000},
00294 {0x7fff, 0xffff, 0xffe0, 0x0000},
00295 {0x7fff, 0xffff, 0xffc0, 0x0000},
00296 {0x7fff, 0xffff, 0xff80, 0x0000},
00297 {0x7fff, 0xffff, 0xff00, 0x0000},
00298 {0x7fff, 0xffff, 0xfe00, 0x0000},
00299 {0x7fff, 0xffff, 0xfc00, 0x0000},
00300 {0x7fff, 0xffff, 0xf800, 0x0000},
00301 {0x7fff, 0xffff, 0xf000, 0x0000},
00302 {0x7fff, 0xffff, 0xe000, 0x0000},
00303 {0x7fff, 0xffff, 0xc000, 0x0000},
00304 {0x7fff, 0xffff, 0x8000, 0x0000},
00305 {0x7fff, 0xffff, 0x0000, 0x0000},
00306 {0x7fff, 0xfffe, 0x0000, 0x0000},
00307 {0x7fff, 0xfffc, 0x0000, 0x0000},
00308 {0x7fff, 0xfff8, 0x0000, 0x0000},
00309 {0x7fff, 0xfff0, 0x0000, 0x0000},
00310 {0x7fff, 0xffe0, 0x0000, 0x0000},
00311 {0x7fff, 0xffc0, 0x0000, 0x0000},
00312 {0x7fff, 0xff80, 0x0000, 0x0000},
00313 {0x7fff, 0xff00, 0x0000, 0x0000},
00314 {0x7fff, 0xfe00, 0x0000, 0x0000},
00315 {0x7fff, 0xfc00, 0x0000, 0x0000},
00316 {0x7fff, 0xf800, 0x0000, 0x0000},
00317 {0x7fff, 0xf000, 0x0000, 0x0000},
00318 {0x7fff, 0xe000, 0x0000, 0x0000},
00319 {0x7fff, 0xc000, 0x0000, 0x0000},
00320 {0x7fff, 0x8000, 0x0000, 0x0000},
00321 {0x7fff, 0x0000, 0x0000, 0x0000},
00322 {0x7ffe, 0x0000, 0x0000, 0x0000},
00323 {0x7ffc, 0x0000, 0x0000, 0x0000},
00324 {0x7ff8, 0x0000, 0x0000, 0x0000},
00325 {0x7ff0, 0x0000, 0x0000, 0x0000},
00326 {0x7fe0, 0x0000, 0x0000, 0x0000},
00327 {0x7fc0, 0x0000, 0x0000, 0x0000},
00328 {0x7f80, 0x0000, 0x0000, 0x0000},
00329 {0x7f00, 0x0000, 0x0000, 0x0000},
00330 {0x7e00, 0x0000, 0x0000, 0x0000},
00331 {0x7c00, 0x0000, 0x0000, 0x0000},
00332 {0x7800, 0x0000, 0x0000, 0x0000},
00333 {0x7000, 0x0000, 0x0000, 0x0000},
00334 {0x6000, 0x0000, 0x0000, 0x0000},
00335 {0x4000, 0x0000, 0x0000, 0x0000},
00336
00337
00338 {0x8000, 0x0000, 0x0000, 0x0001},
00339 {0x8000, 0x0000, 0x0000, 0x0003},
00340 {0x8000, 0x0000, 0x0000, 0x0007},
00341 {0x8000, 0x0000, 0x0000, 0x000f},
00342 {0x8000, 0x0000, 0x0000, 0x001f},
00343 {0x8000, 0x0000, 0x0000, 0x003f},
00344 {0x8000, 0x0000, 0x0000, 0x007f},
00345 {0x8000, 0x0000, 0x0000, 0x00ff},
00346 {0x8000, 0x0000, 0x0000, 0x01ff},
00347 {0x8000, 0x0000, 0x0000, 0x03ff},
00348 {0x8000, 0x0000, 0x0000, 0x07ff},
00349 {0x8000, 0x0000, 0x0000, 0x0fff},
00350 {0x8000, 0x0000, 0x0000, 0x1fff},
00351 {0x8000, 0x0000, 0x0000, 0x3fff},
00352 {0x8000, 0x0000, 0x0000, 0x7fff},
00353 {0x8000, 0x0000, 0x0000, 0xffff},
00354 {0x8000, 0x0000, 0x0001, 0xffff},
00355 {0x8000, 0x0000, 0x0003, 0xffff},
00356 {0x8000, 0x0000, 0x0007, 0xffff},
00357 {0x8000, 0x0000, 0x000f, 0xffff},
00358 {0x8000, 0x0000, 0x001f, 0xffff},
00359 {0x8000, 0x0000, 0x003f, 0xffff},
00360 {0x8000, 0x0000, 0x007f, 0xffff},
00361 {0x8000, 0x0000, 0x00ff, 0xffff},
00362 {0x8000, 0x0000, 0x01ff, 0xffff},
00363 {0x8000, 0x0000, 0x03ff, 0xffff},
00364 {0x8000, 0x0000, 0x07ff, 0xffff},
00365 {0x8000, 0x0000, 0x0fff, 0xffff},
00366 {0x8000, 0x0000, 0x1fff, 0xffff},
00367 {0x8000, 0x0000, 0x3fff, 0xffff},
00368 {0x8000, 0x0000, 0x7fff, 0xffff},
00369 {0x8000, 0x0000, 0xffff, 0xffff},
00370 {0x8000, 0x0001, 0xffff, 0xffff},
00371 {0x8000, 0x0003, 0xffff, 0xffff},
00372 {0x8000, 0x0007, 0xffff, 0xffff},
00373 {0x8000, 0x000f, 0xffff, 0xffff},
00374 {0x8000, 0x001f, 0xffff, 0xffff},
00375 {0x8000, 0x003f, 0xffff, 0xffff},
00376 {0x8000, 0x007f, 0xffff, 0xffff},
00377 {0x8000, 0x00ff, 0xffff, 0xffff},
00378 {0x8000, 0x01ff, 0xffff, 0xffff},
00379 {0x8000, 0x03ff, 0xffff, 0xffff},
00380 {0x8000, 0x07ff, 0xffff, 0xffff},
00381 {0x8000, 0x0fff, 0xffff, 0xffff},
00382 {0x8000, 0x1fff, 0xffff, 0xffff},
00383 {0x8000, 0x3fff, 0xffff, 0xffff},
00384 {0x8000, 0x7fff, 0xffff, 0xffff},
00385 {0x8000, 0xffff, 0xffff, 0xffff},
00386 {0x8001, 0xffff, 0xffff, 0xffff},
00387 {0x8003, 0xffff, 0xffff, 0xffff},
00388 {0x8007, 0xffff, 0xffff, 0xffff},
00389 {0x800f, 0xffff, 0xffff, 0xffff},
00390 {0x801f, 0xffff, 0xffff, 0xffff},
00391 {0x803f, 0xffff, 0xffff, 0xffff},
00392 {0x807f, 0xffff, 0xffff, 0xffff},
00393 {0x80ff, 0xffff, 0xffff, 0xffff},
00394 {0x81ff, 0xffff, 0xffff, 0xffff},
00395 {0x83ff, 0xffff, 0xffff, 0xffff},
00396 {0x87ff, 0xffff, 0xffff, 0xffff},
00397 {0x8fff, 0xffff, 0xffff, 0xffff},
00398 {0x9fff, 0xffff, 0xffff, 0xffff},
00399 {0xbfff, 0xffff, 0xffff, 0xffff},
00400 {0xffff, 0xffff, 0xffff, 0xffff},
00401 {0xffff, 0xffff, 0xffff, 0xfffe},
00402 {0xffff, 0xffff, 0xffff, 0xfffc},
00403 {0xffff, 0xffff, 0xffff, 0xfff8},
00404 {0xffff, 0xffff, 0xffff, 0xfff0},
00405 {0xffff, 0xffff, 0xffff, 0xffe0},
00406 {0xffff, 0xffff, 0xffff, 0xffc0},
00407 {0xffff, 0xffff, 0xffff, 0xff80},
00408 {0xffff, 0xffff, 0xffff, 0xff00},
00409 {0xffff, 0xffff, 0xffff, 0xfe00},
00410 {0xffff, 0xffff, 0xffff, 0xfc00},
00411 {0xffff, 0xffff, 0xffff, 0xf800},
00412 {0xffff, 0xffff, 0xffff, 0xf000},
00413 {0xffff, 0xffff, 0xffff, 0xe000},
00414 {0xffff, 0xffff, 0xffff, 0xc000},
00415 {0xffff, 0xffff, 0xffff, 0x8000},
00416 {0xffff, 0xffff, 0xffff, 0x0000},
00417 {0xffff, 0xffff, 0xfffe, 0x0000},
00418 {0xffff, 0xffff, 0xfffc, 0x0000},
00419 {0xffff, 0xffff, 0xfff8, 0x0000},
00420 {0xffff, 0xffff, 0xfff0, 0x0000},
00421 {0xffff, 0xffff, 0xffe0, 0x0000},
00422 {0xffff, 0xffff, 0xffc0, 0x0000},
00423 {0xffff, 0xffff, 0xff80, 0x0000},
00424 {0xffff, 0xffff, 0xff00, 0x0000},
00425 {0xffff, 0xffff, 0xfe00, 0x0000},
00426 {0xffff, 0xffff, 0xfc00, 0x0000},
00427 {0xffff, 0xffff, 0xf800, 0x0000},
00428 {0xffff, 0xffff, 0xf000, 0x0000},
00429 {0xffff, 0xffff, 0xe000, 0x0000},
00430 {0xffff, 0xffff, 0xc000, 0x0000},
00431 {0xffff, 0xffff, 0x8000, 0x0000},
00432 {0xffff, 0xffff, 0x0000, 0x0000},
00433 {0xffff, 0xfffe, 0x0000, 0x0000},
00434 {0xffff, 0xfffc, 0x0000, 0x0000},
00435 {0xffff, 0xfff8, 0x0000, 0x0000},
00436 {0xffff, 0xfff0, 0x0000, 0x0000},
00437 {0xffff, 0xffe0, 0x0000, 0x0000},
00438 {0xffff, 0xffc0, 0x0000, 0x0000},
00439 {0xffff, 0xff80, 0x0000, 0x0000},
00440 {0xffff, 0xff00, 0x0000, 0x0000},
00441 {0xffff, 0xfe00, 0x0000, 0x0000},
00442 {0xffff, 0xfc00, 0x0000, 0x0000},
00443 {0xffff, 0xf800, 0x0000, 0x0000},
00444 {0xffff, 0xf000, 0x0000, 0x0000},
00445 {0xffff, 0xe000, 0x0000, 0x0000},
00446 {0xffff, 0xc000, 0x0000, 0x0000},
00447 {0xffff, 0x8000, 0x0000, 0x0000},
00448 {0xffff, 0x0000, 0x0000, 0x0000},
00449 {0xfffe, 0x0000, 0x0000, 0x0000},
00450 {0xfffc, 0x0000, 0x0000, 0x0000},
00451 {0xfff8, 0x0000, 0x0000, 0x0000},
00452 {0xfff0, 0x0000, 0x0000, 0x0000},
00453 {0xffe0, 0x0000, 0x0000, 0x0000},
00454 {0xffc0, 0x0000, 0x0000, 0x0000},
00455 {0xff80, 0x0000, 0x0000, 0x0000},
00456 {0xff00, 0x0000, 0x0000, 0x0000},
00457 {0xfe00, 0x0000, 0x0000, 0x0000},
00458 {0xfc00, 0x0000, 0x0000, 0x0000},
00459 {0xf800, 0x0000, 0x0000, 0x0000},
00460 {0xf000, 0x0000, 0x0000, 0x0000},
00461 {0xe000, 0x0000, 0x0000, 0x0000},
00462 {0xc000, 0x0000, 0x0000, 0x0000}
00463 };
00464 int num_cool_64_ints = sizeof(cool_64_ints)/sizeof(AR_INT_64);
00465
00466 AR_INT_64 cool_32_ints[] =
00467 {
00468
00469 {0x0000, 0x0000, 0x0000, 0x0000},
00470 {0x0000, 0x0000, 0x0000, 0x0001},
00471 {0x0000, 0x0000, 0x0000, 0x0002},
00472 {0x0000, 0x0000, 0x0000, 0x0004},
00473 {0x0000, 0x0000, 0x0000, 0x0008},
00474 {0x0000, 0x0000, 0x0000, 0x0010},
00475 {0x0000, 0x0000, 0x0000, 0x0020},
00476 {0x0000, 0x0000, 0x0000, 0x0040},
00477 {0x0000, 0x0000, 0x0000, 0x0080},
00478 {0x0000, 0x0000, 0x0000, 0x0100},
00479 {0x0000, 0x0000, 0x0000, 0x0200},
00480 {0x0000, 0x0000, 0x0000, 0x0400},
00481 {0x0000, 0x0000, 0x0000, 0x0800},
00482 {0x0000, 0x0000, 0x0000, 0x1000},
00483 {0x0000, 0x0000, 0x0000, 0x2000},
00484 {0x0000, 0x0000, 0x0000, 0x4000},
00485 {0x0000, 0x0000, 0x0000, 0x8000},
00486 {0x0000, 0x0000, 0x0001, 0x0000},
00487 {0x0000, 0x0000, 0x0002, 0x0000},
00488 {0x0000, 0x0000, 0x0004, 0x0000},
00489 {0x0000, 0x0000, 0x0008, 0x0000},
00490 {0x0000, 0x0000, 0x0010, 0x0000},
00491 {0x0000, 0x0000, 0x0020, 0x0000},
00492 {0x0000, 0x0000, 0x0040, 0x0000},
00493 {0x0000, 0x0000, 0x0080, 0x0000},
00494 {0x0000, 0x0000, 0x0100, 0x0000},
00495 {0x0000, 0x0000, 0x0200, 0x0000},
00496 {0x0000, 0x0000, 0x0400, 0x0000},
00497 {0x0000, 0x0000, 0x0800, 0x0000},
00498 {0x0000, 0x0000, 0x1000, 0x0000},
00499 {0x0000, 0x0000, 0x2000, 0x0000},
00500 {0x0000, 0x0000, 0x4000, 0x0000},
00501 {0x0000, 0x0000, 0x8000, 0x0000},
00502
00503
00504
00505 {0x0000, 0x0000, 0x8000, 0x0001},
00506 {0x0000, 0x0000, 0x8000, 0x0002},
00507 {0x0000, 0x0000, 0x8000, 0x0004},
00508 {0x0000, 0x0000, 0x8000, 0x0008},
00509 {0x0000, 0x0000, 0x8000, 0x0010},
00510 {0x0000, 0x0000, 0x8000, 0x0020},
00511 {0x0000, 0x0000, 0x8000, 0x0040},
00512 {0x0000, 0x0000, 0x8000, 0x0080},
00513 {0x0000, 0x0000, 0x8000, 0x0100},
00514 {0x0000, 0x0000, 0x8000, 0x0200},
00515 {0x0000, 0x0000, 0x8000, 0x0400},
00516 {0x0000, 0x0000, 0x8000, 0x0800},
00517 {0x0000, 0x0000, 0x8000, 0x1000},
00518 {0x0000, 0x0000, 0x8000, 0x2000},
00519 {0x0000, 0x0000, 0x8000, 0x4000},
00520 {0x0000, 0x0000, 0x8000, 0x8000},
00521 {0x0000, 0x0000, 0x8001, 0x0000},
00522 {0x0000, 0x0000, 0x8002, 0x0000},
00523 {0x0000, 0x0000, 0x8004, 0x0000},
00524 {0x0000, 0x0000, 0x8008, 0x0000},
00525 {0x0000, 0x0000, 0x8010, 0x0000},
00526 {0x0000, 0x0000, 0x8020, 0x0000},
00527 {0x0000, 0x0000, 0x8040, 0x0000},
00528 {0x0000, 0x0000, 0x8080, 0x0000},
00529 {0x0000, 0x0000, 0x8100, 0x0000},
00530 {0x0000, 0x0000, 0x8200, 0x0000},
00531 {0x0000, 0x0000, 0x8400, 0x0000},
00532 {0x0000, 0x0000, 0x8800, 0x0000},
00533 {0x0000, 0x0000, 0x9000, 0x0000},
00534 {0x0000, 0x0000, 0xa000, 0x0000},
00535 {0x0000, 0x0000, 0xc000, 0x0000},
00536
00537
00538
00539
00540 {0x0000, 0x0000, 0x0000, 0x0003},
00541 {0x0000, 0x0000, 0x0000, 0x0007},
00542 {0x0000, 0x0000, 0x0000, 0x000f},
00543 {0x0000, 0x0000, 0x0000, 0x001f},
00544 {0x0000, 0x0000, 0x0000, 0x003f},
00545 {0x0000, 0x0000, 0x0000, 0x007f},
00546 {0x0000, 0x0000, 0x0000, 0x00ff},
00547 {0x0000, 0x0000, 0x0000, 0x01ff},
00548 {0x0000, 0x0000, 0x0000, 0x03ff},
00549 {0x0000, 0x0000, 0x0000, 0x07ff},
00550 {0x0000, 0x0000, 0x0000, 0x0fff},
00551 {0x0000, 0x0000, 0x0000, 0x1fff},
00552 {0x0000, 0x0000, 0x0000, 0x3fff},
00553 {0x0000, 0x0000, 0x0000, 0x7fff},
00554 {0x0000, 0x0000, 0x0000, 0xffff},
00555 {0x0000, 0x0000, 0x0001, 0xffff},
00556 {0x0000, 0x0000, 0x0003, 0xffff},
00557 {0x0000, 0x0000, 0x0007, 0xffff},
00558 {0x0000, 0x0000, 0x000f, 0xffff},
00559 {0x0000, 0x0000, 0x001f, 0xffff},
00560 {0x0000, 0x0000, 0x003f, 0xffff},
00561 {0x0000, 0x0000, 0x007f, 0xffff},
00562 {0x0000, 0x0000, 0x00ff, 0xffff},
00563 {0x0000, 0x0000, 0x01ff, 0xffff},
00564 {0x0000, 0x0000, 0x03ff, 0xffff},
00565 {0x0000, 0x0000, 0x07ff, 0xffff},
00566 {0x0000, 0x0000, 0x0fff, 0xffff},
00567 {0x0000, 0x0000, 0x1fff, 0xffff},
00568 {0x0000, 0x0000, 0x3fff, 0xffff},
00569 {0x0000, 0x0000, 0x7fff, 0xffff},
00570 {0x0000, 0x0000, 0x7fff, 0xfffe},
00571 {0x0000, 0x0000, 0x7fff, 0xfffc},
00572 {0x0000, 0x0000, 0x7fff, 0xfff8},
00573 {0x0000, 0x0000, 0x7fff, 0xfff0},
00574 {0x0000, 0x0000, 0x7fff, 0xffe0},
00575 {0x0000, 0x0000, 0x7fff, 0xffc0},
00576 {0x0000, 0x0000, 0x7fff, 0xff80},
00577 {0x0000, 0x0000, 0x7fff, 0xff00},
00578 {0x0000, 0x0000, 0x7fff, 0xfe00},
00579 {0x0000, 0x0000, 0x7fff, 0xfc00},
00580 {0x0000, 0x0000, 0x7fff, 0xf800},
00581 {0x0000, 0x0000, 0x7fff, 0xf000},
00582 {0x0000, 0x0000, 0x7fff, 0xe000},
00583 {0x0000, 0x0000, 0x7fff, 0xc000},
00584 {0x0000, 0x0000, 0x7fff, 0x8000},
00585 {0x0000, 0x0000, 0x7fff, 0x0000},
00586 {0x0000, 0x0000, 0x7ffe, 0x0000},
00587 {0x0000, 0x0000, 0x7ffc, 0x0000},
00588 {0x0000, 0x0000, 0x7ff8, 0x0000},
00589 {0x0000, 0x0000, 0x7ff0, 0x0000},
00590 {0x0000, 0x0000, 0x7fe0, 0x0000},
00591 {0x0000, 0x0000, 0x7fc0, 0x0000},
00592 {0x0000, 0x0000, 0x7f80, 0x0000},
00593 {0x0000, 0x0000, 0x7f00, 0x0000},
00594 {0x0000, 0x0000, 0x7e00, 0x0000},
00595 {0x0000, 0x0000, 0x7c00, 0x0000},
00596 {0x0000, 0x0000, 0x7800, 0x0000},
00597 {0x0000, 0x0000, 0x7000, 0x0000},
00598 {0x0000, 0x0000, 0x6000, 0x0000},
00599 {0x0000, 0x0000, 0x4000, 0x0000},
00600
00601
00602 {0x0000, 0x0000, 0x8000, 0x0001},
00603 {0x0000, 0x0000, 0x8000, 0x0003},
00604 {0x0000, 0x0000, 0x8000, 0x0007},
00605 {0x0000, 0x0000, 0x8000, 0x000f},
00606 {0x0000, 0x0000, 0x8000, 0x001f},
00607 {0x0000, 0x0000, 0x8000, 0x003f},
00608 {0x0000, 0x0000, 0x8000, 0x007f},
00609 {0x0000, 0x0000, 0x8000, 0x00ff},
00610 {0x0000, 0x0000, 0x8000, 0x01ff},
00611 {0x0000, 0x0000, 0x8000, 0x03ff},
00612 {0x0000, 0x0000, 0x8000, 0x07ff},
00613 {0x0000, 0x0000, 0x8000, 0x0fff},
00614 {0x0000, 0x0000, 0x8000, 0x1fff},
00615 {0x0000, 0x0000, 0x8000, 0x3fff},
00616 {0x0000, 0x0000, 0x8000, 0x7fff},
00617 {0x0000, 0x0000, 0x8000, 0xffff},
00618 {0x0000, 0x0000, 0x8001, 0xffff},
00619 {0x0000, 0x0000, 0x8003, 0xffff},
00620 {0x0000, 0x0000, 0x8007, 0xffff},
00621 {0x0000, 0x0000, 0x800f, 0xffff},
00622 {0x0000, 0x0000, 0x801f, 0xffff},
00623 {0x0000, 0x0000, 0x803f, 0xffff},
00624 {0x0000, 0x0000, 0x807f, 0xffff},
00625 {0x0000, 0x0000, 0x80ff, 0xffff},
00626 {0x0000, 0x0000, 0x81ff, 0xffff},
00627 {0x0000, 0x0000, 0x83ff, 0xffff},
00628 {0x0000, 0x0000, 0x87ff, 0xffff},
00629 {0x0000, 0x0000, 0x8fff, 0xffff},
00630 {0x0000, 0x0000, 0x9fff, 0xffff},
00631 {0x0000, 0x0000, 0xbfff, 0xffff},
00632 {0x0000, 0x0000, 0xffff, 0xffff},
00633 {0x0000, 0x0000, 0xffff, 0xfffe},
00634 {0x0000, 0x0000, 0xffff, 0xfffc},
00635 {0x0000, 0x0000, 0xffff, 0xfff8},
00636 {0x0000, 0x0000, 0xffff, 0xfff0},
00637 {0x0000, 0x0000, 0xffff, 0xffe0},
00638 {0x0000, 0x0000, 0xffff, 0xffc0},
00639 {0x0000, 0x0000, 0xffff, 0xff80},
00640 {0x0000, 0x0000, 0xffff, 0xff00},
00641 {0x0000, 0x0000, 0xffff, 0xfe00},
00642 {0x0000, 0x0000, 0xffff, 0xfc00},
00643 {0x0000, 0x0000, 0xffff, 0xf800},
00644 {0x0000, 0x0000, 0xffff, 0xf000},
00645 {0x0000, 0x0000, 0xffff, 0xe000},
00646 {0x0000, 0x0000, 0xffff, 0xc000},
00647 {0x0000, 0x0000, 0xffff, 0x8000},
00648 {0x0000, 0x0000, 0xffff, 0x0000},
00649 {0x0000, 0x0000, 0xfffe, 0x0000},
00650 {0x0000, 0x0000, 0xfffc, 0x0000},
00651 {0x0000, 0x0000, 0xfff8, 0x0000},
00652 {0x0000, 0x0000, 0xfff0, 0x0000},
00653 {0x0000, 0x0000, 0xffe0, 0x0000},
00654 {0x0000, 0x0000, 0xffc0, 0x0000},
00655 {0x0000, 0x0000, 0xff80, 0x0000},
00656 {0x0000, 0x0000, 0xff00, 0x0000},
00657 {0x0000, 0x0000, 0xfe00, 0x0000},
00658 {0x0000, 0x0000, 0xfc00, 0x0000},
00659 {0x0000, 0x0000, 0xf800, 0x0000},
00660 {0x0000, 0x0000, 0xf000, 0x0000},
00661 {0x0000, 0x0000, 0xe000, 0x0000},
00662 {0x0000, 0x0000, 0xc000, 0x0000},
00663 {0x0000, 0x0000, 0x8000, 0x0000}
00664 };
00665 int num_cool_32_ints = sizeof(cool_32_ints)/sizeof(AR_INT_64);
00666
00667 AR_INT_64 cool_24_ints[] =
00668 {
00669
00670 {0x0000, 0x0000, 0x0000, 0x0000},
00671 {0x0000, 0x0000, 0x0000, 0x0001},
00672 {0x0000, 0x0000, 0x0000, 0x0002},
00673 {0x0000, 0x0000, 0x0000, 0x0004},
00674 {0x0000, 0x0000, 0x0000, 0x0008},
00675 {0x0000, 0x0000, 0x0000, 0x0010},
00676 {0x0000, 0x0000, 0x0000, 0x0020},
00677 {0x0000, 0x0000, 0x0000, 0x0040},
00678 {0x0000, 0x0000, 0x0000, 0x0080},
00679 {0x0000, 0x0000, 0x0000, 0x0100},
00680 {0x0000, 0x0000, 0x0000, 0x0200},
00681 {0x0000, 0x0000, 0x0000, 0x0400},
00682 {0x0000, 0x0000, 0x0000, 0x0800},
00683 {0x0000, 0x0000, 0x0000, 0x1000},
00684 {0x0000, 0x0000, 0x0000, 0x2000},
00685 {0x0000, 0x0000, 0x0000, 0x4000},
00686 {0x0000, 0x0000, 0x0000, 0x8000},
00687 {0x0000, 0x0000, 0x0001, 0x0000},
00688 {0x0000, 0x0000, 0x0002, 0x0000},
00689 {0x0000, 0x0000, 0x0004, 0x0000},
00690 {0x0000, 0x0000, 0x0008, 0x0000},
00691 {0x0000, 0x0000, 0x0010, 0x0000},
00692 {0x0000, 0x0000, 0x0020, 0x0000},
00693 {0x0000, 0x0000, 0x0040, 0x0000},
00694 {0x0000, 0x0000, 0x0080, 0x0000},
00695
00696
00697
00698 {0x0000, 0x0000, 0x0080, 0x0001},
00699 {0x0000, 0x0000, 0x0080, 0x0002},
00700 {0x0000, 0x0000, 0x0080, 0x0004},
00701 {0x0000, 0x0000, 0x0080, 0x0008},
00702 {0x0000, 0x0000, 0x0080, 0x0010},
00703 {0x0000, 0x0000, 0x0080, 0x0020},
00704 {0x0000, 0x0000, 0x0080, 0x0040},
00705 {0x0000, 0x0000, 0x0080, 0x0080},
00706 {0x0000, 0x0000, 0x0080, 0x0100},
00707 {0x0000, 0x0000, 0x0080, 0x0200},
00708 {0x0000, 0x0000, 0x0080, 0x0400},
00709 {0x0000, 0x0000, 0x0080, 0x0800},
00710 {0x0000, 0x0000, 0x0080, 0x1000},
00711 {0x0000, 0x0000, 0x0080, 0x2000},
00712 {0x0000, 0x0000, 0x0080, 0x4000},
00713 {0x0000, 0x0000, 0x0080, 0x8000},
00714 {0x0000, 0x0000, 0x0081, 0x0000},
00715 {0x0000, 0x0000, 0x0082, 0x0000},
00716 {0x0000, 0x0000, 0x0084, 0x0000},
00717 {0x0000, 0x0000, 0x0088, 0x0000},
00718 {0x0000, 0x0000, 0x0090, 0x0000},
00719 {0x0000, 0x0000, 0x00a0, 0x0000},
00720 {0x0000, 0x0000, 0x00c0, 0x0000},
00721
00722
00723
00724
00725 {0x0000, 0x0000, 0x0000, 0x0003},
00726 {0x0000, 0x0000, 0x0000, 0x0007},
00727 {0x0000, 0x0000, 0x0000, 0x000f},
00728 {0x0000, 0x0000, 0x0000, 0x001f},
00729 {0x0000, 0x0000, 0x0000, 0x003f},
00730 {0x0000, 0x0000, 0x0000, 0x007f},
00731 {0x0000, 0x0000, 0x0000, 0x00ff},
00732 {0x0000, 0x0000, 0x0000, 0x01ff},
00733 {0x0000, 0x0000, 0x0000, 0x03ff},
00734 {0x0000, 0x0000, 0x0000, 0x07ff},
00735 {0x0000, 0x0000, 0x0000, 0x0fff},
00736 {0x0000, 0x0000, 0x0000, 0x1fff},
00737 {0x0000, 0x0000, 0x0000, 0x3fff},
00738 {0x0000, 0x0000, 0x0000, 0x7fff},
00739 {0x0000, 0x0000, 0x0000, 0xffff},
00740 {0x0000, 0x0000, 0x0001, 0xffff},
00741 {0x0000, 0x0000, 0x0003, 0xffff},
00742 {0x0000, 0x0000, 0x0007, 0xffff},
00743 {0x0000, 0x0000, 0x000f, 0xffff},
00744 {0x0000, 0x0000, 0x001f, 0xffff},
00745 {0x0000, 0x0000, 0x003f, 0xffff},
00746 {0x0000, 0x0000, 0x007f, 0xffff},
00747 {0x0000, 0x0000, 0x007f, 0xfffe},
00748 {0x0000, 0x0000, 0x007f, 0xfffc},
00749 {0x0000, 0x0000, 0x007f, 0xfff8},
00750 {0x0000, 0x0000, 0x007f, 0xfff0},
00751 {0x0000, 0x0000, 0x007f, 0xffe0},
00752 {0x0000, 0x0000, 0x007f, 0xffc0},
00753 {0x0000, 0x0000, 0x007f, 0xff80},
00754 {0x0000, 0x0000, 0x007f, 0xff00},
00755 {0x0000, 0x0000, 0x007f, 0xfe00},
00756 {0x0000, 0x0000, 0x007f, 0xfc00},
00757 {0x0000, 0x0000, 0x007f, 0xf800},
00758 {0x0000, 0x0000, 0x007f, 0xf000},
00759 {0x0000, 0x0000, 0x007f, 0xe000},
00760 {0x0000, 0x0000, 0x007f, 0xc000},
00761 {0x0000, 0x0000, 0x007f, 0x8000},
00762 {0x0000, 0x0000, 0x007f, 0x0000},
00763 {0x0000, 0x0000, 0x007e, 0x0000},
00764 {0x0000, 0x0000, 0x007c, 0x0000},
00765 {0x0000, 0x0000, 0x0078, 0x0000},
00766 {0x0000, 0x0000, 0x0070, 0x0000},
00767 {0x0000, 0x0000, 0x0060, 0x0000},
00768 {0x0000, 0x0000, 0x0040, 0x0000},
00769
00770
00771 {0x0000, 0x0000, 0x0080, 0x0001},
00772 {0x0000, 0x0000, 0x0080, 0x0003},
00773 {0x0000, 0x0000, 0x0080, 0x0007},
00774 {0x0000, 0x0000, 0x0080, 0x000f},
00775 {0x0000, 0x0000, 0x0080, 0x001f},
00776 {0x0000, 0x0000, 0x0080, 0x003f},
00777 {0x0000, 0x0000, 0x0080, 0x007f},
00778 {0x0000, 0x0000, 0x0080, 0x00ff},
00779 {0x0000, 0x0000, 0x0080, 0x01ff},
00780 {0x0000, 0x0000, 0x0080, 0x03ff},
00781 {0x0000, 0x0000, 0x0080, 0x07ff},
00782 {0x0000, 0x0000, 0x0080, 0x0fff},
00783 {0x0000, 0x0000, 0x0080, 0x1fff},
00784 {0x0000, 0x0000, 0x0080, 0x3fff},
00785 {0x0000, 0x0000, 0x0080, 0x7fff},
00786 {0x0000, 0x0000, 0x0080, 0xffff},
00787 {0x0000, 0x0000, 0x0081, 0xffff},
00788 {0x0000, 0x0000, 0x0083, 0xffff},
00789 {0x0000, 0x0000, 0x0087, 0xffff},
00790 {0x0000, 0x0000, 0x008f, 0xffff},
00791 {0x0000, 0x0000, 0x009f, 0xffff},
00792 {0x0000, 0x0000, 0x00bf, 0xffff},
00793 {0x0000, 0x0000, 0x00ff, 0xffff},
00794 {0x0000, 0x0000, 0x00ff, 0xfffe},
00795 {0x0000, 0x0000, 0x00ff, 0xfffc},
00796 {0x0000, 0x0000, 0x00ff, 0xfff8},
00797 {0x0000, 0x0000, 0x00ff, 0xfff0},
00798 {0x0000, 0x0000, 0x00ff, 0xffe0},
00799 {0x0000, 0x0000, 0x00ff, 0xffc0},
00800 {0x0000, 0x0000, 0x00ff, 0xff80},
00801 {0x0000, 0x0000, 0x00ff, 0xff00},
00802 {0x0000, 0x0000, 0x00ff, 0xfe00},
00803 {0x0000, 0x0000, 0x00ff, 0xfc00},
00804 {0x0000, 0x0000, 0x00ff, 0xf800},
00805 {0x0000, 0x0000, 0x00ff, 0xf000},
00806 {0x0000, 0x0000, 0x00ff, 0xe000},
00807 {0x0000, 0x0000, 0x00ff, 0xc000},
00808 {0x0000, 0x0000, 0x00ff, 0x8000},
00809 {0x0000, 0x0000, 0x00ff, 0x0000},
00810 {0x0000, 0x0000, 0x00fe, 0x0000},
00811 {0x0000, 0x0000, 0x00fc, 0x0000},
00812 {0x0000, 0x0000, 0x00f8, 0x0000},
00813 {0x0000, 0x0000, 0x00f0, 0x0000},
00814 {0x0000, 0x0000, 0x00e0, 0x0000},
00815 {0x0000, 0x0000, 0x00c0, 0x0000},
00816 {0x0000, 0x0000, 0x0080, 0x0000}
00817 };
00818 int num_cool_24_ints = sizeof(cool_24_ints)/sizeof(AR_INT_64);
00819
00820 AR_INT_64 cool_8_ints[] =
00821 {
00822
00823 {0x0000, 0x0000, 0x0000, 0x0000},
00824 {0x0000, 0x0000, 0x0000, 0x0001},
00825 {0x0000, 0x0000, 0x0000, 0x0002},
00826 {0x0000, 0x0000, 0x0000, 0x0004},
00827 {0x0000, 0x0000, 0x0000, 0x0008},
00828 {0x0000, 0x0000, 0x0000, 0x0010},
00829 {0x0000, 0x0000, 0x0000, 0x0020},
00830 {0x0000, 0x0000, 0x0000, 0x0040},
00831 {0x0000, 0x0000, 0x0000, 0x0080},
00832
00833
00834
00835 {0x0000, 0x0000, 0x0000, 0x0081},
00836 {0x0000, 0x0000, 0x0000, 0x0082},
00837 {0x0000, 0x0000, 0x0000, 0x0084},
00838 {0x0000, 0x0000, 0x0000, 0x0088},
00839 {0x0000, 0x0000, 0x0000, 0x0090},
00840 {0x0000, 0x0000, 0x0000, 0x00a0},
00841 {0x0000, 0x0000, 0x0000, 0x00c0},
00842
00843
00844
00845
00846 {0x0000, 0x0000, 0x0000, 0x0003},
00847 {0x0000, 0x0000, 0x0000, 0x0007},
00848 {0x0000, 0x0000, 0x0000, 0x000f},
00849 {0x0000, 0x0000, 0x0000, 0x001f},
00850 {0x0000, 0x0000, 0x0000, 0x003f},
00851 {0x0000, 0x0000, 0x0000, 0x007f},
00852 {0x0000, 0x0000, 0x0000, 0x007e},
00853 {0x0000, 0x0000, 0x0000, 0x007c},
00854 {0x0000, 0x0000, 0x0000, 0x0078},
00855 {0x0000, 0x0000, 0x0000, 0x0070},
00856 {0x0000, 0x0000, 0x0000, 0x0060},
00857 {0x0000, 0x0000, 0x0000, 0x0040},
00858
00859
00860 {0x0000, 0x0000, 0x0000, 0x0081},
00861 {0x0000, 0x0000, 0x0000, 0x0083},
00862 {0x0000, 0x0000, 0x0000, 0x0087},
00863 {0x0000, 0x0000, 0x0000, 0x008f},
00864 {0x0000, 0x0000, 0x0000, 0x009f},
00865 {0x0000, 0x0000, 0x0000, 0x00bf},
00866 {0x0000, 0x0000, 0x0000, 0x00ff},
00867 {0x0000, 0x0000, 0x0000, 0x00fe},
00868 {0x0000, 0x0000, 0x0000, 0x00fc},
00869 {0x0000, 0x0000, 0x0000, 0x00f8},
00870 {0x0000, 0x0000, 0x0000, 0x00f0},
00871 {0x0000, 0x0000, 0x0000, 0x00e0},
00872 {0x0000, 0x0000, 0x0000, 0x00c0},
00873 {0x0000, 0x0000, 0x0000, 0x0080}
00874 };
00875 int num_cool_8_ints = sizeof(cool_8_ints)/sizeof(AR_INT_64);
00876
00877
00878 AR_TYPE ar_types[] =
00879 {
00880 AR_Int_8_S,
00881 AR_Int_8_U,
00882 AR_Int_24_S,
00883 AR_Int_24_U,
00884 AR_Int_32_S,
00885 AR_Int_32_U,
00886 AR_Int_46_S,
00887 AR_Int_64_S,
00888 AR_Int_64_U
00889 };
00890 int num_ar_types = sizeof(ar_types) / sizeof(AR_TYPE);
00891
00892
00893 SINT64 act_result[sizeof(cool_64_ints)/sizeof(AR_INT_64)];
00894 int act_status[sizeof(cool_64_ints)/sizeof(AR_INT_64)];
00895
00896 AR_INT_64 test_result[sizeof(cool_64_ints)/sizeof(AR_INT_64)];
00897 int test_status[sizeof(cool_64_ints)/sizeof(AR_INT_64)];
00898
00899 AR_TYPE uint64_artype = AR_Int_64_U;
00900 AR_TYPE sint64_artype = AR_Int_64_S;
00901 AR_TYPE sint46_artype = AR_Int_46_S;
00902 AR_TYPE uint32_artype = AR_Int_32_U;
00903 AR_TYPE sint32_artype = AR_Int_32_S;
00904 AR_TYPE uint24_artype = AR_Int_24_U;
00905 AR_TYPE sint24_artype = AR_Int_24_S;
00906 AR_TYPE uint8_artype = AR_Int_8_U;
00907 AR_TYPE sint8_artype = AR_Int_8_S;
00908
00909
00910 main()
00911 {
00912 test_64_U();
00913 test_64_S();
00914 test_46_S();
00915 test_32_U();
00916 test_32_S();
00917 test_24_U();
00918 test_24_S();
00919 test_8_U();
00920 test_8_S();
00921 }
00922
00923
00924 test_64_U()
00925 {
00926 int i;
00927
00928
00929 printf(" Testing convert: UNSIGNED 64 INT -> UNSIGNED 64 INT : ");
00930
00931 for (i=0; i<num_cool_64_ints; i++)
00932 {
00933 act_result[i] = (UINT64)(UINT64)(*(UINT64 *)&cool_64_ints[i]);
00934 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
00935
00936 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint64_artype,
00937 (AR_DATA *)&cool_64_ints[i], &uint64_artype);
00938
00939 if (*(SINT64 *)&test_result[i] != act_result[i])
00940 {
00941 printf(" ERROR: incorrect result at %d\n", i);
00942 abort();
00943 }
00944
00945 if (act_status[i] != test_status[i])
00946 {
00947 printf(" ERROR: incorrect status at %d\n", i);
00948 abort();
00949 }
00950 }
00951 printf("PASSED\n");
00952
00953
00954 printf(" Testing convert: UNSIGNED 64 INT -> SIGNED 64 INT : ");
00955
00956 for (i=0; i<num_cool_64_ints; i++)
00957 {
00958 act_result[i] = (UINT64)(SINT64)(*(UINT64 *)&cool_64_ints[i]);
00959 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
00960 if (cool_64_ints[i].part1 & 0x8000) {
00961 act_status[i] |= AR_STAT_NEGATIVE | AR_STAT_SEMIVALID;
00962 if((cool_64_ints[i].part1 & 0x7fff) || cool_64_ints[i].part2 ||
00963 cool_64_ints[i].part3 || cool_64_ints[i].part4)
00964 act_status[i] |= AR_STAT_OVERFLOW;
00965 }
00966
00967 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint64_artype,
00968 (AR_DATA *)&cool_64_ints[i], &uint64_artype);
00969
00970 if (*(SINT64 *)&test_result[i] != act_result[i])
00971 {
00972 printf(" ERROR: incorrect result at %d\n", i);
00973 abort();
00974 }
00975
00976 if (act_status[i] != test_status[i])
00977 {
00978 printf(" ERROR: incorrect status at %d\n", i);
00979 abort();
00980 }
00981 }
00982 printf("PASSED\n");
00983
00984
00985 printf(" Testing convert: UNSIGNED 64 INT -> SIGNED 46 INT : ");
00986
00987 for (i=0; i<num_cool_64_ints; i++)
00988 {
00989 act_result[i] = (UINT64)(SINT46)(*(UINT64 *)&cool_64_ints[i]);
00990 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
00991 if (cool_64_ints[i].part1 & 0x8000) {
00992 act_status[i] |= AR_STAT_NEGATIVE | AR_STAT_SEMIVALID;
00993 if((cool_64_ints[i].part1 & 0x7fff) || cool_64_ints[i].part2 ||
00994 cool_64_ints[i].part3 || cool_64_ints[i].part4)
00995 act_status[i] |= AR_STAT_OVERFLOW;
00996 }
00997 else if (INT_OVERFLOWS_46_BITS(act_result[i]))
00998 {
00999 act_status[i] |= AR_STAT_OVERFLOW;
01000 }
01001
01002 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint46_artype,
01003 (AR_DATA *)&cool_64_ints[i], &uint64_artype);
01004
01005 if (*(SINT64 *)&test_result[i] != act_result[i])
01006 {
01007 printf(" ERROR: incorrect result at %d\n", i);
01008 abort();
01009 }
01010
01011 if (act_status[i] != test_status[i])
01012 {
01013 printf(" ERROR: incorrect status at %d\n", i);
01014 abort();
01015 }
01016 }
01017 printf("PASSED\n");
01018
01019
01020 printf(" Testing convert: UNSIGNED 64 INT -> UNSIGNED 32 INT : ");
01021
01022 for (i=0; i<num_cool_64_ints; i++)
01023 {
01024 act_result[i] = (UINT64)(UINT32)(*(UINT64 *)&cool_64_ints[i]);
01025 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01026
01027 if (*(UINT64 *)&cool_64_ints[i] !=
01028 (UINT64)(UINT32)*(UINT64 *)&cool_64_ints[i])
01029 {
01030 act_status[i] |= AR_STAT_OVERFLOW;
01031 }
01032
01033 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint32_artype,
01034 (AR_DATA *)&cool_64_ints[i], &uint64_artype);
01035
01036 if (*(SINT64 *)&test_result[i] != act_result[i])
01037 {
01038 printf(" ERROR: incorrect result at %d\n", i);
01039 abort();
01040 }
01041
01042 if (act_status[i] != test_status[i])
01043 {
01044 printf(" ERROR: incorrect status at %d\n", i);
01045 abort();
01046 }
01047 }
01048 printf("PASSED\n");
01049
01050
01051 printf(" Testing convert: UNSIGNED 64 INT -> SIGNED 32 INT : ");
01052
01053 for (i=0; i<num_cool_64_ints; i++)
01054 {
01055 act_result[i] = (*(UINT64 *)&cool_64_ints[i]) & 0xffffffff;
01056 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01057 if ((SINT32)(*(UINT64 *)&cool_64_ints[i]) < 0) {
01058 act_status[i] |= AR_STAT_NEGATIVE;
01059 }
01060
01061 if (((SINT32)*(UINT64 *)&cool_64_ints[i] < 0) ^
01062 ( *(UINT64 *)&cool_64_ints[i] < 0))
01063 {
01064 act_status[i] |= AR_STAT_OVERFLOW;
01065 }
01066 else if (*(UINT64 *)&cool_64_ints[i] !=
01067 (UINT64)(SINT32)*(UINT64 *)&cool_64_ints[i])
01068 {
01069 act_status[i] |= AR_STAT_OVERFLOW;
01070 }
01071
01072 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint32_artype,
01073 (AR_DATA *)&cool_64_ints[i], &uint64_artype);
01074
01075 if (*(SINT64 *)&test_result[i] != act_result[i])
01076 {
01077 printf(" ERROR: incorrect result at %d\n", i);
01078 abort();
01079 }
01080
01081 if (act_status[i] != test_status[i])
01082 {
01083 printf(" ERROR: incorrect status at %d\n", i);
01084 abort();
01085 }
01086 }
01087 printf("PASSED\n");
01088
01089
01090 printf(" Testing convert: UNSIGNED 64 INT -> UNSIGNED 24 INT : ");
01091
01092 for (i=0; i<num_cool_64_ints; i++)
01093 {
01094 act_result[i] = (*(UINT64 *)&cool_64_ints[i]) & 0xffffff;
01095 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01096
01097 if (*(UINT64 *)&cool_64_ints[i] != (UINT64)act_result[i])
01098 {
01099 act_status[i] |= AR_STAT_OVERFLOW;
01100 }
01101
01102 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint24_artype,
01103 (AR_DATA *)&cool_64_ints[i], &uint64_artype);
01104
01105 if (*(SINT64 *)&test_result[i] != act_result[i])
01106 {
01107 printf(" ERROR: incorrect result at %d\n", i);
01108 abort();
01109 }
01110
01111 if (act_status[i] != test_status[i])
01112 {
01113 printf(" ERROR: incorrect status at %d\n", i);
01114 abort();
01115 }
01116 }
01117 printf("PASSED\n");
01118
01119
01120 printf(" Testing convert: UNSIGNED 64 INT -> SIGNED 24 INT : ");
01121
01122 for (i=0; i<num_cool_64_ints; i++)
01123 {
01124 act_result[i] = (*(UINT64 *)&cool_64_ints[i]) & 0xffffff;
01125 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01126 if ((*(UINT64 *)&cool_64_ints[i]) & 0x800000) {
01127 act_status[i] |= AR_STAT_NEGATIVE;
01128 }
01129
01130 if (((*(UINT64 *)&cool_64_ints[i] & 0x800000) != 0) ^
01131 (*(UINT64 *)&cool_64_ints[i] < 0))
01132 {
01133 act_status[i] |= AR_STAT_OVERFLOW;
01134 }
01135 else if (*(UINT64 *)&cool_64_ints[i] !=
01136 ((act_result[i] & 0x800000) ?
01137 act_result[i] | 0xffffffffff000000 :
01138 act_result[i]))
01139 {
01140 act_status[i] |= AR_STAT_OVERFLOW;
01141 }
01142
01143 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint24_artype,
01144 (AR_DATA *)&cool_64_ints[i], &uint64_artype);
01145
01146 if (*(SINT64 *)&test_result[i] != act_result[i])
01147 {
01148 printf(" ERROR: incorrect result at %d\n", i);
01149 abort();
01150 }
01151
01152 if (act_status[i] != test_status[i])
01153 {
01154 printf(" ERROR: incorrect status at %d\n", i);
01155 abort();
01156 }
01157 }
01158 printf("PASSED\n");
01159
01160
01161 printf(" Testing convert: UNSIGNED 64 INT -> UNSIGNED 8 INT : ");
01162
01163 for (i=0; i<num_cool_64_ints; i++)
01164 {
01165 act_result[i] = (UINT64)(UINT8)(*(UINT64 *)&cool_64_ints[i]);
01166 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01167
01168 if (*(UINT64 *)&cool_64_ints[i] !=
01169 (UINT64)(UINT8)*(UINT64 *)&cool_64_ints[i])
01170 {
01171 act_status[i] |= AR_STAT_OVERFLOW;
01172 }
01173
01174 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint8_artype,
01175 (AR_DATA *)&cool_64_ints[i], &uint64_artype);
01176
01177 if (*(SINT64 *)&test_result[i] != act_result[i])
01178 {
01179 printf(" ERROR: incorrect result at %d\n", i);
01180 abort();
01181 }
01182
01183 if (act_status[i] != test_status[i])
01184 {
01185 printf(" ERROR: incorrect status at %d\n", i);
01186 abort();
01187 }
01188 }
01189 printf("PASSED\n");
01190
01191
01192 printf(" Testing convert: UNSIGNED 64 INT -> SIGNED 8 INT : ");
01193
01194 for (i=0; i<num_cool_64_ints; i++)
01195 {
01196 act_result[i] = (*(UINT64 *)&cool_64_ints[i]) & 0xff;
01197 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01198 if ((SINT8)(*(UINT64 *)&cool_64_ints[i]) < 0) {
01199 act_status[i] |= AR_STAT_NEGATIVE;
01200 }
01201
01202 if (((SINT8)*(UINT64 *)&cool_64_ints[i] < 0) ^
01203 ( *(UINT64 *)&cool_64_ints[i] < 0))
01204 {
01205 act_status[i] |= AR_STAT_OVERFLOW;
01206 }
01207 else if (*(UINT64 *)&cool_64_ints[i] !=
01208 (UINT64)(SINT8)*(UINT64 *)&cool_64_ints[i])
01209 {
01210 act_status[i] |= AR_STAT_OVERFLOW;
01211 }
01212
01213 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint8_artype,
01214 (AR_DATA *)&cool_64_ints[i], &uint64_artype);
01215
01216 if (*(SINT64 *)&test_result[i] != act_result[i])
01217 {
01218 printf(" ERROR: incorrect result at %d\n", i);
01219 abort();
01220 }
01221
01222 if (act_status[i] != test_status[i])
01223 {
01224 printf(" ERROR: incorrect status at %d\n", i);
01225 abort();
01226 }
01227 }
01228 printf("PASSED\n");
01229 }
01230
01231
01232 test_64_S()
01233 {
01234 int i;
01235
01236
01237 printf(" Testing convert: SIGNED 64 INT -> UNSIGNED 64 INT : ");
01238
01239 for (i=0; i<num_cool_64_ints; i++)
01240 {
01241 act_result[i] = (UINT64)(UINT64)(*(SINT64 *)&cool_64_ints[i]);
01242 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01243
01244 if (((UINT64)*(SINT64 *)&cool_64_ints[i] < 0) ^
01245 ( *(SINT64 *)&cool_64_ints[i] < 0))
01246 {
01247 act_status[i] |= AR_STAT_SEMIVALID;
01248 if((cool_64_ints[i].part1 & 0x7fff) || cool_64_ints[i].part2 ||
01249 cool_64_ints[i].part3 || cool_64_ints[i].part4)
01250 act_status[i] |= AR_STAT_OVERFLOW;
01251 }
01252 else if (*(SINT64 *)&cool_64_ints[i] !=
01253 (SINT64)(UINT64)*(SINT64 *)&cool_64_ints[i])
01254 {
01255 act_status[i] |= AR_STAT_OVERFLOW;
01256 }
01257
01258 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint64_artype,
01259 (AR_DATA *)&cool_64_ints[i], &sint64_artype);
01260
01261 if (*(SINT64 *)&test_result[i] != act_result[i])
01262 {
01263 printf(" ERROR: incorrect result at %d\n", i);
01264 abort();
01265 }
01266
01267 if (act_status[i] != test_status[i])
01268 {
01269 printf(" ERROR: incorrect status at %d\n", i);
01270 abort();
01271 }
01272 }
01273 printf("PASSED\n");
01274
01275
01276 printf(" Testing convert: SIGNED 64 INT -> SIGNED 64 INT : ");
01277
01278 for (i=0; i<num_cool_64_ints; i++)
01279 {
01280 act_result[i] = (UINT64)(SINT64)(*(SINT64 *)&cool_64_ints[i]);
01281 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01282 if ((SINT64)(*(SINT64 *)&cool_64_ints[i]) < 0) {
01283 act_status[i] |= AR_STAT_NEGATIVE;
01284 }
01285
01286 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint64_artype,
01287 (AR_DATA *)&cool_64_ints[i], &sint64_artype);
01288
01289 if (*(SINT64 *)&test_result[i] != act_result[i])
01290 {
01291 printf(" ERROR: incorrect result at %d\n", i);
01292 abort();
01293 }
01294
01295 if (act_status[i] != test_status[i])
01296 {
01297 printf(" ERROR: incorrect status at %d\n", i);
01298 abort();
01299 }
01300 }
01301 printf("PASSED\n");
01302
01303
01304 printf(" Testing convert: SIGNED 64 INT -> SIGNED 46 INT : ");
01305
01306 for (i=0; i<num_cool_64_ints; i++)
01307 {
01308 act_result[i] = (UINT64)(SINT46)(*(SINT64 *)&cool_64_ints[i]);
01309 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01310 if ((SINT46)(*(SINT64 *)&cool_64_ints[i]) < 0) {
01311 act_status[i] |= AR_STAT_NEGATIVE;
01312 }
01313
01314 if (INT_OVERFLOWS_46_BITS(act_result[i]))
01315 {
01316 act_status[i] |= AR_STAT_OVERFLOW;
01317 }
01318
01319 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint46_artype,
01320 (AR_DATA *)&cool_64_ints[i], &sint64_artype);
01321
01322 if (*(SINT64 *)&test_result[i] != act_result[i])
01323 {
01324 printf(" ERROR: incorrect result at %d\n", i);
01325 abort();
01326 }
01327
01328 if (act_status[i] != test_status[i])
01329 {
01330 printf(" ERROR: incorrect status at %d\n", i);
01331 abort();
01332 }
01333 }
01334 printf("PASSED\n");
01335
01336
01337 printf(" Testing convert: SIGNED 64 INT -> UNSIGNED 32 INT : ");
01338
01339 for (i=0; i<num_cool_64_ints; i++)
01340 {
01341 act_result[i] = (UINT64)(UINT32)(*(SINT64 *)&cool_64_ints[i]);
01342 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01343
01344 if (((UINT32)*(SINT64 *)&cool_64_ints[i] < 0) ^
01345 ( *(SINT64 *)&cool_64_ints[i] < 0))
01346 {
01347 act_status[i] |= AR_STAT_OVERFLOW;
01348 }
01349 else if (*(SINT64 *)&cool_64_ints[i] !=
01350 (SINT64)(UINT32)*(SINT64 *)&cool_64_ints[i])
01351 {
01352 act_status[i] |= AR_STAT_OVERFLOW;
01353 }
01354
01355 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint32_artype,
01356 (AR_DATA *)&cool_64_ints[i], &sint64_artype);
01357
01358 if (*(SINT64 *)&test_result[i] != act_result[i])
01359 {
01360 printf(" ERROR: incorrect result at %d\n", i);
01361 abort();
01362 }
01363
01364 if (act_status[i] != test_status[i])
01365 {
01366 printf(" ERROR: incorrect status at %d\n", i);
01367 abort();
01368 }
01369 }
01370 printf("PASSED\n");
01371
01372
01373 printf(" Testing convert: SIGNED 64 INT -> SIGNED 32 INT : ");
01374
01375 for (i=0; i<num_cool_64_ints; i++)
01376 {
01377 act_result[i] = (*(SINT64 *)&cool_64_ints[i]) & 0xffffffff;
01378 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01379 if ((SINT32)(*(SINT64 *)&cool_64_ints[i]) < 0) {
01380 act_status[i] |= AR_STAT_NEGATIVE;
01381 }
01382
01383 if (((SINT32)*(SINT64 *)&cool_64_ints[i] < 0) ^
01384 ( *(SINT64 *)&cool_64_ints[i] < 0))
01385 {
01386 act_status[i] |= AR_STAT_OVERFLOW;
01387 }
01388 else if (*(SINT64 *)&cool_64_ints[i] !=
01389 (SINT64)(SINT32)*(SINT64 *)&cool_64_ints[i])
01390 {
01391 act_status[i] |= AR_STAT_OVERFLOW;
01392 }
01393
01394 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint32_artype,
01395 (AR_DATA *)&cool_64_ints[i], &sint64_artype);
01396
01397 if (*(SINT64 *)&test_result[i] != act_result[i])
01398 {
01399 printf(" ERROR: incorrect result at %d\n", i);
01400 abort();
01401 }
01402
01403 if (act_status[i] != test_status[i])
01404 {
01405 printf(" ERROR: incorrect status at %d\n", i);
01406 abort();
01407 }
01408 }
01409 printf("PASSED\n");
01410
01411
01412 printf(" Testing convert: SIGNED 64 INT -> UNSIGNED 24 INT : ");
01413
01414 for (i=0; i<num_cool_64_ints; i++)
01415 {
01416 act_result[i] = (*(SINT64 *)&cool_64_ints[i]) & 0xffffff;
01417 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01418
01419 if (0 ^ (*(SINT64 *)&cool_64_ints[i] < 0))
01420 {
01421
01422 act_status[i] |= AR_STAT_OVERFLOW;
01423 }
01424 else if (*(SINT64 *)&cool_64_ints[i] != (SINT64)act_result[i])
01425 {
01426 act_status[i] |= AR_STAT_OVERFLOW;
01427 }
01428
01429 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint24_artype,
01430 (AR_DATA *)&cool_64_ints[i], &sint64_artype);
01431
01432 if (*(SINT64 *)&test_result[i] != act_result[i])
01433 {
01434 printf(" ERROR: incorrect result at %d\n", i);
01435 abort();
01436 }
01437
01438 if (act_status[i] != test_status[i])
01439 {
01440 printf(" ERROR: incorrect status at %d\n", i);
01441 abort();
01442 }
01443 }
01444 printf("PASSED\n");
01445
01446
01447 printf(" Testing convert: SIGNED 64 INT -> SIGNED 24 INT : ");
01448
01449 for (i=0; i<num_cool_64_ints; i++)
01450 {
01451 act_result[i] = (*(SINT64 *)&cool_64_ints[i]) & 0xffffff;
01452 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01453 if ((*(SINT64 *)&cool_64_ints[i]) & 0x800000) {
01454 act_status[i] |= AR_STAT_NEGATIVE;
01455 }
01456
01457 if (((*(SINT64 *)&cool_64_ints[i] & 0x800000) != 0) ^
01458 (*(SINT64 *)&cool_64_ints[i] < 0))
01459 {
01460 act_status[i] |= AR_STAT_OVERFLOW;
01461 }
01462 else if (*(SINT64 *)&cool_64_ints[i] !=
01463 ((act_result[i] & 0x800000) ?
01464 act_result[i] | 0xffffffffff000000 :
01465 act_result[i]))
01466 {
01467 act_status[i] |= AR_STAT_OVERFLOW;
01468 }
01469
01470 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint24_artype,
01471 (AR_DATA *)&cool_64_ints[i], &sint64_artype);
01472
01473 if (*(SINT64 *)&test_result[i] != act_result[i])
01474 {
01475 printf(" ERROR: incorrect result at %d\n", i);
01476 abort();
01477 }
01478
01479 if (act_status[i] != test_status[i])
01480 {
01481 printf(" ERROR: incorrect status at %d\n", i);
01482 abort();
01483 }
01484 }
01485 printf("PASSED\n");
01486
01487
01488 printf(" Testing convert: SIGNED 64 INT -> UNSIGNED 8 INT : ");
01489
01490 for (i=0; i<num_cool_64_ints; i++)
01491 {
01492 act_result[i] = (UINT64)(UINT8)(*(SINT64 *)&cool_64_ints[i]);
01493 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01494
01495 if (((UINT8)*(SINT64 *)&cool_64_ints[i] < 0) ^
01496 ( *(SINT64 *)&cool_64_ints[i] < 0))
01497 {
01498 act_status[i] |= AR_STAT_OVERFLOW;
01499 }
01500 else if (*(SINT64 *)&cool_64_ints[i] !=
01501 (SINT64)(UINT8)*(SINT64 *)&cool_64_ints[i])
01502 {
01503 act_status[i] |= AR_STAT_OVERFLOW;
01504 }
01505
01506 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint8_artype,
01507 (AR_DATA *)&cool_64_ints[i], &sint64_artype);
01508
01509 if (*(SINT64 *)&test_result[i] != act_result[i])
01510 {
01511 printf(" ERROR: incorrect result at %d\n", i);
01512 abort();
01513 }
01514
01515 if (act_status[i] != test_status[i])
01516 {
01517 printf(" ERROR: incorrect status at %d\n", i);
01518 abort();
01519 }
01520 }
01521 printf("PASSED\n");
01522
01523
01524 printf(" Testing convert: SIGNED 64 INT -> SIGNED 8 INT : ");
01525
01526 for (i=0; i<num_cool_64_ints; i++)
01527 {
01528 act_result[i] = (*(SINT64 *)&cool_64_ints[i]) & 0xff;
01529 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01530 if ((SINT8)(*(SINT64 *)&cool_64_ints[i]) < 0) {
01531 act_status[i] |= AR_STAT_NEGATIVE;
01532 }
01533
01534 if (((SINT8)*(SINT64 *)&cool_64_ints[i] < 0) ^
01535 ( *(SINT64 *)&cool_64_ints[i] < 0))
01536 {
01537 act_status[i] |= AR_STAT_OVERFLOW;
01538 }
01539 else if (*(SINT64 *)&cool_64_ints[i] !=
01540 (SINT64)(SINT8)*(SINT64 *)&cool_64_ints[i])
01541 {
01542 act_status[i] |= AR_STAT_OVERFLOW;
01543 }
01544
01545 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint8_artype,
01546 (AR_DATA *)&cool_64_ints[i], &sint64_artype);
01547
01548 if (*(SINT64 *)&test_result[i] != act_result[i])
01549 {
01550 printf(" ERROR: incorrect result at %d\n", i);
01551 abort();
01552 }
01553
01554 if (act_status[i] != test_status[i])
01555 {
01556 printf(" ERROR: incorrect status at %d\n", i);
01557 abort();
01558 }
01559 }
01560 printf("PASSED\n");
01561 }
01562
01563
01564 test_46_S()
01565 {
01566 int i;
01567
01568
01569 printf(" Testing convert: SIGNED 46 INT -> UNSIGNED 64 INT : ");
01570
01571 for (i=0; i<num_cool_64_ints; i++)
01572 {
01573 act_result[i] = (UINT64)(UINT64)(*(SINT64 *)&cool_64_ints[i]);
01574 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01575
01576 if (((UINT64)*(SINT64 *)&cool_64_ints[i] < 0) ^
01577 ( *(SINT64 *)&cool_64_ints[i] < 0))
01578 {
01579 act_status[i] |= AR_STAT_SEMIVALID;
01580 if((cool_64_ints[i].part1 & 0x7fff) || cool_64_ints[i].part2 ||
01581 cool_64_ints[i].part3 || cool_64_ints[i].part4)
01582 act_status[i] |= AR_STAT_OVERFLOW;
01583 }
01584 else if (*(SINT64 *)&cool_64_ints[i] !=
01585 (SINT64)(UINT64)*(SINT64 *)&cool_64_ints[i])
01586 {
01587 act_status[i] |= AR_STAT_OVERFLOW;
01588 }
01589
01590 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint64_artype,
01591 (AR_DATA *)&cool_64_ints[i], &sint46_artype);
01592
01593 if (*(SINT64 *)&test_result[i] != act_result[i])
01594 {
01595 printf(" ERROR: incorrect result at %d\n", i);
01596 abort();
01597 }
01598
01599 if (act_status[i] != test_status[i])
01600 {
01601 printf(" ERROR: incorrect status at %d\n", i);
01602 abort();
01603 }
01604 }
01605 printf("PASSED\n");
01606
01607
01608 printf(" Testing convert: SIGNED 46 INT -> SIGNED 64 INT : ");
01609
01610 for (i=0; i<num_cool_64_ints; i++)
01611 {
01612 act_result[i] = (UINT64)(SINT64)(*(SINT64 *)&cool_64_ints[i]);
01613 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01614 if ((SINT64)(*(SINT64 *)&cool_64_ints[i]) < 0) {
01615 act_status[i] |= AR_STAT_NEGATIVE;
01616 }
01617
01618 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint64_artype,
01619 (AR_DATA *)&cool_64_ints[i], &sint46_artype);
01620
01621 if (*(SINT64 *)&test_result[i] != act_result[i])
01622 {
01623 printf(" ERROR: incorrect result at %d\n", i);
01624 abort();
01625 }
01626
01627 if (act_status[i] != test_status[i])
01628 {
01629 printf(" ERROR: incorrect status at %d\n", i);
01630 abort();
01631 }
01632 }
01633 printf("PASSED\n");
01634
01635
01636 printf(" Testing convert: SIGNED 46 INT -> SIGNED 46 INT : ");
01637
01638 for (i=0; i<num_cool_64_ints; i++)
01639 {
01640 act_result[i] = (UINT64)(SINT46)(*(SINT64 *)&cool_64_ints[i]);
01641 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01642 if ((SINT46)(*(SINT64 *)&cool_64_ints[i]) < 0) {
01643 act_status[i] |= AR_STAT_NEGATIVE;
01644 }
01645
01646 if (INT_OVERFLOWS_46_BITS(act_result[i]))
01647 {
01648 act_status[i] |= AR_STAT_OVERFLOW;
01649 }
01650
01651 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint46_artype,
01652 (AR_DATA *)&cool_64_ints[i], &sint46_artype);
01653
01654 if (*(SINT64 *)&test_result[i] != act_result[i])
01655 {
01656 printf(" ERROR: incorrect result at %d\n", i);
01657 abort();
01658 }
01659
01660 if (act_status[i] != test_status[i])
01661 {
01662 printf(" ERROR: incorrect status at %d\n", i);
01663 abort();
01664 }
01665 }
01666 printf("PASSED\n");
01667
01668
01669 printf(" Testing convert: SIGNED 46 INT -> UNSIGNED 32 INT : ");
01670
01671 for (i=0; i<num_cool_64_ints; i++)
01672 {
01673 act_result[i] = (UINT64)(UINT32)(*(SINT64 *)&cool_64_ints[i]);
01674 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01675
01676 if (((UINT32)*(SINT64 *)&cool_64_ints[i] < 0) ^
01677 ( *(SINT64 *)&cool_64_ints[i] < 0))
01678 {
01679 act_status[i] |= AR_STAT_OVERFLOW;
01680 }
01681 else if (*(SINT64 *)&cool_64_ints[i] !=
01682 (SINT64)(UINT32)*(SINT64 *)&cool_64_ints[i])
01683 {
01684 act_status[i] |= AR_STAT_OVERFLOW;
01685 }
01686
01687 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint32_artype,
01688 (AR_DATA *)&cool_64_ints[i], &sint46_artype);
01689
01690 if (*(SINT64 *)&test_result[i] != act_result[i])
01691 {
01692 printf(" ERROR: incorrect result at %d\n", i);
01693 abort();
01694 }
01695
01696 if (act_status[i] != test_status[i])
01697 {
01698 printf(" ERROR: incorrect status at %d\n", i);
01699 abort();
01700 }
01701 }
01702 printf("PASSED\n");
01703
01704
01705 printf(" Testing convert: SIGNED 46 INT -> SIGNED 32 INT : ");
01706
01707 for (i=0; i<num_cool_64_ints; i++)
01708 {
01709 act_result[i] = (*(SINT64 *)&cool_64_ints[i]) &0xffffffff;
01710 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01711 if ((SINT32)(*(SINT64 *)&cool_64_ints[i]) < 0) {
01712 act_status[i] |= AR_STAT_NEGATIVE;
01713 }
01714
01715 if (((SINT32)*(SINT64 *)&cool_64_ints[i] < 0) ^
01716 ( *(SINT64 *)&cool_64_ints[i] < 0))
01717 {
01718 act_status[i] |= AR_STAT_OVERFLOW;
01719 }
01720 else if (*(SINT64 *)&cool_64_ints[i] !=
01721 (SINT64)(SINT32)*(SINT64 *)&cool_64_ints[i])
01722 {
01723 act_status[i] |= AR_STAT_OVERFLOW;
01724 }
01725
01726 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint32_artype,
01727 (AR_DATA *)&cool_64_ints[i], &sint46_artype);
01728
01729 if (*(SINT64 *)&test_result[i] != act_result[i])
01730 {
01731 printf(" ERROR: incorrect result at %d\n", i);
01732 abort();
01733 }
01734
01735 if (act_status[i] != test_status[i])
01736 {
01737 printf(" ERROR: incorrect status at %d\n", i);
01738 abort();
01739 }
01740 }
01741 printf("PASSED\n");
01742
01743
01744 printf(" Testing convert: SIGNED 46 INT -> UNSIGNED 24 INT : ");
01745
01746 for (i=0; i<num_cool_64_ints; i++)
01747 {
01748 act_result[i] = (*(SINT64 *)&cool_64_ints[i]) & 0xffffff;
01749 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01750
01751 if (0 ^ (*(SINT64 *)&cool_64_ints[i] < 0))
01752 {
01753
01754 act_status[i] |= AR_STAT_OVERFLOW;
01755 }
01756 else if (*(SINT64 *)&cool_64_ints[i] != (SINT64)act_result[i])
01757 {
01758 act_status[i] |= AR_STAT_OVERFLOW;
01759 }
01760
01761 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint24_artype,
01762 (AR_DATA *)&cool_64_ints[i], &sint46_artype);
01763
01764 if (*(SINT64 *)&test_result[i] != act_result[i])
01765 {
01766 printf(" ERROR: incorrect result at %d\n", i);
01767 abort();
01768 }
01769
01770 if (act_status[i] != test_status[i])
01771 {
01772 printf(" ERROR: incorrect status at %d\n", i);
01773 abort();
01774 }
01775 }
01776 printf("PASSED\n");
01777
01778
01779 printf(" Testing convert: SIGNED 46 INT -> SIGNED 24 INT : ");
01780
01781 for (i=0; i<num_cool_64_ints; i++)
01782 {
01783 act_result[i] = (*(SINT64 *)&cool_64_ints[i]) & 0xffffff;
01784 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01785 if ((*(SINT64 *)&cool_64_ints[i]) & 0x800000) {
01786 act_status[i] |= AR_STAT_NEGATIVE;
01787 }
01788
01789 if (((*(SINT64 *)&cool_64_ints[i] & 0x800000) != 0) ^
01790 (*(SINT64 *)&cool_64_ints[i] < 0))
01791 {
01792 act_status[i] |= AR_STAT_OVERFLOW;
01793 }
01794 else if (*(SINT64 *)&cool_64_ints[i] !=
01795 ((act_result[i] & 0x800000) ?
01796 act_result[i] | 0xffffffffff000000 :
01797 act_result[i]))
01798 {
01799 act_status[i] |= AR_STAT_OVERFLOW;
01800 }
01801
01802 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint24_artype,
01803 (AR_DATA *)&cool_64_ints[i], &sint46_artype);
01804
01805 if (*(SINT64 *)&test_result[i] != act_result[i])
01806 {
01807 printf(" ERROR: incorrect result at %d\n", i);
01808 abort();
01809 }
01810
01811 if (act_status[i] != test_status[i])
01812 {
01813 printf(" ERROR: incorrect status at %d\n", i);
01814 abort();
01815 }
01816 }
01817 printf("PASSED\n");
01818
01819
01820 printf(" Testing convert: SIGNED 46 INT -> UNSIGNED 8 INT : ");
01821
01822 for (i=0; i<num_cool_64_ints; i++)
01823 {
01824 act_result[i] = (UINT64)(UINT8)(*(SINT64 *)&cool_64_ints[i]);
01825 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01826
01827 if (((UINT8)*(SINT64 *)&cool_64_ints[i] < 0) ^
01828 ( *(SINT64 *)&cool_64_ints[i] < 0))
01829 {
01830 act_status[i] |= AR_STAT_OVERFLOW;
01831 }
01832 else if (*(SINT64 *)&cool_64_ints[i] !=
01833 (SINT64)(UINT8)*(SINT64 *)&cool_64_ints[i])
01834 {
01835 act_status[i] |= AR_STAT_OVERFLOW;
01836 }
01837
01838 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint8_artype,
01839 (AR_DATA *)&cool_64_ints[i], &sint46_artype);
01840
01841 if (*(SINT64 *)&test_result[i] != act_result[i])
01842 {
01843 printf(" ERROR: incorrect result at %d\n", i);
01844 abort();
01845 }
01846
01847 if (act_status[i] != test_status[i])
01848 {
01849 printf(" ERROR: incorrect status at %d\n", i);
01850 abort();
01851 }
01852 }
01853 printf("PASSED\n");
01854
01855
01856 printf(" Testing convert: SIGNED 46 INT -> SIGNED 8 INT : ");
01857
01858 for (i=0; i<num_cool_64_ints; i++)
01859 {
01860 act_result[i] = (*(SINT64 *)&cool_64_ints[i]) & 0xff;
01861 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01862 if ((SINT8)(*(SINT64 *)&cool_64_ints[i]) < 0) {
01863 act_status[i] |= AR_STAT_NEGATIVE;
01864 }
01865
01866 if (((SINT8)*(SINT64 *)&cool_64_ints[i] < 0) ^
01867 ( *(SINT64 *)&cool_64_ints[i] < 0))
01868 {
01869 act_status[i] |= AR_STAT_OVERFLOW;
01870 }
01871 else if (*(SINT64 *)&cool_64_ints[i] !=
01872 (SINT64)(SINT8)*(SINT64 *)&cool_64_ints[i])
01873 {
01874 act_status[i] |= AR_STAT_OVERFLOW;
01875 }
01876
01877 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint8_artype,
01878 (AR_DATA *)&cool_64_ints[i], &sint46_artype);
01879
01880 if (*(SINT64 *)&test_result[i] != act_result[i])
01881 {
01882 printf(" ERROR: incorrect result at %d\n", i);
01883 abort();
01884 }
01885
01886 if (act_status[i] != test_status[i])
01887 {
01888 printf(" ERROR: incorrect status at %d\n", i);
01889 abort();
01890 }
01891 }
01892 printf("PASSED\n");
01893 }
01894
01895
01896 test_32_U()
01897 {
01898 int i;
01899
01900
01901 printf(" Testing convert: UNSIGNED 32 INT -> UNSIGNED 64 INT : ");
01902
01903 for (i=0; i<num_cool_32_ints; i++)
01904 {
01905 act_result[i] = (UINT64)(UINT64)(*(UINT32 *)&cool_32_ints[i]);
01906 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01907
01908 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint64_artype,
01909 (AR_DATA *)&cool_32_ints[i], &uint32_artype);
01910
01911 if (*(SINT64 *)&test_result[i] != act_result[i])
01912 {
01913 printf(" ERROR: incorrect result at %d\n", i);
01914 abort();
01915 }
01916
01917 if (act_status[i] != test_status[i])
01918 {
01919 printf(" ERROR: incorrect status at %d\n", i);
01920 abort();
01921 }
01922 }
01923 printf("PASSED\n");
01924
01925
01926 printf(" Testing convert: UNSIGNED 32 INT -> SIGNED 64 INT : ");
01927
01928 for (i=0; i<num_cool_32_ints; i++)
01929 {
01930 act_result[i] = (UINT64)(SINT64)(*(UINT32 *)&cool_32_ints[i]);
01931 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01932
01933 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint64_artype,
01934 (AR_DATA *)&cool_32_ints[i], &uint32_artype);
01935
01936 if (*(SINT64 *)&test_result[i] != act_result[i])
01937 {
01938 printf(" ERROR: incorrect result at %d\n", i);
01939 abort();
01940 }
01941
01942 if (act_status[i] != test_status[i])
01943 {
01944 printf(" ERROR: incorrect status at %d\n", i);
01945 abort();
01946 }
01947 }
01948 printf("PASSED\n");
01949
01950
01951 printf(" Testing convert: UNSIGNED 32 INT -> SIGNED 46 INT : ");
01952
01953 for (i=0; i<num_cool_32_ints; i++)
01954 {
01955 act_result[i] = (UINT64)(SINT46)(*(UINT32 *)&cool_32_ints[i]);
01956 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01957
01958 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint46_artype,
01959 (AR_DATA *)&cool_32_ints[i], &uint32_artype);
01960
01961 if (*(SINT64 *)&test_result[i] != act_result[i])
01962 {
01963 printf(" ERROR: incorrect result at %d\n", i);
01964 abort();
01965 }
01966
01967 if (act_status[i] != test_status[i])
01968 {
01969 printf(" ERROR: incorrect status at %d\n", i);
01970 abort();
01971 }
01972 }
01973 printf("PASSED\n");
01974
01975
01976 printf(" Testing convert: UNSIGNED 32 INT -> UNSIGNED 32 INT : ");
01977
01978 for (i=0; i<num_cool_32_ints; i++)
01979 {
01980 act_result[i] = (UINT64)(UINT32)(*(UINT32 *)&cool_32_ints[i]);
01981 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
01982
01983 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint32_artype,
01984 (AR_DATA *)&cool_32_ints[i], &uint32_artype);
01985
01986 if (*(SINT64 *)&test_result[i] != act_result[i])
01987 {
01988 printf(" ERROR: incorrect result at %d\n", i);
01989 abort();
01990 }
01991
01992 if (act_status[i] != test_status[i])
01993 {
01994 printf(" ERROR: incorrect status at %d\n", i);
01995 abort();
01996 }
01997 }
01998 printf("PASSED\n");
01999
02000
02001 printf(" Testing convert: UNSIGNED 32 INT -> SIGNED 32 INT : ");
02002
02003 for (i=0; i<num_cool_32_ints; i++)
02004 {
02005 act_result[i] = (*(UINT32 *)&cool_32_ints[i]) & 0xffffffff;
02006 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02007
02008 if (cool_32_ints[i].part3 & 0x8000) {
02009 act_status[i] |= AR_STAT_NEGATIVE | AR_STAT_SEMIVALID;
02010 if((cool_32_ints[i].part3 & 0x7fff) || cool_32_ints[i].part4)
02011 act_status[i] |= AR_STAT_OVERFLOW;
02012 }
02013
02014 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint32_artype,
02015 (AR_DATA *)&cool_32_ints[i], &uint32_artype);
02016
02017 if (*(SINT64 *)&test_result[i] != act_result[i])
02018 {
02019 printf(" ERROR: incorrect result at %d\n", i);
02020 abort();
02021 }
02022
02023 if (act_status[i] != test_status[i])
02024 {
02025 printf(" ERROR: incorrect status at %d\n", i);
02026 abort();
02027 }
02028 }
02029 printf("PASSED\n");
02030
02031
02032 printf(" Testing convert: UNSIGNED 32 INT -> UNSIGNED 24 INT : ");
02033
02034 for (i=0; i<num_cool_32_ints; i++)
02035 {
02036 act_result[i] = (*(UINT32 *)&cool_32_ints[i]) & 0xffffff;
02037 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02038
02039 if (0 ^ (*(UINT32 *)&cool_32_ints[i] < 0))
02040 {
02041
02042 act_status[i] |= AR_STAT_OVERFLOW;
02043 }
02044 else if (*(UINT32 *)&cool_32_ints[i] != (UINT64)act_result[i])
02045 {
02046 act_status[i] |= AR_STAT_OVERFLOW;
02047 }
02048
02049 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint24_artype,
02050 (AR_DATA *)&cool_32_ints[i], &uint32_artype);
02051
02052 if (*(SINT64 *)&test_result[i] != act_result[i])
02053 {
02054 printf(" ERROR: incorrect result at %d\n", i);
02055 abort();
02056 }
02057
02058 if (act_status[i] != test_status[i])
02059 {
02060 printf(" ERROR: incorrect status at %d\n", i);
02061 abort();
02062 }
02063 }
02064 printf("PASSED\n");
02065
02066
02067 printf(" Testing convert: UNSIGNED 32 INT -> SIGNED 24 INT : ");
02068
02069 for (i=0; i<num_cool_32_ints; i++)
02070 {
02071 act_result[i] = (*(UINT32 *)&cool_32_ints[i]) & 0xffffff;
02072 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02073 if ((*(UINT32 *)&cool_32_ints[i]) & 0x800000) {
02074 act_status[i] |= AR_STAT_NEGATIVE;
02075 }
02076
02077 if (((*(UINT32 *)&cool_32_ints[i] & 0x800000) != 0) ^
02078 (*(UINT32 *)&cool_32_ints[i] < 0))
02079 {
02080 act_status[i] |= AR_STAT_OVERFLOW;
02081 }
02082 else if (*(UINT32 *)&cool_32_ints[i] !=
02083 ((act_result[i] & 0x800000) ?
02084 act_result[i] | 0xffffffffff000000 :
02085 act_result[i]))
02086 {
02087 act_status[i] |= AR_STAT_OVERFLOW;
02088 }
02089
02090 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint24_artype,
02091 (AR_DATA *)&cool_32_ints[i], &uint32_artype);
02092
02093 if (*(SINT64 *)&test_result[i] != act_result[i])
02094 {
02095 printf(" ERROR: incorrect result at %d\n", i);
02096 abort();
02097 }
02098
02099 if (act_status[i] != test_status[i])
02100 {
02101 printf(" ERROR: incorrect status at %d\n", i);
02102 abort();
02103 }
02104 }
02105 printf("PASSED\n");
02106
02107
02108 printf(" Testing convert: UNSIGNED 32 INT -> UNSIGNED 8 INT : ");
02109
02110 for (i=0; i<num_cool_32_ints; i++)
02111 {
02112 act_result[i] = (UINT64)(UINT8)(*(UINT32 *)&cool_32_ints[i]);
02113 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02114
02115 if (((UINT8)*(UINT32 *)&cool_32_ints[i] < 0) ^
02116 ( *(UINT32 *)&cool_32_ints[i] < 0))
02117 {
02118 act_status[i] |= AR_STAT_OVERFLOW;
02119 }
02120 else if (*(UINT32 *)&cool_32_ints[i] !=
02121 (UINT32)(UINT8)*(UINT32 *)&cool_32_ints[i])
02122 {
02123 act_status[i] |= AR_STAT_OVERFLOW;
02124 }
02125
02126 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint8_artype,
02127 (AR_DATA *)&cool_32_ints[i], &uint32_artype);
02128
02129 if (*(SINT64 *)&test_result[i] != act_result[i])
02130 {
02131 printf(" ERROR: incorrect result at %d\n", i);
02132 abort();
02133 }
02134
02135 if (act_status[i] != test_status[i])
02136 {
02137 printf(" ERROR: incorrect status at %d\n", i);
02138 abort();
02139 }
02140 }
02141 printf("PASSED\n");
02142
02143
02144 printf(" Testing convert: UNSIGNED 32 INT -> SIGNED 8 INT : ");
02145
02146 for (i=0; i<num_cool_32_ints; i++)
02147 {
02148 act_result[i] = (*(UINT32 *)&cool_32_ints[i]) & 0xff;
02149 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02150 if ((SINT8)(*(UINT32 *)&cool_32_ints[i]) < 0) {
02151 act_status[i] |= AR_STAT_NEGATIVE;
02152 }
02153
02154 if (((SINT8)*(UINT32 *)&cool_32_ints[i] < 0) ^
02155 ( *(UINT32 *)&cool_32_ints[i] < 0))
02156 {
02157 act_status[i] |= AR_STAT_OVERFLOW;
02158 }
02159 else if (*(UINT32 *)&cool_32_ints[i] !=
02160 (UINT32)(SINT8)*(UINT32 *)&cool_32_ints[i])
02161 {
02162 act_status[i] |= AR_STAT_OVERFLOW;
02163 }
02164
02165 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint8_artype,
02166 (AR_DATA *)&cool_32_ints[i], &uint32_artype);
02167
02168 if (*(SINT64 *)&test_result[i] != act_result[i])
02169 {
02170 printf(" ERROR: incorrect result at %d\n", i);
02171 abort();
02172 }
02173
02174 if (act_status[i] != test_status[i])
02175 {
02176 printf(" ERROR: incorrect status at %d\n", i);
02177 abort();
02178 }
02179 }
02180 printf("PASSED\n");
02181 }
02182
02183
02184 test_32_S()
02185 {
02186 int i;
02187
02188
02189 printf(" Testing convert: SIGNED 32 INT -> UNSIGNED 64 INT : ");
02190
02191 for (i=0; i<num_cool_32_ints; i++)
02192 {
02193 act_result[i] = (UINT64)(UINT64)(*(SINT32 *)&cool_32_ints[i]);
02194 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02195
02196 if (*(SINT32 *)&cool_32_ints[i] < 0)
02197 {
02198 act_status[i] |= AR_STAT_OVERFLOW;
02199 }
02200
02201 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint64_artype,
02202 (AR_DATA *)&cool_32_ints[i], &sint32_artype);
02203
02204 if (*(SINT64 *)&test_result[i] != act_result[i])
02205 {
02206 printf(" ERROR: incorrect result at %d\n", i);
02207 abort();
02208 }
02209
02210 if (act_status[i] != test_status[i])
02211 {
02212 printf(" ERROR: incorrect status at %d\n", i);
02213 abort();
02214 }
02215 }
02216 printf("PASSED\n");
02217
02218
02219 printf(" Testing convert: SIGNED 32 INT -> SIGNED 64 INT : ");
02220
02221 for (i=0; i<num_cool_32_ints; i++)
02222 {
02223 act_result[i] = (UINT64)(SINT64)(*(SINT32 *)&cool_32_ints[i]);
02224 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02225 if ((SINT64)(*(SINT32 *)&cool_32_ints[i]) < 0) {
02226 act_status[i] |= AR_STAT_NEGATIVE;
02227 }
02228
02229 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint64_artype,
02230 (AR_DATA *)&cool_32_ints[i], &sint32_artype);
02231
02232 if (*(SINT64 *)&test_result[i] != act_result[i])
02233 {
02234 printf(" ERROR: incorrect result at %d\n", i);
02235 abort();
02236 }
02237
02238 if (act_status[i] != test_status[i])
02239 {
02240 printf(" ERROR: incorrect status at %d\n", i);
02241 abort();
02242 }
02243 }
02244 printf("PASSED\n");
02245
02246
02247 printf(" Testing convert: SIGNED 32 INT -> SIGNED 46 INT : ");
02248
02249 for (i=0; i<num_cool_32_ints; i++)
02250 {
02251 act_result[i] = (UINT64)(SINT46)(*(SINT32 *)&cool_32_ints[i]);
02252 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02253 if ((SINT46)(*(SINT32 *)&cool_32_ints[i]) < 0) {
02254 act_status[i] |= AR_STAT_NEGATIVE;
02255 }
02256
02257 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint46_artype,
02258 (AR_DATA *)&cool_32_ints[i], &sint32_artype);
02259
02260 if (*(SINT64 *)&test_result[i] != act_result[i])
02261 {
02262 printf(" ERROR: incorrect result at %d\n", i);
02263 abort();
02264 }
02265
02266 if (act_status[i] != test_status[i])
02267 {
02268 printf(" ERROR: incorrect status at %d\n", i);
02269 abort();
02270 }
02271 }
02272 printf("PASSED\n");
02273
02274
02275 printf(" Testing convert: SIGNED 32 INT -> UNSIGNED 32 INT : ");
02276
02277 for (i=0; i<num_cool_32_ints; i++)
02278 {
02279 act_result[i] = (UINT64)(UINT32)(*(SINT32 *)&cool_32_ints[i]);
02280 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02281
02282 if (cool_32_ints[i].part3 & 0x8000)
02283 {
02284 act_status[i] |= AR_STAT_SEMIVALID;
02285 if((cool_32_ints[i].part3 & 0x7fff) || cool_32_ints[i].part4)
02286 act_status[i] |= AR_STAT_OVERFLOW;
02287 }
02288
02289 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint32_artype,
02290 (AR_DATA *)&cool_32_ints[i], &sint32_artype);
02291
02292 if (*(SINT64 *)&test_result[i] != act_result[i])
02293 {
02294 printf(" ERROR: incorrect result at %d\n", i);
02295 abort();
02296 }
02297
02298 if (act_status[i] != test_status[i])
02299 {
02300 printf(" ERROR: incorrect status at %d\n", i);
02301 abort();
02302 }
02303 }
02304 printf("PASSED\n");
02305
02306
02307 printf(" Testing convert: SIGNED 32 INT -> SIGNED 32 INT : ");
02308
02309 for (i=0; i<num_cool_32_ints; i++)
02310 {
02311 act_result[i] = (*(SINT32 *)&cool_32_ints[i]) &0xffffffff;
02312 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02313 if ((SINT32)(*(SINT32 *)&cool_32_ints[i]) < 0) {
02314 act_status[i] |= AR_STAT_NEGATIVE;
02315 }
02316
02317 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint32_artype,
02318 (AR_DATA *)&cool_32_ints[i], &sint32_artype);
02319
02320 if (*(SINT64 *)&test_result[i] != act_result[i])
02321 {
02322 printf(" ERROR: incorrect result at %d\n", i);
02323 abort();
02324 }
02325
02326 if (act_status[i] != test_status[i])
02327 {
02328 printf(" ERROR: incorrect status at %d\n", i);
02329 abort();
02330 }
02331 }
02332 printf("PASSED\n");
02333
02334
02335 printf(" Testing convert: SIGNED 32 INT -> UNSIGNED 24 INT : ");
02336
02337 for (i=0; i<num_cool_32_ints; i++)
02338 {
02339 act_result[i] = (*(SINT32 *)&cool_32_ints[i]) & 0xffffff;
02340 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02341
02342 if (0 ^ (*(SINT32 *)&cool_32_ints[i] < 0))
02343 {
02344
02345 act_status[i] |= AR_STAT_OVERFLOW;
02346 }
02347 else if (*(SINT32 *)&cool_32_ints[i] != (SINT64)act_result[i])
02348 {
02349 act_status[i] |= AR_STAT_OVERFLOW;
02350 }
02351
02352 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint24_artype,
02353 (AR_DATA *)&cool_32_ints[i], &sint32_artype);
02354
02355 if (*(SINT64 *)&test_result[i] != act_result[i])
02356 {
02357 printf(" ERROR: incorrect result at %d\n", i);
02358 abort();
02359 }
02360
02361 if (act_status[i] != test_status[i])
02362 {
02363 printf(" ERROR: incorrect status at %d\n", i);
02364 abort();
02365 }
02366 }
02367 printf("PASSED\n");
02368
02369
02370 printf(" Testing convert: SIGNED 32 INT -> SIGNED 24 INT : ");
02371
02372 for (i=0; i<num_cool_32_ints; i++)
02373 {
02374 act_result[i] = (*(SINT32 *)&cool_32_ints[i]) & 0xffffff;
02375 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02376 if ((*(SINT32 *)&cool_32_ints[i]) & 0x800000) {
02377 act_status[i] |= AR_STAT_NEGATIVE;
02378 }
02379
02380 if (((*(SINT32 *)&cool_32_ints[i] & 0x800000) != 0) ^
02381 (*(SINT32 *)&cool_32_ints[i] < 0))
02382 {
02383 act_status[i] |= AR_STAT_OVERFLOW;
02384 }
02385 else if (*(SINT32 *)&cool_32_ints[i] !=
02386 ((act_result[i] & 0x800000) ?
02387 act_result[i] | 0xffffffffff000000 :
02388 act_result[i]))
02389 {
02390 act_status[i] |= AR_STAT_OVERFLOW;
02391 }
02392
02393 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint24_artype,
02394 (AR_DATA *)&cool_32_ints[i], &sint32_artype);
02395
02396 if (*(SINT64 *)&test_result[i] != act_result[i])
02397 {
02398 printf(" ERROR: incorrect result at %d\n", i);
02399 abort();
02400 }
02401
02402 if (act_status[i] != test_status[i])
02403 {
02404 printf(" ERROR: incorrect status at %d\n", i);
02405 abort();
02406 }
02407 }
02408 printf("PASSED\n");
02409
02410
02411 printf(" Testing convert: SIGNED 32 INT -> UNSIGNED 8 INT : ");
02412
02413 for (i=0; i<num_cool_32_ints; i++)
02414 {
02415 act_result[i] = (UINT64)(UINT8)(*(SINT32 *)&cool_32_ints[i]);
02416 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02417
02418 if (((UINT8)*(SINT32 *)&cool_32_ints[i] < 0) ^
02419 ( *(SINT32 *)&cool_32_ints[i] < 0))
02420 {
02421 act_status[i] |= AR_STAT_OVERFLOW;
02422 }
02423 else if (*(SINT32 *)&cool_32_ints[i] !=
02424 (SINT32)(UINT8)*(SINT32 *)&cool_32_ints[i])
02425 {
02426 act_status[i] |= AR_STAT_OVERFLOW;
02427 }
02428
02429 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint8_artype,
02430 (AR_DATA *)&cool_32_ints[i], &sint32_artype);
02431
02432 if (*(SINT64 *)&test_result[i] != act_result[i])
02433 {
02434 printf(" ERROR: incorrect result at %d\n", i);
02435 abort();
02436 }
02437
02438 if (act_status[i] != test_status[i])
02439 {
02440 printf(" ERROR: incorrect status at %d\n", i);
02441 abort();
02442 }
02443 }
02444 printf("PASSED\n");
02445
02446
02447 printf(" Testing convert: SIGNED 32 INT -> SIGNED 8 INT : ");
02448
02449 for (i=0; i<num_cool_32_ints; i++)
02450 {
02451 act_result[i] = (*(SINT32 *)&cool_32_ints[i]) & 0xff;
02452 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02453 if ((SINT8)(*(SINT32 *)&cool_32_ints[i]) < 0) {
02454 act_status[i] |= AR_STAT_NEGATIVE;
02455 }
02456
02457 if (((SINT8)*(SINT32 *)&cool_32_ints[i] < 0) ^
02458 ( *(SINT32 *)&cool_32_ints[i] < 0))
02459 {
02460 act_status[i] |= AR_STAT_OVERFLOW;
02461 }
02462 else if (*(SINT32 *)&cool_32_ints[i] !=
02463 (SINT32)(SINT8)*(SINT32 *)&cool_32_ints[i])
02464 {
02465 act_status[i] |= AR_STAT_OVERFLOW;
02466 }
02467
02468 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint8_artype,
02469 (AR_DATA *)&cool_32_ints[i], &sint32_artype);
02470
02471 if (*(SINT64 *)&test_result[i] != act_result[i])
02472 {
02473 printf(" ERROR: incorrect result at %d\n", i);
02474 abort();
02475 }
02476
02477 if (act_status[i] != test_status[i])
02478 {
02479 printf(" ERROR: incorrect status at %d\n", i);
02480 abort();
02481 }
02482 }
02483 printf("PASSED\n");
02484 }
02485
02486
02487 test_24_U()
02488 {
02489 int i;
02490
02491
02492 printf(" Testing convert: UNSIGNED 24 INT -> UNSIGNED 64 INT : ");
02493
02494 for (i=0; i<num_cool_24_ints; i++)
02495 {
02496 act_result[i] = *(UINT64 *)&cool_24_ints[i];
02497 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02498
02499 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint64_artype,
02500 (AR_DATA *)&cool_24_ints[i], &uint24_artype);
02501
02502 if (*(SINT64 *)&test_result[i] != act_result[i])
02503 {
02504 printf(" ERROR: incorrect result at %d\n", i);
02505 abort();
02506 }
02507
02508 if (act_status[i] != test_status[i])
02509 {
02510 printf(" ERROR: incorrect status at %d\n", i);
02511 abort();
02512 }
02513 }
02514 printf("PASSED\n");
02515
02516
02517 printf(" Testing convert: UNSIGNED 24 INT -> SIGNED 64 INT : ");
02518
02519 for (i=0; i<num_cool_24_ints; i++)
02520 {
02521 act_result[i] = *(UINT64 *)&cool_24_ints[i];
02522 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02523
02524 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint64_artype,
02525 (AR_DATA *)&cool_24_ints[i], &uint24_artype);
02526
02527 if (*(SINT64 *)&test_result[i] != act_result[i])
02528 {
02529 printf(" ERROR: incorrect result at %d\n", i);
02530 abort();
02531 }
02532
02533 if (act_status[i] != test_status[i])
02534 {
02535 printf(" ERROR: incorrect status at %d\n", i);
02536 abort();
02537 }
02538 }
02539 printf("PASSED\n");
02540
02541
02542 printf(" Testing convert: UNSIGNED 24 INT -> SIGNED 46 INT : ");
02543
02544 for (i=0; i<num_cool_24_ints; i++)
02545 {
02546 act_result[i] = *(UINT64 *)&cool_24_ints[i];
02547 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02548
02549 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint46_artype,
02550 (AR_DATA *)&cool_24_ints[i], &uint24_artype);
02551
02552 if (*(SINT64 *)&test_result[i] != act_result[i])
02553 {
02554 printf(" ERROR: incorrect result at %d\n", i);
02555 abort();
02556 }
02557
02558 if (act_status[i] != test_status[i])
02559 {
02560 printf(" ERROR: incorrect status at %d\n", i);
02561 abort();
02562 }
02563 }
02564 printf("PASSED\n");
02565
02566
02567 printf(" Testing convert: UNSIGNED 24 INT -> UNSIGNED 32 INT : ");
02568
02569 for (i=0; i<num_cool_24_ints; i++)
02570 {
02571 act_result[i] = *(UINT64 *)&cool_24_ints[i];
02572 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02573
02574 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint32_artype,
02575 (AR_DATA *)&cool_24_ints[i], &uint24_artype);
02576
02577 if (*(SINT64 *)&test_result[i] != act_result[i])
02578 {
02579 printf(" ERROR: incorrect result at %d\n", i);
02580 abort();
02581 }
02582
02583 if (act_status[i] != test_status[i])
02584 {
02585 printf(" ERROR: incorrect status at %d\n", i);
02586 abort();
02587 }
02588 }
02589 printf("PASSED\n");
02590
02591
02592 printf(" Testing convert: UNSIGNED 24 INT -> SIGNED 32 INT : ");
02593
02594 for (i=0; i<num_cool_24_ints; i++)
02595 {
02596 act_result[i] = *(UINT64 *)&cool_24_ints[i];
02597 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02598
02599 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint32_artype,
02600 (AR_DATA *)&cool_24_ints[i], &uint24_artype);
02601
02602 if (*(SINT64 *)&test_result[i] != act_result[i])
02603 {
02604 printf(" ERROR: incorrect result at %d\n", i);
02605 abort();
02606 }
02607
02608 if (act_status[i] != test_status[i])
02609 {
02610 printf(" ERROR: incorrect status at %d\n", i);
02611 abort();
02612 }
02613 }
02614 printf("PASSED\n");
02615
02616
02617 printf(" Testing convert: UNSIGNED 24 INT -> UNSIGNED 24 INT : ");
02618
02619 for (i=0; i<num_cool_24_ints; i++)
02620 {
02621 act_result[i] = *(UINT64 *)&cool_24_ints[i];
02622 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02623
02624 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint24_artype,
02625 (AR_DATA *)&cool_24_ints[i], &uint24_artype);
02626
02627 if (*(SINT64 *)&test_result[i] != act_result[i])
02628 {
02629 printf(" ERROR: incorrect result at %d\n", i);
02630 abort();
02631 }
02632
02633 if (act_status[i] != test_status[i])
02634 {
02635 printf(" ERROR: incorrect status at %d\n", i);
02636 abort();
02637 }
02638 }
02639 printf("PASSED\n");
02640
02641
02642 printf(" Testing convert: UNSIGNED 24 INT -> SIGNED 24 INT : ");
02643
02644 for (i=0; i<num_cool_24_ints; i++)
02645 {
02646 act_result[i] = *(UINT64 *)&cool_24_ints[i];
02647 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02648
02649 if (act_result[i] & 0x800000)
02650 {
02651 act_status[i] |= AR_STAT_NEGATIVE | AR_STAT_SEMIVALID;
02652 if((cool_24_ints[i].part3 & 0x7f) || cool_24_ints[i].part4)
02653 act_status[i] |= AR_STAT_OVERFLOW;
02654 }
02655
02656 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint24_artype,
02657 (AR_DATA *)&cool_24_ints[i], &uint24_artype);
02658
02659 if (*(SINT64 *)&test_result[i] != act_result[i])
02660 {
02661 printf(" ERROR: incorrect result at %d\n", i);
02662 abort();
02663 }
02664
02665 if (act_status[i] != test_status[i])
02666 {
02667 printf(" ERROR: incorrect status at %d\n", i);
02668 abort();
02669 }
02670 }
02671 printf("PASSED\n");
02672
02673
02674 printf(" Testing convert: UNSIGNED 24 INT -> UNSIGNED 8 INT : ");
02675
02676 for (i=0; i<num_cool_24_ints; i++)
02677 {
02678 act_result[i] = *(UINT64 *)&cool_24_ints[i] & 0xff;
02679 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02680
02681 if (cool_24_ints[i].part3 || (cool_24_ints[i].part4 & 0xff00))
02682 {
02683 act_status[i] |= AR_STAT_OVERFLOW;
02684 }
02685
02686 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint8_artype,
02687 (AR_DATA *)&cool_24_ints[i], &uint24_artype);
02688
02689 if (*(SINT64 *)&test_result[i] != act_result[i])
02690 {
02691 printf(" ERROR: incorrect result at %d\n", i);
02692 abort();
02693 }
02694
02695 if (act_status[i] != test_status[i])
02696 {
02697 printf(" ERROR: incorrect status at %d\n", i);
02698 abort();
02699 }
02700 }
02701 printf("PASSED\n");
02702
02703
02704 printf(" Testing convert: UNSIGNED 24 INT -> SIGNED 8 INT : ");
02705
02706 for (i=0; i<num_cool_24_ints; i++)
02707 {
02708 act_result[i] = *(UINT64 *)&cool_24_ints[i] & 0xff;
02709 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02710
02711 if (act_result[i] & 0x80)
02712 {
02713 act_status[i] |= AR_STAT_NEGATIVE | AR_STAT_OVERFLOW;
02714 }
02715 else if (cool_24_ints[i].part3 || (cool_24_ints[i].part4 & 0xff00))
02716 {
02717 act_status[i] |= AR_STAT_OVERFLOW;
02718 }
02719
02720 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint8_artype,
02721 (AR_DATA *)&cool_24_ints[i], &uint24_artype);
02722
02723 if (*(SINT64 *)&test_result[i] != act_result[i])
02724 {
02725 printf(" ERROR: incorrect result at %d\n", i);
02726 abort();
02727 }
02728
02729 if (act_status[i] != test_status[i])
02730 {
02731 printf(" ERROR: incorrect status at %d\n", i);
02732 abort();
02733 }
02734 }
02735 printf("PASSED\n");
02736 }
02737
02738
02739 test_24_S()
02740 {
02741 int i;
02742
02743
02744 printf(" Testing convert: SIGNED 24 INT -> UNSIGNED 64 INT : ");
02745
02746 for (i=0; i<num_cool_24_ints; i++)
02747 {
02748 act_result[i] = *(UINT64 *)&cool_24_ints[i] | (cool_24_ints[i].part3 & 0x80 ? 0xffffffffff000000 : 0);
02749 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02750 if (act_result[i] & 0x800000)
02751 {
02752 act_status[i] |= AR_STAT_OVERFLOW;
02753 }
02754
02755 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint64_artype,
02756 (AR_DATA *)&cool_24_ints[i], &sint24_artype);
02757
02758 if (*(SINT64 *)&test_result[i] != act_result[i])
02759 {
02760 printf(" ERROR: incorrect result at %d\n", i);
02761 abort();
02762 }
02763
02764 if (act_status[i] != test_status[i])
02765 {
02766 printf(" ERROR: incorrect status at %d\n", i);
02767 abort();
02768 }
02769 }
02770 printf("PASSED\n");
02771
02772
02773 printf(" Testing convert: SIGNED 24 INT -> SIGNED 64 INT : ");
02774
02775 for (i=0; i<num_cool_24_ints; i++)
02776 {
02777 act_result[i] = *(UINT64 *)&cool_24_ints[i] | (cool_24_ints[i].part3 & 0x80 ? 0xffffffffff000000 : 0);
02778 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02779 if (*(SINT64 *)&act_result[i] < 0)
02780 {
02781 act_status[i] |= AR_STAT_NEGATIVE;
02782 }
02783
02784 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint64_artype,
02785 (AR_DATA *)&cool_24_ints[i], &sint24_artype);
02786
02787 if (*(SINT64 *)&test_result[i] != act_result[i])
02788 {
02789 printf(" ERROR: incorrect result at %d\n", i);
02790 abort();
02791 }
02792
02793 if (act_status[i] != test_status[i])
02794 {
02795 printf(" ERROR: incorrect status at %d\n", i);
02796 abort();
02797 }
02798 }
02799 printf("PASSED\n");
02800
02801
02802 printf(" Testing convert: SIGNED 24 INT -> SIGNED 46 INT : ");
02803
02804 for (i=0; i<num_cool_24_ints; i++)
02805 {
02806 act_result[i] = *(UINT64 *)&cool_24_ints[i] | (cool_24_ints[i].part3 & 0x80 ? 0xffffffffff000000 : 0);
02807 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02808 if (*(SINT46 *)&act_result[i] < 0)
02809 {
02810 act_status[i] |= AR_STAT_NEGATIVE;
02811 }
02812
02813 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint46_artype,
02814 (AR_DATA *)&cool_24_ints[i], &sint24_artype);
02815
02816 if (*(SINT64 *)&test_result[i] != act_result[i])
02817 {
02818 printf(" ERROR: incorrect result at %d\n", i);
02819 abort();
02820 }
02821
02822 if (act_status[i] != test_status[i])
02823 {
02824 printf(" ERROR: incorrect status at %d\n", i);
02825 abort();
02826 }
02827 }
02828 printf("PASSED\n");
02829
02830
02831 printf(" Testing convert: SIGNED 24 INT -> UNSIGNED 32 INT : ");
02832
02833 for (i=0; i<num_cool_24_ints; i++)
02834 {
02835 act_result[i] = *(UINT64 *)&cool_24_ints[i] | (cool_24_ints[i].part3 & 0x80 ? 0xff000000 : 0);
02836 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02837 if (act_result[i] & 0x800000)
02838 {
02839 act_status[i] |= AR_STAT_OVERFLOW;
02840 }
02841
02842 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint32_artype,
02843 (AR_DATA *)&cool_24_ints[i], &sint24_artype);
02844
02845 if (*(SINT64 *)&test_result[i] != act_result[i])
02846 {
02847 printf(" ERROR: incorrect result at %d\n", i);
02848 abort();
02849 }
02850
02851 if (act_status[i] != test_status[i])
02852 {
02853 printf(" ERROR: incorrect status at %d\n", i);
02854 abort();
02855 }
02856 }
02857 printf("PASSED\n");
02858
02859
02860 printf(" Testing convert: SIGNED 24 INT -> SIGNED 32 INT : ");
02861
02862 for (i=0; i<num_cool_24_ints; i++)
02863 {
02864 act_result[i] = *(UINT64 *)&cool_24_ints[i] | (cool_24_ints[i].part3 & 0x80 ? 0xff000000 : 0);
02865 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02866 if (*(SINT32 *)&act_result[i] < 0)
02867 {
02868 act_status[i] |= AR_STAT_NEGATIVE;
02869 }
02870
02871 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint32_artype,
02872 (AR_DATA *)&cool_24_ints[i], &sint24_artype);
02873
02874 if (*(SINT64 *)&test_result[i] != act_result[i])
02875 {
02876 printf(" ERROR: incorrect result at %d\n", i);
02877 abort();
02878 }
02879
02880 if (act_status[i] != test_status[i])
02881 {
02882 printf(" ERROR: incorrect status at %d\n", i);
02883 abort();
02884 }
02885 }
02886 printf("PASSED\n");
02887
02888
02889 printf(" Testing convert: SIGNED 24 INT -> UNSIGNED 24 INT : ");
02890
02891 for (i=0; i<num_cool_24_ints; i++)
02892 {
02893 act_result[i] = *(UINT64 *)&cool_24_ints[i];
02894 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02895 if (act_result[i] & 0x800000)
02896 {
02897 act_status[i] |= AR_STAT_SEMIVALID;
02898 if((cool_24_ints[i].part3 & 0x7f) || cool_24_ints[i].part4)
02899 act_status[i] |= AR_STAT_OVERFLOW;
02900 }
02901
02902 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint24_artype,
02903 (AR_DATA *)&cool_24_ints[i], &sint24_artype);
02904
02905 if (*(SINT64 *)&test_result[i] != act_result[i])
02906 {
02907 printf(" ERROR: incorrect result at %d\n", i);
02908 abort();
02909 }
02910
02911 if (act_status[i] != test_status[i])
02912 {
02913 printf(" ERROR: incorrect status at %d\n", i);
02914 abort();
02915 }
02916 }
02917 printf("PASSED\n");
02918
02919
02920 printf(" Testing convert: SIGNED 24 INT -> SIGNED 24 INT : ");
02921
02922 for (i=0; i<num_cool_24_ints; i++)
02923 {
02924 act_result[i] = *(UINT64 *)&cool_24_ints[i];
02925 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02926 if (act_result[i] & 0x800000)
02927 {
02928 act_status[i] |= AR_STAT_NEGATIVE;
02929 }
02930
02931 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint24_artype,
02932 (AR_DATA *)&cool_24_ints[i], &sint24_artype);
02933
02934 if (*(SINT64 *)&test_result[i] != act_result[i])
02935 {
02936 printf(" ERROR: incorrect result at %d\n", i);
02937 abort();
02938 }
02939
02940 if (act_status[i] != test_status[i])
02941 {
02942 printf(" ERROR: incorrect status at %d\n", i);
02943 abort();
02944 }
02945 }
02946 printf("PASSED\n");
02947
02948
02949 printf(" Testing convert: SIGNED 24 INT -> UNSIGNED 8 INT : ");
02950
02951 for (i=0; i<num_cool_24_ints; i++)
02952 {
02953 act_result[i] = *(UINT64 *)&cool_24_ints[i] & 0xff;
02954 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02955
02956 if (cool_24_ints[i].part3 || (cool_24_ints[i].part4 & 0xff00))
02957 {
02958 act_status[i] |= AR_STAT_OVERFLOW;
02959 }
02960
02961 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint8_artype,
02962 (AR_DATA *)&cool_24_ints[i], &sint24_artype);
02963
02964 if (*(SINT64 *)&test_result[i] != act_result[i])
02965 {
02966 printf(" ERROR: incorrect result at %d\n", i);
02967 abort();
02968 }
02969
02970 if (act_status[i] != test_status[i])
02971 {
02972 printf(" ERROR: incorrect status at %d\n", i);
02973 abort();
02974 }
02975 }
02976 printf("PASSED\n");
02977
02978
02979 printf(" Testing convert: SIGNED 24 INT -> SIGNED 8 INT : ");
02980
02981 for (i=0; i<num_cool_24_ints; i++)
02982 {
02983 act_result[i] = *(UINT64 *)&cool_24_ints[i] & 0xff;
02984 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
02985
02986 if (act_result[i] & 0x80)
02987 {
02988 act_status[i] |= AR_STAT_NEGATIVE;
02989 }
02990
02991 if (((cool_24_ints[i].part3 & 0x00ff) != 0x00ff ||
02992 (cool_24_ints[i].part4 & 0xff80) != 0xff80) &&
02993 ((cool_24_ints[i].part3 & 0x00ff) != 0 ||
02994 (cool_24_ints[i].part4 & 0xff80) != 0))
02995 {
02996 act_status[i] |= AR_STAT_OVERFLOW;
02997 }
02998
02999 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint8_artype,
03000 (AR_DATA *)&cool_24_ints[i], &sint24_artype);
03001
03002 if (*(SINT64 *)&test_result[i] != act_result[i])
03003 {
03004 printf(" ERROR: incorrect result at %d\n", i);
03005 abort();
03006 }
03007
03008 if (act_status[i] != test_status[i])
03009 {
03010 printf(" ERROR: incorrect status at %d\n", i);
03011 abort();
03012 }
03013 }
03014 printf("PASSED\n");
03015 }
03016
03017
03018 test_8_U()
03019 {
03020 int i;
03021
03022
03023 printf(" Testing convert: UNSIGNED 8 INT -> UNSIGNED 64 INT : ");
03024
03025 for (i=0; i<num_cool_8_ints; i++)
03026 {
03027 act_result[i] = (UINT64)(UINT64)*((UINT8 *)&cool_8_ints[i]+7);
03028 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03029
03030 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint64_artype,
03031 (AR_DATA *)&cool_8_ints[i], &uint8_artype);
03032
03033 if (*(SINT64 *)&test_result[i] != act_result[i])
03034 {
03035 printf(" ERROR: incorrect result at %d\n", i);
03036 abort();
03037 }
03038
03039 if (act_status[i] != test_status[i])
03040 {
03041 printf(" ERROR: incorrect status at %d\n", i);
03042 abort();
03043 }
03044 }
03045 printf("PASSED\n");
03046
03047
03048 printf(" Testing convert: UNSIGNED 8 INT -> SIGNED 64 INT : ");
03049
03050 for (i=0; i<num_cool_8_ints; i++)
03051 {
03052 act_result[i] = (UINT64)(SINT64)*((UINT8 *)&cool_8_ints[i]+7);
03053 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03054
03055 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint64_artype,
03056 (AR_DATA *)&cool_8_ints[i], &uint8_artype);
03057
03058 if (*(SINT64 *)&test_result[i] != act_result[i])
03059 {
03060 printf(" ERROR: incorrect result at %d\n", i);
03061 abort();
03062 }
03063
03064 if (act_status[i] != test_status[i])
03065 {
03066 printf(" ERROR: incorrect status at %d\n", i);
03067 abort();
03068 }
03069 }
03070 printf("PASSED\n");
03071
03072
03073 printf(" Testing convert: UNSIGNED 8 INT -> SIGNED 46 INT : ");
03074
03075 for (i=0; i<num_cool_8_ints; i++)
03076 {
03077 act_result[i] = (UINT64)(SINT46)*((UINT8 *)&cool_8_ints[i]+7);
03078 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03079
03080 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint46_artype,
03081 (AR_DATA *)&cool_8_ints[i], &uint8_artype);
03082
03083 if (*(SINT64 *)&test_result[i] != act_result[i])
03084 {
03085 printf(" ERROR: incorrect result at %d\n", i);
03086 abort();
03087 }
03088
03089 if (act_status[i] != test_status[i])
03090 {
03091 printf(" ERROR: incorrect status at %d\n", i);
03092 abort();
03093 }
03094 }
03095 printf("PASSED\n");
03096
03097
03098 printf(" Testing convert: UNSIGNED 8 INT -> UNSIGNED 32 INT : ");
03099
03100 for (i=0; i<num_cool_8_ints; i++)
03101 {
03102 act_result[i] = (UINT64)(UINT32)*((UINT8 *)&cool_8_ints[i]+7);
03103 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03104
03105 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint32_artype,
03106 (AR_DATA *)&cool_8_ints[i], &uint8_artype);
03107
03108 if (*(SINT64 *)&test_result[i] != act_result[i])
03109 {
03110 printf(" ERROR: incorrect result at %d\n", i);
03111 abort();
03112 }
03113
03114 if (act_status[i] != test_status[i])
03115 {
03116 printf(" ERROR: incorrect status at %d\n", i);
03117 abort();
03118 }
03119 }
03120 printf("PASSED\n");
03121
03122
03123 printf(" Testing convert: UNSIGNED 8 INT -> SIGNED 32 INT : ");
03124
03125 for (i=0; i<num_cool_8_ints; i++)
03126 {
03127 act_result[i] = *((UINT8 *)&cool_8_ints[i]+7) & 0xffffffff;
03128 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03129 if ((SINT32)*((UINT8 *)&cool_8_ints[i]+7) < 0) {
03130 act_status[i] |= AR_STAT_NEGATIVE;
03131 }
03132
03133 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint32_artype,
03134 (AR_DATA *)&cool_8_ints[i], &uint8_artype);
03135
03136 if (*(SINT64 *)&test_result[i] != act_result[i])
03137 {
03138 printf(" ERROR: incorrect result at %d\n", i);
03139 abort();
03140 }
03141
03142 if (act_status[i] != test_status[i])
03143 {
03144 printf(" ERROR: incorrect status at %d\n", i);
03145 abort();
03146 }
03147 }
03148 printf("PASSED\n");
03149
03150
03151 printf(" Testing convert: UNSIGNED 8 INT -> UNSIGNED 24 INT : ");
03152
03153 for (i=0; i<num_cool_8_ints; i++)
03154 {
03155 act_result[i] = *((UINT8 *)&cool_8_ints[i]+7) & 0xffffff;
03156 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03157
03158 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint24_artype,
03159 (AR_DATA *)&cool_8_ints[i], &uint8_artype);
03160
03161 if (*(SINT64 *)&test_result[i] != act_result[i])
03162 {
03163 printf(" ERROR: incorrect result at %d\n", i);
03164 abort();
03165 }
03166
03167 if (act_status[i] != test_status[i])
03168 {
03169 printf(" ERROR: incorrect status at %d\n", i);
03170 abort();
03171 }
03172 }
03173 printf("PASSED\n");
03174
03175
03176 printf(" Testing convert: UNSIGNED 8 INT -> SIGNED 24 INT : ");
03177
03178 for (i=0; i<num_cool_8_ints; i++)
03179 {
03180 act_result[i] = *((UINT8 *)&cool_8_ints[i]+7) & 0xffffff;
03181 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03182
03183 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint24_artype,
03184 (AR_DATA *)&cool_8_ints[i], &uint8_artype);
03185
03186 if (*(SINT64 *)&test_result[i] != act_result[i])
03187 {
03188 printf(" ERROR: incorrect result at %d\n", i);
03189 abort();
03190 }
03191
03192 if (act_status[i] != test_status[i])
03193 {
03194 printf(" ERROR: incorrect status at %d\n", i);
03195 abort();
03196 }
03197 }
03198 printf("PASSED\n");
03199
03200
03201 printf(" Testing convert: UNSIGNED 8 INT -> UNSIGNED 8 INT : ");
03202
03203 for (i=0; i<num_cool_8_ints; i++)
03204 {
03205 act_result[i] = (UINT64)(UINT8)*((UINT8 *)&cool_8_ints[i]+7);
03206 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03207
03208 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint8_artype,
03209 (AR_DATA *)&cool_8_ints[i], &uint8_artype);
03210
03211 if (*(SINT64 *)&test_result[i] != act_result[i])
03212 {
03213 printf(" ERROR: incorrect result at %d\n", i);
03214 abort();
03215 }
03216
03217 if (act_status[i] != test_status[i])
03218 {
03219 printf(" ERROR: incorrect status at %d\n", i);
03220 abort();
03221 }
03222 }
03223 printf("PASSED\n");
03224
03225
03226 printf(" Testing convert: UNSIGNED 8 INT -> SIGNED 8 INT : ");
03227
03228 for (i=0; i<num_cool_8_ints; i++)
03229 {
03230 act_result[i] = (UINT8)(SINT8)*((UINT8 *)&cool_8_ints[i]+7);
03231 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03232
03233 if (cool_8_ints[i].part4 & 0x80)
03234 {
03235 act_status[i] |= AR_STAT_NEGATIVE | AR_STAT_SEMIVALID;
03236 if(cool_8_ints[i].part4 & 0x7f)
03237 act_status[i] |= AR_STAT_OVERFLOW;
03238 }
03239
03240 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint8_artype,
03241 (AR_DATA *)&cool_8_ints[i], &uint8_artype);
03242
03243 if (*(SINT64 *)&test_result[i] != act_result[i])
03244 {
03245 printf(" ERROR: incorrect result at %d\n", i);
03246 abort();
03247 }
03248
03249 if (act_status[i] != test_status[i])
03250 {
03251 printf(" ERROR: incorrect status at %d\n", i);
03252 abort();
03253 }
03254 }
03255 printf("PASSED\n");
03256 }
03257
03258
03259 test_8_S()
03260 {
03261 int i;
03262
03263
03264 printf(" Testing convert: SIGNED 8 INT -> UNSIGNED 64 INT : ");
03265
03266 for (i=0; i<num_cool_8_ints; i++)
03267 {
03268 act_result[i] = (UINT64)(UINT64)*((SINT8 *)&cool_8_ints[i]+7);
03269 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03270
03271 if (cool_8_ints[i].part4 & 0x80)
03272 {
03273 act_status[i] |= AR_STAT_OVERFLOW;
03274 }
03275
03276 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint64_artype,
03277 (AR_DATA *)&cool_8_ints[i], &sint8_artype);
03278
03279 if (*(SINT64 *)&test_result[i] != act_result[i])
03280 {
03281 printf(" ERROR: incorrect result at %d\n", i);
03282 abort();
03283 }
03284
03285 if (act_status[i] != test_status[i])
03286 {
03287 printf(" ERROR: incorrect status at %d\n", i);
03288 abort();
03289 }
03290 }
03291 printf("PASSED\n");
03292
03293
03294 printf(" Testing convert: SIGNED 8 INT -> SIGNED 64 INT : ");
03295
03296 for (i=0; i<num_cool_8_ints; i++)
03297 {
03298 act_result[i] = (UINT64)(SINT64)*((SINT8 *)&cool_8_ints[i]+7);
03299 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03300
03301 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint64_artype,
03302 (AR_DATA *)&cool_8_ints[i], &sint8_artype);
03303
03304 if (cool_8_ints[i].part4 & 0x80)
03305 {
03306 act_status[i] |= AR_STAT_NEGATIVE;
03307 }
03308
03309 if (*(SINT64 *)&test_result[i] != act_result[i])
03310 {
03311 printf(" ERROR: incorrect result at %d\n", i);
03312 abort();
03313 }
03314
03315 if (act_status[i] != test_status[i])
03316 {
03317 printf(" ERROR: incorrect status at %d\n", i);
03318 abort();
03319 }
03320 }
03321 printf("PASSED\n");
03322
03323
03324 printf(" Testing convert: SIGNED 8 INT -> SIGNED 46 INT : ");
03325
03326 for (i=0; i<num_cool_8_ints; i++)
03327 {
03328 act_result[i] = (UINT64)(SINT46)*((SINT8 *)&cool_8_ints[i]+7);
03329 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03330
03331 if (cool_8_ints[i].part4 & 0x80)
03332 {
03333 act_status[i] |= AR_STAT_NEGATIVE;
03334 }
03335
03336 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint46_artype,
03337 (AR_DATA *)&cool_8_ints[i], &sint8_artype);
03338
03339 if (*(SINT64 *)&test_result[i] != act_result[i])
03340 {
03341 printf(" ERROR: incorrect result at %d\n", i);
03342 abort();
03343 }
03344
03345 if (act_status[i] != test_status[i])
03346 {
03347 printf(" ERROR: incorrect status at %d\n", i);
03348 abort();
03349 }
03350 }
03351 printf("PASSED\n");
03352
03353
03354 printf(" Testing convert: SIGNED 8 INT -> UNSIGNED 32 INT : ");
03355
03356 for (i=0; i<num_cool_8_ints; i++)
03357 {
03358 act_result[i] = (UINT64)(UINT32)*((SINT8 *)&cool_8_ints[i]+7);
03359 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03360
03361 if (cool_8_ints[i].part4 & 0x80)
03362 {
03363 act_status[i] |= AR_STAT_OVERFLOW;
03364 }
03365
03366 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint32_artype,
03367 (AR_DATA *)&cool_8_ints[i], &sint8_artype);
03368
03369 if (*(SINT64 *)&test_result[i] != act_result[i])
03370 {
03371 printf(" ERROR: incorrect result at %d\n", i);
03372 abort();
03373 }
03374
03375 if (act_status[i] != test_status[i])
03376 {
03377 printf(" ERROR: incorrect status at %d\n", i);
03378 abort();
03379 }
03380 }
03381 printf("PASSED\n");
03382
03383
03384 printf(" Testing convert: SIGNED 8 INT -> SIGNED 32 INT : ");
03385
03386 for (i=0; i<num_cool_8_ints; i++)
03387 {
03388 act_result[i] = *((SINT8 *)&cool_8_ints[i]+7) & 0xffffffff;
03389 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03390
03391 if (cool_8_ints[i].part4 & 0x80)
03392 {
03393 act_status[i] |= AR_STAT_NEGATIVE;
03394 }
03395
03396 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint32_artype,
03397 (AR_DATA *)&cool_8_ints[i], &sint8_artype);
03398
03399 if (*(SINT64 *)&test_result[i] != act_result[i])
03400 {
03401 printf(" ERROR: incorrect result at %d\n", i);
03402 abort();
03403 }
03404
03405 if (act_status[i] != test_status[i])
03406 {
03407 printf(" ERROR: incorrect status at %d\n", i);
03408 abort();
03409 }
03410 }
03411 printf("PASSED\n");
03412
03413
03414 printf(" Testing convert: SIGNED 8 INT -> UNSIGNED 24 INT : ");
03415
03416 for (i=0; i<num_cool_8_ints; i++)
03417 {
03418 act_result[i] = *((SINT8 *)&cool_8_ints[i]+7) & 0xffffff;
03419 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03420
03421 if (cool_8_ints[i].part4 & 0x80)
03422 {
03423 act_status[i] |= AR_STAT_OVERFLOW;
03424 }
03425
03426 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint24_artype,
03427 (AR_DATA *)&cool_8_ints[i], &sint8_artype);
03428
03429 if (*(SINT64 *)&test_result[i] != act_result[i])
03430 {
03431 printf(" ERROR: incorrect result at %d\n", i);
03432 abort();
03433 }
03434
03435 if (act_status[i] != test_status[i])
03436 {
03437 printf(" ERROR: incorrect status at %d\n", i);
03438 abort();
03439 }
03440 }
03441 printf("PASSED\n");
03442
03443
03444 printf(" Testing convert: SIGNED 8 INT -> SIGNED 24 INT : ");
03445
03446 for (i=0; i<num_cool_8_ints; i++)
03447 {
03448 act_result[i] = *((SINT8 *)&cool_8_ints[i]+7) & 0xffffff;
03449 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03450
03451 if (cool_8_ints[i].part4 & 0x80)
03452 {
03453 act_status[i] |= AR_STAT_NEGATIVE;
03454 }
03455
03456 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint24_artype,
03457 (AR_DATA *)&cool_8_ints[i], &sint8_artype);
03458
03459 if (*(SINT64 *)&test_result[i] != act_result[i])
03460 {
03461 printf(" ERROR: incorrect result at %d\n", i);
03462 abort();
03463 }
03464
03465 if (act_status[i] != test_status[i])
03466 {
03467 printf(" ERROR: incorrect status at %d\n", i);
03468 abort();
03469 }
03470 }
03471 printf("PASSED\n");
03472
03473
03474 printf(" Testing convert: SIGNED 8 INT -> UNSIGNED 8 INT : ");
03475
03476 for (i=0; i<num_cool_8_ints; i++)
03477 {
03478 act_result[i] = (UINT64)(UINT8)*((SINT8 *)&cool_8_ints[i]+7);
03479 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03480
03481 if (cool_8_ints[i].part4 & 0x80)
03482 {
03483 act_status[i] |= AR_STAT_SEMIVALID;
03484 if(cool_8_ints[i].part4 & 0x7f)
03485 act_status[i] |= AR_STAT_OVERFLOW;
03486 }
03487
03488 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &uint8_artype,
03489 (AR_DATA *)&cool_8_ints[i], &sint8_artype);
03490
03491 if (*(SINT64 *)&test_result[i] != act_result[i])
03492 {
03493 printf(" ERROR: incorrect result at %d\n", i);
03494 abort();
03495 }
03496
03497 if (act_status[i] != test_status[i])
03498 {
03499 printf(" ERROR: incorrect status at %d\n", i);
03500 abort();
03501 }
03502 }
03503 printf("PASSED\n");
03504
03505
03506 printf(" Testing convert: SIGNED 8 INT -> SIGNED 8 INT : ");
03507
03508 for (i=0; i<num_cool_8_ints; i++)
03509 {
03510 act_result[i] = *((SINT8 *)&cool_8_ints[i]+7) & 0xff;
03511 act_status[i] = (act_result[i] == 0) ? AR_STAT_ZERO : AR_STAT_OK;
03512
03513 if (cool_8_ints[i].part4 & 0x80)
03514 {
03515 act_status[i] |= AR_STAT_NEGATIVE;
03516 }
03517
03518 test_status[i] = AR_convert((AR_DATA *)&test_result[i], &sint8_artype,
03519 (AR_DATA *)&cool_8_ints[i], &sint8_artype);
03520
03521 if (*(SINT64 *)&test_result[i] != act_result[i])
03522 {
03523 printf(" ERROR: incorrect result at %d\n", i);
03524 abort();
03525 }
03526
03527 if (act_status[i] != test_status[i])
03528 {
03529 printf(" ERROR: incorrect status at %d\n", i);
03530 abort();
03531 }
03532 }
03533 printf("PASSED\n");
03534 }
03535
03536 #endif
03537
03538 static char USMID [] = "\n%Z%%M% %I% %G% %U%\n";
03539 static char rcsid [] = "$Id: testcvt.c,v 1.1.1.1 2002-05-22 20:06:19 dsystem Exp $";