include/SSEPlus_base.h

Go to the documentation of this file.
00001 //
00002 // Copyright (c) 2006-2008 Advanced Micro Devices, Inc. All Rights Reserved.
00003 // This software is subject to the Apache v2.0 License.
00004 //
00005 #ifndef __BASE_H__
00006 #define __BASE_H__
00007 
00008 #include "SSEPlus_platform.h"
00009 
00010 #include <xmmintrin.h>  // SSE  (Required to use the __m128, and __m128d type)
00011 #include <emmintrin.h>  // SSE2 (Required to use the __m128i type)
00012 
00013 //---------------------------------------
00014 // Type Definitions
00015 //---------------------------------------
00016 
00017 typedef   signed char      ssp_s8;
00018 typedef unsigned char      ssp_u8;
00019 
00020 typedef   signed short     ssp_s16;
00021 typedef unsigned short     ssp_u16;
00022 
00023 typedef   signed int       ssp_s32;
00024 typedef unsigned int       ssp_u32;
00025 
00026 typedef float              ssp_f32;
00027 typedef double             ssp_f64;
00028 
00029 typedef   signed long long ssp_s64;
00030 typedef unsigned long long ssp_u64;
00031 
00032 typedef union 
00033 {
00034     __m128  f;
00035     __m128d d;
00036     __m128i i;
00037     __m64       m64[ 2];
00038     ssp_u64 u64[ 2];  
00039     ssp_s64 s64[ 2];
00040     ssp_f64 f64[ 2]; 
00041     ssp_u32 u32[ 4];
00042     ssp_s32 s32[ 4];    
00043     ssp_f32 f32[ 4]; 
00044     ssp_u16 u16[ 8];  
00045     ssp_s16 s16[ 8];    
00046     ssp_u8  u8 [16];
00047     ssp_s8  s8 [16];    
00048 } ssp_m128;
00049 
00050 typedef union 
00051 {
00052     __m64       m64;
00053     ssp_u64 u64;  
00054     ssp_s64 s64;
00055     ssp_u32 u32[ 2];
00056     ssp_s32 s32[ 2];    
00057     ssp_u16 u16[ 4];  
00058     ssp_s16 s16[ 4];    
00059     ssp_u8  u8 [ 8];
00060     ssp_s8  s8 [ 8];    
00061 } ssp_m64;
00062 
00063 ssp_u16 MAX_U16 = 65535;
00064 
00065 //---------------------------------------
00066 // Rounding mode macros
00067 //---------------------------------------
00068 #define SSP_FROUND_TO_NEAREST_INT    0x00
00069 #define SSP_FROUND_TO_NEG_INF        0x01
00070 #define SSP_FROUND_TO_POS_INF        0x02
00071 #define SSP_FROUND_TO_ZERO           0x03
00072 #define SSP_FROUND_CUR_DIRECTION     0x04
00073 
00074 #define SSP_FROUND_RAISE_EXC         0x00
00075 #define SSP_FROUND_NO_EXC            0x08
00076 
00077 //---------------------------------------
00078 // Floating point precision requirements
00079 //---------------------------------------
00080 const static float  SSP_F32_ALLOWANCE =  0.0001f;
00081 const static double SSP_F64_ALLOWANCE =  0.0001;
00082 
00083 
00084 //---------------------------------------
00085 // Warning macros
00086 //---------------------------------------
00087 #define STRING2(x) #x
00088 #define STRING(x) STRING2(x)
00089 #define WARN( ) __FILE__"("STRING(__LINE__)") : NOTE " 
00090 
00091 //#define _SSP_SHUFFLE(w,x,y,z) (((w)<<3) | ((x)<<2) | ((y)<<1) | (z))
00092 
00093 //---------------------------------------
00094 // Common Case Statements 
00095 //    for native intrinsics with an immediate input
00096 //---------------------------------------
00097 #define CASE_2( fn, ... )                   \
00098 case 0x0: return fn( __VA_ARGS__, 0x0 );    \
00099 default:  return fn( __VA_ARGS__, 0x1 );
00100 
00101 #define CASE_4( fn, ... )                   \
00102 case 0x0: return fn( __VA_ARGS__, 0x0 );    \
00103 case 0x1: return fn( __VA_ARGS__, 0x1 );    \
00104 case 0x2: return fn( __VA_ARGS__, 0x2 );    \
00105 default: return fn( __VA_ARGS__, 0x3 );
00106 
00107 #define CASE_4_NR( fn, ... )         \
00108 case 0x0: fn( __VA_ARGS__, 0x0 );    \
00109 case 0x1: fn( __VA_ARGS__, 0x1 );    \
00110 case 0x2: fn( __VA_ARGS__, 0x2 );    \
00111 default: fn( __VA_ARGS__, 0x3 );
00112 
00113 #define CASE_8( fn, ... )                   \
00114 case 0x0: return fn( __VA_ARGS__, 0x0 );    \
00115 case 0x1: return fn( __VA_ARGS__, 0x1 );    \
00116 case 0x2: return fn( __VA_ARGS__, 0x2 );    \
00117 case 0x3: return fn( __VA_ARGS__, 0x3 );    \
00118 case 0x4: return fn( __VA_ARGS__, 0x4 );    \
00119 case 0x5: return fn( __VA_ARGS__, 0x5 );    \
00120 case 0x6: return fn( __VA_ARGS__, 0x6 );    \
00121 default: return fn( __VA_ARGS__, 0x7 );
00122 
00123 #define CASE_16( fn, ... )                  \
00124 case 0x0: return fn( __VA_ARGS__, 0x0 );    \
00125 case 0x1: return fn( __VA_ARGS__, 0x1 );    \
00126 case 0x2: return fn( __VA_ARGS__, 0x2 );    \
00127 case 0x3: return fn( __VA_ARGS__, 0x3 );    \
00128 case 0x4: return fn( __VA_ARGS__, 0x4 );    \
00129 case 0x5: return fn( __VA_ARGS__, 0x5 );    \
00130 case 0x6: return fn( __VA_ARGS__, 0x6 );    \
00131 case 0x7: return fn( __VA_ARGS__, 0x7 );    \
00132 case 0x8: return fn( __VA_ARGS__, 0x8 );    \
00133 case 0x9: return fn( __VA_ARGS__, 0x9 );    \
00134 case 0xA: return fn( __VA_ARGS__, 0xA );    \
00135 case 0xB: return fn( __VA_ARGS__, 0xB );    \
00136 case 0xC: return fn( __VA_ARGS__, 0xC );    \
00137 case 0xD: return fn( __VA_ARGS__, 0xD );    \
00138 case 0xE: return fn( __VA_ARGS__, 0xE );    \
00139 default: return fn( __VA_ARGS__, 0xF );
00140 
00141 #define CASE_32( fn, ... )                  \
00142 case 0x0: return fn( __VA_ARGS__, 0x0 );    \
00143 case 0x1: return fn( __VA_ARGS__, 0x1 );    \
00144 case 0x2: return fn( __VA_ARGS__, 0x2 );    \
00145 case 0x3: return fn( __VA_ARGS__, 0x3 );    \
00146 case 0x4: return fn( __VA_ARGS__, 0x4 );    \
00147 case 0x5: return fn( __VA_ARGS__, 0x5 );    \
00148 case 0x6: return fn( __VA_ARGS__, 0x6 );    \
00149 case 0x7: return fn( __VA_ARGS__, 0x7 );    \
00150 case 0x8: return fn( __VA_ARGS__, 0x8 );    \
00151 case 0x9: return fn( __VA_ARGS__, 0x9 );    \
00152 case 0xA: return fn( __VA_ARGS__, 0xA );    \
00153 case 0xB: return fn( __VA_ARGS__, 0xB );    \
00154 case 0xC: return fn( __VA_ARGS__, 0xC );    \
00155 case 0xD: return fn( __VA_ARGS__, 0xD );    \
00156 case 0xE: return fn( __VA_ARGS__, 0xE );    \
00157 case 0xF: return fn( __VA_ARGS__, 0xF );    \
00158 case 0x10: return fn( __VA_ARGS__, 0x10 );    \
00159 case 0x11: return fn( __VA_ARGS__, 0x11 );    \
00160 case 0x12: return fn( __VA_ARGS__, 0x12 );    \
00161 case 0x13: return fn( __VA_ARGS__, 0x13 );    \
00162 case 0x14: return fn( __VA_ARGS__, 0x14 );    \
00163 case 0x15: return fn( __VA_ARGS__, 0x15 );    \
00164 case 0x16: return fn( __VA_ARGS__, 0x16 );    \
00165 case 0x17: return fn( __VA_ARGS__, 0x17 );    \
00166 case 0x18: return fn( __VA_ARGS__, 0x18 );    \
00167 case 0x19: return fn( __VA_ARGS__, 0x19 );    \
00168 case 0x1A: return fn( __VA_ARGS__, 0x1A );    \
00169 case 0x1B: return fn( __VA_ARGS__, 0x1B );    \
00170 case 0x1C: return fn( __VA_ARGS__, 0x1C );    \
00171 case 0x1D: return fn( __VA_ARGS__, 0x1D );    \
00172 case 0x1E: return fn( __VA_ARGS__, 0x1E );    \
00173 default:   return fn( __VA_ARGS__, 0x1F );    
00174 
00175 #define CASE_128( fn, ... )                 \
00176 case 0x0: return fn( __VA_ARGS__, 0x0 );    \
00177 case 0x1: return fn( __VA_ARGS__, 0x1 );    \
00178 case 0x2: return fn( __VA_ARGS__, 0x2 );    \
00179 case 0x3: return fn( __VA_ARGS__, 0x3 );    \
00180 case 0x4: return fn( __VA_ARGS__, 0x4 );    \
00181 case 0x5: return fn( __VA_ARGS__, 0x5 );    \
00182 case 0x6: return fn( __VA_ARGS__, 0x6 );    \
00183 case 0x7: return fn( __VA_ARGS__, 0x7 );    \
00184 case 0x8: return fn( __VA_ARGS__, 0x8 );    \
00185 case 0x9: return fn( __VA_ARGS__, 0x9 );    \
00186 case 0xA: return fn( __VA_ARGS__, 0xA );    \
00187 case 0xB: return fn( __VA_ARGS__, 0xB );    \
00188 case 0xC: return fn( __VA_ARGS__, 0xC );    \
00189 case 0xD: return fn( __VA_ARGS__, 0xD );    \
00190 case 0xE: return fn( __VA_ARGS__, 0xE );    \
00191 case 0xF: return fn( __VA_ARGS__, 0xF );    \
00192 case 0x10: return fn( __VA_ARGS__, 0x10 );    \
00193 case 0x11: return fn( __VA_ARGS__, 0x11 );    \
00194 case 0x12: return fn( __VA_ARGS__, 0x12 );    \
00195 case 0x13: return fn( __VA_ARGS__, 0x13 );    \
00196 case 0x14: return fn( __VA_ARGS__, 0x14 );    \
00197 case 0x15: return fn( __VA_ARGS__, 0x15 );    \
00198 case 0x16: return fn( __VA_ARGS__, 0x16 );    \
00199 case 0x17: return fn( __VA_ARGS__, 0x17 );    \
00200 case 0x18: return fn( __VA_ARGS__, 0x18 );    \
00201 case 0x19: return fn( __VA_ARGS__, 0x19 );    \
00202 case 0x1A: return fn( __VA_ARGS__, 0x1A );    \
00203 case 0x1B: return fn( __VA_ARGS__, 0x1B );    \
00204 case 0x1C: return fn( __VA_ARGS__, 0x1C );    \
00205 case 0x1D: return fn( __VA_ARGS__, 0x1D );    \
00206 case 0x1E: return fn( __VA_ARGS__, 0x1E );    \
00207 case 0x1F: return fn( __VA_ARGS__, 0x1F );    \
00208 case 0x20: return fn( __VA_ARGS__, 0x20 );    \
00209 case 0x21: return fn( __VA_ARGS__, 0x21 );    \
00210 case 0x22: return fn( __VA_ARGS__, 0x22 );    \
00211 case 0x23: return fn( __VA_ARGS__, 0x23 );    \
00212 case 0x24: return fn( __VA_ARGS__, 0x24 );    \
00213 case 0x25: return fn( __VA_ARGS__, 0x25 );    \
00214 case 0x26: return fn( __VA_ARGS__, 0x26 );    \
00215 case 0x27: return fn( __VA_ARGS__, 0x27 );    \
00216 case 0x28: return fn( __VA_ARGS__, 0x28 );    \
00217 case 0x29: return fn( __VA_ARGS__, 0x29 );    \
00218 case 0x2A: return fn( __VA_ARGS__, 0x2A );    \
00219 case 0x2B: return fn( __VA_ARGS__, 0x2B );    \
00220 case 0x2C: return fn( __VA_ARGS__, 0x2C );    \
00221 case 0x2D: return fn( __VA_ARGS__, 0x2D );    \
00222 case 0x2E: return fn( __VA_ARGS__, 0x2E );    \
00223 case 0x2F: return fn( __VA_ARGS__, 0x2F );    \
00224 case 0x30: return fn( __VA_ARGS__, 0x30 );    \
00225 case 0x31: return fn( __VA_ARGS__, 0x31 );    \
00226 case 0x32: return fn( __VA_ARGS__, 0x32 );    \
00227 case 0x33: return fn( __VA_ARGS__, 0x33 );    \
00228 case 0x34: return fn( __VA_ARGS__, 0x34 );    \
00229 case 0x35: return fn( __VA_ARGS__, 0x35 );    \
00230 case 0x36: return fn( __VA_ARGS__, 0x36 );    \
00231 case 0x37: return fn( __VA_ARGS__, 0x37 );    \
00232 case 0x38: return fn( __VA_ARGS__, 0x38 );    \
00233 case 0x39: return fn( __VA_ARGS__, 0x39 );    \
00234 case 0x3A: return fn( __VA_ARGS__, 0x3A );    \
00235 case 0x3B: return fn( __VA_ARGS__, 0x3B );    \
00236 case 0x3C: return fn( __VA_ARGS__, 0x3C );    \
00237 case 0x3D: return fn( __VA_ARGS__, 0x3D );    \
00238 case 0x3E: return fn( __VA_ARGS__, 0x3E );    \
00239 case 0x3F: return fn( __VA_ARGS__, 0x3F );    \
00240 case 0x40: return fn( __VA_ARGS__, 0x40 );    \
00241 case 0x41: return fn( __VA_ARGS__, 0x41 );    \
00242 case 0x42: return fn( __VA_ARGS__, 0x42 );    \
00243 case 0x43: return fn( __VA_ARGS__, 0x43 );    \
00244 case 0x44: return fn( __VA_ARGS__, 0x44 );    \
00245 case 0x45: return fn( __VA_ARGS__, 0x45 );    \
00246 case 0x46: return fn( __VA_ARGS__, 0x46 );    \
00247 case 0x47: return fn( __VA_ARGS__, 0x47 );    \
00248 case 0x48: return fn( __VA_ARGS__, 0x48 );    \
00249 case 0x49: return fn( __VA_ARGS__, 0x49 );    \
00250 case 0x4A: return fn( __VA_ARGS__, 0x4A );    \
00251 case 0x4B: return fn( __VA_ARGS__, 0x4B );    \
00252 case 0x4C: return fn( __VA_ARGS__, 0x4C );    \
00253 case 0x4D: return fn( __VA_ARGS__, 0x4D );    \
00254 case 0x4E: return fn( __VA_ARGS__, 0x4E );    \
00255 case 0x4F: return fn( __VA_ARGS__, 0x4F );    \
00256 case 0x50: return fn( __VA_ARGS__, 0x50 );    \
00257 case 0x51: return fn( __VA_ARGS__, 0x51 );    \
00258 case 0x52: return fn( __VA_ARGS__, 0x52 );    \
00259 case 0x53: return fn( __VA_ARGS__, 0x53 );    \
00260 case 0x54: return fn( __VA_ARGS__, 0x54 );    \
00261 case 0x55: return fn( __VA_ARGS__, 0x55 );    \
00262 case 0x56: return fn( __VA_ARGS__, 0x56 );    \
00263 case 0x57: return fn( __VA_ARGS__, 0x57 );    \
00264 case 0x58: return fn( __VA_ARGS__, 0x58 );    \
00265 case 0x59: return fn( __VA_ARGS__, 0x59 );    \
00266 case 0x5A: return fn( __VA_ARGS__, 0x5A );    \
00267 case 0x5B: return fn( __VA_ARGS__, 0x5B );    \
00268 case 0x5C: return fn( __VA_ARGS__, 0x5C );    \
00269 case 0x5D: return fn( __VA_ARGS__, 0x5D );    \
00270 case 0x5E: return fn( __VA_ARGS__, 0x5E );    \
00271 case 0x5F: return fn( __VA_ARGS__, 0x5F );    \
00272 case 0x60: return fn( __VA_ARGS__, 0x60 );    \
00273 case 0x61: return fn( __VA_ARGS__, 0x61 );    \
00274 case 0x62: return fn( __VA_ARGS__, 0x62 );    \
00275 case 0x63: return fn( __VA_ARGS__, 0x63 );    \
00276 case 0x64: return fn( __VA_ARGS__, 0x64 );    \
00277 case 0x65: return fn( __VA_ARGS__, 0x65 );    \
00278 case 0x66: return fn( __VA_ARGS__, 0x66 );    \
00279 case 0x67: return fn( __VA_ARGS__, 0x67 );    \
00280 case 0x68: return fn( __VA_ARGS__, 0x68 );    \
00281 case 0x69: return fn( __VA_ARGS__, 0x69 );    \
00282 case 0x6A: return fn( __VA_ARGS__, 0x6A );    \
00283 case 0x6B: return fn( __VA_ARGS__, 0x6B );    \
00284 case 0x6C: return fn( __VA_ARGS__, 0x6C );    \
00285 case 0x6D: return fn( __VA_ARGS__, 0x6D );    \
00286 case 0x6E: return fn( __VA_ARGS__, 0x6E );    \
00287 case 0x6F: return fn( __VA_ARGS__, 0x6F );    \
00288 case 0x70: return fn( __VA_ARGS__, 0x70 );    \
00289 case 0x71: return fn( __VA_ARGS__, 0x71 );    \
00290 case 0x72: return fn( __VA_ARGS__, 0x72 );    \
00291 case 0x73: return fn( __VA_ARGS__, 0x73 );    \
00292 case 0x74: return fn( __VA_ARGS__, 0x74 );    \
00293 case 0x75: return fn( __VA_ARGS__, 0x75 );    \
00294 case 0x76: return fn( __VA_ARGS__, 0x76 );    \
00295 case 0x77: return fn( __VA_ARGS__, 0x77 );    \
00296 case 0x78: return fn( __VA_ARGS__, 0x78 );    \
00297 case 0x79: return fn( __VA_ARGS__, 0x79 );    \
00298 case 0x7A: return fn( __VA_ARGS__, 0x7A );    \
00299 case 0x7B: return fn( __VA_ARGS__, 0x7B );    \
00300 case 0x7C: return fn( __VA_ARGS__, 0x7C );    \
00301 case 0x7D: return fn( __VA_ARGS__, 0x7D );    \
00302 case 0x7E: return fn( __VA_ARGS__, 0x7E );    \
00303 default: return fn( __VA_ARGS__, 0x7F );
00304 
00305 #define CASE_64( fn, ... )                                      \
00306 case 0x0: return fn( __VA_ARGS__, 0x0 );    \
00307 case 0x1: return fn( __VA_ARGS__, 0x1 );    \
00308 case 0x2: return fn( __VA_ARGS__, 0x2 );    \
00309 case 0x3: return fn( __VA_ARGS__, 0x3 );    \
00310 case 0x4: return fn( __VA_ARGS__, 0x4 );    \
00311 case 0x5: return fn( __VA_ARGS__, 0x5 );    \
00312 case 0x6: return fn( __VA_ARGS__, 0x6 );    \
00313 case 0x7: return fn( __VA_ARGS__, 0x7 );    \
00314 case 0x8: return fn( __VA_ARGS__, 0x8 );    \
00315 case 0x9: return fn( __VA_ARGS__, 0x9 );    \
00316 case 0xA: return fn( __VA_ARGS__, 0xA );    \
00317 case 0xB: return fn( __VA_ARGS__, 0xB );    \
00318 case 0xC: return fn( __VA_ARGS__, 0xC );    \
00319 case 0xD: return fn( __VA_ARGS__, 0xD );    \
00320 case 0xE: return fn( __VA_ARGS__, 0xE );    \
00321 case 0xF: return fn( __VA_ARGS__, 0xF );    \
00322 case 0x10: return fn( __VA_ARGS__, 0x10 );    \
00323 case 0x11: return fn( __VA_ARGS__, 0x11 );    \
00324 case 0x12: return fn( __VA_ARGS__, 0x12 );    \
00325 case 0x13: return fn( __VA_ARGS__, 0x13 );    \
00326 case 0x14: return fn( __VA_ARGS__, 0x14 );    \
00327 case 0x15: return fn( __VA_ARGS__, 0x15 );    \
00328 case 0x16: return fn( __VA_ARGS__, 0x16 );    \
00329 case 0x17: return fn( __VA_ARGS__, 0x17 );    \
00330 case 0x18: return fn( __VA_ARGS__, 0x18 );    \
00331 case 0x19: return fn( __VA_ARGS__, 0x19 );    \
00332 case 0x1A: return fn( __VA_ARGS__, 0x1A );    \
00333 case 0x1B: return fn( __VA_ARGS__, 0x1B );    \
00334 case 0x1C: return fn( __VA_ARGS__, 0x1C );    \
00335 case 0x1D: return fn( __VA_ARGS__, 0x1D );    \
00336 case 0x1E: return fn( __VA_ARGS__, 0x1E );    \
00337 case 0x1F: return fn( __VA_ARGS__, 0x1F );    \
00338 case 0x20: return fn( __VA_ARGS__, 0x20 );    \
00339 case 0x21: return fn( __VA_ARGS__, 0x21 );    \
00340 case 0x22: return fn( __VA_ARGS__, 0x22 );    \
00341 case 0x23: return fn( __VA_ARGS__, 0x23 );    \
00342 case 0x24: return fn( __VA_ARGS__, 0x24 );    \
00343 case 0x25: return fn( __VA_ARGS__, 0x25 );    \
00344 case 0x26: return fn( __VA_ARGS__, 0x26 );    \
00345 case 0x27: return fn( __VA_ARGS__, 0x27 );    \
00346 case 0x28: return fn( __VA_ARGS__, 0x28 );    \
00347 case 0x29: return fn( __VA_ARGS__, 0x29 );    \
00348 case 0x2A: return fn( __VA_ARGS__, 0x2A );    \
00349 case 0x2B: return fn( __VA_ARGS__, 0x2B );    \
00350 case 0x2C: return fn( __VA_ARGS__, 0x2C );    \
00351 case 0x2D: return fn( __VA_ARGS__, 0x2D );    \
00352 case 0x2E: return fn( __VA_ARGS__, 0x2E );    \
00353 case 0x2F: return fn( __VA_ARGS__, 0x2F );    \
00354 case 0x30: return fn( __VA_ARGS__, 0x30 );    \
00355 case 0x31: return fn( __VA_ARGS__, 0x31 );    \
00356 case 0x32: return fn( __VA_ARGS__, 0x32 );    \
00357 case 0x33: return fn( __VA_ARGS__, 0x33 );    \
00358 case 0x34: return fn( __VA_ARGS__, 0x34 );    \
00359 case 0x35: return fn( __VA_ARGS__, 0x35 );    \
00360 case 0x36: return fn( __VA_ARGS__, 0x36 );    \
00361 case 0x37: return fn( __VA_ARGS__, 0x37 );    \
00362 case 0x38: return fn( __VA_ARGS__, 0x38 );    \
00363 case 0x39: return fn( __VA_ARGS__, 0x39 );    \
00364 case 0x3A: return fn( __VA_ARGS__, 0x3A );    \
00365 case 0x3B: return fn( __VA_ARGS__, 0x3B );    \
00366 case 0x3C: return fn( __VA_ARGS__, 0x3C );    \
00367 case 0x3D: return fn( __VA_ARGS__, 0x3D );    \
00368 case 0x3E: return fn( __VA_ARGS__, 0x3E );    \
00369 default: return fn( __VA_ARGS__, 0x3F );
00370 
00371 #define CASE_256( fn, ... )                 \
00372 case 0x0: return fn( __VA_ARGS__, 0x0 );    \
00373 case 0x1: return fn( __VA_ARGS__, 0x1 );    \
00374 case 0x2: return fn( __VA_ARGS__, 0x2 );    \
00375 case 0x3: return fn( __VA_ARGS__, 0x3 );    \
00376 case 0x4: return fn( __VA_ARGS__, 0x4 );    \
00377 case 0x5: return fn( __VA_ARGS__, 0x5 );    \
00378 case 0x6: return fn( __VA_ARGS__, 0x6 );    \
00379 case 0x7: return fn( __VA_ARGS__, 0x7 );    \
00380 case 0x8: return fn( __VA_ARGS__, 0x8 );    \
00381 case 0x9: return fn( __VA_ARGS__, 0x9 );    \
00382 case 0xA: return fn( __VA_ARGS__, 0xA );    \
00383 case 0xB: return fn( __VA_ARGS__, 0xB );    \
00384 case 0xC: return fn( __VA_ARGS__, 0xC );    \
00385 case 0xD: return fn( __VA_ARGS__, 0xD );    \
00386 case 0xE: return fn( __VA_ARGS__, 0xE );    \
00387 case 0xF: return fn( __VA_ARGS__, 0xF );    \
00388 case 0x10: return fn( __VA_ARGS__, 0x10 );    \
00389 case 0x11: return fn( __VA_ARGS__, 0x11 );    \
00390 case 0x12: return fn( __VA_ARGS__, 0x12 );    \
00391 case 0x13: return fn( __VA_ARGS__, 0x13 );    \
00392 case 0x14: return fn( __VA_ARGS__, 0x14 );    \
00393 case 0x15: return fn( __VA_ARGS__, 0x15 );    \
00394 case 0x16: return fn( __VA_ARGS__, 0x16 );    \
00395 case 0x17: return fn( __VA_ARGS__, 0x17 );    \
00396 case 0x18: return fn( __VA_ARGS__, 0x18 );    \
00397 case 0x19: return fn( __VA_ARGS__, 0x19 );    \
00398 case 0x1A: return fn( __VA_ARGS__, 0x1A );    \
00399 case 0x1B: return fn( __VA_ARGS__, 0x1B );    \
00400 case 0x1C: return fn( __VA_ARGS__, 0x1C );    \
00401 case 0x1D: return fn( __VA_ARGS__, 0x1D );    \
00402 case 0x1E: return fn( __VA_ARGS__, 0x1E );    \
00403 case 0x1F: return fn( __VA_ARGS__, 0x1F );    \
00404 case 0x20: return fn( __VA_ARGS__, 0x20 );    \
00405 case 0x21: return fn( __VA_ARGS__, 0x21 );    \
00406 case 0x22: return fn( __VA_ARGS__, 0x22 );    \
00407 case 0x23: return fn( __VA_ARGS__, 0x23 );    \
00408 case 0x24: return fn( __VA_ARGS__, 0x24 );    \
00409 case 0x25: return fn( __VA_ARGS__, 0x25 );    \
00410 case 0x26: return fn( __VA_ARGS__, 0x26 );    \
00411 case 0x27: return fn( __VA_ARGS__, 0x27 );    \
00412 case 0x28: return fn( __VA_ARGS__, 0x28 );    \
00413 case 0x29: return fn( __VA_ARGS__, 0x29 );    \
00414 case 0x2A: return fn( __VA_ARGS__, 0x2A );    \
00415 case 0x2B: return fn( __VA_ARGS__, 0x2B );    \
00416 case 0x2C: return fn( __VA_ARGS__, 0x2C );    \
00417 case 0x2D: return fn( __VA_ARGS__, 0x2D );    \
00418 case 0x2E: return fn( __VA_ARGS__, 0x2E );    \
00419 case 0x2F: return fn( __VA_ARGS__, 0x2F );    \
00420 case 0x30: return fn( __VA_ARGS__, 0x30 );    \
00421 case 0x31: return fn( __VA_ARGS__, 0x31 );    \
00422 case 0x32: return fn( __VA_ARGS__, 0x32 );    \
00423 case 0x33: return fn( __VA_ARGS__, 0x33 );    \
00424 case 0x34: return fn( __VA_ARGS__, 0x34 );    \
00425 case 0x35: return fn( __VA_ARGS__, 0x35 );    \
00426 case 0x36: return fn( __VA_ARGS__, 0x36 );    \
00427 case 0x37: return fn( __VA_ARGS__, 0x37 );    \
00428 case 0x38: return fn( __VA_ARGS__, 0x38 );    \
00429 case 0x39: return fn( __VA_ARGS__, 0x39 );    \
00430 case 0x3A: return fn( __VA_ARGS__, 0x3A );    \
00431 case 0x3B: return fn( __VA_ARGS__, 0x3B );    \
00432 case 0x3C: return fn( __VA_ARGS__, 0x3C );    \
00433 case 0x3D: return fn( __VA_ARGS__, 0x3D );    \
00434 case 0x3E: return fn( __VA_ARGS__, 0x3E );    \
00435 case 0x3F: return fn( __VA_ARGS__, 0x3F );    \
00436 case 0x40: return fn( __VA_ARGS__, 0x40 );    \
00437 case 0x41: return fn( __VA_ARGS__, 0x41 );    \
00438 case 0x42: return fn( __VA_ARGS__, 0x42 );    \
00439 case 0x43: return fn( __VA_ARGS__, 0x43 );    \
00440 case 0x44: return fn( __VA_ARGS__, 0x44 );    \
00441 case 0x45: return fn( __VA_ARGS__, 0x45 );    \
00442 case 0x46: return fn( __VA_ARGS__, 0x46 );    \
00443 case 0x47: return fn( __VA_ARGS__, 0x47 );    \
00444 case 0x48: return fn( __VA_ARGS__, 0x48 );    \
00445 case 0x49: return fn( __VA_ARGS__, 0x49 );    \
00446 case 0x4A: return fn( __VA_ARGS__, 0x4A );    \
00447 case 0x4B: return fn( __VA_ARGS__, 0x4B );    \
00448 case 0x4C: return fn( __VA_ARGS__, 0x4C );    \
00449 case 0x4D: return fn( __VA_ARGS__, 0x4D );    \
00450 case 0x4E: return fn( __VA_ARGS__, 0x4E );    \
00451 case 0x4F: return fn( __VA_ARGS__, 0x4F );    \
00452 case 0x50: return fn( __VA_ARGS__, 0x50 );    \
00453 case 0x51: return fn( __VA_ARGS__, 0x51 );    \
00454 case 0x52: return fn( __VA_ARGS__, 0x52 );    \
00455 case 0x53: return fn( __VA_ARGS__, 0x53 );    \
00456 case 0x54: return fn( __VA_ARGS__, 0x54 );    \
00457 case 0x55: return fn( __VA_ARGS__, 0x55 );    \
00458 case 0x56: return fn( __VA_ARGS__, 0x56 );    \
00459 case 0x57: return fn( __VA_ARGS__, 0x57 );    \
00460 case 0x58: return fn( __VA_ARGS__, 0x58 );    \
00461 case 0x59: return fn( __VA_ARGS__, 0x59 );    \
00462 case 0x5A: return fn( __VA_ARGS__, 0x5A );    \
00463 case 0x5B: return fn( __VA_ARGS__, 0x5B );    \
00464 case 0x5C: return fn( __VA_ARGS__, 0x5C );    \
00465 case 0x5D: return fn( __VA_ARGS__, 0x5D );    \
00466 case 0x5E: return fn( __VA_ARGS__, 0x5E );    \
00467 case 0x5F: return fn( __VA_ARGS__, 0x5F );    \
00468 case 0x60: return fn( __VA_ARGS__, 0x60 );    \
00469 case 0x61: return fn( __VA_ARGS__, 0x61 );    \
00470 case 0x62: return fn( __VA_ARGS__, 0x62 );    \
00471 case 0x63: return fn( __VA_ARGS__, 0x63 );    \
00472 case 0x64: return fn( __VA_ARGS__, 0x64 );    \
00473 case 0x65: return fn( __VA_ARGS__, 0x65 );    \
00474 case 0x66: return fn( __VA_ARGS__, 0x66 );    \
00475 case 0x67: return fn( __VA_ARGS__, 0x67 );    \
00476 case 0x68: return fn( __VA_ARGS__, 0x68 );    \
00477 case 0x69: return fn( __VA_ARGS__, 0x69 );    \
00478 case 0x6A: return fn( __VA_ARGS__, 0x6A );    \
00479 case 0x6B: return fn( __VA_ARGS__, 0x6B );    \
00480 case 0x6C: return fn( __VA_ARGS__, 0x6C );    \
00481 case 0x6D: return fn( __VA_ARGS__, 0x6D );    \
00482 case 0x6E: return fn( __VA_ARGS__, 0x6E );    \
00483 case 0x6F: return fn( __VA_ARGS__, 0x6F );    \
00484 case 0x70: return fn( __VA_ARGS__, 0x70 );    \
00485 case 0x71: return fn( __VA_ARGS__, 0x71 );    \
00486 case 0x72: return fn( __VA_ARGS__, 0x72 );    \
00487 case 0x73: return fn( __VA_ARGS__, 0x73 );    \
00488 case 0x74: return fn( __VA_ARGS__, 0x74 );    \
00489 case 0x75: return fn( __VA_ARGS__, 0x75 );    \
00490 case 0x76: return fn( __VA_ARGS__, 0x76 );    \
00491 case 0x77: return fn( __VA_ARGS__, 0x77 );    \
00492 case 0x78: return fn( __VA_ARGS__, 0x78 );    \
00493 case 0x79: return fn( __VA_ARGS__, 0x79 );    \
00494 case 0x7A: return fn( __VA_ARGS__, 0x7A );    \
00495 case 0x7B: return fn( __VA_ARGS__, 0x7B );    \
00496 case 0x7C: return fn( __VA_ARGS__, 0x7C );    \
00497 case 0x7D: return fn( __VA_ARGS__, 0x7D );    \
00498 case 0x7E: return fn( __VA_ARGS__, 0x7E );    \
00499 case 0x7F: return fn( __VA_ARGS__, 0x7F );    \
00500 case 0x80: return fn( __VA_ARGS__, 0x80 );    \
00501 case 0x81: return fn( __VA_ARGS__, 0x81 );    \
00502 case 0x82: return fn( __VA_ARGS__, 0x82 );    \
00503 case 0x83: return fn( __VA_ARGS__, 0x83 );    \
00504 case 0x84: return fn( __VA_ARGS__, 0x84 );    \
00505 case 0x85: return fn( __VA_ARGS__, 0x85 );    \
00506 case 0x86: return fn( __VA_ARGS__, 0x86 );    \
00507 case 0x87: return fn( __VA_ARGS__, 0x87 );    \
00508 case 0x88: return fn( __VA_ARGS__, 0x88 );    \
00509 case 0x89: return fn( __VA_ARGS__, 0x89 );    \
00510 case 0x8A: return fn( __VA_ARGS__, 0x8A );    \
00511 case 0x8B: return fn( __VA_ARGS__, 0x8B );    \
00512 case 0x8C: return fn( __VA_ARGS__, 0x8C );    \
00513 case 0x8D: return fn( __VA_ARGS__, 0x8D );    \
00514 case 0x8E: return fn( __VA_ARGS__, 0x8E );    \
00515 case 0x8F: return fn( __VA_ARGS__, 0x8F );    \
00516 case 0x90: return fn( __VA_ARGS__, 0x90 );    \
00517 case 0x91: return fn( __VA_ARGS__, 0x91 );    \
00518 case 0x92: return fn( __VA_ARGS__, 0x92 );    \
00519 case 0x93: return fn( __VA_ARGS__, 0x93 );    \
00520 case 0x94: return fn( __VA_ARGS__, 0x94 );    \
00521 case 0x95: return fn( __VA_ARGS__, 0x95 );    \
00522 case 0x96: return fn( __VA_ARGS__, 0x96 );    \
00523 case 0x97: return fn( __VA_ARGS__, 0x97 );    \
00524 case 0x98: return fn( __VA_ARGS__, 0x98 );    \
00525 case 0x99: return fn( __VA_ARGS__, 0x99 );    \
00526 case 0x9A: return fn( __VA_ARGS__, 0x9A );    \
00527 case 0x9B: return fn( __VA_ARGS__, 0x9B );    \
00528 case 0x9C: return fn( __VA_ARGS__, 0x9C );    \
00529 case 0x9D: return fn( __VA_ARGS__, 0x9D );    \
00530 case 0x9E: return fn( __VA_ARGS__, 0x9E );    \
00531 case 0x9F: return fn( __VA_ARGS__, 0x9F );    \
00532 case 0xA0: return fn( __VA_ARGS__, 0xA0 );    \
00533 case 0xA1: return fn( __VA_ARGS__, 0xA1 );    \
00534 case 0xA2: return fn( __VA_ARGS__, 0xA2 );    \
00535 case 0xA3: return fn( __VA_ARGS__, 0xA3 );    \
00536 case 0xA4: return fn( __VA_ARGS__, 0xA4 );    \
00537 case 0xA5: return fn( __VA_ARGS__, 0xA5 );    \
00538 case 0xA6: return fn( __VA_ARGS__, 0xA6 );    \
00539 case 0xA7: return fn( __VA_ARGS__, 0xA7 );    \
00540 case 0xA8: return fn( __VA_ARGS__, 0xA8 );    \
00541 case 0xA9: return fn( __VA_ARGS__, 0xA9 );    \
00542 case 0xAA: return fn( __VA_ARGS__, 0xAA );    \
00543 case 0xAB: return fn( __VA_ARGS__, 0xAB );    \
00544 case 0xAC: return fn( __VA_ARGS__, 0xAC );    \
00545 case 0xAD: return fn( __VA_ARGS__, 0xAD );    \
00546 case 0xAE: return fn( __VA_ARGS__, 0xAE );    \
00547 case 0xAF: return fn( __VA_ARGS__, 0xAF );    \
00548 case 0xB0: return fn( __VA_ARGS__, 0xB0 );    \
00549 case 0xB1: return fn( __VA_ARGS__, 0xB1 );    \
00550 case 0xB2: return fn( __VA_ARGS__, 0xB2 );    \
00551 case 0xB3: return fn( __VA_ARGS__, 0xB3 );    \
00552 case 0xB4: return fn( __VA_ARGS__, 0xB4 );    \
00553 case 0xB5: return fn( __VA_ARGS__, 0xB5 );    \
00554 case 0xB6: return fn( __VA_ARGS__, 0xB6 );    \
00555 case 0xB7: return fn( __VA_ARGS__, 0xB7 );    \
00556 case 0xB8: return fn( __VA_ARGS__, 0xB8 );    \
00557 case 0xB9: return fn( __VA_ARGS__, 0xB9 );    \
00558 case 0xBA: return fn( __VA_ARGS__, 0xBA );    \
00559 case 0xBB: return fn( __VA_ARGS__, 0xBB );    \
00560 case 0xBC: return fn( __VA_ARGS__, 0xBC );    \
00561 case 0xBD: return fn( __VA_ARGS__, 0xBD );    \
00562 case 0xBE: return fn( __VA_ARGS__, 0xBE );    \
00563 case 0xBF: return fn( __VA_ARGS__, 0xBF );    \
00564 case 0xC0: return fn( __VA_ARGS__, 0xC0 );    \
00565 case 0xC1: return fn( __VA_ARGS__, 0xC1 );    \
00566 case 0xC2: return fn( __VA_ARGS__, 0xC2 );    \
00567 case 0xC3: return fn( __VA_ARGS__, 0xC3 );    \
00568 case 0xC4: return fn( __VA_ARGS__, 0xC4 );    \
00569 case 0xC5: return fn( __VA_ARGS__, 0xC5 );    \
00570 case 0xC6: return fn( __VA_ARGS__, 0xC6 );    \
00571 case 0xC7: return fn( __VA_ARGS__, 0xC7 );    \
00572 case 0xC8: return fn( __VA_ARGS__, 0xC8 );    \
00573 case 0xC9: return fn( __VA_ARGS__, 0xC9 );    \
00574 case 0xCA: return fn( __VA_ARGS__, 0xCA );    \
00575 case 0xCB: return fn( __VA_ARGS__, 0xCB );    \
00576 case 0xCC: return fn( __VA_ARGS__, 0xCC );    \
00577 case 0xCD: return fn( __VA_ARGS__, 0xCD );    \
00578 case 0xCE: return fn( __VA_ARGS__, 0xCE );    \
00579 case 0xCF: return fn( __VA_ARGS__, 0xCF );    \
00580 case 0xD0: return fn( __VA_ARGS__, 0xD0 );    \
00581 case 0xD1: return fn( __VA_ARGS__, 0xD1 );    \
00582 case 0xD2: return fn( __VA_ARGS__, 0xD2 );    \
00583 case 0xD3: return fn( __VA_ARGS__, 0xD3 );    \
00584 case 0xD4: return fn( __VA_ARGS__, 0xD4 );    \
00585 case 0xD5: return fn( __VA_ARGS__, 0xD5 );    \
00586 case 0xD6: return fn( __VA_ARGS__, 0xD6 );    \
00587 case 0xD7: return fn( __VA_ARGS__, 0xD7 );    \
00588 case 0xD8: return fn( __VA_ARGS__, 0xD8 );    \
00589 case 0xD9: return fn( __VA_ARGS__, 0xD9 );    \
00590 case 0xDA: return fn( __VA_ARGS__, 0xDA );    \
00591 case 0xDB: return fn( __VA_ARGS__, 0xDB );    \
00592 case 0xDC: return fn( __VA_ARGS__, 0xDC );    \
00593 case 0xDD: return fn( __VA_ARGS__, 0xDD );    \
00594 case 0xDE: return fn( __VA_ARGS__, 0xDE );    \
00595 case 0xDF: return fn( __VA_ARGS__, 0xDF );    \
00596 case 0xE0: return fn( __VA_ARGS__, 0xE0 );    \
00597 case 0xE1: return fn( __VA_ARGS__, 0xE1 );    \
00598 case 0xE2: return fn( __VA_ARGS__, 0xE2 );    \
00599 case 0xE3: return fn( __VA_ARGS__, 0xE3 );    \
00600 case 0xE4: return fn( __VA_ARGS__, 0xE4 );    \
00601 case 0xE5: return fn( __VA_ARGS__, 0xE5 );    \
00602 case 0xE6: return fn( __VA_ARGS__, 0xE6 );    \
00603 case 0xE7: return fn( __VA_ARGS__, 0xE7 );    \
00604 case 0xE8: return fn( __VA_ARGS__, 0xE8 );    \
00605 case 0xE9: return fn( __VA_ARGS__, 0xE9 );    \
00606 case 0xEA: return fn( __VA_ARGS__, 0xEA );    \
00607 case 0xEB: return fn( __VA_ARGS__, 0xEB );    \
00608 case 0xEC: return fn( __VA_ARGS__, 0xEC );    \
00609 case 0xED: return fn( __VA_ARGS__, 0xED );    \
00610 case 0xEE: return fn( __VA_ARGS__, 0xEE );    \
00611 case 0xEF: return fn( __VA_ARGS__, 0xEF );    \
00612 case 0xF0: return fn( __VA_ARGS__, 0xF0 );    \
00613 case 0xF1: return fn( __VA_ARGS__, 0xF1 );    \
00614 case 0xF2: return fn( __VA_ARGS__, 0xF2 );    \
00615 case 0xF3: return fn( __VA_ARGS__, 0xF3 );    \
00616 case 0xF4: return fn( __VA_ARGS__, 0xF4 );    \
00617 case 0xF5: return fn( __VA_ARGS__, 0xF5 );    \
00618 case 0xF6: return fn( __VA_ARGS__, 0xF6 );    \
00619 case 0xF7: return fn( __VA_ARGS__, 0xF7 );    \
00620 case 0xF8: return fn( __VA_ARGS__, 0xF8 );    \
00621 case 0xF9: return fn( __VA_ARGS__, 0xF9 );    \
00622 case 0xFA: return fn( __VA_ARGS__, 0xFA );    \
00623 case 0xFB: return fn( __VA_ARGS__, 0xFB );    \
00624 case 0xFC: return fn( __VA_ARGS__, 0xFC );    \
00625 case 0xFD: return fn( __VA_ARGS__, 0xFD );    \
00626 case 0xFE: return fn( __VA_ARGS__, 0xFE );    \
00627 default: return fn( __VA_ARGS__, 0xFF );
00628 
00629 #endif // __BASE_H__

Generated on Wed May 21 13:44:11 2008 for "SSEPlus" by  doxygen 1.5.4