runtime.h

Go to the documentation of this file.
00001 #ifndef BITC_RUNTIME_H
00002 #define BITC_RUNTIME_H
00003 
00004 /**************************************************************************
00005  *
00006  * Copyright (C) 2006, Johns Hopkins University.
00007  * All rights reserved.
00008  *
00009  * Redistribution and use in source and binary forms, with or
00010  * without modification, are permitted provided that the following
00011  * conditions are met:
00012  *
00013  *   - Redistributions of source code must contain the above
00014  *     copyright notice, this list of conditions, and the following
00015  *     disclaimer.
00016  *
00017  *   - Redistributions in binary form must reproduce the above
00018  *     copyright notice, this list of conditions, and the following
00019  *     disclaimer in the documentation and/or other materials
00020  *     provided with the distribution.
00021  *
00022  *   - Neither the names of the copyright holders nor the names of any
00023  *     of any contributors may be used to endorse or promote products
00024  *     derived from this software without specific prior written
00025  *     permission.
00026  *
00027  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00028  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00029  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
00030  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
00031  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00032  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00033  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00034  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
00035  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00036  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00037  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00038  *
00039  **************************************************************************/
00040 
00041 /***************************************************************
00042                         The Bitc Runtime
00043 ****************************************************************/
00044 #if defined(__cplusplus)
00045 #error "bitcc output is not (yet) suitable for C++ compilation"
00046 #endif
00047 
00048 #if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 19901L)
00049 #error "bitcc output requires C99 support"
00050 #endif
00051 
00052 #include <stdio.h>
00053 #ifndef __cplusplus
00054 /* Twits at Sun aren't smart enough to make their header files compatible
00055    with C++. */
00056 #include <stdbool.h>
00057 #endif
00058 #include <unistd.h>
00059 #include <stdint.h>
00060 #include <stdlib.h>
00061 #include <string.h>
00062 #include <gc/gc.h>
00063 #include <setjmp.h>
00064 #include <inttypes.h>
00065 #include <assert.h>
00066 
00067 typedef char     bitc_unit_t;
00068 typedef uint32_t bitc_char_t;
00069 typedef bool     bitc_bool_t;
00070 
00071 /* word is machine dependent */
00072 typedef uintptr_t   bitc_word_t;
00073 typedef bitc_word_t bitc_tvar_t;
00074 
00075 typedef int8_t   bitc_int8_t;
00076 typedef int16_t  bitc_int16_t;
00077 typedef int32_t  bitc_int32_t;
00078 typedef int64_t  bitc_int64_t;
00079 typedef uint8_t  bitc_uns8_t;
00080 typedef uint16_t bitc_uns16_t;
00081 typedef uint32_t bitc_uns32_t;
00082 typedef uint64_t bitc_uns64_t;
00083 
00084 typedef float    bitc_float_t;
00085 typedef double   bitc_double_t;
00086 /* FIX: quad is WRONG */
00087 typedef long double bitc_quad_t;
00088 
00089 #define INLINE static inline
00090 #define BITC_UNIT '\000'
00091 #define MAYBE_UNUSED __attribute__((unused))
00092 
00117 typedef struct bitc_exception_t {
00118   const char *__fileName;
00119   int __line;
00120 
00121   const char *__name;
00122 } bitc_exception_t;
00123 
00124 extern jmp_buf firstJB;
00125 extern jmp_buf *curCatchBlock;
00126 extern bitc_exception_t *curException;
00127 
00128 #define bitc_throw(fileName, line, x)                 \
00129   do {                                                \
00130     curException = (bitc_exception_t *) x;            \
00131     curException->__fileName = fileName;              \
00132     curException->__line = line;                      \
00133     longjmp(*curCatchBlock, 1);                       \
00134   } while(0)
00135 
00136 #define BITC_THROW(x) bitc_throw(__FILE__, __LINE__, x)
00137 
00139 extern bitc_exception_t val_ExOutOfMemory;
00142 extern bitc_exception_t val_ExIndexBoundsError;
00143 
00144 #define TY_VECTOR_OF_STRINGS K_6string
00145 
00146 #define GC_ALLOC(x) bitc_malloc(__FILE__, __LINE__, x)
00147 #define GC_ALLOC_ATOMIC(x) bitc_malloc_atomic(__FILE__, __LINE__, x)
00148 
00154 INLINE void *
00155 bitc_malloc(const char * fileName, int line, size_t sz)
00156 {
00157   void *ptr = GC_malloc(sz);
00158   if(ptr == NULL)
00159     bitc_throw(fileName, line, &val_ExOutOfMemory);
00160 
00161   return ptr;
00162 }
00163 
00169 INLINE void *
00170 bitc_malloc_atomic(const char *fileName, int line, size_t sz)
00171 {
00172   void *ptr = GC_malloc_atomic(sz);
00173   if(ptr == NULL)
00174     bitc_throw(fileName, line, &val_ExOutOfMemory);
00175 
00176   return ptr;
00177 }
00178 
00183 typedef struct {
00184   bitc_word_t length;
00186   const char *s;
00187 } bitc_string_t;
00188 
00189 /* Forward declaration, solely so that we can attach the MAYBE_UNUSED
00190    attribute. GCC won't let us attach that on the definition. */
00191 static bitc_string_t *
00192 mkStringLiteral(const char *s) MAYBE_UNUSED;
00193 
00203 static bitc_string_t *
00204 mkStringLiteral(const char *s)
00205 {
00206   size_t len = strlen(s);
00207   bitc_string_t *tmp = (bitc_string_t *)
00208     GC_ALLOC_ATOMIC(sizeof(bitc_string_t));
00209   tmp->length = len;
00210   tmp->s = s;
00211   return tmp;
00212 }
00213 
00214 /* Support for constructing closures of external functions */
00215 #define LAMNM(NM) NM
00216 
00217 /* relies on C99 VARIADIC MACROS */
00218 #define DEFUN(NM, ...) LAMNM(NM)(__VA_ARGS__)
00219 #define DEFCLOSURE(NM)
00220 #define DEFCLOSURE_INLINE(NM)
00221 /* Primitive index comparison */
00222 
00224 INLINE bitc_bool_t
00225 DEFUN(bitc_index_lt, bitc_word_t a, bitc_word_t b)
00226 
00227 {
00228   return (a < b);
00229 }
00230 DEFCLOSURE_INLINE(bitc_index_lt);
00231 
00232 /* Primitive Operations */
00233 
00234 #define DEFEQL(TY,MTY)                                                  \
00235   INLINE bitc_bool_t                                                    \
00236   DEFUN(_17bitc_DTprelude_CN___EQ_EQ_SHFN2##MTY##MTY##_4bool, TY arg1, TY arg2) \
00237   {                                                                     \
00238     return (arg1 == arg2);                                              \
00239   }                                                                     \
00240   DEFCLOSURE_INLINE(_17bitc_DTprelude_CN___EQ_EQ_SHFN2##MTY##MTY##_4bool)
00241 
00242 #define DEFNEQ(TY,MTY)                                                  \
00243   INLINE bitc_bool_t                                                    \
00244   DEFUN(_17bitc_DTprelude_CN___EX_EQ_SHFN2##MTY##MTY##_4bool, TY arg1, TY arg2) \
00245   {                                                                     \
00246     return (arg1 != arg2);                                              \
00247   }                                                                     \
00248   DEFCLOSURE_INLINE(_17bitc_DTprelude_CN___EX_EQ_SHFN2##MTY##MTY##_4bool)
00249 
00250 #define DEFLESS(TY,MTY)                                                 \
00251   INLINE bitc_bool_t                                                    \
00252   DEFUN(_16bitc_DTprelude_CN___LT_SHFN2##MTY##MTY##_4bool, TY arg1, TY arg2) \
00253   {                                                                     \
00254     return (arg1 < arg2);                                               \
00255   }                                                                     \
00256   DEFCLOSURE_INLINE(_16bitc_DTprelude_CN___LT_SHFN2##MTY##MTY##_4bool)
00257 
00258 #define DEFGREATER(TY,MTY)                                              \
00259   INLINE bitc_bool_t                                                    \
00260   DEFUN(_16bitc_DTprelude_CN___GT_SHFN2##MTY##MTY##_4bool, TY arg1, TY arg2) \
00261   {                                                                     \
00262     return (arg1 > arg2);                                               \
00263   }                                                                     \
00264   DEFCLOSURE_INLINE(_16bitc_DTprelude_CN___GT_SHFN2##MTY##MTY##_4bool)
00265 
00266 #define DEFLESSOREQUAL(TY,MTY)                                          \
00267   INLINE bitc_bool_t                                                    \
00268   DEFUN(_17bitc_DTprelude_CN___LT_EQ_SHFN2##MTY##MTY##_4bool, TY arg1, TY arg2) \
00269   {                                                                     \
00270     return (arg1 <= arg2);                                              \
00271   }                                                                     \
00272   DEFCLOSURE_INLINE(_17bitc_DTprelude_CN___LT_EQ_SHFN2##MTY##MTY##_4bool)
00273 
00274 #define DEFGREATEROREQUAL(TY,MTY)                                       \
00275   INLINE bitc_bool_t                                                    \
00276   DEFUN(_17bitc_DTprelude_CN___GT_EQ_SHFN2##MTY##MTY##_4bool, TY arg1, TY arg2) \
00277   {                                                                     \
00278     return (arg1 >= arg2);                                              \
00279   }                                                                     \
00280   DEFCLOSURE_INLINE(_17bitc_DTprelude_CN___GT_EQ_SHFN2##MTY##MTY##_4bool)
00281 
00282 #define DEFADD(TY,MTY)                                          \
00283   INLINE TY                                                     \
00284   DEFUN(_16bitc_DTprelude_CN___PL_SHFN2##MTY##MTY##MTY, TY arg1, TY arg2) \
00285   {                                                             \
00286     return (arg1 + arg2);                                       \
00287   }                                                             \
00288   DEFCLOSURE_INLINE(_16bitc_DTprelude_CN___PL_SHFN2##MTY##MTY##MTY)
00289 
00290 #define DEFSUBTRACT(TY,MTY)                                     \
00291   INLINE TY                                                     \
00292   DEFUN(_16bitc_DTprelude_CN___HY_SHFN2##MTY##MTY##MTY, TY arg1, TY arg2) \
00293   {                                                             \
00294     return (arg1 - arg2);                                       \
00295   }                                                             \
00296   DEFCLOSURE_INLINE(_16bitc_DTprelude_CN___HY_SHFN2##MTY##MTY##MTY)
00297 
00298 #define DEFMULTIPLY(TY,MTY)                                     \
00299   INLINE TY                                                     \
00300   DEFUN(_16bitc_DTprelude_CN___ST_SHFN2##MTY##MTY##MTY, TY arg1, TY arg2) \
00301   {                                                             \
00302     return (arg1 * arg2);                                       \
00303   }                                                             \
00304   DEFCLOSURE_INLINE(_16bitc_DTprelude_CN___ST_SHFN2##MTY##MTY##MTY)
00305 
00306 #define DEFDIVIDE(TY,MTY)                                       \
00307   INLINE TY                                                     \
00308   DEFUN(_16bitc_DTprelude_CN___FS_SHFN2##MTY##MTY##MTY, TY arg1, TY arg2) \
00309   {                                                             \
00310     return (arg1 / arg2);                                       \
00311   }                                                             \
00312   DEFCLOSURE_INLINE(_16bitc_DTprelude_CN___FS_SHFN2##MTY##MTY##MTY)
00313 
00314 #define DEFNEGATE(TY,MTY)                                       \
00315   INLINE TY                                                     \
00316   DEFUN(_21bitc_DTprelude_CN__negate_SHFN1##MTY##MTY, TY arg1)  \
00317   {                                                             \
00318     return (-arg1);                                             \
00319   }                                                             \
00320   DEFCLOSURE_INLINE(_21bitc_DTprelude_CN__negate_SHFN1##MTY##MTY)
00321 
00322 #define DEFMODULO(TY,MTY)                                       \
00323   INLINE TY                                                     \
00324   DEFUN(_16bitc_DTprelude_CN___PC_SHFN2##MTY##MTY##MTY, TY arg1, TY arg2) \
00325   {                                                             \
00326     return (arg1 % arg2);                                       \
00327   }                                                             \
00328   DEFCLOSURE_INLINE(_16bitc_DTprelude_CN___PC_SHFN2##MTY##MTY##MTY)
00329 
00330 #define DEFBAND(TY,MTY)                                         \
00331   INLINE TY                                                     \
00332   DEFUN(_20bitc_DTprelude_CN__b_and_SHFN2##MTY##MTY##MTY, TY arg1, TY arg2) \
00333   {                                                             \
00334     return (arg1 & arg2);                                       \
00335   }                                                             \
00336   DEFCLOSURE_INLINE(_20bitc_DTprelude_CN__b_and_SHFN2##MTY##MTY##MTY)
00337 
00338 #define DEFBOR(TY,MTY)                                          \
00339   INLINE TY                                                     \
00340   DEFUN(_19bitc_DTprelude_CN__b_or_SHFN2##MTY##MTY##MTY, TY arg1, TY arg2) \
00341   {                                                             \
00342     return (arg1 | arg2);                                       \
00343   }                                                             \
00344   DEFCLOSURE_INLINE(_19bitc_DTprelude_CN__b_or_SHFN2##MTY##MTY##MTY)
00345 
00346 #define DEFBNOT(TY,MTY)                                         \
00347   INLINE TY                                                     \
00348   DEFUN(_20bitc_DTprelude_CN__b_not_SHFN1##MTY##MTY, TY arg1)   \
00349   {                                                             \
00350     return (~arg1);                                             \
00351   }                                                             \
00352   DEFCLOSURE_INLINE(_20bitc_DTprelude_CN__b_not_SHFN1##MTY##MTY)
00353 
00354 #define DEFBXOR(TY,MTY)                                         \
00355   INLINE TY                                                     \
00356   DEFUN(_20bitc_DTprelude_CN__b_xor_SHFN2##MTY##MTY##MTY, TY arg1, TY arg2) \
00357   {                                                             \
00358     return (arg1 ^ arg2);                                       \
00359   }                                                             \
00360   DEFCLOSURE_INLINE(_20bitc_DTprelude_CN__b_xor_SHFN2##MTY##MTY##MTY)
00361 
00362 #define DEFBLS(TY,MTY)                                          \
00363   INLINE TY                                                     \
00364   DEFUN(_17bitc_DTprelude_CN___LT_LT_SHFN2##MTY##_4word##MTY, TY arg1, bitc_word_t arg2) \
00365   {                                                             \
00366     return (arg1 << arg2);                                      \
00367   }                                                             \
00368   DEFCLOSURE_INLINE(_17bitc_DTprelude_CN___LT_LT_SHFN2##MTY##_4word##MTY)
00369 
00370 #define DEFBRS(TY,MTY)                                          \
00371   INLINE TY                                                     \
00372   DEFUN(_17bitc_DTprelude_CN___GT_GT_SHFN2##MTY##_4word##MTY, TY arg1, bitc_word_t arg2) \
00373   {                                                             \
00374     return (arg1 >> arg2);                                      \
00375   }                                                             \
00376   DEFCLOSURE_INLINE(_17bitc_DTprelude_CN___GT_GT_SHFN2##MTY##_4word##MTY)
00377 
00378 
00379 #define DEFORD(TY,MTY) \
00380   DEFEQL(TY,MTY);      \
00381   DEFNEQ(TY,MTY);      \
00382   DEFLESS(TY, MTY);    \
00383   DEFGREATER(TY, MTY);    \
00384   DEFLESSOREQUAL(TY, MTY);                      \
00385   DEFGREATEROREQUAL(TY, MTY)
00386 
00387 #define DEFARITH(TY,MTY) \
00388   DEFADD(TY,MTY);                               \
00389   DEFSUBTRACT(TY, MTY);                         \
00390   DEFMULTIPLY(TY, MTY);                         \
00391   DEFDIVIDE(TY, MTY);                           \
00392   DEFMODULO(TY, MTY);                           \
00393   DEFNEGATE(TY, MTY);                           \
00394   DEFORD(TY, MTY)
00395 
00396 #define DEFFLOATARITH(TY,MTY) \
00397   DEFADD(TY,MTY);                               \
00398   DEFSUBTRACT(TY, MTY);                         \
00399   DEFMULTIPLY(TY, MTY);                         \
00400   DEFDIVIDE(TY, MTY);                           \
00401   DEFORD(TY, MTY)
00402 
00403 #define DEFBITARITH(TY, MTY) \
00404   DEFBAND(TY, MTY);          \
00405   DEFBOR(TY, MTY);           \
00406   DEFBNOT(TY, MTY);          \
00407   DEFBXOR(TY, MTY);          \
00408   DEFBLS(TY, MTY);           \
00409   DEFBRS(TY, MTY);
00410 
00411 DEFARITH(bitc_int64_t,_5int64);
00412 DEFARITH(bitc_int32_t,_5int32);
00413 DEFARITH(bitc_int16_t,_5int16);
00414 DEFARITH(bitc_int8_t,_4int8);
00415 DEFARITH(bitc_uns64_t,_6uint64);
00416 DEFARITH(bitc_uns32_t,_6uint32);
00417 DEFARITH(bitc_uns16_t,_6uint16);
00418 DEFARITH(bitc_uns8_t,_5uint8);
00419 DEFARITH(bitc_word_t,_4word);
00420 DEFFLOATARITH(bitc_float_t, _5float);
00421 DEFFLOATARITH(bitc_double_t, _6double);
00422 
00423 DEFBITARITH(bitc_uns8_t,_5uint8);
00424 DEFBITARITH(bitc_uns16_t,_6uint16);
00425 DEFBITARITH(bitc_uns32_t,_6uint32);
00426 DEFBITARITH(bitc_uns64_t,_6uint64);
00427 DEFBITARITH(bitc_word_t,_4word);
00428 
00429 DEFORD(bitc_char_t,_4char);
00430 DEFORD(bitc_bool_t,_4bool);
00431 
00432 INLINE bitc_bool_t
00433 DEFUN(_16bitc_DTprelude_CNnot_SHFN1_4bool_4bool, bitc_bool_t arg)
00434 {
00435   return(!arg);
00436 }
00437 DEFCLOSURE_INLINE(_16bitc_DTprelude_CNnot_SHFN1_4bool_4bool);
00438 
00439 /* String type is ORD, but requires special comparator: */
00440 INLINE bitc_bool_t
00441 DEFUN(_17bitc_DTprelude_CN___EQ_EQ_SHFN2_6string_6string_4bool, bitc_string_t *arg1, bitc_string_t *arg2)
00442 {
00443   return ((arg1->length == arg2->length) &&
00444           (__builtin_strcmp((const char *)arg1->s,(const char *)arg2->s) == 0));
00445 }                                               \
00446 DEFCLOSURE_INLINE(_17bitc_DTprelude_CN___EQ_EQ_SHFN2_6string_6string_4bool);
00447 
00448 INLINE bitc_bool_t
00449 DEFUN(_16bitc_DTprelude_CN___LT_SHFN2_6string_6string_4bool, bitc_string_t *arg1, bitc_string_t *arg2)
00450 {
00451   return (__builtin_strcmp((const char *)arg1->s,(const char *)arg2->s) < 0);
00452 }                                               \
00453 DEFCLOSURE_INLINE(_16bitc_DTprelude_CN___LT_SHFN2_6string_6string_4bool);
00454 
00455 
00456 INLINE bitc_bool_t
00457 DEFUN(_16bitc_DTprelude_CN___GT_SHFN2_6string_6string_4bool, bitc_string_t *arg1, bitc_string_t *arg2)
00458 {
00459   return (__builtin_strcmp((const char *)arg1->s,(const char *)arg2->s) > 0);
00460 }                                               \
00461 DEFCLOSURE_INLINE(_16bitc_DTprelude_CN___GT_SHFN2_6string_6string_4bool);
00462 
00463 INLINE bitc_bool_t
00464 DEFUN(_17bitc_DTprelude_CN___LT_EQ_SHFN2_6string_6string_4bool, bitc_string_t *arg1, bitc_string_t *arg2)
00465 {
00466   return (__builtin_strcmp((const char *)arg1->s,(const char *)arg2->s) <= 0);
00467 }                                               \
00468 DEFCLOSURE_INLINE(_17bitc_DTprelude_CN___LT_EQ_SHFN2_6string_6string_4bool);
00469 
00470 INLINE bitc_bool_t
00471 DEFUN(_17bitc_DTprelude_CN___GT_EQ_SHFN2_6string_6string_4bool, bitc_string_t *arg1, bitc_string_t *arg2)
00472 {
00473   return (__builtin_strcmp((const char *)arg1->s,(const char *)arg2->s) >= 0);
00474 }                                               \
00475 DEFCLOSURE_INLINE(_17bitc_DTprelude_CN___GT_EQ_SHFN2_6string_6string_4bool);
00476 
00477 /* CAST Operations */
00478 
00479 #define DEFSIGNEX(TY1,MTY1,TY2,MTY2)                                    \
00480   INLINE TY2                                                            \
00481   DEFUN(_23bitc_DTprelude_CNSignExtend_SHFN1##MTY1##MTY2, TY1 arg1) \
00482   {                                                                     \
00483     return (TY2) arg1;                                                  \
00484   }                                                                     \
00485   DEFCLOSURE_INLINE(_23bitc_DTprelude_CNSignExtend_SHFN1##MTY1##MTY2)
00486 
00487 
00488 #define DEFZEROEX(TY1,MTY1,TY2,MTY2)                                    \
00489   INLINE TY2                                                            \
00490   DEFUN(_23bitc_DTprelude_CNZeroExtend_SHFN1##MTY1##MTY2, TY1 arg1) \
00491   {                                                                     \
00492     return (TY2) arg1;                                                  \
00493   }                                                                     \
00494   DEFCLOSURE_INLINE(_23bitc_DTprelude_CNZeroExtend_SHFN1##MTY1##MTY2)
00495 
00496 #define DEFTRUNCATE(TY1,MTY1,TY2,MTY2)                                  \
00497   INLINE TY2                                                            \
00498   DEFUN(_21bitc_DTprelude_CNTruncate_SHFN1##MTY1##MTY2, TY1 arg1)       \
00499   {                                                                     \
00500     return (TY2) arg1;                                                  \
00501   }                                                                     \
00502   DEFCLOSURE_INLINE(_21bitc_DTprelude_CNTruncate_SHFN1##MTY1##MTY2)
00503 
00504 #define DEFSIGNED(TY1,MTY1,TY2,MTY2)                                    \
00505   INLINE TY2                                                            \
00506   DEFUN(_19bitc_DTprelude_CNsigned_SHFN1##MTY1##MTY2, TY1 arg1) \
00507   {                                                                     \
00508     return (TY2) arg1;                                                  \
00509   }                                                                     \
00510   DEFCLOSURE_INLINE(_19bitc_DTprelude_CNsigned_SHFN1##MTY1##MTY2)
00511 
00512 #define DEFUNSIGNED(TY1,MTY1,TY2,MTY2)                                  \
00513   INLINE TY2                                                            \
00514   DEFUN(_21bitc_DTprelude_CNunsigned_SHFN1##MTY1##MTY2, TY1 arg1)       \
00515   {                                                                     \
00516     return (TY2) arg1;                                                  \
00517   }                                                                     \
00518   DEFCLOSURE_INLINE(_21bitc_DTprelude_CNunsigned_SHFN1##MTY1##MTY2)
00519 
00520 #define DEFCAST(TY1,MTY1,TY2,MTY2)                                      \
00521   INLINE TY2                                                            \
00522   DEFUN(_20bitc_DTprelude_CNconvert_SHFN1##MTY1##MTY2, TY1 arg1)        \
00523   {                                                                     \
00524     return (TY2) arg1;                                                  \
00525   }                                                                     \
00526   DEFCLOSURE_INLINE(_20bitc_DTprelude_CNconvert_SHFN1##MTY1##MTY2)
00527 
00528 #define DEFSIGNEDOPS(TY1,MTY1,TY2,MTY2) \
00529   DEFSIGNEX(TY1,MTY1,TY2,MTY2);         \
00530   DEFTRUNCATE(TY2,MTY2,TY1,MTY1)
00531 
00532 #define DEFUNSIGNEDOPS(TY1,MTY1,TY2,MTY2) \
00533   DEFZEROEX(TY1,MTY1,TY2,MTY2);           \
00534   DEFTRUNCATE(TY2,MTY2,TY1,MTY1)
00535 
00536 #define DEFRESIGN(TY1,MTY1,TY2,MTY2) \
00537   DEFSIGNED(TY1,MTY1,TY2,MTY2);      \
00538   DEFUNSIGNED(TY2,MTY2,TY1,MTY1)
00539 
00540 
00541 
00542 /**************************************************************
00543  ** The following were generated using the genops.sh script. **
00544  **                                                          **
00545  **   DO NOT EDIT THEM BY HAND!! FIX THE SCRIPT!!            **
00546  **************************************************************/
00547 DEFUNSIGNEDOPS(bitc_uns8_t,  BF1_5uint8,   bitc_uns8_t,  _5uint8);
00548 DEFUNSIGNEDOPS(bitc_uns8_t,  BF2_5uint8,   bitc_uns8_t,  _5uint8);
00549 DEFUNSIGNEDOPS(bitc_uns8_t,  BF3_5uint8,   bitc_uns8_t,  _5uint8);
00550 DEFUNSIGNEDOPS(bitc_uns8_t,  BF4_5uint8,   bitc_uns8_t,  _5uint8);
00551 DEFUNSIGNEDOPS(bitc_uns8_t,  BF5_5uint8,   bitc_uns8_t,  _5uint8);
00552 DEFUNSIGNEDOPS(bitc_uns8_t,  BF6_5uint8,   bitc_uns8_t,  _5uint8);
00553 DEFUNSIGNEDOPS(bitc_uns8_t,  BF7_5uint8,   bitc_uns8_t,  _5uint8);
00554 DEFUNSIGNEDOPS(bitc_uns8_t,     _5uint8,   bitc_uns16_t, _6uint16);
00555 DEFUNSIGNEDOPS(bitc_uns8_t,  BF1_5uint8,   bitc_uns16_t, _6uint16);
00556 DEFUNSIGNEDOPS(bitc_uns8_t,  BF2_5uint8,   bitc_uns16_t, _6uint16);
00557 DEFUNSIGNEDOPS(bitc_uns8_t,  BF3_5uint8,   bitc_uns16_t, _6uint16);
00558 DEFUNSIGNEDOPS(bitc_uns8_t,  BF4_5uint8,   bitc_uns16_t, _6uint16);
00559 DEFUNSIGNEDOPS(bitc_uns8_t,  BF5_5uint8,   bitc_uns16_t, _6uint16);
00560 DEFUNSIGNEDOPS(bitc_uns8_t,  BF6_5uint8,   bitc_uns16_t, _6uint16);
00561 DEFUNSIGNEDOPS(bitc_uns8_t,  BF7_5uint8,   bitc_uns16_t, _6uint16);
00562 DEFUNSIGNEDOPS(bitc_uns8_t,     _5uint8,   bitc_uns32_t, _6uint32);
00563 DEFUNSIGNEDOPS(bitc_uns8_t,  BF1_5uint8,   bitc_uns32_t, _6uint32);
00564 DEFUNSIGNEDOPS(bitc_uns8_t,  BF2_5uint8,   bitc_uns32_t, _6uint32);
00565 DEFUNSIGNEDOPS(bitc_uns8_t,  BF3_5uint8,   bitc_uns32_t, _6uint32);
00566 DEFUNSIGNEDOPS(bitc_uns8_t,  BF4_5uint8,   bitc_uns32_t, _6uint32);
00567 DEFUNSIGNEDOPS(bitc_uns8_t,  BF5_5uint8,   bitc_uns32_t, _6uint32);
00568 DEFUNSIGNEDOPS(bitc_uns8_t,  BF6_5uint8,   bitc_uns32_t, _6uint32);
00569 DEFUNSIGNEDOPS(bitc_uns8_t,  BF7_5uint8,   bitc_uns32_t, _6uint32);
00570 DEFUNSIGNEDOPS(bitc_uns8_t,     _5uint8,   bitc_uns64_t, _6uint64);
00571 DEFUNSIGNEDOPS(bitc_uns8_t,  BF1_5uint8,   bitc_uns64_t, _6uint64);
00572 DEFUNSIGNEDOPS(bitc_uns8_t,  BF2_5uint8,   bitc_uns64_t, _6uint64);
00573 DEFUNSIGNEDOPS(bitc_uns8_t,  BF3_5uint8,   bitc_uns64_t, _6uint64);
00574 DEFUNSIGNEDOPS(bitc_uns8_t,  BF4_5uint8,   bitc_uns64_t, _6uint64);
00575 DEFUNSIGNEDOPS(bitc_uns8_t,  BF5_5uint8,   bitc_uns64_t, _6uint64);
00576 DEFUNSIGNEDOPS(bitc_uns8_t,  BF6_5uint8,   bitc_uns64_t, _6uint64);
00577 DEFUNSIGNEDOPS(bitc_uns8_t,  BF7_5uint8,   bitc_uns64_t, _6uint64);
00578 DEFUNSIGNEDOPS(bitc_uns16_t, BF1_6uint16,  bitc_uns16_t, _6uint16);
00579 DEFUNSIGNEDOPS(bitc_uns16_t, BF2_6uint16,  bitc_uns16_t, _6uint16);
00580 DEFUNSIGNEDOPS(bitc_uns16_t, BF3_6uint16,  bitc_uns16_t, _6uint16);
00581 DEFUNSIGNEDOPS(bitc_uns16_t, BF4_6uint16,  bitc_uns16_t, _6uint16);
00582 DEFUNSIGNEDOPS(bitc_uns16_t, BF5_6uint16,  bitc_uns16_t, _6uint16);
00583 DEFUNSIGNEDOPS(bitc_uns16_t, BF6_6uint16,  bitc_uns16_t, _6uint16);
00584 DEFUNSIGNEDOPS(bitc_uns16_t, BF7_6uint16,  bitc_uns16_t, _6uint16);
00585 DEFUNSIGNEDOPS(bitc_uns16_t, BF8_6uint16,  bitc_uns16_t, _6uint16);
00586 DEFUNSIGNEDOPS(bitc_uns16_t, BF9_6uint16,  bitc_uns16_t, _6uint16);
00587 DEFUNSIGNEDOPS(bitc_uns16_t, BF10_6uint16, bitc_uns16_t, _6uint16);
00588 DEFUNSIGNEDOPS(bitc_uns16_t, BF11_6uint16, bitc_uns16_t, _6uint16);
00589 DEFUNSIGNEDOPS(bitc_uns16_t, BF12_6uint16, bitc_uns16_t, _6uint16);
00590 DEFUNSIGNEDOPS(bitc_uns16_t, BF13_6uint16, bitc_uns16_t, _6uint16);
00591 DEFUNSIGNEDOPS(bitc_uns16_t, BF14_6uint16, bitc_uns16_t, _6uint16);
00592 DEFUNSIGNEDOPS(bitc_uns16_t, BF15_6uint16, bitc_uns16_t, _6uint16);
00593 DEFUNSIGNEDOPS(bitc_uns16_t,    _6uint16,  bitc_uns32_t, _6uint32);
00594 DEFUNSIGNEDOPS(bitc_uns16_t, BF1_6uint16,  bitc_uns32_t, _6uint32);
00595 DEFUNSIGNEDOPS(bitc_uns16_t, BF2_6uint16,  bitc_uns32_t, _6uint32);
00596 DEFUNSIGNEDOPS(bitc_uns16_t, BF3_6uint16,  bitc_uns32_t, _6uint32);
00597 DEFUNSIGNEDOPS(bitc_uns16_t, BF4_6uint16,  bitc_uns32_t, _6uint32);
00598 DEFUNSIGNEDOPS(bitc_uns16_t, BF5_6uint16,  bitc_uns32_t, _6uint32);
00599 DEFUNSIGNEDOPS(bitc_uns16_t, BF6_6uint16,  bitc_uns32_t, _6uint32);
00600 DEFUNSIGNEDOPS(bitc_uns16_t, BF7_6uint16,  bitc_uns32_t, _6uint32);
00601 DEFUNSIGNEDOPS(bitc_uns16_t, BF8_6uint16,  bitc_uns32_t, _6uint32);
00602 DEFUNSIGNEDOPS(bitc_uns16_t, BF9_6uint16,  bitc_uns32_t, _6uint32);
00603 DEFUNSIGNEDOPS(bitc_uns16_t, BF10_6uint16, bitc_uns32_t, _6uint32);
00604 DEFUNSIGNEDOPS(bitc_uns16_t, BF11_6uint16, bitc_uns32_t, _6uint32);
00605 DEFUNSIGNEDOPS(bitc_uns16_t, BF12_6uint16, bitc_uns32_t, _6uint32);
00606 DEFUNSIGNEDOPS(bitc_uns16_t, BF13_6uint16, bitc_uns32_t, _6uint32);
00607 DEFUNSIGNEDOPS(bitc_uns16_t, BF14_6uint16, bitc_uns32_t, _6uint32);
00608 DEFUNSIGNEDOPS(bitc_uns16_t, BF15_6uint16, bitc_uns32_t, _6uint32);
00609 DEFUNSIGNEDOPS(bitc_uns16_t,    _6uint16,  bitc_uns64_t, _6uint64);
00610 DEFUNSIGNEDOPS(bitc_uns16_t, BF1_6uint16,  bitc_uns64_t, _6uint64);
00611 DEFUNSIGNEDOPS(bitc_uns16_t, BF2_6uint16,  bitc_uns64_t, _6uint64);
00612 DEFUNSIGNEDOPS(bitc_uns16_t, BF3_6uint16,  bitc_uns64_t, _6uint64);
00613 DEFUNSIGNEDOPS(bitc_uns16_t, BF4_6uint16,  bitc_uns64_t, _6uint64);
00614 DEFUNSIGNEDOPS(bitc_uns16_t, BF5_6uint16,  bitc_uns64_t, _6uint64);
00615 DEFUNSIGNEDOPS(bitc_uns16_t, BF6_6uint16,  bitc_uns64_t, _6uint64);
00616 DEFUNSIGNEDOPS(bitc_uns16_t, BF7_6uint16,  bitc_uns64_t, _6uint64);
00617 DEFUNSIGNEDOPS(bitc_uns16_t, BF8_6uint16,  bitc_uns64_t, _6uint64);
00618 DEFUNSIGNEDOPS(bitc_uns16_t, BF9_6uint16,  bitc_uns64_t, _6uint64);
00619 DEFUNSIGNEDOPS(bitc_uns16_t, BF10_6uint16, bitc_uns64_t, _6uint64);
00620 DEFUNSIGNEDOPS(bitc_uns16_t, BF11_6uint16, bitc_uns64_t, _6uint64);
00621 DEFUNSIGNEDOPS(bitc_uns16_t, BF12_6uint16, bitc_uns64_t, _6uint64);
00622 DEFUNSIGNEDOPS(bitc_uns16_t, BF13_6uint16, bitc_uns64_t, _6uint64);
00623 DEFUNSIGNEDOPS(bitc_uns16_t, BF14_6uint16, bitc_uns64_t, _6uint64);
00624 DEFUNSIGNEDOPS(bitc_uns16_t, BF15_6uint16, bitc_uns64_t, _6uint64);
00625 DEFUNSIGNEDOPS(bitc_uns32_t, BF1_6uint32,  bitc_uns32_t, _6uint32);
00626 DEFUNSIGNEDOPS(bitc_uns32_t, BF2_6uint32,  bitc_uns32_t, _6uint32);
00627 DEFUNSIGNEDOPS(bitc_uns32_t, BF3_6uint32,  bitc_uns32_t, _6uint32);
00628 DEFUNSIGNEDOPS(bitc_uns32_t, BF4_6uint32,  bitc_uns32_t, _6uint32);
00629 DEFUNSIGNEDOPS(bitc_uns32_t, BF5_6uint32,  bitc_uns32_t, _6uint32);
00630 DEFUNSIGNEDOPS(bitc_uns32_t, BF6_6uint32,  bitc_uns32_t, _6uint32);
00631 DEFUNSIGNEDOPS(bitc_uns32_t, BF7_6uint32,  bitc_uns32_t, _6uint32);
00632 DEFUNSIGNEDOPS(bitc_uns32_t, BF8_6uint32,  bitc_uns32_t, _6uint32);
00633 DEFUNSIGNEDOPS(bitc_uns32_t, BF9_6uint32,  bitc_uns32_t, _6uint32);
00634 DEFUNSIGNEDOPS(bitc_uns32_t, BF10_6uint32, bitc_uns32_t, _6uint32);
00635 DEFUNSIGNEDOPS(bitc_uns32_t, BF11_6uint32, bitc_uns32_t, _6uint32);
00636 DEFUNSIGNEDOPS(bitc_uns32_t, BF12_6uint32, bitc_uns32_t, _6uint32);
00637 DEFUNSIGNEDOPS(bitc_uns32_t, BF13_6uint32, bitc_uns32_t, _6uint32);
00638 DEFUNSIGNEDOPS(bitc_uns32_t, BF14_6uint32, bitc_uns32_t, _6uint32);
00639 DEFUNSIGNEDOPS(bitc_uns32_t, BF15_6uint32, bitc_uns32_t, _6uint32);
00640 DEFUNSIGNEDOPS(bitc_uns32_t, BF16_6uint32, bitc_uns32_t, _6uint32);
00641 DEFUNSIGNEDOPS(bitc_uns32_t, BF17_6uint32, bitc_uns32_t, _6uint32);
00642 DEFUNSIGNEDOPS(bitc_uns32_t, BF18_6uint32, bitc_uns32_t, _6uint32);
00643 DEFUNSIGNEDOPS(bitc_uns32_t, BF19_6uint32, bitc_uns32_t, _6uint32);
00644 DEFUNSIGNEDOPS(bitc_uns32_t, BF20_6uint32, bitc_uns32_t, _6uint32);
00645 DEFUNSIGNEDOPS(bitc_uns32_t, BF21_6uint32, bitc_uns32_t, _6uint32);
00646 DEFUNSIGNEDOPS(bitc_uns32_t, BF22_6uint32, bitc_uns32_t, _6uint32);
00647 DEFUNSIGNEDOPS(bitc_uns32_t, BF23_6uint32, bitc_uns32_t, _6uint32);
00648 DEFUNSIGNEDOPS(bitc_uns32_t, BF24_6uint32, bitc_uns32_t, _6uint32);
00649 DEFUNSIGNEDOPS(bitc_uns32_t, BF25_6uint32, bitc_uns32_t, _6uint32);
00650 DEFUNSIGNEDOPS(bitc_uns32_t, BF26_6uint32, bitc_uns32_t, _6uint32);
00651 DEFUNSIGNEDOPS(bitc_uns32_t, BF27_6uint32, bitc_uns32_t, _6uint32);
00652 DEFUNSIGNEDOPS(bitc_uns32_t, BF28_6uint32, bitc_uns32_t, _6uint32);
00653 DEFUNSIGNEDOPS(bitc_uns32_t, BF29_6uint32, bitc_uns32_t, _6uint32);
00654 DEFUNSIGNEDOPS(bitc_uns32_t, BF30_6uint32, bitc_uns32_t, _6uint32);
00655 DEFUNSIGNEDOPS(bitc_uns32_t, BF31_6uint32, bitc_uns32_t, _6uint32);
00656 DEFUNSIGNEDOPS(bitc_uns32_t,    _6uint32,  bitc_uns64_t, _6uint64);
00657 DEFUNSIGNEDOPS(bitc_uns32_t, BF1_6uint32,  bitc_uns64_t, _6uint64);
00658 DEFUNSIGNEDOPS(bitc_uns32_t, BF2_6uint32,  bitc_uns64_t, _6uint64);
00659 DEFUNSIGNEDOPS(bitc_uns32_t, BF3_6uint32,  bitc_uns64_t, _6uint64);
00660 DEFUNSIGNEDOPS(bitc_uns32_t, BF4_6uint32,  bitc_uns64_t, _6uint64);
00661 DEFUNSIGNEDOPS(bitc_uns32_t, BF5_6uint32,  bitc_uns64_t, _6uint64);
00662 DEFUNSIGNEDOPS(bitc_uns32_t, BF6_6uint32,  bitc_uns64_t, _6uint64);
00663 DEFUNSIGNEDOPS(bitc_uns32_t, BF7_6uint32,  bitc_uns64_t, _6uint64);
00664 DEFUNSIGNEDOPS(bitc_uns32_t, BF8_6uint32,  bitc_uns64_t, _6uint64);
00665 DEFUNSIGNEDOPS(bitc_uns32_t, BF9_6uint32,  bitc_uns64_t, _6uint64);
00666 DEFUNSIGNEDOPS(bitc_uns32_t, BF10_6uint32, bitc_uns64_t, _6uint64);
00667 DEFUNSIGNEDOPS(bitc_uns32_t, BF11_6uint32, bitc_uns64_t, _6uint64);
00668 DEFUNSIGNEDOPS(bitc_uns32_t, BF12_6uint32, bitc_uns64_t, _6uint64);
00669 DEFUNSIGNEDOPS(bitc_uns32_t, BF13_6uint32, bitc_uns64_t, _6uint64);
00670 DEFUNSIGNEDOPS(bitc_uns32_t, BF14_6uint32, bitc_uns64_t, _6uint64);
00671 DEFUNSIGNEDOPS(bitc_uns32_t, BF15_6uint32, bitc_uns64_t, _6uint64);
00672 DEFUNSIGNEDOPS(bitc_uns32_t, BF16_6uint32, bitc_uns64_t, _6uint64);
00673 DEFUNSIGNEDOPS(bitc_uns32_t, BF17_6uint32, bitc_uns64_t, _6uint64);
00674 DEFUNSIGNEDOPS(bitc_uns32_t, BF18_6uint32, bitc_uns64_t, _6uint64);
00675 DEFUNSIGNEDOPS(bitc_uns32_t, BF19_6uint32, bitc_uns64_t, _6uint64);
00676 DEFUNSIGNEDOPS(bitc_uns32_t, BF20_6uint32, bitc_uns64_t, _6uint64);
00677 DEFUNSIGNEDOPS(bitc_uns32_t, BF21_6uint32, bitc_uns64_t, _6uint64);
00678 DEFUNSIGNEDOPS(bitc_uns32_t, BF22_6uint32, bitc_uns64_t, _6uint64);
00679 DEFUNSIGNEDOPS(bitc_uns32_t, BF23_6uint32, bitc_uns64_t, _6uint64);
00680 DEFUNSIGNEDOPS(bitc_uns32_t, BF24_6uint32, bitc_uns64_t, _6uint64);
00681 DEFUNSIGNEDOPS(bitc_uns32_t, BF25_6uint32, bitc_uns64_t, _6uint64);
00682 DEFUNSIGNEDOPS(bitc_uns32_t, BF26_6uint32, bitc_uns64_t, _6uint64);
00683 DEFUNSIGNEDOPS(bitc_uns32_t, BF27_6uint32, bitc_uns64_t, _6uint64);
00684 DEFUNSIGNEDOPS(bitc_uns32_t, BF28_6uint32, bitc_uns64_t, _6uint64);
00685 DEFUNSIGNEDOPS(bitc_uns32_t, BF29_6uint32, bitc_uns64_t, _6uint64);
00686 DEFUNSIGNEDOPS(bitc_uns32_t, BF30_6uint32, bitc_uns64_t, _6uint64);
00687 DEFUNSIGNEDOPS(bitc_uns32_t, BF31_6uint32, bitc_uns64_t, _6uint64);
00688 DEFUNSIGNEDOPS(bitc_uns64_t, BF1_6uint64,  bitc_uns64_t, _6uint64);
00689 DEFUNSIGNEDOPS(bitc_uns64_t, BF2_6uint64,  bitc_uns64_t, _6uint64);
00690 DEFUNSIGNEDOPS(bitc_uns64_t, BF3_6uint64,  bitc_uns64_t, _6uint64);
00691 DEFUNSIGNEDOPS(bitc_uns64_t, BF4_6uint64,  bitc_uns64_t, _6uint64);
00692 DEFUNSIGNEDOPS(bitc_uns64_t, BF5_6uint64,  bitc_uns64_t, _6uint64);
00693 DEFUNSIGNEDOPS(bitc_uns64_t, BF6_6uint64,  bitc_uns64_t, _6uint64);
00694 DEFUNSIGNEDOPS(bitc_uns64_t, BF7_6uint64,  bitc_uns64_t, _6uint64);
00695 DEFUNSIGNEDOPS(bitc_uns64_t, BF8_6uint64,  bitc_uns64_t, _6uint64);
00696 DEFUNSIGNEDOPS(bitc_uns64_t, BF9_6uint64,  bitc_uns64_t, _6uint64);
00697 DEFUNSIGNEDOPS(bitc_uns64_t, BF10_6uint64, bitc_uns64_t, _6uint64);
00698 DEFUNSIGNEDOPS(bitc_uns64_t, BF11_6uint64, bitc_uns64_t, _6uint64);
00699 DEFUNSIGNEDOPS(bitc_uns64_t, BF12_6uint64, bitc_uns64_t, _6uint64);
00700 DEFUNSIGNEDOPS(bitc_uns64_t, BF13_6uint64, bitc_uns64_t, _6uint64);
00701 DEFUNSIGNEDOPS(bitc_uns64_t, BF14_6uint64, bitc_uns64_t, _6uint64);
00702 DEFUNSIGNEDOPS(bitc_uns64_t, BF15_6uint64, bitc_uns64_t, _6uint64);
00703 DEFUNSIGNEDOPS(bitc_uns64_t, BF16_6uint64, bitc_uns64_t, _6uint64);
00704 DEFUNSIGNEDOPS(bitc_uns64_t, BF17_6uint64, bitc_uns64_t, _6uint64);
00705 DEFUNSIGNEDOPS(bitc_uns64_t, BF18_6uint64, bitc_uns64_t, _6uint64);
00706 DEFUNSIGNEDOPS(bitc_uns64_t, BF19_6uint64, bitc_uns64_t, _6uint64);
00707 DEFUNSIGNEDOPS(bitc_uns64_t, BF20_6uint64, bitc_uns64_t, _6uint64);
00708 DEFUNSIGNEDOPS(bitc_uns64_t, BF21_6uint64, bitc_uns64_t, _6uint64);
00709 DEFUNSIGNEDOPS(bitc_uns64_t, BF22_6uint64, bitc_uns64_t, _6uint64);
00710 DEFUNSIGNEDOPS(bitc_uns64_t, BF23_6uint64, bitc_uns64_t, _6uint64);
00711 DEFUNSIGNEDOPS(bitc_uns64_t, BF24_6uint64, bitc_uns64_t, _6uint64);
00712 DEFUNSIGNEDOPS(bitc_uns64_t, BF25_6uint64, bitc_uns64_t, _6uint64);
00713 DEFUNSIGNEDOPS(bitc_uns64_t, BF26_6uint64, bitc_uns64_t, _6uint64);
00714 DEFUNSIGNEDOPS(bitc_uns64_t, BF27_6uint64, bitc_uns64_t, _6uint64);
00715 DEFUNSIGNEDOPS(bitc_uns64_t, BF28_6uint64, bitc_uns64_t, _6uint64);
00716 DEFUNSIGNEDOPS(bitc_uns64_t, BF29_6uint64, bitc_uns64_t, _6uint64);
00717 DEFUNSIGNEDOPS(bitc_uns64_t, BF30_6uint64, bitc_uns64_t, _6uint64);
00718 DEFUNSIGNEDOPS(bitc_uns64_t, BF31_6uint64, bitc_uns64_t, _6uint64);
00719 DEFUNSIGNEDOPS(bitc_uns64_t, BF32_6uint64, bitc_uns64_t, _6uint64);
00720 DEFUNSIGNEDOPS(bitc_uns64_t, BF33_6uint64, bitc_uns64_t, _6uint64);
00721 DEFUNSIGNEDOPS(bitc_uns64_t, BF34_6uint64, bitc_uns64_t, _6uint64);
00722 DEFUNSIGNEDOPS(bitc_uns64_t, BF35_6uint64, bitc_uns64_t, _6uint64);
00723 DEFUNSIGNEDOPS(bitc_uns64_t, BF36_6uint64, bitc_uns64_t, _6uint64);
00724 DEFUNSIGNEDOPS(bitc_uns64_t, BF37_6uint64, bitc_uns64_t, _6uint64);
00725 DEFUNSIGNEDOPS(bitc_uns64_t, BF38_6uint64, bitc_uns64_t, _6uint64);
00726 DEFUNSIGNEDOPS(bitc_uns64_t, BF39_6uint64, bitc_uns64_t, _6uint64);
00727 DEFUNSIGNEDOPS(bitc_uns64_t, BF40_6uint64, bitc_uns64_t, _6uint64);
00728 DEFUNSIGNEDOPS(bitc_uns64_t, BF41_6uint64, bitc_uns64_t, _6uint64);
00729 DEFUNSIGNEDOPS(bitc_uns64_t, BF42_6uint64, bitc_uns64_t, _6uint64);
00730 DEFUNSIGNEDOPS(bitc_uns64_t, BF43_6uint64, bitc_uns64_t, _6uint64);
00731 DEFUNSIGNEDOPS(bitc_uns64_t, BF44_6uint64, bitc_uns64_t, _6uint64);
00732 DEFUNSIGNEDOPS(bitc_uns64_t, BF45_6uint64, bitc_uns64_t, _6uint64);
00733 DEFUNSIGNEDOPS(bitc_uns64_t, BF46_6uint64, bitc_uns64_t, _6uint64);
00734 DEFUNSIGNEDOPS(bitc_uns64_t, BF47_6uint64, bitc_uns64_t, _6uint64);
00735 DEFUNSIGNEDOPS(bitc_uns64_t, BF48_6uint64, bitc_uns64_t, _6uint64);
00736 DEFUNSIGNEDOPS(bitc_uns64_t, BF49_6uint64, bitc_uns64_t, _6uint64);
00737 DEFUNSIGNEDOPS(bitc_uns64_t, BF50_6uint64, bitc_uns64_t, _6uint64);
00738 DEFUNSIGNEDOPS(bitc_uns64_t, BF51_6uint64, bitc_uns64_t, _6uint64);
00739 DEFUNSIGNEDOPS(bitc_uns64_t, BF52_6uint64, bitc_uns64_t, _6uint64);
00740 DEFUNSIGNEDOPS(bitc_uns64_t, BF53_6uint64, bitc_uns64_t, _6uint64);
00741 DEFUNSIGNEDOPS(bitc_uns64_t, BF54_6uint64, bitc_uns64_t, _6uint64);
00742 DEFUNSIGNEDOPS(bitc_uns64_t, BF55_6uint64, bitc_uns64_t, _6uint64);
00743 DEFUNSIGNEDOPS(bitc_uns64_t, BF56_6uint64, bitc_uns64_t, _6uint64);
00744 DEFUNSIGNEDOPS(bitc_uns64_t, BF57_6uint64, bitc_uns64_t, _6uint64);
00745 DEFUNSIGNEDOPS(bitc_uns64_t, BF58_6uint64, bitc_uns64_t, _6uint64);
00746 DEFUNSIGNEDOPS(bitc_uns64_t, BF59_6uint64, bitc_uns64_t, _6uint64);
00747 DEFUNSIGNEDOPS(bitc_uns64_t, BF60_6uint64, bitc_uns64_t, _6uint64);
00748 DEFUNSIGNEDOPS(bitc_uns64_t, BF61_6uint64, bitc_uns64_t, _6uint64);
00749 DEFUNSIGNEDOPS(bitc_uns64_t, BF62_6uint64, bitc_uns64_t, _6uint64);
00750 DEFUNSIGNEDOPS(bitc_uns64_t, BF63_6uint64, bitc_uns64_t, _6uint64);
00751 DEFSIGNEDOPS(bitc_int8_t,  BF1_4int8,   bitc_int8_t,  _4int8);
00752 DEFSIGNEDOPS(bitc_int8_t,  BF2_4int8,   bitc_int8_t,  _4int8);
00753 DEFSIGNEDOPS(bitc_int8_t,  BF3_4int8,   bitc_int8_t,  _4int8);
00754 DEFSIGNEDOPS(bitc_int8_t,  BF4_4int8,   bitc_int8_t,  _4int8);
00755 DEFSIGNEDOPS(bitc_int8_t,  BF5_4int8,   bitc_int8_t,  _4int8);
00756 DEFSIGNEDOPS(bitc_int8_t,  BF6_4int8,   bitc_int8_t,  _4int8);
00757 DEFSIGNEDOPS(bitc_int8_t,  BF7_4int8,   bitc_int8_t,  _4int8);
00758 DEFSIGNEDOPS(bitc_int8_t,     _4int8,   bitc_int16_t, _5int16);
00759 DEFSIGNEDOPS(bitc_int8_t,  BF1_4int8,   bitc_int16_t, _5int16);
00760 DEFSIGNEDOPS(bitc_int8_t,  BF2_4int8,   bitc_int16_t, _5int16);
00761 DEFSIGNEDOPS(bitc_int8_t,  BF3_4int8,   bitc_int16_t, _5int16);
00762 DEFSIGNEDOPS(bitc_int8_t,  BF4_4int8,   bitc_int16_t, _5int16);
00763 DEFSIGNEDOPS(bitc_int8_t,  BF5_4int8,   bitc_int16_t, _5int16);
00764 DEFSIGNEDOPS(bitc_int8_t,  BF6_4int8,   bitc_int16_t, _5int16);
00765 DEFSIGNEDOPS(bitc_int8_t,  BF7_4int8,   bitc_int16_t, _5int16);
00766 DEFSIGNEDOPS(bitc_int8_t,     _4int8,   bitc_int32_t, _5int32);
00767 DEFSIGNEDOPS(bitc_int8_t,  BF1_4int8,   bitc_int32_t, _5int32);
00768 DEFSIGNEDOPS(bitc_int8_t,  BF2_4int8,   bitc_int32_t, _5int32);
00769 DEFSIGNEDOPS(bitc_int8_t,  BF3_4int8,   bitc_int32_t, _5int32);
00770 DEFSIGNEDOPS(bitc_int8_t,  BF4_4int8,   bitc_int32_t, _5int32);
00771 DEFSIGNEDOPS(bitc_int8_t,  BF5_4int8,   bitc_int32_t, _5int32);
00772 DEFSIGNEDOPS(bitc_int8_t,  BF6_4int8,   bitc_int32_t, _5int32);
00773 DEFSIGNEDOPS(bitc_int8_t,  BF7_4int8,   bitc_int32_t, _5int32);
00774 DEFSIGNEDOPS(bitc_int8_t,     _4int8,   bitc_int64_t, _5int64);
00775 DEFSIGNEDOPS(bitc_int8_t,  BF1_4int8,   bitc_int64_t, _5int64);
00776 DEFSIGNEDOPS(bitc_int8_t,  BF2_4int8,   bitc_int64_t, _5int64);
00777 DEFSIGNEDOPS(bitc_int8_t,  BF3_4int8,   bitc_int64_t, _5int64);
00778 DEFSIGNEDOPS(bitc_int8_t,  BF4_4int8,   bitc_int64_t, _5int64);
00779 DEFSIGNEDOPS(bitc_int8_t,  BF5_4int8,   bitc_int64_t, _5int64);
00780 DEFSIGNEDOPS(bitc_int8_t,  BF6_4int8,   bitc_int64_t, _5int64);
00781 DEFSIGNEDOPS(bitc_int8_t,  BF7_4int8,   bitc_int64_t, _5int64);
00782 DEFSIGNEDOPS(bitc_int16_t, BF1_5int16,  bitc_int16_t, _5int16);
00783 DEFSIGNEDOPS(bitc_int16_t, BF2_5int16,  bitc_int16_t, _5int16);
00784 DEFSIGNEDOPS(bitc_int16_t, BF3_5int16,  bitc_int16_t, _5int16);
00785 DEFSIGNEDOPS(bitc_int16_t, BF4_5int16,  bitc_int16_t, _5int16);
00786 DEFSIGNEDOPS(bitc_int16_t, BF5_5int16,  bitc_int16_t, _5int16);
00787 DEFSIGNEDOPS(bitc_int16_t, BF6_5int16,  bitc_int16_t, _5int16);
00788 DEFSIGNEDOPS(bitc_int16_t, BF7_5int16,  bitc_int16_t, _5int16);
00789 DEFSIGNEDOPS(bitc_int16_t, BF8_5int16,  bitc_int16_t, _5int16);
00790 DEFSIGNEDOPS(bitc_int16_t, BF9_5int16,  bitc_int16_t, _5int16);
00791 DEFSIGNEDOPS(bitc_int16_t, BF10_5int16, bitc_int16_t, _5int16);
00792 DEFSIGNEDOPS(bitc_int16_t, BF11_5int16, bitc_int16_t, _5int16);
00793 DEFSIGNEDOPS(bitc_int16_t, BF12_5int16, bitc_int16_t, _5int16);
00794 DEFSIGNEDOPS(bitc_int16_t, BF13_5int16, bitc_int16_t, _5int16);
00795 DEFSIGNEDOPS(bitc_int16_t, BF14_5int16, bitc_int16_t, _5int16);
00796 DEFSIGNEDOPS(bitc_int16_t, BF15_5int16, bitc_int16_t, _5int16);
00797 DEFSIGNEDOPS(bitc_int16_t,    _5int16,  bitc_int32_t, _5int32);
00798 DEFSIGNEDOPS(bitc_int16_t, BF1_5int16,  bitc_int32_t, _5int32);
00799 DEFSIGNEDOPS(bitc_int16_t, BF2_5int16,  bitc_int32_t, _5int32);
00800 DEFSIGNEDOPS(bitc_int16_t, BF3_5int16,  bitc_int32_t, _5int32);
00801 DEFSIGNEDOPS(bitc_int16_t, BF4_5int16,  bitc_int32_t, _5int32);
00802 DEFSIGNEDOPS(bitc_int16_t, BF5_5int16,  bitc_int32_t, _5int32);
00803 DEFSIGNEDOPS(bitc_int16_t, BF6_5int16,  bitc_int32_t, _5int32);
00804 DEFSIGNEDOPS(bitc_int16_t, BF7_5int16,  bitc_int32_t, _5int32);
00805 DEFSIGNEDOPS(bitc_int16_t, BF8_5int16,  bitc_int32_t, _5int32);
00806 DEFSIGNEDOPS(bitc_int16_t, BF9_5int16,  bitc_int32_t, _5int32);
00807 DEFSIGNEDOPS(bitc_int16_t, BF10_5int16, bitc_int32_t, _5int32);
00808 DEFSIGNEDOPS(bitc_int16_t, BF11_5int16, bitc_int32_t, _5int32);
00809 DEFSIGNEDOPS(bitc_int16_t, BF12_5int16, bitc_int32_t, _5int32);
00810 DEFSIGNEDOPS(bitc_int16_t, BF13_5int16, bitc_int32_t, _5int32);
00811 DEFSIGNEDOPS(bitc_int16_t, BF14_5int16, bitc_int32_t, _5int32);
00812 DEFSIGNEDOPS(bitc_int16_t, BF15_5int16, bitc_int32_t, _5int32);
00813 DEFSIGNEDOPS(bitc_int16_t,    _5int16,  bitc_int64_t, _5int64);
00814 DEFSIGNEDOPS(bitc_int16_t, BF1_5int16,  bitc_int64_t, _5int64);
00815 DEFSIGNEDOPS(bitc_int16_t, BF2_5int16,  bitc_int64_t, _5int64);
00816 DEFSIGNEDOPS(bitc_int16_t, BF3_5int16,  bitc_int64_t, _5int64);
00817 DEFSIGNEDOPS(bitc_int16_t, BF4_5int16,  bitc_int64_t, _5int64);
00818 DEFSIGNEDOPS(bitc_int16_t, BF5_5int16,  bitc_int64_t, _5int64);
00819 DEFSIGNEDOPS(bitc_int16_t, BF6_5int16,  bitc_int64_t, _5int64);
00820 DEFSIGNEDOPS(bitc_int16_t, BF7_5int16,  bitc_int64_t, _5int64);
00821 DEFSIGNEDOPS(bitc_int16_t, BF8_5int16,  bitc_int64_t, _5int64);
00822 DEFSIGNEDOPS(bitc_int16_t, BF9_5int16,  bitc_int64_t, _5int64);
00823 DEFSIGNEDOPS(bitc_int16_t, BF10_5int16, bitc_int64_t, _5int64);
00824 DEFSIGNEDOPS(bitc_int16_t, BF11_5int16, bitc_int64_t, _5int64);
00825 DEFSIGNEDOPS(bitc_int16_t, BF12_5int16, bitc_int64_t, _5int64);
00826 DEFSIGNEDOPS(bitc_int16_t, BF13_5int16, bitc_int64_t, _5int64);
00827 DEFSIGNEDOPS(bitc_int16_t, BF14_5int16, bitc_int64_t, _5int64);
00828 DEFSIGNEDOPS(bitc_int16_t, BF15_5int16, bitc_int64_t, _5int64);
00829 DEFSIGNEDOPS(bitc_int32_t, BF1_5int32,  bitc_int32_t, _5int32);
00830 DEFSIGNEDOPS(bitc_int32_t, BF2_5int32,  bitc_int32_t, _5int32);
00831 DEFSIGNEDOPS(bitc_int32_t, BF3_5int32,  bitc_int32_t, _5int32);
00832 DEFSIGNEDOPS(bitc_int32_t, BF4_5int32,  bitc_int32_t, _5int32);
00833 DEFSIGNEDOPS(bitc_int32_t, BF5_5int32,  bitc_int32_t, _5int32);
00834 DEFSIGNEDOPS(bitc_int32_t, BF6_5int32,  bitc_int32_t, _5int32);
00835 DEFSIGNEDOPS(bitc_int32_t, BF7_5int32,  bitc_int32_t, _5int32);
00836 DEFSIGNEDOPS(bitc_int32_t, BF8_5int32,  bitc_int32_t, _5int32);
00837 DEFSIGNEDOPS(bitc_int32_t, BF9_5int32,  bitc_int32_t, _5int32);
00838 DEFSIGNEDOPS(bitc_int32_t, BF10_5int32, bitc_int32_t, _5int32);
00839 DEFSIGNEDOPS(bitc_int32_t, BF11_5int32, bitc_int32_t, _5int32);
00840 DEFSIGNEDOPS(bitc_int32_t, BF12_5int32, bitc_int32_t, _5int32);
00841 DEFSIGNEDOPS(bitc_int32_t, BF13_5int32, bitc_int32_t, _5int32);
00842 DEFSIGNEDOPS(bitc_int32_t, BF14_5int32, bitc_int32_t, _5int32);
00843 DEFSIGNEDOPS(bitc_int32_t, BF15_5int32, bitc_int32_t, _5int32);
00844 DEFSIGNEDOPS(bitc_int32_t, BF16_5int32, bitc_int32_t, _5int32);
00845 DEFSIGNEDOPS(bitc_int32_t, BF17_5int32, bitc_int32_t, _5int32);
00846 DEFSIGNEDOPS(bitc_int32_t, BF18_5int32, bitc_int32_t, _5int32);
00847 DEFSIGNEDOPS(bitc_int32_t, BF19_5int32, bitc_int32_t, _5int32);
00848 DEFSIGNEDOPS(bitc_int32_t, BF20_5int32, bitc_int32_t, _5int32);
00849 DEFSIGNEDOPS(bitc_int32_t, BF21_5int32, bitc_int32_t, _5int32);
00850 DEFSIGNEDOPS(bitc_int32_t, BF22_5int32, bitc_int32_t, _5int32);
00851 DEFSIGNEDOPS(bitc_int32_t, BF23_5int32, bitc_int32_t, _5int32);
00852 DEFSIGNEDOPS(bitc_int32_t, BF24_5int32, bitc_int32_t, _5int32);
00853 DEFSIGNEDOPS(bitc_int32_t, BF25_5int32, bitc_int32_t, _5int32);
00854 DEFSIGNEDOPS(bitc_int32_t, BF26_5int32, bitc_int32_t, _5int32);
00855 DEFSIGNEDOPS(bitc_int32_t, BF27_5int32, bitc_int32_t, _5int32);
00856 DEFSIGNEDOPS(bitc_int32_t, BF28_5int32, bitc_int32_t, _5int32);
00857 DEFSIGNEDOPS(bitc_int32_t, BF29_5int32, bitc_int32_t, _5int32);
00858 DEFSIGNEDOPS(bitc_int32_t, BF30_5int32, bitc_int32_t, _5int32);
00859 DEFSIGNEDOPS(bitc_int32_t, BF31_5int32, bitc_int32_t, _5int32);
00860 DEFSIGNEDOPS(bitc_int32_t,    _5int32,  bitc_int64_t, _5int64);
00861 DEFSIGNEDOPS(bitc_int32_t, BF1_5int32,  bitc_int64_t, _5int64);
00862 DEFSIGNEDOPS(bitc_int32_t, BF2_5int32,  bitc_int64_t, _5int64);
00863 DEFSIGNEDOPS(bitc_int32_t, BF3_5int32,  bitc_int64_t, _5int64);
00864 DEFSIGNEDOPS(bitc_int32_t, BF4_5int32,  bitc_int64_t, _5int64);
00865 DEFSIGNEDOPS(bitc_int32_t, BF5_5int32,  bitc_int64_t, _5int64);
00866 DEFSIGNEDOPS(bitc_int32_t, BF6_5int32,  bitc_int64_t, _5int64);
00867 DEFSIGNEDOPS(bitc_int32_t, BF7_5int32,  bitc_int64_t, _5int64);
00868 DEFSIGNEDOPS(bitc_int32_t, BF8_5int32,  bitc_int64_t, _5int64);
00869 DEFSIGNEDOPS(bitc_int32_t, BF9_5int32,  bitc_int64_t, _5int64);
00870 DEFSIGNEDOPS(bitc_int32_t, BF10_5int32, bitc_int64_t, _5int64);
00871 DEFSIGNEDOPS(bitc_int32_t, BF11_5int32, bitc_int64_t, _5int64);
00872 DEFSIGNEDOPS(bitc_int32_t, BF12_5int32, bitc_int64_t, _5int64);
00873 DEFSIGNEDOPS(bitc_int32_t, BF13_5int32, bitc_int64_t, _5int64);
00874 DEFSIGNEDOPS(bitc_int32_t, BF14_5int32, bitc_int64_t, _5int64);
00875 DEFSIGNEDOPS(bitc_int32_t, BF15_5int32, bitc_int64_t, _5int64);
00876 DEFSIGNEDOPS(bitc_int32_t, BF16_5int32, bitc_int64_t, _5int64);
00877 DEFSIGNEDOPS(bitc_int32_t, BF17_5int32, bitc_int64_t, _5int64);
00878 DEFSIGNEDOPS(bitc_int32_t, BF18_5int32, bitc_int64_t, _5int64);
00879 DEFSIGNEDOPS(bitc_int32_t, BF19_5int32, bitc_int64_t, _5int64);
00880 DEFSIGNEDOPS(bitc_int32_t, BF20_5int32, bitc_int64_t, _5int64);
00881 DEFSIGNEDOPS(bitc_int32_t, BF21_5int32, bitc_int64_t, _5int64);
00882 DEFSIGNEDOPS(bitc_int32_t, BF22_5int32, bitc_int64_t, _5int64);
00883 DEFSIGNEDOPS(bitc_int32_t, BF23_5int32, bitc_int64_t, _5int64);
00884 DEFSIGNEDOPS(bitc_int32_t, BF24_5int32, bitc_int64_t, _5int64);
00885 DEFSIGNEDOPS(bitc_int32_t, BF25_5int32, bitc_int64_t, _5int64);
00886 DEFSIGNEDOPS(bitc_int32_t, BF26_5int32, bitc_int64_t, _5int64);
00887 DEFSIGNEDOPS(bitc_int32_t, BF27_5int32, bitc_int64_t, _5int64);
00888 DEFSIGNEDOPS(bitc_int32_t, BF28_5int32, bitc_int64_t, _5int64);
00889 DEFSIGNEDOPS(bitc_int32_t, BF29_5int32, bitc_int64_t, _5int64);
00890 DEFSIGNEDOPS(bitc_int32_t, BF30_5int32, bitc_int64_t, _5int64);
00891 DEFSIGNEDOPS(bitc_int32_t, BF31_5int32, bitc_int64_t, _5int64);
00892 DEFSIGNEDOPS(bitc_int64_t, BF1_5int64,  bitc_int64_t, _5int64);
00893 DEFSIGNEDOPS(bitc_int64_t, BF2_5int64,  bitc_int64_t, _5int64);
00894 DEFSIGNEDOPS(bitc_int64_t, BF3_5int64,  bitc_int64_t, _5int64);
00895 DEFSIGNEDOPS(bitc_int64_t, BF4_5int64,  bitc_int64_t, _5int64);
00896 DEFSIGNEDOPS(bitc_int64_t, BF5_5int64,  bitc_int64_t, _5int64);
00897 DEFSIGNEDOPS(bitc_int64_t, BF6_5int64,  bitc_int64_t, _5int64);
00898 DEFSIGNEDOPS(bitc_int64_t, BF7_5int64,  bitc_int64_t, _5int64);
00899 DEFSIGNEDOPS(bitc_int64_t, BF8_5int64,  bitc_int64_t, _5int64);
00900 DEFSIGNEDOPS(bitc_int64_t, BF9_5int64,  bitc_int64_t, _5int64);
00901 DEFSIGNEDOPS(bitc_int64_t, BF10_5int64, bitc_int64_t, _5int64);
00902 DEFSIGNEDOPS(bitc_int64_t, BF11_5int64, bitc_int64_t, _5int64);
00903 DEFSIGNEDOPS(bitc_int64_t, BF12_5int64, bitc_int64_t, _5int64);
00904 DEFSIGNEDOPS(bitc_int64_t, BF13_5int64, bitc_int64_t, _5int64);
00905 DEFSIGNEDOPS(bitc_int64_t, BF14_5int64, bitc_int64_t, _5int64);
00906 DEFSIGNEDOPS(bitc_int64_t, BF15_5int64, bitc_int64_t, _5int64);
00907 DEFSIGNEDOPS(bitc_int64_t, BF16_5int64, bitc_int64_t, _5int64);
00908 DEFSIGNEDOPS(bitc_int64_t, BF17_5int64, bitc_int64_t, _5int64);
00909 DEFSIGNEDOPS(bitc_int64_t, BF18_5int64, bitc_int64_t, _5int64);
00910 DEFSIGNEDOPS(bitc_int64_t, BF19_5int64, bitc_int64_t, _5int64);
00911 DEFSIGNEDOPS(bitc_int64_t, BF20_5int64, bitc_int64_t, _5int64);
00912 DEFSIGNEDOPS(bitc_int64_t, BF21_5int64, bitc_int64_t, _5int64);
00913 DEFSIGNEDOPS(bitc_int64_t, BF22_5int64, bitc_int64_t, _5int64);
00914 DEFSIGNEDOPS(bitc_int64_t, BF23_5int64, bitc_int64_t, _5int64);
00915 DEFSIGNEDOPS(bitc_int64_t, BF24_5int64, bitc_int64_t, _5int64);
00916 DEFSIGNEDOPS(bitc_int64_t, BF25_5int64, bitc_int64_t, _5int64);
00917 DEFSIGNEDOPS(bitc_int64_t, BF26_5int64, bitc_int64_t, _5int64);
00918 DEFSIGNEDOPS(bitc_int64_t, BF27_5int64, bitc_int64_t, _5int64);
00919 DEFSIGNEDOPS(bitc_int64_t, BF28_5int64, bitc_int64_t, _5int64);
00920 DEFSIGNEDOPS(bitc_int64_t, BF29_5int64, bitc_int64_t, _5int64);
00921 DEFSIGNEDOPS(bitc_int64_t, BF30_5int64, bitc_int64_t, _5int64);
00922 DEFSIGNEDOPS(bitc_int64_t, BF31_5int64, bitc_int64_t, _5int64);
00923 DEFSIGNEDOPS(bitc_int64_t, BF32_5int64, bitc_int64_t, _5int64);
00924 DEFSIGNEDOPS(bitc_int64_t, BF33_5int64, bitc_int64_t, _5int64);
00925 DEFSIGNEDOPS(bitc_int64_t, BF34_5int64, bitc_int64_t, _5int64);
00926 DEFSIGNEDOPS(bitc_int64_t, BF35_5int64, bitc_int64_t, _5int64);
00927 DEFSIGNEDOPS(bitc_int64_t, BF36_5int64, bitc_int64_t, _5int64);
00928 DEFSIGNEDOPS(bitc_int64_t, BF37_5int64, bitc_int64_t, _5int64);
00929 DEFSIGNEDOPS(bitc_int64_t, BF38_5int64, bitc_int64_t, _5int64);
00930 DEFSIGNEDOPS(bitc_int64_t, BF39_5int64, bitc_int64_t, _5int64);
00931 DEFSIGNEDOPS(bitc_int64_t, BF40_5int64, bitc_int64_t, _5int64);
00932 DEFSIGNEDOPS(bitc_int64_t, BF41_5int64, bitc_int64_t, _5int64);
00933 DEFSIGNEDOPS(bitc_int64_t, BF42_5int64, bitc_int64_t, _5int64);
00934 DEFSIGNEDOPS(bitc_int64_t, BF43_5int64, bitc_int64_t, _5int64);
00935 DEFSIGNEDOPS(bitc_int64_t, BF44_5int64, bitc_int64_t, _5int64);
00936 DEFSIGNEDOPS(bitc_int64_t, BF45_5int64, bitc_int64_t, _5int64);
00937 DEFSIGNEDOPS(bitc_int64_t, BF46_5int64, bitc_int64_t, _5int64);
00938 DEFSIGNEDOPS(bitc_int64_t, BF47_5int64, bitc_int64_t, _5int64);
00939 DEFSIGNEDOPS(bitc_int64_t, BF48_5int64, bitc_int64_t, _5int64);
00940 DEFSIGNEDOPS(bitc_int64_t, BF49_5int64, bitc_int64_t, _5int64);
00941 DEFSIGNEDOPS(bitc_int64_t, BF50_5int64, bitc_int64_t, _5int64);
00942 DEFSIGNEDOPS(bitc_int64_t, BF51_5int64, bitc_int64_t, _5int64);
00943 DEFSIGNEDOPS(bitc_int64_t, BF52_5int64, bitc_int64_t, _5int64);
00944 DEFSIGNEDOPS(bitc_int64_t, BF53_5int64, bitc_int64_t, _5int64);
00945 DEFSIGNEDOPS(bitc_int64_t, BF54_5int64, bitc_int64_t, _5int64);
00946 DEFSIGNEDOPS(bitc_int64_t, BF55_5int64, bitc_int64_t, _5int64);
00947 DEFSIGNEDOPS(bitc_int64_t, BF56_5int64, bitc_int64_t, _5int64);
00948 DEFSIGNEDOPS(bitc_int64_t, BF57_5int64, bitc_int64_t, _5int64);
00949 DEFSIGNEDOPS(bitc_int64_t, BF58_5int64, bitc_int64_t, _5int64);
00950 DEFSIGNEDOPS(bitc_int64_t, BF59_5int64, bitc_int64_t, _5int64);
00951 DEFSIGNEDOPS(bitc_int64_t, BF60_5int64, bitc_int64_t, _5int64);
00952 DEFSIGNEDOPS(bitc_int64_t, BF61_5int64, bitc_int64_t, _5int64);
00953 DEFSIGNEDOPS(bitc_int64_t, BF62_5int64, bitc_int64_t, _5int64);
00954 DEFSIGNEDOPS(bitc_int64_t, BF63_5int64, bitc_int64_t, _5int64);
00955 DEFRESIGN(bitc_uns8_t,  _5uint8,  bitc_int8_t,  _4int8);
00956 DEFRESIGN(bitc_uns16_t, _6uint16, bitc_int16_t, _5int16);
00957 DEFRESIGN(bitc_uns32_t, _6uint32, bitc_int32_t, _5int32);
00958 DEFRESIGN(bitc_uns64_t, _6uint64, bitc_int64_t, _5int64);
00959 DEFCAST(bitc_uns8_t,  _5uint8,  bitc_word_t,   _4word);
00960 DEFCAST(bitc_int8_t,  _4int8,  bitc_word_t,   _4word);
00961 DEFCAST(bitc_word_t,   _4word,   bitc_uns8_t,   _5uint8);
00962 DEFCAST(bitc_word_t,   _4word,   bitc_int8_t,  _4int8);
00963 DEFCAST(bitc_uns16_t, _6uint16, bitc_word_t,  _4word);
00964 DEFCAST(bitc_int16_t, _5int16, bitc_word_t,  _4word);
00965 DEFCAST(bitc_word_t,  _4word,  bitc_uns16_t,  _6uint16);
00966 DEFCAST(bitc_word_t,  _4word,  bitc_int16_t, _5int16);
00967 DEFCAST(bitc_uns32_t, _6uint32, bitc_word_t,  _4word);
00968 DEFCAST(bitc_int32_t, _5int32, bitc_word_t,  _4word);
00969 DEFCAST(bitc_word_t,  _4word,  bitc_uns32_t,  _6uint32);
00970 DEFCAST(bitc_word_t,  _4word,  bitc_int32_t, _5int32);
00971 DEFCAST(bitc_uns64_t, _6uint64, bitc_word_t,  _4word);
00972 DEFCAST(bitc_int64_t, _5int64, bitc_word_t,  _4word);
00973 DEFCAST(bitc_word_t,  _4word,  bitc_uns64_t,  _6uint64);
00974 DEFCAST(bitc_word_t,  _4word,  bitc_int64_t, _5int64);
00975 DEFCAST(bitc_word_t,  _4word,  bitc_word_t,  _4word);
00976 DEFCAST(bitc_float_t, _5float, bitc_word_t,  _4word);
00977 DEFCAST(bitc_double_t, _6double, bitc_word_t,  _4word);
00978 DEFCAST(bitc_word_t,  _4word,  bitc_float_t,  _5float);
00979 DEFCAST(bitc_word_t,  _4word,  bitc_double_t, _6double);
00980 
00981 /**************************************************************
00982  **             End of Script generated code                 **
00983  **************************************************************/
00984 
00985 /**************************************************************
00986  **                  Procedure Objects                       **
00987  **************************************************************/
00988 
00989 /*****************************************************************
00990  * Every procedure object is an overlay structure consisting
00991  * of a raw code block that contains the location of the closure
00992  * record as a literal constant and a data overlay that allows
00993  * the garbage collector to relocate the closure record at need.
00994  *
00995  * On machines having a PC-relative load (or which can contrive
00996  * to simulate one efficiently), that addressing mode is probably
00997  * the best one to use.
00998  *****************************************************************/
00999 
01163 
01164 
01168 void *
01169 bitc_emit_procedure_object(void *stubP, void *envP) MAYBE_UNUSED;
01170 
01171 #if defined(__i386__)
01172 
01173 typedef union {
01174   uint8_t code[13];
01175   struct {
01176     uint8_t pad[4];
01177     void *ptr;
01178   } env;
01179 } bitc_Procedure;
01180 
01181 #define BITC_GET_CLOSURE_ENV(nm) \
01182   void *nm; \
01183   __asm__ __volatile__("movl %%eax,%0" : "=g" (nm))
01184 
01185 #elif defined(__x86_64__)
01186 
01187 typedef union {
01188   uint8_t code[25];
01189   struct {
01190     uint8_t pad[16];
01191     void *ptr;
01192   } env;
01193 } bitc_Procedure;
01194 
01195 #define BITC_GET_CLOSURE_ENV(nm) \
01196   void *nm; \
01197   __asm__ __volatile__("movq %%rax,%0" : "=g" (nm))
01198 
01199 #elif defined(__POWERPC__) && defined(__MACH__)
01200 
01201 typedef union {
01202   uint32_t code[10];
01203 } bitc_Procedure;
01204 
01205 #define BITC_GET_CLOSURE_ENV(nm) \
01206   void *nm; \
01207   __asm__ __volatile__("stw r2,%0" : "=m" (nm))
01208 
01209 #elif defined(__sparc__)
01210 
01211 typedef union {
01212   uint32_t code[3];
01213   struct {
01214     uint32_t pad[3];
01215     void *ptr;
01216   } env;
01217 } bitc_Procedure;
01218 
01219 #define BITC_GET_CLOSURE_ENV(nm) \
01220   void *nm; \
01221   __asm__ __volatile__("mov %0,%%g0" : "=g" (nm))
01222 
01223 #elif defined(__sparc64__)
01224 
01225 typedef union {
01226   uint32_t code[7];
01227   struct {
01228     /* Note extra pad word to make ptr be naturally aligned, pending
01229        confirm from JWA about whether this is required. */
01230     uint32_t pad[8];
01231     void *ptr;
01232   } env;
01233 } bitc_Procedure;
01234 
01235 #define BITC_GET_CLOSURE_ENV(nm) \
01236   void *nm; \
01237   __asm__ __volatile__("mov %0,%%g0" : "=g" (nm))
01238 
01239 #else
01240 #  error "Target architecture not (yet) supported"
01241 #endif
01242 
01243 
01244 /***************************************************************
01245                         End of Bitc Runtime
01246 ****************************************************************/
01247 
01248 #endif /* BITC_RUNTIME_H */

Generated on Sat Feb 4 23:59:30 2012 for BitC Runtime Library by  doxygen 1.4.7