Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

enginef.c

Go to the documentation of this file.
00001 /* 00002 File: LHCalcEngine.c 00003 00004 Contains: 00005 00006 Written by: U. J. Krabbenhoeft 00007 00008 Version: 00009 00010 Copyright: � 1993-1997 by Heidelberger Druckmaschinen AG, all rights reserved. 00011 00012 */ 00013 00014 #undef LH_DATA_IN_TYPE 00015 #undef LH_DATA_OUT_TYPE 00016 #undef LH_LUT_DATA_TYPE 00017 #undef LH_DATA_IN_COUNT 00018 #undef LH_DATA_OUT_COUNT 00019 #undef LH_DATA_SHR 00020 #undef LH_DATA_SHR_CORR 00021 #undef LH_LUT_DATA_SHR 00022 #undef LH_BIT_BREIT_INTERNAL 00023 #if LH_DATA_IN_SIZE_16 00024 #define LH_DATA_IN_TYPE LH_UINT16 00025 #else 00026 #define LH_DATA_IN_TYPE LH_UINT8 00027 #endif 00028 #if LH_DATA_OUT_SIZE_16 00029 #define LH_DATA_OUT_TYPE LH_UINT16 00030 #else 00031 #define LH_DATA_OUT_TYPE LH_UINT8 00032 #endif 00033 #if LH_LUT_DATA_SIZE_16 00034 #define LH_BIT_BREIT_INTERNAL 16 00035 #define LH_LUT_DATA_TYPE LH_UINT16 00036 #else 00037 #if LH_DATA_IN_SIZE_16 00038 #define LH_BIT_BREIT_INTERNAL 16 00039 #else 00040 #define LH_BIT_BREIT_INTERNAL 10 00041 #endif 00042 #define LH_LUT_DATA_TYPE LH_UINT8 00043 #endif 00044 00045 #if LH_DATA_IN_COUNT_4 00046 #define LH_DATA_IN_COUNT 4 00047 #else 00048 #define LH_DATA_IN_COUNT 3 00049 #endif 00050 00051 #if LH_DATA_OUT_COUNT_4 00052 #define LH_DATA_OUT_COUNT 4 00053 #else 00054 #define LH_DATA_OUT_COUNT 3 00055 #endif 00056 00057 #define LH_BIT_MASKE_ADR (((1<<LH_BIT_BREIT_ADR)-1)<< (LH_BIT_BREIT_INTERNAL-LH_BIT_BREIT_ADR)) 00058 #define LH_BIT_BREIT_SELEKTOR (LH_BIT_BREIT_INTERNAL-LH_BIT_BREIT_ADR) 00059 #define LH_BIT_MASKE_SELEKTOR ((1<<LH_BIT_BREIT_SELEKTOR)-1) 00060 00061 #define LH_ADR_BEREICH_SEL (1<<LH_BIT_BREIT_SELEKTOR) 00062 00063 #if LH_LUT_DATA_SIZE_16 00064 #define LH_DATA_SHR (16+LH_BIT_BREIT_SELEKTOR-LH_ADR_BREIT_AUS_LUT) /* z.B. 16+11-10=17 */ 00065 #define LH_DATA_SHR_CORR 8 /* notwendig bei LH_DATA_SHR > 16 */ 00066 #define LH_LUT_DATA_SHR 16 /* Normierung bei Alutinterpolation */ 00067 #else 00068 #define LH_DATA_SHR (8+LH_BIT_BREIT_SELEKTOR-LH_ADR_BREIT_AUS_LUT) /* z.B. 8+7-10=5 */ 00069 #define LH_LUT_DATA_SHR 8 /* Normierung bei Alutinterpolation */ 00070 #endif 00071 00072 #if LH_DATA_IN_COUNT_4 00073 { 00074 static LH_UINT16 MMXTab [] = 00075 { 00076 0x0000, 0x0000, 0x0000, 0x0000, 00077 0x0001, 0x0001, 0x0001, 0x0001, 00078 0x0002, 0x0002, 0x0002, 0x0002, 00079 0x0003, 0x0003, 0x0003, 0x0003, 00080 0x0004, 0x0004, 0x0004, 0x0004, 00081 0x0005, 0x0005, 0x0005, 0x0005, 00082 0x0006, 0x0006, 0x0006, 0x0006, 00083 0x0007, 0x0007, 0x0007, 0x0007, 00084 0x0008, 0x0008, 0x0008, 0x0008, 00085 0x0009, 0x0009, 0x0009, 0x0009, 00086 0x000A, 0x000A, 0x000A, 0x000a, 00087 0x000B, 0x000B, 0x000B, 0x000b, 00088 0x000C, 0x000C, 0x000C, 0x000c, 00089 0x000D, 0x000D, 0x000D, 0x000d, 00090 0x000E, 0x000E, 0x000E, 0x000e, 00091 0x000F, 0x000F, 0x000F, 0x000f, 00092 0x0010, 0x0010, 0x0010, 0x0010, 00093 0x0011, 0x0011, 0x0011, 0x0011, 00094 0x0012, 0x0012, 0x0012, 0x0012, 00095 0x0013, 0x0013, 0x0013, 0x0013, 00096 0x0014, 0x0014, 0x0014, 0x0014, 00097 0x0015, 0x0015, 0x0015, 0x0015, 00098 0x0016, 0x0016, 0x0016, 0x0016, 00099 0x0017, 0x0017, 0x0017, 0x0017, 00100 0x0018, 0x0018, 0x0018, 0x0018, 00101 0x0019, 0x0019, 0x0019, 0x0019, 00102 0x001A, 0x001A, 0x001A, 0x001a, 00103 0x001B, 0x001B, 0x001B, 0x001b, 00104 0x001C, 0x001C, 0x001C, 0x001c, 00105 0x001D, 0x001D, 0x001D, 0x001d, 00106 0x001E, 0x001E, 0x001E, 0x001e, 00107 0x001F, 0x001F, 0x001F, 0x001f, 00108 0x0020, 0x0020, 0x0020, 0x0020, 00109 0x0021, 0x0021, 0x0021, 0x0021, 00110 0x0022, 0x0022, 0x0022, 0x0022, 00111 0x0023, 0x0023, 0x0023, 0x0023, 00112 0x0024, 0x0024, 0x0024, 0x0024, 00113 0x0025, 0x0025, 0x0025, 0x0025, 00114 0x0026, 0x0026, 0x0026, 0x0026, 00115 0x0027, 0x0027, 0x0027, 0x0027, 00116 0x0028, 0x0028, 0x0028, 0x0028, 00117 0x0029, 0x0029, 0x0029, 0x0029, 00118 0x002A, 0x002A, 0x002A, 0x002a, 00119 0x002B, 0x002B, 0x002B, 0x002b, 00120 0x002C, 0x002C, 0x002C, 0x002c, 00121 0x002D, 0x002D, 0x002D, 0x002d, 00122 0x002E, 0x002E, 0x002E, 0x002e, 00123 0x002F, 0x002F, 0x002F, 0x002f, 00124 0x0030, 0x0030, 0x0030, 0x0030, 00125 0x0031, 0x0031, 0x0031, 0x0031, 00126 0x0032, 0x0032, 0x0032, 0x0032, 00127 0x0033, 0x0033, 0x0033, 0x0033, 00128 0x0034, 0x0034, 0x0034, 0x0034, 00129 0x0035, 0x0035, 0x0035, 0x0035, 00130 0x0036, 0x0036, 0x0036, 0x0036, 00131 0x0037, 0x0037, 0x0037, 0x0037, 00132 0x0038, 0x0038, 0x0038, 0x0038, 00133 0x0039, 0x0039, 0x0039, 0x0039, 00134 0x003A, 0x003A, 0x003A, 0x003a, 00135 0x003B, 0x003B, 0x003B, 0x003b, 00136 0x003C, 0x003C, 0x003C, 0x003c, 00137 0x003D, 0x003D, 0x003D, 0x003d, 00138 0x003E, 0x003E, 0x003E, 0x003e, 00139 0x003F, 0x003F, 0x003F, 0x003f, 00140 0x0040, 0x0040, 0x0040, 0x0040, 00141 0x0041, 0x0041, 0x0041, 0x0041, 00142 0x0042, 0x0042, 0x0042, 0x0042, 00143 0x0043, 0x0043, 0x0043, 0x0043, 00144 0x0044, 0x0044, 0x0044, 0x0044, 00145 0x0045, 0x0045, 0x0045, 0x0045, 00146 0x0046, 0x0046, 0x0046, 0x0046, 00147 0x0047, 0x0047, 0x0047, 0x0047, 00148 0x0048, 0x0048, 0x0048, 0x0048, 00149 0x0049, 0x0049, 0x0049, 0x0049, 00150 0x004A, 0x004A, 0x004A, 0x004a, 00151 0x004B, 0x004B, 0x004B, 0x004b, 00152 0x004C, 0x004C, 0x004C, 0x004c, 00153 0x004D, 0x004D, 0x004D, 0x004d, 00154 0x004E, 0x004E, 0x004E, 0x004e, 00155 0x004F, 0x004F, 0x004F, 0x004f, 00156 0x0050, 0x0050, 0x0050, 0x0050, 00157 0x0051, 0x0051, 0x0051, 0x0051, 00158 0x0052, 0x0052, 0x0052, 0x0052, 00159 0x0053, 0x0053, 0x0053, 0x0053, 00160 0x0054, 0x0054, 0x0054, 0x0054, 00161 0x0055, 0x0055, 0x0055, 0x0055, 00162 0x0056, 0x0056, 0x0056, 0x0056, 00163 0x0057, 0x0057, 0x0057, 0x0057, 00164 0x0058, 0x0058, 0x0058, 0x0058, 00165 0x0059, 0x0059, 0x0059, 0x0059, 00166 0x005A, 0x005A, 0x005A, 0x005a, 00167 0x005B, 0x005B, 0x005B, 0x005b, 00168 0x005C, 0x005C, 0x005C, 0x005c, 00169 0x005D, 0x005D, 0x005D, 0x005d, 00170 0x005E, 0x005E, 0x005E, 0x005e, 00171 0x005F, 0x005F, 0x005F, 0x005f, 00172 0x0060, 0x0060, 0x0060, 0x0060, 00173 0x0061, 0x0061, 0x0061, 0x0061, 00174 0x0062, 0x0062, 0x0062, 0x0062, 00175 0x0063, 0x0063, 0x0063, 0x0063, 00176 0x0064, 0x0064, 0x0064, 0x0064, 00177 0x0065, 0x0065, 0x0065, 0x0065, 00178 0x0066, 0x0066, 0x0066, 0x0066, 00179 0x0067, 0x0067, 0x0067, 0x0067, 00180 0x0068, 0x0068, 0x0068, 0x0068, 00181 0x0069, 0x0069, 0x0069, 0x0069, 00182 0x006A, 0x006A, 0x006A, 0x006a, 00183 0x006B, 0x006B, 0x006B, 0x006b, 00184 0x006C, 0x006C, 0x006C, 0x006c, 00185 0x006D, 0x006D, 0x006D, 0x006d, 00186 0x006E, 0x006E, 0x006E, 0x006e, 00187 0x006F, 0x006F, 0x006F, 0x006f, 00188 0x0070, 0x0070, 0x0070, 0x0070, 00189 0x0071, 0x0071, 0x0071, 0x0071, 00190 0x0072, 0x0072, 0x0072, 0x0072, 00191 0x0073, 0x0073, 0x0073, 0x0073, 00192 0x0074, 0x0074, 0x0074, 0x0074, 00193 0x0075, 0x0075, 0x0075, 0x0075, 00194 0x0076, 0x0076, 0x0076, 0x0076, 00195 0x0077, 0x0077, 0x0077, 0x0077, 00196 0x0078, 0x0078, 0x0078, 0x0078, 00197 0x0079, 0x0079, 0x0079, 0x0079, 00198 0x007A, 0x007A, 0x007A, 0x007a, 00199 0x007B, 0x007B, 0x007B, 0x007b, 00200 0x007C, 0x007C, 0x007C, 0x007c, 00201 0x007D, 0x007D, 0x007D, 0x007d, 00202 0x007E, 0x007E, 0x007E, 0x007e, 00203 0x007F, 0x007F, 0x007F, 0x007f, 00204 0x0080, 0x0080, 0x0080, 0x0080 00205 }; 00206 LH_UINT32 ein_regY; 00207 LH_UINT32 ein_regM; 00208 LH_UINT32 ein_regC; 00209 LH_UINT32 ein_regK; 00210 LH_DATA_IN_TYPE ein_cache[4]; 00211 LH_LUT_DATA_TYPE * paNewVal0; 00212 LH_UINT32 ako0; 00213 LH_UINT32 ako1; 00214 LH_UINT32 ako2; 00215 LH_UINT32 ako3; 00216 00217 LH_UINT8 Mode; 00218 LH_UINT32 PixelCount, LineCount, i, j; 00219 long inputOffset,outputOffset; 00220 LH_DATA_IN_TYPE * input0 = (LH_DATA_IN_TYPE *)calcParam->inputData[0]; 00221 LH_DATA_IN_TYPE * input1 = (LH_DATA_IN_TYPE *)calcParam->inputData[1]; 00222 LH_DATA_IN_TYPE * input2 = (LH_DATA_IN_TYPE *)calcParam->inputData[2]; 00223 LH_DATA_IN_TYPE * input3 = (LH_DATA_IN_TYPE *)calcParam->inputData[3]; 00224 LH_DATA_IN_TYPE * input4 = (LH_DATA_IN_TYPE *)calcParam->inputData[4]; 00225 00226 LH_DATA_OUT_TYPE * output0 = (LH_DATA_OUT_TYPE *)calcParam->outputData[0]; 00227 LH_DATA_OUT_TYPE * output1 = (LH_DATA_OUT_TYPE *)calcParam->outputData[1]; 00228 LH_DATA_OUT_TYPE * output2 = (LH_DATA_OUT_TYPE *)calcParam->outputData[2]; 00229 LH_DATA_OUT_TYPE * output3 = (LH_DATA_OUT_TYPE *)calcParam->outputData[3]; 00230 LH_DATA_OUT_TYPE * output4 = (LH_DATA_OUT_TYPE *)calcParam->outputData[4]; 00231 00232 LH_UINT16 * My_InputLut = (LH_UINT16 *)lutParam->inputLut; 00233 LH_LUT_DATA_TYPE * My_OutputLut = (LH_LUT_DATA_TYPE *)lutParam->outputLut; 00234 LH_LUT_DATA_TYPE * My_ColorLut = (LH_LUT_DATA_TYPE *)lutParam->colorLut; 00235 00236 LH_DATA_OUT_TYPE Mask = (LH_DATA_OUT_TYPE)-1; 00237 LH_UINT16 ak[4]; 00238 LH_UINT8 bFPUState [108]; 00239 #define Test_mode 00240 #ifdef Test_mode 00241 LH_UINT16 TestRam[4]; 00242 #endif 00243 00244 #ifdef DEBUG_OUTPUT 00245 CMError err = noErr; 00246 #endif 00247 LH_START_PROC(LH_CALC_PROC_NAME) 00248 00249 #if LH_DATA_IN_SIZE_16 00250 inputOffset = (long)calcParam->cmInputPixelOffset / 2; 00251 #else 00252 inputOffset = (long)calcParam->cmInputPixelOffset; 00253 #endif 00254 #if LH_DATA_OUT_SIZE_16 00255 outputOffset = (long)calcParam->cmOutputPixelOffset / 2; 00256 #else 00257 outputOffset = (long)calcParam->cmOutputPixelOffset; 00258 #endif 00259 00260 if (calcParam->clearMask) 00261 Mask = 0; 00262 Mode = LH_CALC_ENGINE_UNDEF_MODE; 00263 00264 00265 if ((calcParam->cmInputPixelOffset * calcParam->cmPixelPerLine == calcParam->cmInputBytesPerLine) && (calcParam->cmOutputPixelOffset * calcParam->cmPixelPerLine == calcParam->cmOutputBytesPerLine)) 00266 { 00267 PixelCount = calcParam->cmPixelPerLine * calcParam->cmLineCount; 00268 LineCount = 1; 00269 } 00270 else 00271 { 00272 PixelCount = calcParam->cmPixelPerLine; 00273 LineCount = calcParam->cmLineCount; 00274 } 00275 if (calcParam->copyAlpha ) 00276 { 00277 Mode = LH_CALC_ENGINE_U_TO_U; 00278 } 00279 else 00280 { 00281 if (calcParam->clearMask) 00282 Mode = LH_CALC_ENGINE_P_TO_U; 00283 else 00284 Mode = LH_CALC_ENGINE_P_TO_P; 00285 } 00286 00287 __asm { 00288 fnsave bFPUState 00289 pxor mm0,mm0 00290 pxor mm1,mm1 00291 pxor mm2,mm2 00292 pxor mm3,mm3 00293 pxor mm4,mm4 00294 pxor mm5,mm5 00295 pxor mm6,mm6 00296 pxor mm7,mm7 00297 } 00298 j = 0; 00299 while (LineCount) 00300 { 00301 i = PixelCount; 00302 while (i) 00303 { 00304 #if LH_LUT_DATA_SIZE_16 00305 #if LH_DATA_IN_SIZE_16 || LH_DATA_OUT_SIZE_16 00306 register LH_UINT32 ko; 00307 #endif 00308 #if LH_DATA_IN_SIZE_16 00309 register LH_DATA_IN_TYPE aValIn; 00310 #endif 00311 #if LH_DATA_OUT_SIZE_16 00312 register LH_UINT32 aVal; 00313 #endif 00314 #if LH_DATA_IN_SIZE_16 00315 aValIn = (ein_cache[0]=*input0) - ( *input0 >> ( LH_ADR_BREIT_EIN_LUT )); 00316 ko = aValIn & ( (1<<( 16-LH_ADR_BREIT_EIN_LUT ))-1 ); 00317 aValIn = (aValIn >> ( 16-LH_ADR_BREIT_EIN_LUT )) + ( 0 << LH_ADR_BREIT_EIN_LUT ); 00318 ein_regC = ( My_InputLut[aValIn] * ( (1<<( 16-LH_ADR_BREIT_EIN_LUT )) - ko ) + My_InputLut[aValIn +1] * ko ) >>( 16-LH_ADR_BREIT_EIN_LUT ); 00319 00320 aValIn = (ein_cache[1]=*input1) - ( *input1 >> ( LH_ADR_BREIT_EIN_LUT )); 00321 ko = aValIn & ( (1<<( 16-LH_ADR_BREIT_EIN_LUT ))-1 ); 00322 aValIn = (aValIn >> ( 16-LH_ADR_BREIT_EIN_LUT )) + ( 1 << LH_ADR_BREIT_EIN_LUT ); 00323 ein_regM = ( My_InputLut[aValIn] * ( (1<<( 16-LH_ADR_BREIT_EIN_LUT )) - ko ) + My_InputLut[aValIn +1] * ko ) >> ( 16-LH_ADR_BREIT_EIN_LUT ); 00324 00325 aValIn = (ein_cache[2]=*input2) - ( *input2 >> ( LH_ADR_BREIT_EIN_LUT )); 00326 ko = aValIn & ( (1<<( 16-LH_ADR_BREIT_EIN_LUT ))-1 ); 00327 aValIn = (aValIn >> ( 16-LH_ADR_BREIT_EIN_LUT )) + ( 2 << LH_ADR_BREIT_EIN_LUT ); 00328 ein_regY = ( My_InputLut[aValIn] * ( (1<<( 16-LH_ADR_BREIT_EIN_LUT )) - ko ) + My_InputLut[aValIn +1] * ko ) >> ( 16-LH_ADR_BREIT_EIN_LUT ); 00329 00330 aValIn = (ein_cache[3]=*input3) - ( *input3 >> ( LH_ADR_BREIT_EIN_LUT )); 00331 ko = aValIn & ( (1<<( 16-LH_ADR_BREIT_EIN_LUT ))-1 ); 00332 aValIn = (aValIn >> ( 16-LH_ADR_BREIT_EIN_LUT )) + ( 3 << LH_ADR_BREIT_EIN_LUT ); 00333 ein_regK = ( My_InputLut[aValIn] * ( (1<<( 16-LH_ADR_BREIT_EIN_LUT )) - ko ) + My_InputLut[aValIn +1] * ko ) >> ( 16-LH_ADR_BREIT_EIN_LUT ); 00334 #else 00335 ein_regC = My_InputLut[(ein_cache[0]=*input0) + ( 0 << LH_ADR_BREIT_EIN_LUT )]; 00336 ein_regM = My_InputLut[(ein_cache[1]=*input1) + ( 1 << LH_ADR_BREIT_EIN_LUT )]; 00337 ein_regY = My_InputLut[(ein_cache[2]=*input2) + ( 2 << LH_ADR_BREIT_EIN_LUT )]; 00338 ein_regK = My_InputLut[(ein_cache[3]=*input3) + ( 3 << LH_ADR_BREIT_EIN_LUT )]; 00339 #endif 00340 #else 00341 #if LH_DATA_IN_SIZE_16 00342 register LH_DATA_IN_TYPE aValIn; 00343 register LH_UINT32 ko; 00344 aValIn = (ein_cache[0]=*input0) - ( *input0 >> ( LH_ADR_BREIT_EIN_LUT )); 00345 ko = aValIn & ( (1<<( 16-LH_ADR_BREIT_EIN_LUT ))-1 ); 00346 aValIn = (aValIn >> ( 16-LH_ADR_BREIT_EIN_LUT )) + ( 0 << LH_ADR_BREIT_EIN_LUT ); 00347 ein_regC = ( My_InputLut[aValIn] * ( (1<<( 16-LH_ADR_BREIT_EIN_LUT )) - ko ) + My_InputLut[aValIn +1] * ko ) >>( 10-LH_ADR_BREIT_EIN_LUT ); 00348 00349 aValIn = (ein_cache[1]=*input1) - ( *input1 >> ( LH_ADR_BREIT_EIN_LUT )); 00350 ko = aValIn & ( (1<<( 16-LH_ADR_BREIT_EIN_LUT ))-1 ); 00351 aValIn = (aValIn >> ( 16-LH_ADR_BREIT_EIN_LUT )) + ( 1 << LH_ADR_BREIT_EIN_LUT ); 00352 ein_regM = ( My_InputLut[aValIn] * ( (1<<( 16-LH_ADR_BREIT_EIN_LUT )) - ko ) + My_InputLut[aValIn +1] * ko ) >> ( 10-LH_ADR_BREIT_EIN_LUT ); 00353 00354 aValIn = (ein_cache[2]=*input2) - ( *input2 >> ( LH_ADR_BREIT_EIN_LUT )); 00355 ko = aValIn & ( (1<<( 16-LH_ADR_BREIT_EIN_LUT ))-1 ); 00356 aValIn = (aValIn >> ( 16-LH_ADR_BREIT_EIN_LUT )) + ( 2 << LH_ADR_BREIT_EIN_LUT ); 00357 ein_regY = ( My_InputLut[aValIn] * ( (1<<( 16-LH_ADR_BREIT_EIN_LUT )) - ko ) + My_InputLut[aValIn +1] * ko ) >> ( 10-LH_ADR_BREIT_EIN_LUT ); 00358 00359 aValIn = (ein_cache[3]=*input3) - ( *input3 >> ( LH_ADR_BREIT_EIN_LUT )); 00360 ko = aValIn & ( (1<<( 16-LH_ADR_BREIT_EIN_LUT ))-1 ); 00361 aValIn = (aValIn >> ( 16-LH_ADR_BREIT_EIN_LUT )) + ( 3 << LH_ADR_BREIT_EIN_LUT ); 00362 ein_regK = ( My_InputLut[aValIn] * ( (1<<( 16-LH_ADR_BREIT_EIN_LUT )) - ko ) + My_InputLut[aValIn +1] * ko ) >> ( 10-LH_ADR_BREIT_EIN_LUT ); 00363 /*ein_regC = My_InputLut[(*input0>>( 10-LH_ADR_BREIT_EIN_LUT )) + ( 0 << LH_ADR_BREIT_EIN_LUT )]; 00364 ein_regM = My_InputLut[(*input1>>( 10-LH_ADR_BREIT_EIN_LUT )) + ( 1 << LH_ADR_BREIT_EIN_LUT )]; 00365 ein_regY = My_InputLut[(*input2>>( 10-LH_ADR_BREIT_EIN_LUT )) + ( 2 << LH_ADR_BREIT_EIN_LUT )]; 00366 ein_regK = My_InputLut[(*input3>>( 10-LH_ADR_BREIT_EIN_LUT )) + ( 3 << LH_ADR_BREIT_EIN_LUT )];*/ 00367 #else 00368 ein_regC = My_InputLut[(ein_cache[0]=*input0) + ( 0 << LH_ADR_BREIT_EIN_LUT )]; 00369 ein_regM = My_InputLut[(ein_cache[1]=*input1) + ( 1 << LH_ADR_BREIT_EIN_LUT )]; 00370 ein_regY = My_InputLut[(ein_cache[2]=*input2) + ( 2 << LH_ADR_BREIT_EIN_LUT )]; 00371 ein_regK = My_InputLut[(ein_cache[3]=*input3) + ( 3 << LH_ADR_BREIT_EIN_LUT )]; 00372 #endif 00373 #endif 00374 paNewVal0 = (LH_LUT_DATA_TYPE *)My_ColorLut + 00375 ((((((((ein_regC & LH_BIT_MASKE_ADR) << LH_BIT_BREIT_ADR) + 00376 (ein_regM & LH_BIT_MASKE_ADR)) << LH_BIT_BREIT_ADR) + 00377 (ein_regY & LH_BIT_MASKE_ADR))>> (LH_BIT_BREIT_SELEKTOR-LH_BIT_BREIT_ADR)) + 00378 (ein_regK >> LH_BIT_BREIT_SELEKTOR))*LH_DATA_OUT_COUNT); 00379 ein_regC &= LH_BIT_MASKE_SELEKTOR; 00380 ein_regM &= LH_BIT_MASKE_SELEKTOR; 00381 ein_regY &= LH_BIT_MASKE_SELEKTOR; 00382 ein_regK &= LH_BIT_MASKE_SELEKTOR; 00383 if (ein_regY >= ein_regC) 00384 { 00385 if( ein_regM >= ein_regC ) 00386 { 00387 if( ein_regY >= ein_regM ) /* YMCK !*/ 00388 { 00389 if( ein_regC >= ein_regK ) 00390 { 00391 ako0 = LH_ADR_BEREICH_SEL - ein_regY; 00392 ako1 = ein_regY - ein_regM; 00393 ako2 = ein_regM - ein_regC; 00394 ako3 = ein_regC - ein_regK; 00395 #if LH_LUT_DATA_SIZE_16 00396 #if LH_DATA_OUT_SIZE_16 00397 00398 aVal = ( ako0 * paNewVal0[0] + 00399 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 00400 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 00401 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 00402 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 00403 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00404 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00405 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00406 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 00407 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00408 00409 aVal = ( ako0 * paNewVal0[1] + 00410 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 00411 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 00412 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 00413 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 00414 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00415 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00416 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00417 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 00418 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00419 00420 aVal = ( ako0 * paNewVal0[2] + 00421 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 00422 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 00423 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 00424 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 00425 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00426 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00427 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00428 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 00429 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00430 00431 #if LH_DATA_OUT_COUNT_4 00432 aVal = ( ako0 * paNewVal0[3] + 00433 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 00434 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 00435 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 00436 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 00437 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00438 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00439 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00440 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 00441 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00442 #endif 00443 00444 #else 00445 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 00446 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 00447 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 00448 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 00449 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 00450 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 00451 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 00452 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 00453 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 00454 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 00455 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 00456 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 00457 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 00458 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 00459 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 00460 #if LH_DATA_OUT_COUNT_4 00461 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 00462 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 00463 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 00464 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 00465 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 00466 #endif 00467 #endif 00468 00469 #else 00470 __asm { 00471 mov eax, paNewVal0 00472 00473 mov ebx, ako0 00474 movq mm5, MMXTab [ebx*8] 00475 #ifdef Test_mode 00476 movq TestRam,mm5 00477 #endif 00478 punpcklbw mm1,[eax] 00479 mov ebx, ako1 00480 psrlw mm1,8 00481 #ifdef Test_mode 00482 movq TestRam,mm1 00483 #endif 00484 00485 pmullw mm5,mm1 00486 movq mm6, MMXTab [ebx*8] 00487 #ifdef Test_mode 00488 movq TestRam,mm6 00489 #endif 00490 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 00491 mov ebx, ako2 00492 psrlw mm2,8 00493 #ifdef Test_mode 00494 movq TestRam,mm2 00495 #endif 00496 pmullw mm6,mm2 00497 00498 movq mm7, MMXTab [ebx*8] 00499 paddusw mm5,mm6 00500 #ifdef Test_mode 00501 movq TestRam,mm7 00502 #endif 00503 punpcklbw mm1,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 00504 mov ebx, ako3 00505 psrlw mm1,8 00506 #ifdef Test_mode 00507 movq TestRam,mm1 00508 #endif 00509 pmullw mm7,mm1 00510 00511 movq mm6, MMXTab [ebx*8] 00512 paddusw mm5,mm7 00513 #ifdef Test_mode 00514 movq TestRam,mm6 00515 #endif 00516 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 00517 mov ebx, ein_regK 00518 psrlw mm2,8 00519 #ifdef Test_mode 00520 movq TestRam,mm2 00521 #endif 00522 pmullw mm6,mm2 00523 00524 movq mm7, MMXTab [ebx*8] 00525 paddusw mm5,mm6 00526 #ifdef Test_mode 00527 movq TestRam,mm7 00528 #endif 00529 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 00530 mov ebx, ako2 00531 psrlw mm1,8 00532 #ifdef Test_mode 00533 movq TestRam,mm1 00534 #endif 00535 pmullw mm7,mm1 00536 paddusw mm5,mm7 00537 #ifdef Test_mode 00538 movq TestRam,mm5 00539 #endif 00540 00541 00542 xor eax,eax 00543 psrlw mm5,LH_DATA_SHR 00544 movq ak,mm5 00545 00546 mov ax,ak 00547 mov esi,My_OutputLut 00548 mov al,BYTE PTR[eax+esi] 00549 mov edi,output0 00550 mov [edi], al 00551 mov ax,ak+2 00552 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 00553 mov edi,output1 00554 mov [edi], al 00555 mov ax,ak+4 00556 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 00557 mov edi,output2 00558 mov [edi], al 00559 #if LH_DATA_OUT_COUNT_4 00560 mov ax,ak+6 00561 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 00562 mov edi,output3 00563 mov [edi], al 00564 #endif 00565 00566 00567 } 00568 #endif 00569 } 00570 else if(ein_regM >= ein_regK ) /* YMKC !*/ 00571 { 00572 ako0 = LH_ADR_BEREICH_SEL - ein_regY; 00573 ako1 = ein_regY - ein_regM; 00574 ako2 = ein_regM - ein_regK; 00575 ako3 = ein_regK - ein_regC; 00576 #if LH_LUT_DATA_SIZE_16 00577 #if LH_DATA_OUT_SIZE_16 00578 00579 aVal = ( ako0 * paNewVal0[0] + 00580 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 00581 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 00582 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 00583 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 00584 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00585 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00586 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00587 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 00588 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00589 00590 aVal = ( ako0 * paNewVal0[1] + 00591 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 00592 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 00593 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 00594 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 00595 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00596 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00597 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00598 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 00599 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00600 00601 aVal = ( ako0 * paNewVal0[2] + 00602 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 00603 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 00604 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 00605 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 00606 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00607 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00608 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00609 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 00610 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00611 00612 #if LH_DATA_OUT_COUNT_4 00613 aVal = ( ako0 * paNewVal0[3] + 00614 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 00615 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 00616 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 00617 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 00618 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00619 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00620 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00621 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 00622 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00623 #endif 00624 00625 #else 00626 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 00627 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 00628 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 00629 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 00630 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 00631 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 00632 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 00633 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 00634 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 00635 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 00636 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 00637 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 00638 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 00639 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 00640 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 00641 #if LH_DATA_OUT_COUNT_4 00642 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 00643 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 00644 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 00645 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 00646 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 00647 #endif 00648 #endif 00649 00650 #else 00651 __asm { 00652 mov eax, paNewVal0 00653 00654 mov ebx, ako0 00655 movq mm5, MMXTab [ebx*8] 00656 #ifdef Test_mode 00657 movq TestRam,mm5 00658 #endif 00659 punpcklbw mm1,[eax] 00660 mov ebx, ako1 00661 psrlw mm1,8 00662 #ifdef Test_mode 00663 movq TestRam,mm1 00664 #endif 00665 00666 pmullw mm5,mm1 00667 movq mm6, MMXTab [ebx*8] 00668 #ifdef Test_mode 00669 movq TestRam,mm6 00670 #endif 00671 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 00672 mov ebx, ako2 00673 psrlw mm2,8 00674 #ifdef Test_mode 00675 movq TestRam,mm2 00676 #endif 00677 pmullw mm6,mm2 00678 00679 movq mm7, MMXTab [ebx*8] 00680 paddusw mm5,mm6 00681 #ifdef Test_mode 00682 movq TestRam,mm7 00683 #endif 00684 punpcklbw mm1,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 00685 mov ebx, ako3 00686 psrlw mm1,8 00687 #ifdef Test_mode 00688 movq TestRam,mm1 00689 #endif 00690 pmullw mm7,mm1 00691 00692 movq mm6, MMXTab [ebx*8] 00693 paddusw mm5,mm7 00694 #ifdef Test_mode 00695 movq TestRam,mm6 00696 #endif 00697 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 00698 mov ebx, ein_regC 00699 psrlw mm2,8 00700 #ifdef Test_mode 00701 movq TestRam,mm2 00702 #endif 00703 pmullw mm6,mm2 00704 00705 movq mm7, MMXTab [ebx*8] 00706 paddusw mm5,mm6 00707 #ifdef Test_mode 00708 movq TestRam,mm7 00709 #endif 00710 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 00711 mov ebx, ako2 00712 psrlw mm1,8 00713 #ifdef Test_mode 00714 movq TestRam,mm1 00715 #endif 00716 pmullw mm7,mm1 00717 paddusw mm5,mm7 00718 #ifdef Test_mode 00719 movq TestRam,mm5 00720 #endif 00721 00722 00723 xor eax,eax 00724 psrlw mm5,LH_DATA_SHR 00725 movq ak,mm5 00726 00727 mov ax,ak 00728 mov esi,My_OutputLut 00729 mov al,BYTE PTR[eax+esi] 00730 mov edi,output0 00731 mov [edi], al 00732 mov ax,ak+2 00733 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 00734 mov edi,output1 00735 mov [edi], al 00736 mov ax,ak+4 00737 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 00738 mov edi,output2 00739 mov [edi], al 00740 #if LH_DATA_OUT_COUNT_4 00741 mov ax,ak+6 00742 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 00743 mov edi,output3 00744 mov [edi], al 00745 #endif 00746 00747 00748 } 00749 #endif 00750 } 00751 else if(ein_regY >= ein_regK ) /* YKMC !*/ 00752 { 00753 ako0 = LH_ADR_BEREICH_SEL - ein_regY; 00754 ako1 = ein_regY - ein_regK; 00755 ako2 = ein_regK - ein_regM; 00756 ako3 = ein_regM - ein_regC; 00757 #if LH_LUT_DATA_SIZE_16 00758 #if LH_DATA_OUT_SIZE_16 00759 00760 aVal = ( ako0 * paNewVal0[0] + 00761 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 00762 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 00763 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 00764 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 00765 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00766 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00767 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00768 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 00769 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00770 00771 aVal = ( ako0 * paNewVal0[1] + 00772 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 00773 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 00774 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 00775 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 00776 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00777 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00778 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00779 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 00780 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00781 00782 aVal = ( ako0 * paNewVal0[2] + 00783 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 00784 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 00785 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 00786 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 00787 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00788 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00789 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00790 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 00791 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00792 00793 #if LH_DATA_OUT_COUNT_4 00794 aVal = ( ako0 * paNewVal0[3] + 00795 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 00796 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 00797 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 00798 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 00799 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00800 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00801 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00802 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 00803 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00804 #endif 00805 00806 #else 00807 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 00808 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 00809 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 00810 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 00811 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 00812 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 00813 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 00814 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 00815 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 00816 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 00817 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 00818 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 00819 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 00820 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 00821 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 00822 #if LH_DATA_OUT_COUNT_4 00823 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 00824 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 00825 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 00826 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 00827 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 00828 #endif 00829 #endif 00830 00831 #else 00832 __asm { 00833 mov eax, paNewVal0 00834 00835 mov ebx, ako0 00836 movq mm5, MMXTab [ebx*8] 00837 #ifdef Test_mode 00838 movq TestRam,mm5 00839 #endif 00840 punpcklbw mm1,[eax] 00841 mov ebx, ako1 00842 psrlw mm1,8 00843 #ifdef Test_mode 00844 movq TestRam,mm1 00845 #endif 00846 00847 pmullw mm5,mm1 00848 movq mm6, MMXTab [ebx*8] 00849 #ifdef Test_mode 00850 movq TestRam,mm6 00851 #endif 00852 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 00853 mov ebx, ako2 00854 psrlw mm2,8 00855 #ifdef Test_mode 00856 movq TestRam,mm2 00857 #endif 00858 pmullw mm6,mm2 00859 00860 movq mm7, MMXTab [ebx*8] 00861 paddusw mm5,mm6 00862 #ifdef Test_mode 00863 movq TestRam,mm7 00864 #endif 00865 punpcklbw mm1,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 00866 mov ebx, ako3 00867 psrlw mm1,8 00868 #ifdef Test_mode 00869 movq TestRam,mm1 00870 #endif 00871 pmullw mm7,mm1 00872 00873 movq mm6, MMXTab [ebx*8] 00874 paddusw mm5,mm7 00875 #ifdef Test_mode 00876 movq TestRam,mm6 00877 #endif 00878 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 00879 mov ebx, ein_regC 00880 psrlw mm2,8 00881 #ifdef Test_mode 00882 movq TestRam,mm2 00883 #endif 00884 pmullw mm6,mm2 00885 00886 movq mm7, MMXTab [ebx*8] 00887 paddusw mm5,mm6 00888 #ifdef Test_mode 00889 movq TestRam,mm7 00890 #endif 00891 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 00892 mov ebx, ako2 00893 psrlw mm1,8 00894 #ifdef Test_mode 00895 movq TestRam,mm1 00896 #endif 00897 pmullw mm7,mm1 00898 paddusw mm5,mm7 00899 #ifdef Test_mode 00900 movq TestRam,mm5 00901 #endif 00902 00903 00904 xor eax,eax 00905 psrlw mm5,LH_DATA_SHR 00906 movq ak,mm5 00907 00908 mov ax,ak 00909 mov esi,My_OutputLut 00910 mov al,BYTE PTR[eax+esi] 00911 mov edi,output0 00912 mov [edi], al 00913 mov ax,ak+2 00914 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 00915 mov edi,output1 00916 mov [edi], al 00917 mov ax,ak+4 00918 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 00919 mov edi,output2 00920 mov [edi], al 00921 #if LH_DATA_OUT_COUNT_4 00922 mov ax,ak+6 00923 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 00924 mov edi,output3 00925 mov [edi], al 00926 #endif 00927 00928 00929 } 00930 #endif 00931 } 00932 else{ /* KYMC !*/ 00933 ako0 = LH_ADR_BEREICH_SEL - ein_regK; 00934 ako1 = ein_regK - ein_regY; 00935 ako2 = ein_regY - ein_regM; 00936 ako3 = ein_regM - ein_regC; 00937 #if LH_LUT_DATA_SIZE_16 00938 #if LH_DATA_OUT_SIZE_16 00939 00940 aVal = ( ako0 * paNewVal0[0] + 00941 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 00942 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 00943 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 00944 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 00945 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00946 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00947 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00948 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 00949 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00950 00951 aVal = ( ako0 * paNewVal0[1] + 00952 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 00953 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 00954 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 00955 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 00956 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00957 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00958 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00959 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 00960 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00961 00962 aVal = ( ako0 * paNewVal0[2] + 00963 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 00964 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 00965 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 00966 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 00967 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00968 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00969 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00970 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 00971 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00972 00973 #if LH_DATA_OUT_COUNT_4 00974 aVal = ( ako0 * paNewVal0[3] + 00975 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 00976 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 00977 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 00978 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 00979 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 00980 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 00981 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 00982 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 00983 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 00984 #endif 00985 00986 #else 00987 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 00988 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 00989 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 00990 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 00991 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 00992 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 00993 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 00994 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 00995 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 00996 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 00997 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 00998 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 00999 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 01000 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 01001 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 01002 #if LH_DATA_OUT_COUNT_4 01003 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 01004 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 01005 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 01006 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 01007 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 01008 #endif 01009 #endif 01010 01011 #else 01012 __asm { 01013 mov eax, paNewVal0 01014 01015 mov ebx, ako0 01016 movq mm5, MMXTab [ebx*8] 01017 #ifdef Test_mode 01018 movq TestRam,mm5 01019 #endif 01020 punpcklbw mm1,[eax] 01021 mov ebx, ako1 01022 psrlw mm1,8 01023 #ifdef Test_mode 01024 movq TestRam,mm1 01025 #endif 01026 01027 pmullw mm5,mm1 01028 movq mm6, MMXTab [ebx*8] 01029 #ifdef Test_mode 01030 movq TestRam,mm6 01031 #endif 01032 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 01033 mov ebx, ako2 01034 psrlw mm2,8 01035 #ifdef Test_mode 01036 movq TestRam,mm2 01037 #endif 01038 pmullw mm6,mm2 01039 01040 movq mm7, MMXTab [ebx*8] 01041 paddusw mm5,mm6 01042 #ifdef Test_mode 01043 movq TestRam,mm7 01044 #endif 01045 punpcklbw mm1,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 01046 mov ebx, ako3 01047 psrlw mm1,8 01048 #ifdef Test_mode 01049 movq TestRam,mm1 01050 #endif 01051 pmullw mm7,mm1 01052 01053 movq mm6, MMXTab [ebx*8] 01054 paddusw mm5,mm7 01055 #ifdef Test_mode 01056 movq TestRam,mm6 01057 #endif 01058 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 01059 mov ebx, ein_regC 01060 psrlw mm2,8 01061 #ifdef Test_mode 01062 movq TestRam,mm2 01063 #endif 01064 pmullw mm6,mm2 01065 01066 movq mm7, MMXTab [ebx*8] 01067 paddusw mm5,mm6 01068 #ifdef Test_mode 01069 movq TestRam,mm7 01070 #endif 01071 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 01072 mov ebx, ako2 01073 psrlw mm1,8 01074 #ifdef Test_mode 01075 movq TestRam,mm1 01076 #endif 01077 pmullw mm7,mm1 01078 paddusw mm5,mm7 01079 #ifdef Test_mode 01080 movq TestRam,mm5 01081 #endif 01082 01083 01084 xor eax,eax 01085 psrlw mm5,LH_DATA_SHR 01086 movq ak,mm5 01087 01088 mov ax,ak 01089 mov esi,My_OutputLut 01090 mov al,BYTE PTR[eax+esi] 01091 mov edi,output0 01092 mov [edi], al 01093 mov ax,ak+2 01094 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 01095 mov edi,output1 01096 mov [edi], al 01097 mov ax,ak+4 01098 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 01099 mov edi,output2 01100 mov [edi], al 01101 #if LH_DATA_OUT_COUNT_4 01102 mov ax,ak+6 01103 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 01104 mov edi,output3 01105 mov [edi], al 01106 #endif 01107 01108 01109 } 01110 #endif 01111 } 01112 } 01113 else 01114 { /* MYCK !*/ 01115 if( ein_regC >= ein_regK ) 01116 { 01117 ako0 = LH_ADR_BEREICH_SEL - ein_regM; 01118 ako1 = ein_regM - ein_regY; 01119 ako2 = ein_regY - ein_regC; 01120 ako3 = ein_regC - ein_regK; 01121 #if LH_LUT_DATA_SIZE_16 01122 #if LH_DATA_OUT_SIZE_16 01123 01124 aVal = ( ako0 * paNewVal0[0] + 01125 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01126 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01127 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01128 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 01129 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01130 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01131 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01132 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 01133 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01134 01135 aVal = ( ako0 * paNewVal0[1] + 01136 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01137 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01138 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01139 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 01140 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01141 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01142 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01143 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 01144 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01145 01146 aVal = ( ako0 * paNewVal0[2] + 01147 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01148 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01149 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01150 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 01151 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01152 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01153 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01154 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 01155 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01156 01157 #if LH_DATA_OUT_COUNT_4 01158 aVal = ( ako0 * paNewVal0[3] + 01159 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01160 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01161 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01162 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 01163 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01164 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01165 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01166 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 01167 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01168 #endif 01169 01170 #else 01171 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 01172 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01173 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01174 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01175 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 01176 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 01177 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01178 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01179 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01180 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 01181 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 01182 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01183 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01184 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01185 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 01186 #if LH_DATA_OUT_COUNT_4 01187 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 01188 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01189 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01190 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01191 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 01192 #endif 01193 #endif 01194 01195 #else 01196 __asm { 01197 mov eax, paNewVal0 01198 01199 mov ebx, ako0 01200 movq mm5, MMXTab [ebx*8] 01201 #ifdef Test_mode 01202 movq TestRam,mm5 01203 #endif 01204 punpcklbw mm1,[eax] 01205 mov ebx, ako1 01206 psrlw mm1,8 01207 #ifdef Test_mode 01208 movq TestRam,mm1 01209 #endif 01210 01211 pmullw mm5,mm1 01212 movq mm6, MMXTab [ebx*8] 01213 #ifdef Test_mode 01214 movq TestRam,mm6 01215 #endif 01216 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 01217 mov ebx, ako2 01218 psrlw mm2,8 01219 #ifdef Test_mode 01220 movq TestRam,mm2 01221 #endif 01222 pmullw mm6,mm2 01223 01224 movq mm7, MMXTab [ebx*8] 01225 paddusw mm5,mm6 01226 #ifdef Test_mode 01227 movq TestRam,mm7 01228 #endif 01229 punpcklbw mm1,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 01230 mov ebx, ako3 01231 psrlw mm1,8 01232 #ifdef Test_mode 01233 movq TestRam,mm1 01234 #endif 01235 pmullw mm7,mm1 01236 01237 movq mm6, MMXTab [ebx*8] 01238 paddusw mm5,mm7 01239 #ifdef Test_mode 01240 movq TestRam,mm6 01241 #endif 01242 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 01243 mov ebx, ein_regK 01244 psrlw mm2,8 01245 #ifdef Test_mode 01246 movq TestRam,mm2 01247 #endif 01248 pmullw mm6,mm2 01249 01250 movq mm7, MMXTab [ebx*8] 01251 paddusw mm5,mm6 01252 #ifdef Test_mode 01253 movq TestRam,mm7 01254 #endif 01255 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 01256 mov ebx, ako2 01257 psrlw mm1,8 01258 #ifdef Test_mode 01259 movq TestRam,mm1 01260 #endif 01261 pmullw mm7,mm1 01262 paddusw mm5,mm7 01263 #ifdef Test_mode 01264 movq TestRam,mm5 01265 #endif 01266 01267 01268 xor eax,eax 01269 psrlw mm5,LH_DATA_SHR 01270 movq ak,mm5 01271 01272 mov ax,ak 01273 mov esi,My_OutputLut 01274 mov al,BYTE PTR[eax+esi] 01275 mov edi,output0 01276 mov [edi], al 01277 mov ax,ak+2 01278 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 01279 mov edi,output1 01280 mov [edi], al 01281 mov ax,ak+4 01282 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 01283 mov edi,output2 01284 mov [edi], al 01285 #if LH_DATA_OUT_COUNT_4 01286 mov ax,ak+6 01287 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 01288 mov edi,output3 01289 mov [edi], al 01290 #endif 01291 01292 01293 } 01294 #endif 01295 } 01296 else if(ein_regY >= ein_regK ) /* MYKC !*/ 01297 { 01298 ako0 = LH_ADR_BEREICH_SEL - ein_regM; 01299 ako1 = ein_regM - ein_regY; 01300 ako2 = ein_regY - ein_regK; 01301 ako3 = ein_regK - ein_regC; 01302 #if LH_LUT_DATA_SIZE_16 01303 #if LH_DATA_OUT_SIZE_16 01304 01305 aVal = ( ako0 * paNewVal0[0] + 01306 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01307 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01308 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 01309 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 01310 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01311 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01312 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01313 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 01314 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01315 01316 aVal = ( ako0 * paNewVal0[1] + 01317 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01318 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01319 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 01320 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 01321 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01322 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01323 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01324 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 01325 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01326 01327 aVal = ( ako0 * paNewVal0[2] + 01328 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01329 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01330 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 01331 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 01332 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01333 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01334 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01335 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 01336 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01337 01338 #if LH_DATA_OUT_COUNT_4 01339 aVal = ( ako0 * paNewVal0[3] + 01340 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01341 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01342 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 01343 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 01344 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01345 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01346 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01347 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 01348 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01349 #endif 01350 01351 #else 01352 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 01353 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01354 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01355 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 01356 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 01357 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 01358 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01359 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01360 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 01361 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 01362 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 01363 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01364 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01365 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 01366 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 01367 #if LH_DATA_OUT_COUNT_4 01368 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 01369 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01370 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01371 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 01372 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 01373 #endif 01374 #endif 01375 01376 #else 01377 __asm { 01378 mov eax, paNewVal0 01379 01380 mov ebx, ako0 01381 movq mm5, MMXTab [ebx*8] 01382 #ifdef Test_mode 01383 movq TestRam,mm5 01384 #endif 01385 punpcklbw mm1,[eax] 01386 mov ebx, ako1 01387 psrlw mm1,8 01388 #ifdef Test_mode 01389 movq TestRam,mm1 01390 #endif 01391 01392 pmullw mm5,mm1 01393 movq mm6, MMXTab [ebx*8] 01394 #ifdef Test_mode 01395 movq TestRam,mm6 01396 #endif 01397 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 01398 mov ebx, ako2 01399 psrlw mm2,8 01400 #ifdef Test_mode 01401 movq TestRam,mm2 01402 #endif 01403 pmullw mm6,mm2 01404 01405 movq mm7, MMXTab [ebx*8] 01406 paddusw mm5,mm6 01407 #ifdef Test_mode 01408 movq TestRam,mm7 01409 #endif 01410 punpcklbw mm1,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 01411 mov ebx, ako3 01412 psrlw mm1,8 01413 #ifdef Test_mode 01414 movq TestRam,mm1 01415 #endif 01416 pmullw mm7,mm1 01417 01418 movq mm6, MMXTab [ebx*8] 01419 paddusw mm5,mm7 01420 #ifdef Test_mode 01421 movq TestRam,mm6 01422 #endif 01423 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 01424 mov ebx, ein_regC 01425 psrlw mm2,8 01426 #ifdef Test_mode 01427 movq TestRam,mm2 01428 #endif 01429 pmullw mm6,mm2 01430 01431 movq mm7, MMXTab [ebx*8] 01432 paddusw mm5,mm6 01433 #ifdef Test_mode 01434 movq TestRam,mm7 01435 #endif 01436 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 01437 mov ebx, ako2 01438 psrlw mm1,8 01439 #ifdef Test_mode 01440 movq TestRam,mm1 01441 #endif 01442 pmullw mm7,mm1 01443 paddusw mm5,mm7 01444 #ifdef Test_mode 01445 movq TestRam,mm5 01446 #endif 01447 01448 01449 xor eax,eax 01450 psrlw mm5,LH_DATA_SHR 01451 movq ak,mm5 01452 01453 mov ax,ak 01454 mov esi,My_OutputLut 01455 mov al,BYTE PTR[eax+esi] 01456 mov edi,output0 01457 mov [edi], al 01458 mov ax,ak+2 01459 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 01460 mov edi,output1 01461 mov [edi], al 01462 mov ax,ak+4 01463 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 01464 mov edi,output2 01465 mov [edi], al 01466 #if LH_DATA_OUT_COUNT_4 01467 mov ax,ak+6 01468 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 01469 mov edi,output3 01470 mov [edi], al 01471 #endif 01472 01473 01474 } 01475 #endif 01476 } 01477 else if(ein_regM >= ein_regK ) /* MKYC !*/ 01478 { 01479 ako0 = LH_ADR_BEREICH_SEL - ein_regM; 01480 ako1 = ein_regM - ein_regK; 01481 ako2 = ein_regK - ein_regY; 01482 ako3 = ein_regY - ein_regC; 01483 #if LH_LUT_DATA_SIZE_16 01484 #if LH_DATA_OUT_SIZE_16 01485 01486 aVal = ( ako0 * paNewVal0[0] + 01487 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01488 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 01489 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 01490 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 01491 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01492 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01493 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01494 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 01495 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01496 01497 aVal = ( ako0 * paNewVal0[1] + 01498 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01499 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 01500 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 01501 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 01502 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01503 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01504 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01505 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 01506 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01507 01508 aVal = ( ako0 * paNewVal0[2] + 01509 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01510 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 01511 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 01512 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 01513 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01514 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01515 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01516 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 01517 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01518 01519 #if LH_DATA_OUT_COUNT_4 01520 aVal = ( ako0 * paNewVal0[3] + 01521 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01522 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 01523 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 01524 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 01525 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01526 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01527 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01528 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 01529 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01530 #endif 01531 01532 #else 01533 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 01534 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01535 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 01536 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 01537 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 01538 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 01539 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01540 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 01541 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 01542 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 01543 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 01544 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01545 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 01546 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 01547 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 01548 #if LH_DATA_OUT_COUNT_4 01549 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 01550 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01551 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 01552 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 01553 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 01554 #endif 01555 #endif 01556 01557 #else 01558 __asm { 01559 mov eax, paNewVal0 01560 01561 mov ebx, ako0 01562 movq mm5, MMXTab [ebx*8] 01563 #ifdef Test_mode 01564 movq TestRam,mm5 01565 #endif 01566 punpcklbw mm1,[eax] 01567 mov ebx, ako1 01568 psrlw mm1,8 01569 #ifdef Test_mode 01570 movq TestRam,mm1 01571 #endif 01572 01573 pmullw mm5,mm1 01574 movq mm6, MMXTab [ebx*8] 01575 #ifdef Test_mode 01576 movq TestRam,mm6 01577 #endif 01578 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 01579 mov ebx, ako2 01580 psrlw mm2,8 01581 #ifdef Test_mode 01582 movq TestRam,mm2 01583 #endif 01584 pmullw mm6,mm2 01585 01586 movq mm7, MMXTab [ebx*8] 01587 paddusw mm5,mm6 01588 #ifdef Test_mode 01589 movq TestRam,mm7 01590 #endif 01591 punpcklbw mm1,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 01592 mov ebx, ako3 01593 psrlw mm1,8 01594 #ifdef Test_mode 01595 movq TestRam,mm1 01596 #endif 01597 pmullw mm7,mm1 01598 01599 movq mm6, MMXTab [ebx*8] 01600 paddusw mm5,mm7 01601 #ifdef Test_mode 01602 movq TestRam,mm6 01603 #endif 01604 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 01605 mov ebx, ein_regC 01606 psrlw mm2,8 01607 #ifdef Test_mode 01608 movq TestRam,mm2 01609 #endif 01610 pmullw mm6,mm2 01611 01612 movq mm7, MMXTab [ebx*8] 01613 paddusw mm5,mm6 01614 #ifdef Test_mode 01615 movq TestRam,mm7 01616 #endif 01617 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 01618 mov ebx, ako2 01619 psrlw mm1,8 01620 #ifdef Test_mode 01621 movq TestRam,mm1 01622 #endif 01623 pmullw mm7,mm1 01624 paddusw mm5,mm7 01625 #ifdef Test_mode 01626 movq TestRam,mm5 01627 #endif 01628 01629 01630 xor eax,eax 01631 psrlw mm5,LH_DATA_SHR 01632 movq ak,mm5 01633 01634 mov ax,ak 01635 mov esi,My_OutputLut 01636 mov al,BYTE PTR[eax+esi] 01637 mov edi,output0 01638 mov [edi], al 01639 mov ax,ak+2 01640 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 01641 mov edi,output1 01642 mov [edi], al 01643 mov ax,ak+4 01644 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 01645 mov edi,output2 01646 mov [edi], al 01647 #if LH_DATA_OUT_COUNT_4 01648 mov ax,ak+6 01649 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 01650 mov edi,output3 01651 mov [edi], al 01652 #endif 01653 01654 01655 } 01656 #endif 01657 } 01658 else 01659 { /* KMYC !*/ 01660 ako0 = LH_ADR_BEREICH_SEL - ein_regK; 01661 ako1 = ein_regK - ein_regM; 01662 ako2 = ein_regM - ein_regY; 01663 ako3 = ein_regY - ein_regC; 01664 #if LH_LUT_DATA_SIZE_16 01665 #if LH_DATA_OUT_SIZE_16 01666 01667 aVal = ( ako0 * paNewVal0[0] + 01668 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 01669 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 01670 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 01671 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 01672 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01673 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01674 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01675 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 01676 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01677 01678 aVal = ( ako0 * paNewVal0[1] + 01679 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 01680 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 01681 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 01682 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 01683 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01684 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01685 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01686 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 01687 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01688 01689 aVal = ( ako0 * paNewVal0[2] + 01690 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 01691 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 01692 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 01693 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 01694 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01695 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01696 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01697 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 01698 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01699 01700 #if LH_DATA_OUT_COUNT_4 01701 aVal = ( ako0 * paNewVal0[3] + 01702 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 01703 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 01704 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 01705 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 01706 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01707 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01708 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01709 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 01710 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01711 #endif 01712 01713 #else 01714 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 01715 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 01716 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 01717 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 01718 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 01719 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 01720 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 01721 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 01722 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 01723 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 01724 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 01725 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 01726 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 01727 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 01728 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 01729 #if LH_DATA_OUT_COUNT_4 01730 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 01731 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 01732 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 01733 ako3 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 01734 ein_regC * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 01735 #endif 01736 #endif 01737 01738 #else 01739 __asm { 01740 mov eax, paNewVal0 01741 01742 mov ebx, ako0 01743 movq mm5, MMXTab [ebx*8] 01744 #ifdef Test_mode 01745 movq TestRam,mm5 01746 #endif 01747 punpcklbw mm1,[eax] 01748 mov ebx, ako1 01749 psrlw mm1,8 01750 #ifdef Test_mode 01751 movq TestRam,mm1 01752 #endif 01753 01754 pmullw mm5,mm1 01755 movq mm6, MMXTab [ebx*8] 01756 #ifdef Test_mode 01757 movq TestRam,mm6 01758 #endif 01759 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 01760 mov ebx, ako2 01761 psrlw mm2,8 01762 #ifdef Test_mode 01763 movq TestRam,mm2 01764 #endif 01765 pmullw mm6,mm2 01766 01767 movq mm7, MMXTab [ebx*8] 01768 paddusw mm5,mm6 01769 #ifdef Test_mode 01770 movq TestRam,mm7 01771 #endif 01772 punpcklbw mm1,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 01773 mov ebx, ako3 01774 psrlw mm1,8 01775 #ifdef Test_mode 01776 movq TestRam,mm1 01777 #endif 01778 pmullw mm7,mm1 01779 01780 movq mm6, MMXTab [ebx*8] 01781 paddusw mm5,mm7 01782 #ifdef Test_mode 01783 movq TestRam,mm6 01784 #endif 01785 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 01786 mov ebx, ein_regC 01787 psrlw mm2,8 01788 #ifdef Test_mode 01789 movq TestRam,mm2 01790 #endif 01791 pmullw mm6,mm2 01792 01793 movq mm7, MMXTab [ebx*8] 01794 paddusw mm5,mm6 01795 #ifdef Test_mode 01796 movq TestRam,mm7 01797 #endif 01798 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 01799 mov ebx, ako2 01800 psrlw mm1,8 01801 #ifdef Test_mode 01802 movq TestRam,mm1 01803 #endif 01804 pmullw mm7,mm1 01805 paddusw mm5,mm7 01806 #ifdef Test_mode 01807 movq TestRam,mm5 01808 #endif 01809 01810 01811 xor eax,eax 01812 psrlw mm5,LH_DATA_SHR 01813 movq ak,mm5 01814 01815 mov ax,ak 01816 mov esi,My_OutputLut 01817 mov al,BYTE PTR[eax+esi] 01818 mov edi,output0 01819 mov [edi], al 01820 mov ax,ak+2 01821 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 01822 mov edi,output1 01823 mov [edi], al 01824 mov ax,ak+4 01825 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 01826 mov edi,output2 01827 mov [edi], al 01828 #if LH_DATA_OUT_COUNT_4 01829 mov ax,ak+6 01830 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 01831 mov edi,output3 01832 mov [edi], al 01833 #endif 01834 01835 01836 } 01837 #endif 01838 } 01839 } 01840 } 01841 else 01842 { /* YCMK !*/ 01843 if( ein_regM >= ein_regK ) 01844 { 01845 ako0 = LH_ADR_BEREICH_SEL - ein_regY; 01846 ako1 = ein_regY - ein_regC; 01847 ako2 = ein_regC - ein_regM; 01848 ako3 = ein_regM - ein_regK; 01849 #if LH_LUT_DATA_SIZE_16 01850 #if LH_DATA_OUT_SIZE_16 01851 01852 aVal = ( ako0 * paNewVal0[0] + 01853 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01854 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01855 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01856 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 01857 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01858 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01859 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01860 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 01861 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01862 01863 aVal = ( ako0 * paNewVal0[1] + 01864 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01865 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01866 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01867 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 01868 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01869 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01870 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01871 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 01872 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01873 01874 aVal = ( ako0 * paNewVal0[2] + 01875 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01876 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01877 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01878 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 01879 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01880 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01881 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01882 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 01883 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01884 01885 #if LH_DATA_OUT_COUNT_4 01886 aVal = ( ako0 * paNewVal0[3] + 01887 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01888 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01889 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01890 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 01891 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 01892 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 01893 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 01894 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 01895 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 01896 #endif 01897 01898 #else 01899 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 01900 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01901 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01902 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 01903 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 01904 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 01905 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01906 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01907 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 01908 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 01909 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 01910 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01911 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01912 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 01913 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 01914 #if LH_DATA_OUT_COUNT_4 01915 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 01916 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01917 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01918 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 01919 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 01920 #endif 01921 #endif 01922 01923 #else 01924 __asm { 01925 mov eax, paNewVal0 01926 01927 mov ebx, ako0 01928 movq mm5, MMXTab [ebx*8] 01929 #ifdef Test_mode 01930 movq TestRam,mm5 01931 #endif 01932 punpcklbw mm1,[eax] 01933 mov ebx, ako1 01934 psrlw mm1,8 01935 #ifdef Test_mode 01936 movq TestRam,mm1 01937 #endif 01938 01939 pmullw mm5,mm1 01940 movq mm6, MMXTab [ebx*8] 01941 #ifdef Test_mode 01942 movq TestRam,mm6 01943 #endif 01944 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 01945 mov ebx, ako2 01946 psrlw mm2,8 01947 #ifdef Test_mode 01948 movq TestRam,mm2 01949 #endif 01950 pmullw mm6,mm2 01951 01952 movq mm7, MMXTab [ebx*8] 01953 paddusw mm5,mm6 01954 #ifdef Test_mode 01955 movq TestRam,mm7 01956 #endif 01957 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 01958 mov ebx, ako3 01959 psrlw mm1,8 01960 #ifdef Test_mode 01961 movq TestRam,mm1 01962 #endif 01963 pmullw mm7,mm1 01964 01965 movq mm6, MMXTab [ebx*8] 01966 paddusw mm5,mm7 01967 #ifdef Test_mode 01968 movq TestRam,mm6 01969 #endif 01970 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 01971 mov ebx, ein_regK 01972 psrlw mm2,8 01973 #ifdef Test_mode 01974 movq TestRam,mm2 01975 #endif 01976 pmullw mm6,mm2 01977 01978 movq mm7, MMXTab [ebx*8] 01979 paddusw mm5,mm6 01980 #ifdef Test_mode 01981 movq TestRam,mm7 01982 #endif 01983 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 01984 mov ebx, ako2 01985 psrlw mm1,8 01986 #ifdef Test_mode 01987 movq TestRam,mm1 01988 #endif 01989 pmullw mm7,mm1 01990 paddusw mm5,mm7 01991 #ifdef Test_mode 01992 movq TestRam,mm5 01993 #endif 01994 01995 01996 xor eax,eax 01997 psrlw mm5,LH_DATA_SHR 01998 movq ak,mm5 01999 02000 mov ax,ak 02001 mov esi,My_OutputLut 02002 mov al,BYTE PTR[eax+esi] 02003 mov edi,output0 02004 mov [edi], al 02005 mov ax,ak+2 02006 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 02007 mov edi,output1 02008 mov [edi], al 02009 mov ax,ak+4 02010 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 02011 mov edi,output2 02012 mov [edi], al 02013 #if LH_DATA_OUT_COUNT_4 02014 mov ax,ak+6 02015 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 02016 mov edi,output3 02017 mov [edi], al 02018 #endif 02019 02020 02021 } 02022 #endif 02023 } 02024 else if(ein_regC >= ein_regK ) /* YCKM !*/ 02025 { 02026 ako0 = LH_ADR_BEREICH_SEL - ein_regY; 02027 ako1 = ein_regY - ein_regC; 02028 ako2 = ein_regC - ein_regK; 02029 ako3 = ein_regK - ein_regM; 02030 #if LH_LUT_DATA_SIZE_16 02031 #if LH_DATA_OUT_SIZE_16 02032 02033 aVal = ( ako0 * paNewVal0[0] + 02034 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02035 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02036 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02037 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 02038 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02039 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02040 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02041 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 02042 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02043 02044 aVal = ( ako0 * paNewVal0[1] + 02045 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02046 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02047 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02048 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 02049 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02050 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02051 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02052 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 02053 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02054 02055 aVal = ( ako0 * paNewVal0[2] + 02056 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02057 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02058 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02059 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 02060 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02061 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02062 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02063 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 02064 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02065 02066 #if LH_DATA_OUT_COUNT_4 02067 aVal = ( ako0 * paNewVal0[3] + 02068 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02069 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02070 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02071 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 02072 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02073 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02074 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02075 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 02076 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02077 #endif 02078 02079 #else 02080 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 02081 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02082 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02083 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02084 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 02085 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 02086 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02087 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02088 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02089 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 02090 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 02091 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02092 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02093 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02094 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 02095 #if LH_DATA_OUT_COUNT_4 02096 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 02097 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02098 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02099 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02100 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 02101 #endif 02102 #endif 02103 02104 #else 02105 __asm { 02106 mov eax, paNewVal0 02107 02108 mov ebx, ako0 02109 movq mm5, MMXTab [ebx*8] 02110 #ifdef Test_mode 02111 movq TestRam,mm5 02112 #endif 02113 punpcklbw mm1,[eax] 02114 mov ebx, ako1 02115 psrlw mm1,8 02116 #ifdef Test_mode 02117 movq TestRam,mm1 02118 #endif 02119 02120 pmullw mm5,mm1 02121 movq mm6, MMXTab [ebx*8] 02122 #ifdef Test_mode 02123 movq TestRam,mm6 02124 #endif 02125 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 02126 mov ebx, ako2 02127 psrlw mm2,8 02128 #ifdef Test_mode 02129 movq TestRam,mm2 02130 #endif 02131 pmullw mm6,mm2 02132 02133 movq mm7, MMXTab [ebx*8] 02134 paddusw mm5,mm6 02135 #ifdef Test_mode 02136 movq TestRam,mm7 02137 #endif 02138 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 02139 mov ebx, ako3 02140 psrlw mm1,8 02141 #ifdef Test_mode 02142 movq TestRam,mm1 02143 #endif 02144 pmullw mm7,mm1 02145 02146 movq mm6, MMXTab [ebx*8] 02147 paddusw mm5,mm7 02148 #ifdef Test_mode 02149 movq TestRam,mm6 02150 #endif 02151 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 02152 mov ebx, ein_regM 02153 psrlw mm2,8 02154 #ifdef Test_mode 02155 movq TestRam,mm2 02156 #endif 02157 pmullw mm6,mm2 02158 02159 movq mm7, MMXTab [ebx*8] 02160 paddusw mm5,mm6 02161 #ifdef Test_mode 02162 movq TestRam,mm7 02163 #endif 02164 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 02165 mov ebx, ako2 02166 psrlw mm1,8 02167 #ifdef Test_mode 02168 movq TestRam,mm1 02169 #endif 02170 pmullw mm7,mm1 02171 paddusw mm5,mm7 02172 #ifdef Test_mode 02173 movq TestRam,mm5 02174 #endif 02175 02176 02177 xor eax,eax 02178 psrlw mm5,LH_DATA_SHR 02179 movq ak,mm5 02180 02181 mov ax,ak 02182 mov esi,My_OutputLut 02183 mov al,BYTE PTR[eax+esi] 02184 mov edi,output0 02185 mov [edi], al 02186 mov ax,ak+2 02187 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 02188 mov edi,output1 02189 mov [edi], al 02190 mov ax,ak+4 02191 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 02192 mov edi,output2 02193 mov [edi], al 02194 #if LH_DATA_OUT_COUNT_4 02195 mov ax,ak+6 02196 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 02197 mov edi,output3 02198 mov [edi], al 02199 #endif 02200 02201 02202 } 02203 #endif 02204 } 02205 else if(ein_regY >= ein_regK ) /* YKCM !*/ 02206 { 02207 ako0 = LH_ADR_BEREICH_SEL - ein_regY; 02208 ako1 = ein_regY - ein_regK; 02209 ako2 = ein_regK - ein_regC; 02210 ako3 = ein_regC - ein_regM; 02211 #if LH_LUT_DATA_SIZE_16 02212 #if LH_DATA_OUT_SIZE_16 02213 02214 aVal = ( ako0 * paNewVal0[0] + 02215 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02216 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02217 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02218 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 02219 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02220 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02221 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02222 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 02223 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02224 02225 aVal = ( ako0 * paNewVal0[1] + 02226 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02227 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02228 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02229 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 02230 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02231 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02232 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02233 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 02234 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02235 02236 aVal = ( ako0 * paNewVal0[2] + 02237 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02238 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02239 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02240 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 02241 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02242 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02243 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02244 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 02245 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02246 02247 #if LH_DATA_OUT_COUNT_4 02248 aVal = ( ako0 * paNewVal0[3] + 02249 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02250 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02251 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02252 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 02253 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02254 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02255 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02256 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 02257 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02258 #endif 02259 02260 #else 02261 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 02262 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02263 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02264 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02265 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 02266 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 02267 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02268 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02269 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02270 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 02271 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 02272 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02273 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02274 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02275 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 02276 #if LH_DATA_OUT_COUNT_4 02277 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 02278 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02279 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02280 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02281 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 02282 #endif 02283 #endif 02284 02285 #else 02286 __asm { 02287 mov eax, paNewVal0 02288 02289 mov ebx, ako0 02290 movq mm5, MMXTab [ebx*8] 02291 #ifdef Test_mode 02292 movq TestRam,mm5 02293 #endif 02294 punpcklbw mm1,[eax] 02295 mov ebx, ako1 02296 psrlw mm1,8 02297 #ifdef Test_mode 02298 movq TestRam,mm1 02299 #endif 02300 02301 pmullw mm5,mm1 02302 movq mm6, MMXTab [ebx*8] 02303 #ifdef Test_mode 02304 movq TestRam,mm6 02305 #endif 02306 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 02307 mov ebx, ako2 02308 psrlw mm2,8 02309 #ifdef Test_mode 02310 movq TestRam,mm2 02311 #endif 02312 pmullw mm6,mm2 02313 02314 movq mm7, MMXTab [ebx*8] 02315 paddusw mm5,mm6 02316 #ifdef Test_mode 02317 movq TestRam,mm7 02318 #endif 02319 punpcklbw mm1,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 02320 mov ebx, ako3 02321 psrlw mm1,8 02322 #ifdef Test_mode 02323 movq TestRam,mm1 02324 #endif 02325 pmullw mm7,mm1 02326 02327 movq mm6, MMXTab [ebx*8] 02328 paddusw mm5,mm7 02329 #ifdef Test_mode 02330 movq TestRam,mm6 02331 #endif 02332 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 02333 mov ebx, ein_regM 02334 psrlw mm2,8 02335 #ifdef Test_mode 02336 movq TestRam,mm2 02337 #endif 02338 pmullw mm6,mm2 02339 02340 movq mm7, MMXTab [ebx*8] 02341 paddusw mm5,mm6 02342 #ifdef Test_mode 02343 movq TestRam,mm7 02344 #endif 02345 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 02346 mov ebx, ako2 02347 psrlw mm1,8 02348 #ifdef Test_mode 02349 movq TestRam,mm1 02350 #endif 02351 pmullw mm7,mm1 02352 paddusw mm5,mm7 02353 #ifdef Test_mode 02354 movq TestRam,mm5 02355 #endif 02356 02357 02358 xor eax,eax 02359 psrlw mm5,LH_DATA_SHR 02360 movq ak,mm5 02361 02362 mov ax,ak 02363 mov esi,My_OutputLut 02364 mov al,BYTE PTR[eax+esi] 02365 mov edi,output0 02366 mov [edi], al 02367 mov ax,ak+2 02368 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 02369 mov edi,output1 02370 mov [edi], al 02371 mov ax,ak+4 02372 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 02373 mov edi,output2 02374 mov [edi], al 02375 #if LH_DATA_OUT_COUNT_4 02376 mov ax,ak+6 02377 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 02378 mov edi,output3 02379 mov [edi], al 02380 #endif 02381 02382 02383 } 02384 #endif 02385 } 02386 else 02387 { /* KYCM !*/ 02388 ako0 = LH_ADR_BEREICH_SEL - ein_regK; 02389 ako1 = ein_regK - ein_regY; 02390 ako2 = ein_regY - ein_regC; 02391 ako3 = ein_regC - ein_regM; 02392 #if LH_LUT_DATA_SIZE_16 02393 #if LH_DATA_OUT_SIZE_16 02394 02395 aVal = ( ako0 * paNewVal0[0] + 02396 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02397 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02398 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02399 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 02400 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02401 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02402 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02403 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 02404 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02405 02406 aVal = ( ako0 * paNewVal0[1] + 02407 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02408 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02409 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02410 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 02411 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02412 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02413 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02414 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 02415 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02416 02417 aVal = ( ako0 * paNewVal0[2] + 02418 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02419 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02420 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02421 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 02422 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02423 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02424 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02425 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 02426 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02427 02428 #if LH_DATA_OUT_COUNT_4 02429 aVal = ( ako0 * paNewVal0[3] + 02430 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02431 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02432 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02433 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 02434 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02435 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02436 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02437 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 02438 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02439 #endif 02440 02441 #else 02442 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 02443 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02444 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02445 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02446 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 02447 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 02448 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02449 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02450 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02451 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 02452 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 02453 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02454 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02455 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02456 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 02457 #if LH_DATA_OUT_COUNT_4 02458 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 02459 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02460 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02461 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02462 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 02463 #endif 02464 #endif 02465 02466 #else 02467 __asm { 02468 mov eax, paNewVal0 02469 02470 mov ebx, ako0 02471 movq mm5, MMXTab [ebx*8] 02472 #ifdef Test_mode 02473 movq TestRam,mm5 02474 #endif 02475 punpcklbw mm1,[eax] 02476 mov ebx, ako1 02477 psrlw mm1,8 02478 #ifdef Test_mode 02479 movq TestRam,mm1 02480 #endif 02481 02482 pmullw mm5,mm1 02483 movq mm6, MMXTab [ebx*8] 02484 #ifdef Test_mode 02485 movq TestRam,mm6 02486 #endif 02487 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 02488 mov ebx, ako2 02489 psrlw mm2,8 02490 #ifdef Test_mode 02491 movq TestRam,mm2 02492 #endif 02493 pmullw mm6,mm2 02494 02495 movq mm7, MMXTab [ebx*8] 02496 paddusw mm5,mm6 02497 #ifdef Test_mode 02498 movq TestRam,mm7 02499 #endif 02500 punpcklbw mm1,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 02501 mov ebx, ako3 02502 psrlw mm1,8 02503 #ifdef Test_mode 02504 movq TestRam,mm1 02505 #endif 02506 pmullw mm7,mm1 02507 02508 movq mm6, MMXTab [ebx*8] 02509 paddusw mm5,mm7 02510 #ifdef Test_mode 02511 movq TestRam,mm6 02512 #endif 02513 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 02514 mov ebx, ein_regM 02515 psrlw mm2,8 02516 #ifdef Test_mode 02517 movq TestRam,mm2 02518 #endif 02519 pmullw mm6,mm2 02520 02521 movq mm7, MMXTab [ebx*8] 02522 paddusw mm5,mm6 02523 #ifdef Test_mode 02524 movq TestRam,mm7 02525 #endif 02526 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 02527 mov ebx, ako2 02528 psrlw mm1,8 02529 #ifdef Test_mode 02530 movq TestRam,mm1 02531 #endif 02532 pmullw mm7,mm1 02533 paddusw mm5,mm7 02534 #ifdef Test_mode 02535 movq TestRam,mm5 02536 #endif 02537 02538 02539 xor eax,eax 02540 psrlw mm5,LH_DATA_SHR 02541 movq ak,mm5 02542 02543 mov ax,ak 02544 mov esi,My_OutputLut 02545 mov al,BYTE PTR[eax+esi] 02546 mov edi,output0 02547 mov [edi], al 02548 mov ax,ak+2 02549 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 02550 mov edi,output1 02551 mov [edi], al 02552 mov ax,ak+4 02553 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 02554 mov edi,output2 02555 mov [edi], al 02556 #if LH_DATA_OUT_COUNT_4 02557 mov ax,ak+6 02558 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 02559 mov edi,output3 02560 mov [edi], al 02561 #endif 02562 02563 02564 } 02565 #endif 02566 } 02567 } 02568 } 02569 else 02570 { 02571 if( ein_regM >= ein_regC ) 02572 { 02573 if( ein_regY >= ein_regK ) /* MCYK !*/ 02574 { 02575 ako0 = LH_ADR_BEREICH_SEL - ein_regM; 02576 ako1 = ein_regM - ein_regC; 02577 ako2 = ein_regC - ein_regY; 02578 ako3 = ein_regY - ein_regK; 02579 #if LH_LUT_DATA_SIZE_16 02580 #if LH_DATA_OUT_SIZE_16 02581 02582 aVal = ( ako0 * paNewVal0[0] + 02583 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02584 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02585 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02586 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 02587 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02588 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02589 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02590 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 02591 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02592 02593 aVal = ( ako0 * paNewVal0[1] + 02594 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02595 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02596 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02597 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 02598 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02599 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02600 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02601 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 02602 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02603 02604 aVal = ( ako0 * paNewVal0[2] + 02605 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02606 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02607 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02608 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 02609 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02610 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02611 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02612 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 02613 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02614 02615 #if LH_DATA_OUT_COUNT_4 02616 aVal = ( ako0 * paNewVal0[3] + 02617 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02618 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02619 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02620 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 02621 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02622 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02623 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02624 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 02625 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02626 #endif 02627 02628 #else 02629 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 02630 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02631 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02632 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02633 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 02634 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 02635 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02636 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02637 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02638 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 02639 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 02640 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02641 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02642 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02643 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 02644 #if LH_DATA_OUT_COUNT_4 02645 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 02646 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02647 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02648 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02649 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 02650 #endif 02651 #endif 02652 02653 #else 02654 __asm { 02655 mov eax, paNewVal0 02656 02657 mov ebx, ako0 02658 movq mm5, MMXTab [ebx*8] 02659 #ifdef Test_mode 02660 movq TestRam,mm5 02661 #endif 02662 punpcklbw mm1,[eax] 02663 mov ebx, ako1 02664 psrlw mm1,8 02665 #ifdef Test_mode 02666 movq TestRam,mm1 02667 #endif 02668 02669 pmullw mm5,mm1 02670 movq mm6, MMXTab [ebx*8] 02671 #ifdef Test_mode 02672 movq TestRam,mm6 02673 #endif 02674 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 02675 mov ebx, ako2 02676 psrlw mm2,8 02677 #ifdef Test_mode 02678 movq TestRam,mm2 02679 #endif 02680 pmullw mm6,mm2 02681 02682 movq mm7, MMXTab [ebx*8] 02683 paddusw mm5,mm6 02684 #ifdef Test_mode 02685 movq TestRam,mm7 02686 #endif 02687 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 02688 mov ebx, ako3 02689 psrlw mm1,8 02690 #ifdef Test_mode 02691 movq TestRam,mm1 02692 #endif 02693 pmullw mm7,mm1 02694 02695 movq mm6, MMXTab [ebx*8] 02696 paddusw mm5,mm7 02697 #ifdef Test_mode 02698 movq TestRam,mm6 02699 #endif 02700 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 02701 mov ebx, ein_regK 02702 psrlw mm2,8 02703 #ifdef Test_mode 02704 movq TestRam,mm2 02705 #endif 02706 pmullw mm6,mm2 02707 02708 movq mm7, MMXTab [ebx*8] 02709 paddusw mm5,mm6 02710 #ifdef Test_mode 02711 movq TestRam,mm7 02712 #endif 02713 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 02714 mov ebx, ako2 02715 psrlw mm1,8 02716 #ifdef Test_mode 02717 movq TestRam,mm1 02718 #endif 02719 pmullw mm7,mm1 02720 paddusw mm5,mm7 02721 #ifdef Test_mode 02722 movq TestRam,mm5 02723 #endif 02724 02725 02726 xor eax,eax 02727 psrlw mm5,LH_DATA_SHR 02728 movq ak,mm5 02729 02730 mov ax,ak 02731 mov esi,My_OutputLut 02732 mov al,BYTE PTR[eax+esi] 02733 mov edi,output0 02734 mov [edi], al 02735 mov ax,ak+2 02736 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 02737 mov edi,output1 02738 mov [edi], al 02739 mov ax,ak+4 02740 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 02741 mov edi,output2 02742 mov [edi], al 02743 #if LH_DATA_OUT_COUNT_4 02744 mov ax,ak+6 02745 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 02746 mov edi,output3 02747 mov [edi], al 02748 #endif 02749 02750 02751 } 02752 #endif 02753 } 02754 else if(ein_regC >= ein_regK ) /* MCKY !*/ 02755 { 02756 ako0 = LH_ADR_BEREICH_SEL - ein_regM; 02757 ako1 = ein_regM - ein_regC; 02758 ako2 = ein_regC - ein_regK; 02759 ako3 = ein_regK - ein_regY; 02760 #if LH_LUT_DATA_SIZE_16 02761 #if LH_DATA_OUT_SIZE_16 02762 02763 aVal = ( ako0 * paNewVal0[0] + 02764 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02765 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02766 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02767 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 02768 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02769 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02770 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02771 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 02772 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02773 02774 aVal = ( ako0 * paNewVal0[1] + 02775 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02776 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02777 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02778 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 02779 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02780 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02781 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02782 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 02783 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02784 02785 aVal = ( ako0 * paNewVal0[2] + 02786 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02787 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02788 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02789 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 02790 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02791 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02792 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02793 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 02794 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02795 02796 #if LH_DATA_OUT_COUNT_4 02797 aVal = ( ako0 * paNewVal0[3] + 02798 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02799 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02800 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02801 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 02802 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02803 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02804 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02805 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 02806 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02807 #endif 02808 02809 #else 02810 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 02811 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02812 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02813 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02814 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 02815 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 02816 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02817 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02818 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02819 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 02820 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 02821 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02822 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02823 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02824 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 02825 #if LH_DATA_OUT_COUNT_4 02826 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 02827 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02828 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02829 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02830 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 02831 #endif 02832 #endif 02833 02834 #else 02835 __asm { 02836 mov eax, paNewVal0 02837 02838 mov ebx, ako0 02839 movq mm5, MMXTab [ebx*8] 02840 #ifdef Test_mode 02841 movq TestRam,mm5 02842 #endif 02843 punpcklbw mm1,[eax] 02844 mov ebx, ako1 02845 psrlw mm1,8 02846 #ifdef Test_mode 02847 movq TestRam,mm1 02848 #endif 02849 02850 pmullw mm5,mm1 02851 movq mm6, MMXTab [ebx*8] 02852 #ifdef Test_mode 02853 movq TestRam,mm6 02854 #endif 02855 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 02856 mov ebx, ako2 02857 psrlw mm2,8 02858 #ifdef Test_mode 02859 movq TestRam,mm2 02860 #endif 02861 pmullw mm6,mm2 02862 02863 movq mm7, MMXTab [ebx*8] 02864 paddusw mm5,mm6 02865 #ifdef Test_mode 02866 movq TestRam,mm7 02867 #endif 02868 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 02869 mov ebx, ako3 02870 psrlw mm1,8 02871 #ifdef Test_mode 02872 movq TestRam,mm1 02873 #endif 02874 pmullw mm7,mm1 02875 02876 movq mm6, MMXTab [ebx*8] 02877 paddusw mm5,mm7 02878 #ifdef Test_mode 02879 movq TestRam,mm6 02880 #endif 02881 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 02882 mov ebx, ein_regY 02883 psrlw mm2,8 02884 #ifdef Test_mode 02885 movq TestRam,mm2 02886 #endif 02887 pmullw mm6,mm2 02888 02889 movq mm7, MMXTab [ebx*8] 02890 paddusw mm5,mm6 02891 #ifdef Test_mode 02892 movq TestRam,mm7 02893 #endif 02894 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 02895 mov ebx, ako2 02896 psrlw mm1,8 02897 #ifdef Test_mode 02898 movq TestRam,mm1 02899 #endif 02900 pmullw mm7,mm1 02901 paddusw mm5,mm7 02902 #ifdef Test_mode 02903 movq TestRam,mm5 02904 #endif 02905 02906 02907 xor eax,eax 02908 psrlw mm5,LH_DATA_SHR 02909 movq ak,mm5 02910 02911 mov ax,ak 02912 mov esi,My_OutputLut 02913 mov al,BYTE PTR[eax+esi] 02914 mov edi,output0 02915 mov [edi], al 02916 mov ax,ak+2 02917 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 02918 mov edi,output1 02919 mov [edi], al 02920 mov ax,ak+4 02921 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 02922 mov edi,output2 02923 mov [edi], al 02924 #if LH_DATA_OUT_COUNT_4 02925 mov ax,ak+6 02926 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 02927 mov edi,output3 02928 mov [edi], al 02929 #endif 02930 02931 02932 } 02933 #endif 02934 } 02935 else if(ein_regM >= ein_regK ) /* MKCY !*/ 02936 { 02937 ako0 = LH_ADR_BEREICH_SEL - ein_regM; 02938 ako1 = ein_regM - ein_regK; 02939 ako2 = ein_regK - ein_regC; 02940 ako3 = ein_regC - ein_regY; 02941 #if LH_LUT_DATA_SIZE_16 02942 #if LH_DATA_OUT_SIZE_16 02943 02944 aVal = ( ako0 * paNewVal0[0] + 02945 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02946 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02947 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02948 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 02949 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02950 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02951 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02952 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 02953 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02954 02955 aVal = ( ako0 * paNewVal0[1] + 02956 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02957 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02958 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02959 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 02960 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02961 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02962 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02963 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 02964 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02965 02966 aVal = ( ako0 * paNewVal0[2] + 02967 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 02968 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02969 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 02970 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 02971 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02972 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02973 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02974 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 02975 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02976 02977 #if LH_DATA_OUT_COUNT_4 02978 aVal = ( ako0 * paNewVal0[3] + 02979 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 02980 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02981 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 02982 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 02983 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 02984 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 02985 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 02986 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 02987 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 02988 #endif 02989 02990 #else 02991 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 02992 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 02993 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02994 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 02995 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 02996 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 02997 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 02998 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 02999 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03000 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 03001 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 03002 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 03003 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03004 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03005 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 03006 #if LH_DATA_OUT_COUNT_4 03007 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 03008 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 03009 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03010 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03011 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 03012 #endif 03013 #endif 03014 03015 #else 03016 __asm { 03017 mov eax, paNewVal0 03018 03019 mov ebx, ako0 03020 movq mm5, MMXTab [ebx*8] 03021 #ifdef Test_mode 03022 movq TestRam,mm5 03023 #endif 03024 punpcklbw mm1,[eax] 03025 mov ebx, ako1 03026 psrlw mm1,8 03027 #ifdef Test_mode 03028 movq TestRam,mm1 03029 #endif 03030 03031 pmullw mm5,mm1 03032 movq mm6, MMXTab [ebx*8] 03033 #ifdef Test_mode 03034 movq TestRam,mm6 03035 #endif 03036 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 03037 mov ebx, ako2 03038 psrlw mm2,8 03039 #ifdef Test_mode 03040 movq TestRam,mm2 03041 #endif 03042 pmullw mm6,mm2 03043 03044 movq mm7, MMXTab [ebx*8] 03045 paddusw mm5,mm6 03046 #ifdef Test_mode 03047 movq TestRam,mm7 03048 #endif 03049 punpcklbw mm1,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03050 mov ebx, ako3 03051 psrlw mm1,8 03052 #ifdef Test_mode 03053 movq TestRam,mm1 03054 #endif 03055 pmullw mm7,mm1 03056 03057 movq mm6, MMXTab [ebx*8] 03058 paddusw mm5,mm7 03059 #ifdef Test_mode 03060 movq TestRam,mm6 03061 #endif 03062 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03063 mov ebx, ein_regY 03064 psrlw mm2,8 03065 #ifdef Test_mode 03066 movq TestRam,mm2 03067 #endif 03068 pmullw mm6,mm2 03069 03070 movq mm7, MMXTab [ebx*8] 03071 paddusw mm5,mm6 03072 #ifdef Test_mode 03073 movq TestRam,mm7 03074 #endif 03075 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03076 mov ebx, ako2 03077 psrlw mm1,8 03078 #ifdef Test_mode 03079 movq TestRam,mm1 03080 #endif 03081 pmullw mm7,mm1 03082 paddusw mm5,mm7 03083 #ifdef Test_mode 03084 movq TestRam,mm5 03085 #endif 03086 03087 03088 xor eax,eax 03089 psrlw mm5,LH_DATA_SHR 03090 movq ak,mm5 03091 03092 mov ax,ak 03093 mov esi,My_OutputLut 03094 mov al,BYTE PTR[eax+esi] 03095 mov edi,output0 03096 mov [edi], al 03097 mov ax,ak+2 03098 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 03099 mov edi,output1 03100 mov [edi], al 03101 mov ax,ak+4 03102 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 03103 mov edi,output2 03104 mov [edi], al 03105 #if LH_DATA_OUT_COUNT_4 03106 mov ax,ak+6 03107 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 03108 mov edi,output3 03109 mov [edi], al 03110 #endif 03111 03112 03113 } 03114 #endif 03115 } 03116 else 03117 { /* KMCY !*/ 03118 ako0 = LH_ADR_BEREICH_SEL - ein_regK; 03119 ako1 = ein_regK - ein_regM; 03120 ako2 = ein_regM - ein_regC; 03121 ako3 = ein_regC - ein_regY; 03122 #if LH_LUT_DATA_SIZE_16 03123 #if LH_DATA_OUT_SIZE_16 03124 03125 aVal = ( ako0 * paNewVal0[0] + 03126 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03127 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03128 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03129 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 03130 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03131 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03132 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03133 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 03134 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03135 03136 aVal = ( ako0 * paNewVal0[1] + 03137 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03138 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03139 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03140 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 03141 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03142 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03143 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03144 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 03145 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03146 03147 aVal = ( ako0 * paNewVal0[2] + 03148 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03149 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03150 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03151 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 03152 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03153 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03154 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03155 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 03156 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03157 03158 #if LH_DATA_OUT_COUNT_4 03159 aVal = ( ako0 * paNewVal0[3] + 03160 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03161 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03162 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03163 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 03164 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03165 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03166 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03167 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 03168 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03169 #endif 03170 03171 #else 03172 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 03173 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03174 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03175 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03176 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 03177 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 03178 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03179 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03180 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03181 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 03182 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 03183 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03184 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03185 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03186 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 03187 #if LH_DATA_OUT_COUNT_4 03188 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 03189 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03190 ako2 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03191 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03192 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 03193 #endif 03194 #endif 03195 03196 #else 03197 __asm { 03198 mov eax, paNewVal0 03199 03200 mov ebx, ako0 03201 movq mm5, MMXTab [ebx*8] 03202 #ifdef Test_mode 03203 movq TestRam,mm5 03204 #endif 03205 punpcklbw mm1,[eax] 03206 mov ebx, ako1 03207 psrlw mm1,8 03208 #ifdef Test_mode 03209 movq TestRam,mm1 03210 #endif 03211 03212 pmullw mm5,mm1 03213 movq mm6, MMXTab [ebx*8] 03214 #ifdef Test_mode 03215 movq TestRam,mm6 03216 #endif 03217 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03218 mov ebx, ako2 03219 psrlw mm2,8 03220 #ifdef Test_mode 03221 movq TestRam,mm2 03222 #endif 03223 pmullw mm6,mm2 03224 03225 movq mm7, MMXTab [ebx*8] 03226 paddusw mm5,mm6 03227 #ifdef Test_mode 03228 movq TestRam,mm7 03229 #endif 03230 punpcklbw mm1,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03231 mov ebx, ako3 03232 psrlw mm1,8 03233 #ifdef Test_mode 03234 movq TestRam,mm1 03235 #endif 03236 pmullw mm7,mm1 03237 03238 movq mm6, MMXTab [ebx*8] 03239 paddusw mm5,mm7 03240 #ifdef Test_mode 03241 movq TestRam,mm6 03242 #endif 03243 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03244 mov ebx, ein_regY 03245 psrlw mm2,8 03246 #ifdef Test_mode 03247 movq TestRam,mm2 03248 #endif 03249 pmullw mm6,mm2 03250 03251 movq mm7, MMXTab [ebx*8] 03252 paddusw mm5,mm6 03253 #ifdef Test_mode 03254 movq TestRam,mm7 03255 #endif 03256 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03257 mov ebx, ako2 03258 psrlw mm1,8 03259 #ifdef Test_mode 03260 movq TestRam,mm1 03261 #endif 03262 pmullw mm7,mm1 03263 paddusw mm5,mm7 03264 #ifdef Test_mode 03265 movq TestRam,mm5 03266 #endif 03267 03268 03269 xor eax,eax 03270 psrlw mm5,LH_DATA_SHR 03271 movq ak,mm5 03272 03273 mov ax,ak 03274 mov esi,My_OutputLut 03275 mov al,BYTE PTR[eax+esi] 03276 mov edi,output0 03277 mov [edi], al 03278 mov ax,ak+2 03279 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 03280 mov edi,output1 03281 mov [edi], al 03282 mov ax,ak+4 03283 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 03284 mov edi,output2 03285 mov [edi], al 03286 #if LH_DATA_OUT_COUNT_4 03287 mov ax,ak+6 03288 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 03289 mov edi,output3 03290 mov [edi], al 03291 #endif 03292 03293 03294 } 03295 #endif 03296 } 03297 } 03298 else 03299 { 03300 if( ein_regY >= ein_regM ) 03301 { 03302 if( ein_regM >= ein_regK ) /* CYMK !*/ 03303 { 03304 ako0 = LH_ADR_BEREICH_SEL - ein_regC; 03305 ako1 = ein_regC - ein_regY; 03306 ako2 = ein_regY - ein_regM; 03307 ako3 = ein_regM - ein_regK; 03308 #if LH_LUT_DATA_SIZE_16 03309 #if LH_DATA_OUT_SIZE_16 03310 03311 aVal = ( ako0 * paNewVal0[0] + 03312 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 03313 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 03314 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 03315 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 03316 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03317 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03318 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03319 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 03320 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03321 03322 aVal = ( ako0 * paNewVal0[1] + 03323 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 03324 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 03325 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 03326 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 03327 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03328 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03329 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03330 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 03331 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03332 03333 aVal = ( ako0 * paNewVal0[2] + 03334 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 03335 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 03336 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 03337 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 03338 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03339 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03340 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03341 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 03342 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03343 03344 #if LH_DATA_OUT_COUNT_4 03345 aVal = ( ako0 * paNewVal0[3] + 03346 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 03347 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 03348 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 03349 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 03350 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03351 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03352 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03353 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 03354 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03355 #endif 03356 03357 #else 03358 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 03359 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 03360 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 03361 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 03362 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 03363 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 03364 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 03365 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 03366 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 03367 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 03368 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 03369 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 03370 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 03371 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 03372 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 03373 #if LH_DATA_OUT_COUNT_4 03374 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 03375 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 03376 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 03377 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 03378 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 03379 #endif 03380 #endif 03381 03382 #else 03383 __asm { 03384 mov eax, paNewVal0 03385 03386 mov ebx, ako0 03387 movq mm5, MMXTab [ebx*8] 03388 #ifdef Test_mode 03389 movq TestRam,mm5 03390 #endif 03391 punpcklbw mm1,[eax] 03392 mov ebx, ako1 03393 psrlw mm1,8 03394 #ifdef Test_mode 03395 movq TestRam,mm1 03396 #endif 03397 03398 pmullw mm5,mm1 03399 movq mm6, MMXTab [ebx*8] 03400 #ifdef Test_mode 03401 movq TestRam,mm6 03402 #endif 03403 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 03404 mov ebx, ako2 03405 psrlw mm2,8 03406 #ifdef Test_mode 03407 movq TestRam,mm2 03408 #endif 03409 pmullw mm6,mm2 03410 03411 movq mm7, MMXTab [ebx*8] 03412 paddusw mm5,mm6 03413 #ifdef Test_mode 03414 movq TestRam,mm7 03415 #endif 03416 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 03417 mov ebx, ako3 03418 psrlw mm1,8 03419 #ifdef Test_mode 03420 movq TestRam,mm1 03421 #endif 03422 pmullw mm7,mm1 03423 03424 movq mm6, MMXTab [ebx*8] 03425 paddusw mm5,mm7 03426 #ifdef Test_mode 03427 movq TestRam,mm6 03428 #endif 03429 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 03430 mov ebx, ein_regK 03431 psrlw mm2,8 03432 #ifdef Test_mode 03433 movq TestRam,mm2 03434 #endif 03435 pmullw mm6,mm2 03436 03437 movq mm7, MMXTab [ebx*8] 03438 paddusw mm5,mm6 03439 #ifdef Test_mode 03440 movq TestRam,mm7 03441 #endif 03442 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03443 mov ebx, ako2 03444 psrlw mm1,8 03445 #ifdef Test_mode 03446 movq TestRam,mm1 03447 #endif 03448 pmullw mm7,mm1 03449 paddusw mm5,mm7 03450 #ifdef Test_mode 03451 movq TestRam,mm5 03452 #endif 03453 03454 03455 xor eax,eax 03456 psrlw mm5,LH_DATA_SHR 03457 movq ak,mm5 03458 03459 mov ax,ak 03460 mov esi,My_OutputLut 03461 mov al,BYTE PTR[eax+esi] 03462 mov edi,output0 03463 mov [edi], al 03464 mov ax,ak+2 03465 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 03466 mov edi,output1 03467 mov [edi], al 03468 mov ax,ak+4 03469 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 03470 mov edi,output2 03471 mov [edi], al 03472 #if LH_DATA_OUT_COUNT_4 03473 mov ax,ak+6 03474 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 03475 mov edi,output3 03476 mov [edi], al 03477 #endif 03478 03479 03480 } 03481 #endif 03482 } 03483 else if(ein_regY >= ein_regK ) /* CYKM !*/ 03484 { 03485 ako0 = LH_ADR_BEREICH_SEL - ein_regC; 03486 ako1 = ein_regC - ein_regY; 03487 ako2 = ein_regY - ein_regK; 03488 ako3 = ein_regK - ein_regM; 03489 #if LH_LUT_DATA_SIZE_16 03490 #if LH_DATA_OUT_SIZE_16 03491 03492 aVal = ( ako0 * paNewVal0[0] + 03493 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 03494 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 03495 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03496 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 03497 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03498 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03499 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03500 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 03501 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03502 03503 aVal = ( ako0 * paNewVal0[1] + 03504 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 03505 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 03506 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03507 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 03508 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03509 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03510 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03511 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 03512 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03513 03514 aVal = ( ako0 * paNewVal0[2] + 03515 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 03516 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 03517 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03518 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 03519 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03520 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03521 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03522 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 03523 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03524 03525 #if LH_DATA_OUT_COUNT_4 03526 aVal = ( ako0 * paNewVal0[3] + 03527 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 03528 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 03529 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03530 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 03531 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03532 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03533 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03534 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 03535 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03536 #endif 03537 03538 #else 03539 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 03540 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 03541 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 03542 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03543 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 03544 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 03545 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 03546 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 03547 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03548 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 03549 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 03550 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 03551 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 03552 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03553 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 03554 #if LH_DATA_OUT_COUNT_4 03555 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 03556 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 03557 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 03558 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03559 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 03560 #endif 03561 #endif 03562 03563 #else 03564 __asm { 03565 mov eax, paNewVal0 03566 03567 mov ebx, ako0 03568 movq mm5, MMXTab [ebx*8] 03569 #ifdef Test_mode 03570 movq TestRam,mm5 03571 #endif 03572 punpcklbw mm1,[eax] 03573 mov ebx, ako1 03574 psrlw mm1,8 03575 #ifdef Test_mode 03576 movq TestRam,mm1 03577 #endif 03578 03579 pmullw mm5,mm1 03580 movq mm6, MMXTab [ebx*8] 03581 #ifdef Test_mode 03582 movq TestRam,mm6 03583 #endif 03584 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 03585 mov ebx, ako2 03586 psrlw mm2,8 03587 #ifdef Test_mode 03588 movq TestRam,mm2 03589 #endif 03590 pmullw mm6,mm2 03591 03592 movq mm7, MMXTab [ebx*8] 03593 paddusw mm5,mm6 03594 #ifdef Test_mode 03595 movq TestRam,mm7 03596 #endif 03597 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 03598 mov ebx, ako3 03599 psrlw mm1,8 03600 #ifdef Test_mode 03601 movq TestRam,mm1 03602 #endif 03603 pmullw mm7,mm1 03604 03605 movq mm6, MMXTab [ebx*8] 03606 paddusw mm5,mm7 03607 #ifdef Test_mode 03608 movq TestRam,mm6 03609 #endif 03610 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03611 mov ebx, ein_regM 03612 psrlw mm2,8 03613 #ifdef Test_mode 03614 movq TestRam,mm2 03615 #endif 03616 pmullw mm6,mm2 03617 03618 movq mm7, MMXTab [ebx*8] 03619 paddusw mm5,mm6 03620 #ifdef Test_mode 03621 movq TestRam,mm7 03622 #endif 03623 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03624 mov ebx, ako2 03625 psrlw mm1,8 03626 #ifdef Test_mode 03627 movq TestRam,mm1 03628 #endif 03629 pmullw mm7,mm1 03630 paddusw mm5,mm7 03631 #ifdef Test_mode 03632 movq TestRam,mm5 03633 #endif 03634 03635 03636 xor eax,eax 03637 psrlw mm5,LH_DATA_SHR 03638 movq ak,mm5 03639 03640 mov ax,ak 03641 mov esi,My_OutputLut 03642 mov al,BYTE PTR[eax+esi] 03643 mov edi,output0 03644 mov [edi], al 03645 mov ax,ak+2 03646 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 03647 mov edi,output1 03648 mov [edi], al 03649 mov ax,ak+4 03650 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 03651 mov edi,output2 03652 mov [edi], al 03653 #if LH_DATA_OUT_COUNT_4 03654 mov ax,ak+6 03655 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 03656 mov edi,output3 03657 mov [edi], al 03658 #endif 03659 03660 03661 } 03662 #endif 03663 } 03664 else if(ein_regC >= ein_regK ) /* CKYM */ 03665 { 03666 ako0 = LH_ADR_BEREICH_SEL - ein_regC; 03667 ako1 = ein_regC - ein_regK; 03668 ako2 = ein_regK - ein_regY; 03669 ako3 = ein_regY - ein_regM; 03670 #if LH_LUT_DATA_SIZE_16 03671 #if LH_DATA_OUT_SIZE_16 03672 03673 aVal = ( ako0 * paNewVal0[0] + 03674 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 03675 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03676 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03677 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 03678 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03679 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03680 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03681 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 03682 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03683 03684 aVal = ( ako0 * paNewVal0[1] + 03685 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 03686 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03687 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03688 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 03689 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03690 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03691 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03692 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 03693 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03694 03695 aVal = ( ako0 * paNewVal0[2] + 03696 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 03697 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03698 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03699 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 03700 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03701 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03702 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03703 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 03704 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03705 03706 #if LH_DATA_OUT_COUNT_4 03707 aVal = ( ako0 * paNewVal0[3] + 03708 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 03709 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03710 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03711 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 03712 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03713 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03714 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03715 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 03716 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03717 #endif 03718 03719 #else 03720 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 03721 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 03722 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03723 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03724 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 03725 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 03726 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 03727 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03728 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03729 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 03730 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 03731 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 03732 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03733 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03734 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 03735 #if LH_DATA_OUT_COUNT_4 03736 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 03737 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 03738 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03739 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03740 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 03741 #endif 03742 #endif 03743 03744 #else 03745 __asm { 03746 mov eax, paNewVal0 03747 03748 mov ebx, ako0 03749 movq mm5, MMXTab [ebx*8] 03750 #ifdef Test_mode 03751 movq TestRam,mm5 03752 #endif 03753 punpcklbw mm1,[eax] 03754 mov ebx, ako1 03755 psrlw mm1,8 03756 #ifdef Test_mode 03757 movq TestRam,mm1 03758 #endif 03759 03760 pmullw mm5,mm1 03761 movq mm6, MMXTab [ebx*8] 03762 #ifdef Test_mode 03763 movq TestRam,mm6 03764 #endif 03765 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 03766 mov ebx, ako2 03767 psrlw mm2,8 03768 #ifdef Test_mode 03769 movq TestRam,mm2 03770 #endif 03771 pmullw mm6,mm2 03772 03773 movq mm7, MMXTab [ebx*8] 03774 paddusw mm5,mm6 03775 #ifdef Test_mode 03776 movq TestRam,mm7 03777 #endif 03778 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03779 mov ebx, ako3 03780 psrlw mm1,8 03781 #ifdef Test_mode 03782 movq TestRam,mm1 03783 #endif 03784 pmullw mm7,mm1 03785 03786 movq mm6, MMXTab [ebx*8] 03787 paddusw mm5,mm7 03788 #ifdef Test_mode 03789 movq TestRam,mm6 03790 #endif 03791 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03792 mov ebx, ein_regM 03793 psrlw mm2,8 03794 #ifdef Test_mode 03795 movq TestRam,mm2 03796 #endif 03797 pmullw mm6,mm2 03798 03799 movq mm7, MMXTab [ebx*8] 03800 paddusw mm5,mm6 03801 #ifdef Test_mode 03802 movq TestRam,mm7 03803 #endif 03804 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03805 mov ebx, ako2 03806 psrlw mm1,8 03807 #ifdef Test_mode 03808 movq TestRam,mm1 03809 #endif 03810 pmullw mm7,mm1 03811 paddusw mm5,mm7 03812 #ifdef Test_mode 03813 movq TestRam,mm5 03814 #endif 03815 03816 03817 xor eax,eax 03818 psrlw mm5,LH_DATA_SHR 03819 movq ak,mm5 03820 03821 mov ax,ak 03822 mov esi,My_OutputLut 03823 mov al,BYTE PTR[eax+esi] 03824 mov edi,output0 03825 mov [edi], al 03826 mov ax,ak+2 03827 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 03828 mov edi,output1 03829 mov [edi], al 03830 mov ax,ak+4 03831 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 03832 mov edi,output2 03833 mov [edi], al 03834 #if LH_DATA_OUT_COUNT_4 03835 mov ax,ak+6 03836 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 03837 mov edi,output3 03838 mov [edi], al 03839 #endif 03840 03841 03842 } 03843 #endif 03844 } 03845 else 03846 { /* KCYM !*/ 03847 ako0 = LH_ADR_BEREICH_SEL - ein_regK; 03848 ako1 = ein_regK - ein_regC; 03849 ako2 = ein_regC - ein_regY; 03850 ako3 = ein_regY - ein_regM; 03851 #if LH_LUT_DATA_SIZE_16 03852 #if LH_DATA_OUT_SIZE_16 03853 03854 aVal = ( ako0 * paNewVal0[0] + 03855 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03856 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03857 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03858 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 03859 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03860 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03861 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03862 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 03863 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03864 03865 aVal = ( ako0 * paNewVal0[1] + 03866 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03867 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03868 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03869 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 03870 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03871 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03872 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03873 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 03874 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03875 03876 aVal = ( ako0 * paNewVal0[2] + 03877 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03878 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03879 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03880 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 03881 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03882 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03883 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03884 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 03885 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03886 03887 #if LH_DATA_OUT_COUNT_4 03888 aVal = ( ako0 * paNewVal0[3] + 03889 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03890 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03891 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03892 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 03893 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 03894 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 03895 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 03896 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 03897 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 03898 #endif 03899 03900 #else 03901 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 03902 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03903 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03904 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 03905 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 03906 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 03907 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03908 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03909 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 03910 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 03911 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 03912 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03913 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03914 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 03915 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 03916 #if LH_DATA_OUT_COUNT_4 03917 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 03918 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03919 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03920 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 03921 ein_regM * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 03922 #endif 03923 #endif 03924 03925 #else 03926 __asm { 03927 mov eax, paNewVal0 03928 03929 mov ebx, ako0 03930 movq mm5, MMXTab [ebx*8] 03931 #ifdef Test_mode 03932 movq TestRam,mm5 03933 #endif 03934 punpcklbw mm1,[eax] 03935 mov ebx, ako1 03936 psrlw mm1,8 03937 #ifdef Test_mode 03938 movq TestRam,mm1 03939 #endif 03940 03941 pmullw mm5,mm1 03942 movq mm6, MMXTab [ebx*8] 03943 #ifdef Test_mode 03944 movq TestRam,mm6 03945 #endif 03946 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03947 mov ebx, ako2 03948 psrlw mm2,8 03949 #ifdef Test_mode 03950 movq TestRam,mm2 03951 #endif 03952 pmullw mm6,mm2 03953 03954 movq mm7, MMXTab [ebx*8] 03955 paddusw mm5,mm6 03956 #ifdef Test_mode 03957 movq TestRam,mm7 03958 #endif 03959 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03960 mov ebx, ako3 03961 psrlw mm1,8 03962 #ifdef Test_mode 03963 movq TestRam,mm1 03964 #endif 03965 pmullw mm7,mm1 03966 03967 movq mm6, MMXTab [ebx*8] 03968 paddusw mm5,mm7 03969 #ifdef Test_mode 03970 movq TestRam,mm6 03971 #endif 03972 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03973 mov ebx, ein_regM 03974 psrlw mm2,8 03975 #ifdef Test_mode 03976 movq TestRam,mm2 03977 #endif 03978 pmullw mm6,mm2 03979 03980 movq mm7, MMXTab [ebx*8] 03981 paddusw mm5,mm6 03982 #ifdef Test_mode 03983 movq TestRam,mm7 03984 #endif 03985 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 03986 mov ebx, ako2 03987 psrlw mm1,8 03988 #ifdef Test_mode 03989 movq TestRam,mm1 03990 #endif 03991 pmullw mm7,mm1 03992 paddusw mm5,mm7 03993 #ifdef Test_mode 03994 movq TestRam,mm5 03995 #endif 03996 03997 03998 xor eax,eax 03999 psrlw mm5,LH_DATA_SHR 04000 movq ak,mm5 04001 04002 mov ax,ak 04003 mov esi,My_OutputLut 04004 mov al,BYTE PTR[eax+esi] 04005 mov edi,output0 04006 mov [edi], al 04007 mov ax,ak+2 04008 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 04009 mov edi,output1 04010 mov [edi], al 04011 mov ax,ak+4 04012 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 04013 mov edi,output2 04014 mov [edi], al 04015 #if LH_DATA_OUT_COUNT_4 04016 mov ax,ak+6 04017 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 04018 mov edi,output3 04019 mov [edi], al 04020 #endif 04021 04022 04023 } 04024 #endif 04025 } 04026 } 04027 else if( ein_regY >= ein_regK ) /* CMYK !*/ 04028 { 04029 ako0 = LH_ADR_BEREICH_SEL - ein_regC; 04030 ako1 = ein_regC - ein_regM; 04031 ako2 = ein_regM - ein_regY; 04032 ako3 = ein_regY - ein_regK; 04033 #if LH_LUT_DATA_SIZE_16 04034 #if LH_DATA_OUT_SIZE_16 04035 04036 aVal = ( ako0 * paNewVal0[0] + 04037 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 04038 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 04039 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 04040 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 04041 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04042 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04043 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04044 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 04045 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04046 04047 aVal = ( ako0 * paNewVal0[1] + 04048 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 04049 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 04050 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 04051 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 04052 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04053 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04054 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04055 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 04056 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04057 04058 aVal = ( ako0 * paNewVal0[2] + 04059 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 04060 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 04061 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 04062 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 04063 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04064 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04065 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04066 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 04067 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04068 04069 #if LH_DATA_OUT_COUNT_4 04070 aVal = ( ako0 * paNewVal0[3] + 04071 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 04072 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 04073 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 04074 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 04075 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04076 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04077 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04078 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 04079 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04080 #endif 04081 04082 #else 04083 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 04084 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 04085 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 04086 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 04087 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 04088 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 04089 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 04090 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 04091 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 04092 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 04093 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 04094 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 04095 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 04096 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 04097 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 04098 #if LH_DATA_OUT_COUNT_4 04099 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 04100 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 04101 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 04102 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 04103 ein_regK * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 04104 #endif 04105 #endif 04106 04107 #else 04108 __asm { 04109 mov eax, paNewVal0 04110 04111 mov ebx, ako0 04112 movq mm5, MMXTab [ebx*8] 04113 #ifdef Test_mode 04114 movq TestRam,mm5 04115 #endif 04116 punpcklbw mm1,[eax] 04117 mov ebx, ako1 04118 psrlw mm1,8 04119 #ifdef Test_mode 04120 movq TestRam,mm1 04121 #endif 04122 04123 pmullw mm5,mm1 04124 movq mm6, MMXTab [ebx*8] 04125 #ifdef Test_mode 04126 movq TestRam,mm6 04127 #endif 04128 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 04129 mov ebx, ako2 04130 psrlw mm2,8 04131 #ifdef Test_mode 04132 movq TestRam,mm2 04133 #endif 04134 pmullw mm6,mm2 04135 04136 movq mm7, MMXTab [ebx*8] 04137 paddusw mm5,mm6 04138 #ifdef Test_mode 04139 movq TestRam,mm7 04140 #endif 04141 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 04142 mov ebx, ako3 04143 psrlw mm1,8 04144 #ifdef Test_mode 04145 movq TestRam,mm1 04146 #endif 04147 pmullw mm7,mm1 04148 04149 movq mm6, MMXTab [ebx*8] 04150 paddusw mm5,mm7 04151 #ifdef Test_mode 04152 movq TestRam,mm6 04153 #endif 04154 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 04155 mov ebx, ein_regK 04156 psrlw mm2,8 04157 #ifdef Test_mode 04158 movq TestRam,mm2 04159 #endif 04160 pmullw mm6,mm2 04161 04162 movq mm7, MMXTab [ebx*8] 04163 paddusw mm5,mm6 04164 #ifdef Test_mode 04165 movq TestRam,mm7 04166 #endif 04167 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 04168 mov ebx, ako2 04169 psrlw mm1,8 04170 #ifdef Test_mode 04171 movq TestRam,mm1 04172 #endif 04173 pmullw mm7,mm1 04174 paddusw mm5,mm7 04175 #ifdef Test_mode 04176 movq TestRam,mm5 04177 #endif 04178 04179 04180 xor eax,eax 04181 psrlw mm5,LH_DATA_SHR 04182 movq ak,mm5 04183 04184 mov ax,ak 04185 mov esi,My_OutputLut 04186 mov al,BYTE PTR[eax+esi] 04187 mov edi,output0 04188 mov [edi], al 04189 mov ax,ak+2 04190 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 04191 mov edi,output1 04192 mov [edi], al 04193 mov ax,ak+4 04194 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 04195 mov edi,output2 04196 mov [edi], al 04197 #if LH_DATA_OUT_COUNT_4 04198 mov ax,ak+6 04199 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 04200 mov edi,output3 04201 mov [edi], al 04202 #endif 04203 04204 04205 } 04206 #endif 04207 } 04208 else if(ein_regM >= ein_regK ) /* CMKY !*/ 04209 { 04210 ako0 = LH_ADR_BEREICH_SEL - ein_regC; 04211 ako1 = ein_regC - ein_regM; 04212 ako2 = ein_regM - ein_regK; 04213 ako3 = ein_regK - ein_regY; 04214 #if LH_LUT_DATA_SIZE_16 04215 #if LH_DATA_OUT_SIZE_16 04216 04217 aVal = ( ako0 * paNewVal0[0] + 04218 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 04219 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 04220 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 04221 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 04222 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04223 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04224 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04225 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 04226 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04227 04228 aVal = ( ako0 * paNewVal0[1] + 04229 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 04230 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 04231 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 04232 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 04233 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04234 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04235 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04236 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 04237 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04238 04239 aVal = ( ako0 * paNewVal0[2] + 04240 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 04241 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 04242 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 04243 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 04244 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04245 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04246 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04247 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 04248 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04249 04250 #if LH_DATA_OUT_COUNT_4 04251 aVal = ( ako0 * paNewVal0[3] + 04252 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 04253 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 04254 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 04255 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 04256 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04257 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04258 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04259 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 04260 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04261 #endif 04262 04263 #else 04264 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 04265 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 04266 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 04267 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 04268 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 04269 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 04270 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 04271 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 04272 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 04273 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 04274 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 04275 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 04276 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 04277 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 04278 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 04279 #if LH_DATA_OUT_COUNT_4 04280 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 04281 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 04282 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 04283 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 04284 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 04285 #endif 04286 #endif 04287 04288 #else 04289 __asm { 04290 mov eax, paNewVal0 04291 04292 mov ebx, ako0 04293 movq mm5, MMXTab [ebx*8] 04294 #ifdef Test_mode 04295 movq TestRam,mm5 04296 #endif 04297 punpcklbw mm1,[eax] 04298 mov ebx, ako1 04299 psrlw mm1,8 04300 #ifdef Test_mode 04301 movq TestRam,mm1 04302 #endif 04303 04304 pmullw mm5,mm1 04305 movq mm6, MMXTab [ebx*8] 04306 #ifdef Test_mode 04307 movq TestRam,mm6 04308 #endif 04309 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 04310 mov ebx, ako2 04311 psrlw mm2,8 04312 #ifdef Test_mode 04313 movq TestRam,mm2 04314 #endif 04315 pmullw mm6,mm2 04316 04317 movq mm7, MMXTab [ebx*8] 04318 paddusw mm5,mm6 04319 #ifdef Test_mode 04320 movq TestRam,mm7 04321 #endif 04322 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 04323 mov ebx, ako3 04324 psrlw mm1,8 04325 #ifdef Test_mode 04326 movq TestRam,mm1 04327 #endif 04328 pmullw mm7,mm1 04329 04330 movq mm6, MMXTab [ebx*8] 04331 paddusw mm5,mm7 04332 #ifdef Test_mode 04333 movq TestRam,mm6 04334 #endif 04335 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 04336 mov ebx, ein_regY 04337 psrlw mm2,8 04338 #ifdef Test_mode 04339 movq TestRam,mm2 04340 #endif 04341 pmullw mm6,mm2 04342 04343 movq mm7, MMXTab [ebx*8] 04344 paddusw mm5,mm6 04345 #ifdef Test_mode 04346 movq TestRam,mm7 04347 #endif 04348 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 04349 mov ebx, ako2 04350 psrlw mm1,8 04351 #ifdef Test_mode 04352 movq TestRam,mm1 04353 #endif 04354 pmullw mm7,mm1 04355 paddusw mm5,mm7 04356 #ifdef Test_mode 04357 movq TestRam,mm5 04358 #endif 04359 04360 04361 xor eax,eax 04362 psrlw mm5,LH_DATA_SHR 04363 movq ak,mm5 04364 04365 mov ax,ak 04366 mov esi,My_OutputLut 04367 mov al,BYTE PTR[eax+esi] 04368 mov edi,output0 04369 mov [edi], al 04370 mov ax,ak+2 04371 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 04372 mov edi,output1 04373 mov [edi], al 04374 mov ax,ak+4 04375 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 04376 mov edi,output2 04377 mov [edi], al 04378 #if LH_DATA_OUT_COUNT_4 04379 mov ax,ak+6 04380 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 04381 mov edi,output3 04382 mov [edi], al 04383 #endif 04384 04385 04386 } 04387 #endif 04388 } 04389 else 04390 { 04391 if(ein_regC >= ein_regK ) /* CKMY !*/ 04392 { 04393 ako0 = LH_ADR_BEREICH_SEL - ein_regC; 04394 ako1 = ein_regC - ein_regK; 04395 ako2 = ein_regK - ein_regM; 04396 ako3 = ein_regM - ein_regY; 04397 #if LH_LUT_DATA_SIZE_16 04398 #if LH_DATA_OUT_SIZE_16 04399 04400 aVal = ( ako0 * paNewVal0[0] + 04401 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 04402 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 04403 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 04404 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 04405 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04406 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04407 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04408 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 04409 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04410 04411 aVal = ( ako0 * paNewVal0[1] + 04412 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 04413 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 04414 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 04415 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 04416 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04417 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04418 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04419 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 04420 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04421 04422 aVal = ( ako0 * paNewVal0[2] + 04423 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 04424 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 04425 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 04426 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 04427 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04428 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04429 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04430 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 04431 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04432 04433 #if LH_DATA_OUT_COUNT_4 04434 aVal = ( ako0 * paNewVal0[3] + 04435 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 04436 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 04437 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 04438 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 04439 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04440 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04441 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04442 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 04443 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04444 #endif 04445 04446 #else 04447 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 04448 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+0] + 04449 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 04450 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 04451 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 04452 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 04453 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+1] + 04454 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 04455 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 04456 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 04457 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 04458 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+2] + 04459 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 04460 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 04461 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 04462 #if LH_DATA_OUT_COUNT_4 04463 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 04464 ako1 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)+3] + 04465 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 04466 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 04467 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 04468 #endif 04469 #endif 04470 04471 #else 04472 __asm { 04473 mov eax, paNewVal0 04474 04475 mov ebx, ako0 04476 movq mm5, MMXTab [ebx*8] 04477 #ifdef Test_mode 04478 movq TestRam,mm5 04479 #endif 04480 punpcklbw mm1,[eax] 04481 mov ebx, ako1 04482 psrlw mm1,8 04483 #ifdef Test_mode 04484 movq TestRam,mm1 04485 #endif 04486 04487 pmullw mm5,mm1 04488 movq mm6, MMXTab [ebx*8] 04489 #ifdef Test_mode 04490 movq TestRam,mm6 04491 #endif 04492 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 04493 mov ebx, ako2 04494 psrlw mm2,8 04495 #ifdef Test_mode 04496 movq TestRam,mm2 04497 #endif 04498 pmullw mm6,mm2 04499 04500 movq mm7, MMXTab [ebx*8] 04501 paddusw mm5,mm6 04502 #ifdef Test_mode 04503 movq TestRam,mm7 04504 #endif 04505 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 04506 mov ebx, ako3 04507 psrlw mm1,8 04508 #ifdef Test_mode 04509 movq TestRam,mm1 04510 #endif 04511 pmullw mm7,mm1 04512 04513 movq mm6, MMXTab [ebx*8] 04514 paddusw mm5,mm7 04515 #ifdef Test_mode 04516 movq TestRam,mm6 04517 #endif 04518 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 04519 mov ebx, ein_regY 04520 psrlw mm2,8 04521 #ifdef Test_mode 04522 movq TestRam,mm2 04523 #endif 04524 pmullw mm6,mm2 04525 04526 movq mm7, MMXTab [ebx*8] 04527 paddusw mm5,mm6 04528 #ifdef Test_mode 04529 movq TestRam,mm7 04530 #endif 04531 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 04532 mov ebx, ako2 04533 psrlw mm1,8 04534 #ifdef Test_mode 04535 movq TestRam,mm1 04536 #endif 04537 pmullw mm7,mm1 04538 paddusw mm5,mm7 04539 #ifdef Test_mode 04540 movq TestRam,mm5 04541 #endif 04542 04543 04544 xor eax,eax 04545 psrlw mm5,LH_DATA_SHR 04546 movq ak,mm5 04547 04548 mov ax,ak 04549 mov esi,My_OutputLut 04550 mov al,BYTE PTR[eax+esi] 04551 mov edi,output0 04552 mov [edi], al 04553 mov ax,ak+2 04554 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 04555 mov edi,output1 04556 mov [edi], al 04557 mov ax,ak+4 04558 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 04559 mov edi,output2 04560 mov [edi], al 04561 #if LH_DATA_OUT_COUNT_4 04562 mov ax,ak+6 04563 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 04564 mov edi,output3 04565 mov [edi], al 04566 #endif 04567 04568 04569 } 04570 #endif 04571 } 04572 else 04573 { /* KCMY !*/ 04574 ako0 = LH_ADR_BEREICH_SEL - ein_regK; 04575 ako1 = ein_regK - ein_regC; 04576 ako2 = ein_regC - ein_regM; 04577 ako3 = ein_regM - ein_regY; 04578 #if LH_LUT_DATA_SIZE_16 04579 #if LH_DATA_OUT_SIZE_16 04580 04581 aVal = ( ako0 * paNewVal0[0] + 04582 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 04583 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 04584 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 04585 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] ); 04586 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04587 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04588 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04589 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 04590 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04591 04592 aVal = ( ako0 * paNewVal0[1] + 04593 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 04594 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 04595 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 04596 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] ); 04597 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04598 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04599 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04600 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 04601 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04602 04603 aVal = ( ako0 * paNewVal0[2] + 04604 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 04605 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 04606 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 04607 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] ); 04608 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04609 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04610 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04611 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 04612 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04613 04614 #if LH_DATA_OUT_COUNT_4 04615 aVal = ( ako0 * paNewVal0[3] + 04616 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 04617 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 04618 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 04619 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] ); 04620 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 04621 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 04622 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 04623 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 04624 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 04625 #endif 04626 04627 #else 04628 *output0 = My_OutputLut[(( ako0 * paNewVal0[0] + 04629 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 04630 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 04631 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] + 04632 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+0] )>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 04633 *output1 = My_OutputLut[(( ako0 * paNewVal0[1] + 04634 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 04635 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 04636 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] + 04637 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+1] )>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 04638 *output2 = My_OutputLut[(( ako0 * paNewVal0[2] + 04639 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 04640 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 04641 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] + 04642 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+2] )>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 04643 #if LH_DATA_OUT_COUNT_4 04644 *output3 = My_OutputLut[(( ako0 * paNewVal0[3] + 04645 ako1 * paNewVal0[(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 04646 ako2 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 04647 ako3 * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] + 04648 ein_regY * paNewVal0[(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)+3] )>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 04649 #endif 04650 #endif 04651 04652 #else 04653 __asm { 04654 mov eax, paNewVal0 04655 04656 mov ebx, ako0 04657 movq mm5, MMXTab [ebx*8] 04658 #ifdef Test_mode 04659 movq TestRam,mm5 04660 #endif 04661 punpcklbw mm1,[eax] 04662 mov ebx, ako1 04663 psrlw mm1,8 04664 #ifdef Test_mode 04665 movq TestRam,mm1 04666 #endif 04667 04668 pmullw mm5,mm1 04669 movq mm6, MMXTab [ebx*8] 04670 #ifdef Test_mode 04671 movq TestRam,mm6 04672 #endif 04673 punpcklbw mm2,[eax+(((((((0<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 04674 mov ebx, ako2 04675 psrlw mm2,8 04676 #ifdef Test_mode 04677 movq TestRam,mm2 04678 #endif 04679 pmullw mm6,mm2 04680 04681 movq mm7, MMXTab [ebx*8] 04682 paddusw mm5,mm6 04683 #ifdef Test_mode 04684 movq TestRam,mm7 04685 #endif 04686 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 04687 mov ebx, ako3 04688 psrlw mm1,8 04689 #ifdef Test_mode 04690 movq TestRam,mm1 04691 #endif 04692 pmullw mm7,mm1 04693 04694 movq mm6, MMXTab [ebx*8] 04695 paddusw mm5,mm7 04696 #ifdef Test_mode 04697 movq TestRam,mm6 04698 #endif 04699 punpcklbw mm2,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 0)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 04700 mov ebx, ein_regY 04701 psrlw mm2,8 04702 #ifdef Test_mode 04703 movq TestRam,mm2 04704 #endif 04705 pmullw mm6,mm2 04706 04707 movq mm7, MMXTab [ebx*8] 04708 paddusw mm5,mm6 04709 #ifdef Test_mode 04710 movq TestRam,mm7 04711 #endif 04712 punpcklbw mm1,[eax+(((((((1<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1)<<LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 04713 mov ebx, ako2 04714 psrlw mm1,8 04715 #ifdef Test_mode 04716 movq TestRam,mm1 04717 #endif 04718 pmullw mm7,mm1 04719 paddusw mm5,mm7 04720 #ifdef Test_mode 04721 movq TestRam,mm5 04722 #endif 04723 04724 04725 xor eax,eax 04726 psrlw mm5,LH_DATA_SHR 04727 movq ak,mm5 04728 04729 mov ax,ak 04730 mov esi,My_OutputLut 04731 mov al,BYTE PTR[eax+esi] 04732 mov edi,output0 04733 mov [edi], al 04734 mov ax,ak+2 04735 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 04736 mov edi,output1 04737 mov [edi], al 04738 mov ax,ak+4 04739 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 04740 mov edi,output2 04741 mov [edi], al 04742 #if LH_DATA_OUT_COUNT_4 04743 mov ax,ak+6 04744 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 04745 mov edi,output3 04746 mov [edi], al 04747 #endif 04748 04749 04750 } 04751 #endif 04752 } 04753 } 04754 } 04755 } 04756 #if LH_DATA_OUT_SIZE_16 && ! LH_LUT_DATA_SIZE_16 04757 *output0 |= (*output0 << 8); 04758 *output1 |= (*output1 << 8); 04759 *output2 |= (*output2 << 8); 04760 #if LH_DATA_OUT_COUNT_4 04761 *output3 |= (*output3 << 8); 04762 #endif 04763 #endif 04764 04765 if (Mode == LH_CALC_ENGINE_P_TO_P) 04766 { 04767 while (--i) 04768 { 04769 input0 += inputOffset; 04770 input1 += inputOffset; 04771 input2 += inputOffset; 04772 input3 += inputOffset; 04773 output0 += outputOffset; 04774 output1 += outputOffset; 04775 output2 += outputOffset; 04776 #if LH_DATA_OUT_COUNT_4 04777 output3 += outputOffset; 04778 #endif 04779 04780 if ((*input0 ^ ein_cache[0]) || (*input1 ^ ein_cache[1]) || (*input2 ^ ein_cache[2]) || (*input3 ^ ein_cache[3])) 04781 { 04782 break; 04783 } 04784 *output0 = output0[-outputOffset]; 04785 *output1 = output1[-outputOffset]; 04786 *output2 = output2[-outputOffset]; 04787 #if LH_DATA_OUT_COUNT_4 04788 *output3 = output3[-outputOffset]; 04789 #endif 04790 } 04791 } 04792 else if (Mode == LH_CALC_ENGINE_P_TO_U) 04793 { 04794 #if LH_DATA_OUT_COUNT_4 04795 *output4 &= Mask; 04796 #else 04797 *output3 &= Mask; 04798 #endif 04799 while (--i) 04800 { 04801 input0 += inputOffset; 04802 input1 += inputOffset; 04803 input2 += inputOffset; 04804 input3 += inputOffset; 04805 output0 += outputOffset; 04806 output1 += outputOffset; 04807 output2 += outputOffset; 04808 output3 += outputOffset; 04809 #if LH_DATA_OUT_COUNT_4 04810 output4 += outputOffset; 04811 #endif 04812 if ((*input0 ^ ein_cache[0]) || (*input1 ^ ein_cache[1]) || (*input2 ^ ein_cache[2]) || (*input3 ^ ein_cache[3])) 04813 { 04814 break; 04815 } 04816 *output0 = output0[-outputOffset]; 04817 *output1 = output1[-outputOffset]; 04818 *output2 = output2[-outputOffset]; 04819 #if LH_DATA_OUT_COUNT_4 04820 *output3 = output3[-outputOffset]; 04821 *output4 &= Mask; 04822 #else 04823 *output3 &= Mask; 04824 #endif 04825 } 04826 } 04827 else 04828 { 04829 #if LH_DATA_OUT_COUNT_4 04830 *output4 = (LH_DATA_OUT_TYPE)*input4; 04831 #else 04832 *output3 = (LH_DATA_OUT_TYPE)*input4; 04833 #endif 04834 while (--i) 04835 { /*U_TO_U*/ 04836 input0 += inputOffset; 04837 input1 += inputOffset; 04838 input2 += inputOffset; 04839 input3 += inputOffset; 04840 input4 += inputOffset; 04841 04842 output0 += outputOffset; 04843 output1 += outputOffset; 04844 output2 += outputOffset; 04845 output3 += outputOffset; 04846 #if LH_DATA_OUT_COUNT_4 04847 output4 += outputOffset; 04848 #endif 04849 if ((*input0 ^ ein_cache[0]) || (*input1 ^ ein_cache[1]) || (*input2 ^ ein_cache[2]) || (*input3 ^ ein_cache[3])) 04850 { 04851 break; 04852 } 04853 *output0 = output0[-outputOffset]; 04854 *output1 = output1[-outputOffset]; 04855 *output2 = output2[-outputOffset]; 04856 #if LH_DATA_OUT_COUNT_4 04857 *output3 = output3[-outputOffset]; 04858 *output4 = (LH_DATA_OUT_TYPE)*input4; 04859 #else 04860 *output3 = (LH_DATA_OUT_TYPE)*input4; 04861 #endif 04862 } 04863 } 04864 } 04865 if (--LineCount) 04866 { 04867 j++; 04868 input0 = (LH_DATA_IN_TYPE *)((LH_UINT8 *)calcParam->inputData[0] + j * calcParam->cmInputBytesPerLine); 04869 input1 = (LH_DATA_IN_TYPE *)((LH_UINT8 *)calcParam->inputData[1] + j * calcParam->cmInputBytesPerLine); 04870 input2 = (LH_DATA_IN_TYPE *)((LH_UINT8 *)calcParam->inputData[2] + j * calcParam->cmInputBytesPerLine); 04871 input3 = (LH_DATA_IN_TYPE *)((LH_UINT8 *)calcParam->inputData[3] + j * calcParam->cmInputBytesPerLine); 04872 input4 = (LH_DATA_IN_TYPE *)((LH_UINT8 *)calcParam->inputData[4] + j * calcParam->cmInputBytesPerLine); 04873 04874 output0 = (LH_DATA_OUT_TYPE *)((LH_UINT8 *)calcParam->outputData[0] + j * calcParam->cmOutputBytesPerLine); 04875 output1 = (LH_DATA_OUT_TYPE *)((LH_UINT8 *)calcParam->outputData[1] + j * calcParam->cmOutputBytesPerLine); 04876 output2 = (LH_DATA_OUT_TYPE *)((LH_UINT8 *)calcParam->outputData[2] + j * calcParam->cmOutputBytesPerLine); 04877 output3 = (LH_DATA_OUT_TYPE *)((LH_UINT8 *)calcParam->outputData[3] + j * calcParam->cmOutputBytesPerLine); 04878 #if LH_DATA_OUT_COUNT_4 04879 output4 = (LH_DATA_OUT_TYPE *)((LH_UINT8 *)calcParam->outputData[4] + j * calcParam->cmOutputBytesPerLine); 04880 #endif 04881 } 04882 } 04883 __asm { 04884 emms 04885 frstor bFPUState 04886 } 04887 LH_END_PROC(LH_CALC_PROC_NAME) 04888 return 0; 04889 } 04890 #else 04891 { 04892 04893 static LH_UINT16 MMXTab [260] = 04894 { 04895 0x0000, 0x0000, 0x0000, 0x0000, 04896 0x0001, 0x0001, 0x0001, 0x0001, 04897 0x0002, 0x0002, 0x0002, 0x0002, 04898 0x0003, 0x0003, 0x0003, 0x0003, 04899 0x0004, 0x0004, 0x0004, 0x0004, 04900 0x0005, 0x0005, 0x0005, 0x0005, 04901 0x0006, 0x0006, 0x0006, 0x0006, 04902 0x0007, 0x0007, 0x0007, 0x0007, 04903 0x0008, 0x0008, 0x0008, 0x0008, 04904 0x0009, 0x0009, 0x0009, 0x0009, 04905 0x000A, 0x000A, 0x000A, 0x000a, 04906 0x000B, 0x000B, 0x000B, 0x000b, 04907 0x000C, 0x000C, 0x000C, 0x000c, 04908 0x000D, 0x000D, 0x000D, 0x000d, 04909 0x000E, 0x000E, 0x000E, 0x000e, 04910 0x000F, 0x000F, 0x000F, 0x000f, 04911 0x0010, 0x0010, 0x0010, 0x0010, 04912 0x0011, 0x0011, 0x0011, 0x0011, 04913 0x0012, 0x0012, 0x0012, 0x0012, 04914 0x0013, 0x0013, 0x0013, 0x0013, 04915 0x0014, 0x0014, 0x0014, 0x0014, 04916 0x0015, 0x0015, 0x0015, 0x0015, 04917 0x0016, 0x0016, 0x0016, 0x0016, 04918 0x0017, 0x0017, 0x0017, 0x0017, 04919 0x0018, 0x0018, 0x0018, 0x0018, 04920 0x0019, 0x0019, 0x0019, 0x0019, 04921 0x001A, 0x001A, 0x001A, 0x001a, 04922 0x001B, 0x001B, 0x001B, 0x001b, 04923 0x001C, 0x001C, 0x001C, 0x001c, 04924 0x001D, 0x001D, 0x001D, 0x001d, 04925 0x001E, 0x001E, 0x001E, 0x001e, 04926 0x001F, 0x001F, 0x001F, 0x001f, 04927 0x0020, 0x0020, 0x0020, 0x0020, 04928 0x0021, 0x0021, 0x0021, 0x0021, 04929 0x0022, 0x0022, 0x0022, 0x0022, 04930 0x0023, 0x0023, 0x0023, 0x0023, 04931 0x0024, 0x0024, 0x0024, 0x0024, 04932 0x0025, 0x0025, 0x0025, 0x0025, 04933 0x0026, 0x0026, 0x0026, 0x0026, 04934 0x0027, 0x0027, 0x0027, 0x0027, 04935 0x0028, 0x0028, 0x0028, 0x0028, 04936 0x0029, 0x0029, 0x0029, 0x0029, 04937 0x002A, 0x002A, 0x002A, 0x002a, 04938 0x002B, 0x002B, 0x002B, 0x002b, 04939 0x002C, 0x002C, 0x002C, 0x002c, 04940 0x002D, 0x002D, 0x002D, 0x002d, 04941 0x002E, 0x002E, 0x002E, 0x002e, 04942 0x002F, 0x002F, 0x002F, 0x002f, 04943 0x0030, 0x0030, 0x0030, 0x0030, 04944 0x0031, 0x0031, 0x0031, 0x0031, 04945 0x0032, 0x0032, 0x0032, 0x0032, 04946 0x0033, 0x0033, 0x0033, 0x0033, 04947 0x0034, 0x0034, 0x0034, 0x0034, 04948 0x0035, 0x0035, 0x0035, 0x0035, 04949 0x0036, 0x0036, 0x0036, 0x0036, 04950 0x0037, 0x0037, 0x0037, 0x0037, 04951 0x0038, 0x0038, 0x0038, 0x0038, 04952 0x0039, 0x0039, 0x0039, 0x0039, 04953 0x003A, 0x003A, 0x003A, 0x003a, 04954 0x003B, 0x003B, 0x003B, 0x003b, 04955 0x003C, 0x003C, 0x003C, 0x003c, 04956 0x003D, 0x003D, 0x003D, 0x003d, 04957 0x003E, 0x003E, 0x003E, 0x003e, 04958 0x003F, 0x003F, 0x003F, 0x003f, 04959 0x0040, 0x0040, 0x0040, 0x0040 04960 }; 04961 04962 LH_UINT32 ein_regb; 04963 LH_UINT32 ein_regg; 04964 LH_UINT32 ein_regr; 04965 LH_DATA_IN_TYPE ein_cache[3]; 04966 LH_LUT_DATA_TYPE * paNewVal0; 04967 LH_UINT32 ako0; 04968 LH_UINT32 ako1; 04969 LH_UINT32 ako2; 04970 04971 LH_UINT8 Mode; 04972 LH_UINT32 PixelCount, LineCount, i, j; 04973 long inputOffset,outputOffset; 04974 LH_DATA_IN_TYPE * input0 = (LH_DATA_IN_TYPE *)calcParam->inputData[0]; 04975 LH_DATA_IN_TYPE * input1 = (LH_DATA_IN_TYPE *)calcParam->inputData[1]; 04976 LH_DATA_IN_TYPE * input2 = (LH_DATA_IN_TYPE *)calcParam->inputData[2]; 04977 LH_DATA_IN_TYPE * input3 = (LH_DATA_IN_TYPE *)calcParam->inputData[3]; 04978 04979 LH_DATA_OUT_TYPE * output0 = (LH_DATA_OUT_TYPE *)calcParam->outputData[0]; 04980 LH_DATA_OUT_TYPE * output1 = (LH_DATA_OUT_TYPE *)calcParam->outputData[1]; 04981 LH_DATA_OUT_TYPE * output2 = (LH_DATA_OUT_TYPE *)calcParam->outputData[2]; 04982 LH_DATA_OUT_TYPE * output3 = (LH_DATA_OUT_TYPE *)calcParam->outputData[3]; 04983 LH_DATA_OUT_TYPE * output4 = (LH_DATA_OUT_TYPE *)calcParam->outputData[4]; 04984 04985 LH_UINT16 * My_InputLut = (LH_UINT16 *)lutParam->inputLut; 04986 LH_LUT_DATA_TYPE * My_OutputLut = (LH_LUT_DATA_TYPE *)lutParam->outputLut; 04987 LH_LUT_DATA_TYPE * My_ColorLut = (LH_LUT_DATA_TYPE *)lutParam->colorLut; 04988 04989 LH_DATA_OUT_TYPE Mask = (LH_DATA_OUT_TYPE)-1; 04990 04991 LH_UINT16 ak[4]; 04992 LH_UINT8 bFPUState [108]; 04993 //#define Test_mode 04994 #ifdef Test_mode 04995 LH_UINT16 TestRam[4]; 04996 #endif 04997 #ifdef DEBUG_OUTPUT 04998 CMError err = noErr; 04999 #endif 05000 LH_START_PROC(LH_CALC_PROC_NAME) 05001 05002 #if LH_DATA_IN_SIZE_16 05003 inputOffset = (long)calcParam->cmInputPixelOffset / 2; 05004 #else 05005 inputOffset = (long)calcParam->cmInputPixelOffset; 05006 #endif 05007 #if LH_DATA_OUT_SIZE_16 05008 outputOffset = (long)calcParam->cmOutputPixelOffset / 2; 05009 #else 05010 outputOffset = (long)calcParam->cmOutputPixelOffset; 05011 #endif 05012 05013 if (calcParam->clearMask) 05014 Mask = 0; 05015 Mode = LH_CALC_ENGINE_UNDEF_MODE; 05016 05017 05018 if ((calcParam->cmInputPixelOffset * calcParam->cmPixelPerLine == calcParam->cmInputBytesPerLine) && (calcParam->cmOutputPixelOffset * calcParam->cmPixelPerLine == calcParam->cmOutputBytesPerLine)) 05019 { 05020 PixelCount = calcParam->cmPixelPerLine * calcParam->cmLineCount; 05021 LineCount = 1; 05022 } 05023 else 05024 { 05025 PixelCount = calcParam->cmPixelPerLine; 05026 LineCount = calcParam->cmLineCount; 05027 } 05028 if (calcParam->copyAlpha ) 05029 { 05030 Mode = LH_CALC_ENGINE_U_TO_U; 05031 } 05032 else 05033 { 05034 if (calcParam->clearMask) 05035 Mode = LH_CALC_ENGINE_P_TO_U; 05036 else 05037 Mode = LH_CALC_ENGINE_P_TO_P; 05038 } 05039 __asm { 05040 fnsave bFPUState 05041 pxor mm0,mm0 05042 pxor mm1,mm1 05043 pxor mm2,mm2 05044 pxor mm3,mm3 05045 pxor mm4,mm4 05046 pxor mm5,mm5 05047 pxor mm6,mm6 05048 pxor mm7,mm7 05049 } 05050 j = 0; 05051 while (LineCount) 05052 { 05053 i = PixelCount; 05054 while (i) 05055 { 05056 #if LH_LUT_DATA_SIZE_16 05057 #if LH_DATA_IN_SIZE_16 || LH_DATA_OUT_SIZE_16 05058 register LH_UINT32 ko; 05059 #endif 05060 #if LH_DATA_IN_SIZE_16 05061 register LH_DATA_IN_TYPE aValIn; 05062 #endif 05063 #if LH_DATA_OUT_SIZE_16 05064 register LH_UINT32 aVal; 05065 #endif 05066 #if LH_DATA_IN_SIZE_16 05067 aValIn = (ein_cache[0]=*input0) - ( *input0 >> ( LH_ADR_BREIT_EIN_LUT )); 05068 ko = aValIn & ( (1<<( 16-LH_ADR_BREIT_EIN_LUT ))-1 ); 05069 aValIn = (aValIn >> ( 16-LH_ADR_BREIT_EIN_LUT )) + ( 0 << LH_ADR_BREIT_EIN_LUT ); 05070 ein_regr = ( My_InputLut[aValIn] * ( (1<<( 16-LH_ADR_BREIT_EIN_LUT )) - ko ) + My_InputLut[aValIn +1] * ko ) >>( 16-LH_ADR_BREIT_EIN_LUT ); 05071 05072 aValIn = (ein_cache[1]=*input1) - ( *input1 >> ( LH_ADR_BREIT_EIN_LUT )); 05073 ko = aValIn & ( (1<<( 16-LH_ADR_BREIT_EIN_LUT ))-1 ); 05074 aValIn = (aValIn >> ( 16-LH_ADR_BREIT_EIN_LUT )) + ( 1 << LH_ADR_BREIT_EIN_LUT ); 05075 ein_regg = ( My_InputLut[aValIn] * ( (1<<( 16-LH_ADR_BREIT_EIN_LUT )) - ko ) + My_InputLut[aValIn +1] * ko ) >> ( 16-LH_ADR_BREIT_EIN_LUT ); 05076 05077 aValIn = (ein_cache[2]=*input2) - ( *input2 >> ( LH_ADR_BREIT_EIN_LUT )); 05078 ko = aValIn & ( (1<<( 16-LH_ADR_BREIT_EIN_LUT ))-1 ); 05079 aValIn = (aValIn >> ( 16-LH_ADR_BREIT_EIN_LUT )) + ( 2 << LH_ADR_BREIT_EIN_LUT ); 05080 ein_regb = ( My_InputLut[aValIn] * ( (1<<( 16-LH_ADR_BREIT_EIN_LUT )) - ko ) + My_InputLut[aValIn +1] * ko ) >> ( 16-LH_ADR_BREIT_EIN_LUT ); 05081 #else 05082 ein_regr = My_InputLut[(ein_cache[0]=*input0) + ( 0 << LH_ADR_BREIT_EIN_LUT )]; 05083 ein_regg = My_InputLut[(ein_cache[1]=*input1) + ( 1 << LH_ADR_BREIT_EIN_LUT )]; 05084 ein_regb = My_InputLut[(ein_cache[2]=*input2) + ( 2 << LH_ADR_BREIT_EIN_LUT )]; 05085 #endif 05086 #else 05087 #if LH_DATA_IN_SIZE_16 05088 register LH_DATA_IN_TYPE aValIn; 05089 register LH_UINT32 ko; 05090 aValIn = (ein_cache[0]=*input0) - ( *input0 >> ( LH_ADR_BREIT_EIN_LUT )); 05091 ko = aValIn & ( (1<<( 16-LH_ADR_BREIT_EIN_LUT ))-1 ); 05092 aValIn = (aValIn >> ( 16-LH_ADR_BREIT_EIN_LUT )) + ( 0 << LH_ADR_BREIT_EIN_LUT ); 05093 ein_regr = ( My_InputLut[aValIn] * ( (1<<( 16-LH_ADR_BREIT_EIN_LUT )) - ko ) + My_InputLut[aValIn +1] * ko ) >>( 10-LH_ADR_BREIT_EIN_LUT ); 05094 05095 aValIn = (ein_cache[1]=*input1) - ( *input1 >> ( LH_ADR_BREIT_EIN_LUT )); 05096 ko = aValIn & ( (1<<( 16-LH_ADR_BREIT_EIN_LUT ))-1 ); 05097 aValIn = (aValIn >> ( 16-LH_ADR_BREIT_EIN_LUT )) + ( 1 << LH_ADR_BREIT_EIN_LUT ); 05098 ein_regg = ( My_InputLut[aValIn] * ( (1<<( 16-LH_ADR_BREIT_EIN_LUT )) - ko ) + My_InputLut[aValIn +1] * ko ) >> ( 10-LH_ADR_BREIT_EIN_LUT ); 05099 05100 aValIn = (ein_cache[2]=*input2) - ( *input2 >> ( LH_ADR_BREIT_EIN_LUT )); 05101 ko = aValIn & ( (1<<( 16-LH_ADR_BREIT_EIN_LUT ))-1 ); 05102 aValIn = (aValIn >> ( 16-LH_ADR_BREIT_EIN_LUT )) + ( 2 << LH_ADR_BREIT_EIN_LUT ); 05103 ein_regb = ( My_InputLut[aValIn] * ( (1<<( 16-LH_ADR_BREIT_EIN_LUT )) - ko ) + My_InputLut[aValIn +1] * ko ) >> ( 10-LH_ADR_BREIT_EIN_LUT ); 05104 /*ein_regr = My_InputLut[(*input0>>( 10-LH_ADR_BREIT_EIN_LUT )) + ( 0 << LH_ADR_BREIT_EIN_LUT )]; 05105 ein_regg = My_InputLut[(*input1>>( 10-LH_ADR_BREIT_EIN_LUT )) + ( 1 << LH_ADR_BREIT_EIN_LUT )]; 05106 ein_regb = My_InputLut[(*input2>>( 10-LH_ADR_BREIT_EIN_LUT )) + ( 2 << LH_ADR_BREIT_EIN_LUT )];*/ 05107 #else 05108 ein_regr = My_InputLut[(ein_cache[0]=*input0) + ( 0 << LH_ADR_BREIT_EIN_LUT )]; 05109 ein_regg = My_InputLut[(ein_cache[1]=*input1) + ( 1 << LH_ADR_BREIT_EIN_LUT )]; 05110 ein_regb = My_InputLut[(ein_cache[2]=*input2) + ( 2 << LH_ADR_BREIT_EIN_LUT )]; 05111 #endif 05112 #endif 05113 paNewVal0 = (LH_LUT_DATA_TYPE *)My_ColorLut + 05114 ((((((ein_regr & LH_BIT_MASKE_ADR) << LH_BIT_BREIT_ADR) + 05115 (ein_regg & LH_BIT_MASKE_ADR))>> (LH_BIT_BREIT_SELEKTOR-LH_BIT_BREIT_ADR)) + 05116 (ein_regb >> LH_BIT_BREIT_SELEKTOR))*LH_DATA_OUT_COUNT); 05117 ein_regr &= LH_BIT_MASKE_SELEKTOR; 05118 ein_regg &= LH_BIT_MASKE_SELEKTOR; 05119 ein_regb &= LH_BIT_MASKE_SELEKTOR; 05120 if (ein_regb >= ein_regr) 05121 { 05122 if (ein_regg >= ein_regr) 05123 { 05124 if (ein_regb >= ein_regg) 05125 { 05126 05127 ako0 = (LH_ADR_BEREICH_SEL) - ein_regb; 05128 ako1 = ein_regb - ein_regg; 05129 ako2 = ein_regg - ein_regr; 05130 #if LH_LUT_DATA_SIZE_16 05131 #if LH_DATA_OUT_SIZE_16 05132 05133 aVal = (ako0 * paNewVal0[0] + 05134 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05135 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05136 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05137 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05138 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05139 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05140 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 05141 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05142 05143 paNewVal0++; 05144 aVal = (ako0 * paNewVal0[0] + 05145 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05146 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05147 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05148 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05149 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05150 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05151 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 05152 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05153 05154 paNewVal0++; 05155 aVal = (ako0 * paNewVal0[0] + 05156 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05157 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05158 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05159 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05160 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05161 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05162 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 05163 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05164 05165 #if LH_DATA_OUT_COUNT_4 05166 paNewVal0++; 05167 aVal = (ako0 * paNewVal0[0] + 05168 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05169 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05170 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05171 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05172 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05173 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05174 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 05175 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05176 #endif 05177 05178 #else 05179 *output0 = My_OutputLut[((ako0 * paNewVal0[0] + 05180 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05181 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05182 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 05183 paNewVal0++; 05184 *output1 = My_OutputLut[((ako0 * paNewVal0[0] + 05185 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05186 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05187 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 05188 paNewVal0++; 05189 *output2 = My_OutputLut[((ako0 * paNewVal0[0] + 05190 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05191 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05192 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 05193 #if LH_DATA_OUT_COUNT_4 05194 paNewVal0++; 05195 *output3 = My_OutputLut[((ako0 * paNewVal0[0] + 05196 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05197 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05198 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 05199 #endif 05200 #endif 05201 05202 #else 05203 __asm { 05204 mov eax, paNewVal0 05205 05206 mov ebx, ako0 05207 movq mm5, MMXTab [ebx*8] 05208 #ifdef Test_mode 05209 movq TestRam,mm5 05210 #endif 05211 punpcklbw mm1,[eax] 05212 mov ebx, ako1 05213 psrlw mm1,8 05214 #ifdef Test_mode 05215 movq TestRam,mm1 05216 #endif 05217 05218 pmullw mm5,mm1 05219 movq mm6, MMXTab [ebx*8] 05220 #ifdef Test_mode 05221 movq TestRam,mm6 05222 #endif 05223 punpcklbw mm2,[eax+(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 05224 mov ebx, ako2 05225 psrlw mm2,8 05226 #ifdef Test_mode 05227 movq TestRam,mm2 05228 #endif 05229 pmullw mm6,mm2 05230 05231 movq mm7, MMXTab [ebx*8] 05232 paddusw mm5,mm6 05233 #ifdef Test_mode 05234 movq TestRam,mm7 05235 #endif 05236 punpcklbw mm1,[eax+(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 05237 mov ebx, ein_regr 05238 psrlw mm1,8 05239 #ifdef Test_mode 05240 movq TestRam,mm1 05241 #endif 05242 pmullw mm7,mm1 05243 05244 movq mm6, MMXTab [ebx*8] 05245 paddusw mm5,mm7 05246 #ifdef Test_mode 05247 movq TestRam,mm7 05248 #endif 05249 punpcklbw mm2,[eax+(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 05250 psrlw mm2,8 05251 #ifdef Test_mode 05252 movq TestRam,mm2 05253 #endif 05254 pmullw mm6,mm2 05255 paddusw mm5,mm6 05256 #ifdef Test_mode 05257 movq TestRam,mm6 05258 #endif 05259 05260 05261 xor eax,eax 05262 psrlw mm5,LH_DATA_SHR 05263 movq ak,mm5 05264 05265 mov ax,ak 05266 mov esi,My_OutputLut 05267 mov al,BYTE PTR[eax+esi] 05268 mov edi,output0 05269 mov [edi], al 05270 mov ax,ak+2 05271 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 05272 mov edi,output1 05273 mov [edi], al 05274 mov ax,ak+4 05275 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 05276 mov edi,output2 05277 mov [edi], al 05278 #if LH_DATA_OUT_COUNT_4 05279 mov ax,ak+6 05280 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 05281 mov edi,output3 05282 mov [edi], al 05283 #endif 05284 05285 05286 } 05287 #endif 05288 } 05289 else 05290 { 05291 ako0 = (LH_ADR_BEREICH_SEL) - ein_regg; 05292 ako1 = ein_regg - ein_regb; 05293 ako2 = ein_regb - ein_regr; 05294 #if LH_LUT_DATA_SIZE_16 05295 #if LH_DATA_OUT_SIZE_16 05296 05297 aVal = (ako0 * paNewVal0[0] + 05298 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05299 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05300 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05301 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05302 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05303 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05304 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 05305 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05306 05307 paNewVal0++; 05308 aVal = (ako0 * paNewVal0[0] + 05309 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05310 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05311 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05312 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05313 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05314 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05315 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 05316 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05317 05318 paNewVal0++; 05319 aVal = (ako0 * paNewVal0[0] + 05320 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05321 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05322 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05323 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05324 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05325 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05326 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 05327 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05328 05329 #if LH_DATA_OUT_COUNT_4 05330 paNewVal0++; 05331 aVal = (ako0 * paNewVal0[0] + 05332 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05333 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05334 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05335 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05336 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05337 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05338 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 05339 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05340 #endif 05341 05342 #else 05343 *output0 = My_OutputLut[((ako0 * paNewVal0[0] + 05344 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05345 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05346 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 05347 paNewVal0++; 05348 *output1 = My_OutputLut[((ako0 * paNewVal0[0] + 05349 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05350 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05351 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 05352 paNewVal0++; 05353 *output2 = My_OutputLut[((ako0 * paNewVal0[0] + 05354 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05355 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05356 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 05357 #if LH_DATA_OUT_COUNT_4 05358 paNewVal0++; 05359 *output3 = My_OutputLut[((ako0 * paNewVal0[0] + 05360 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05361 ako2 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05362 ein_regr * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 05363 #endif 05364 #endif 05365 05366 #else 05367 __asm { 05368 mov eax, paNewVal0 05369 05370 mov ebx, ako0 05371 movq mm5, MMXTab [ebx*8] 05372 #ifdef Test_mode 05373 movq TestRam,mm5 05374 #endif 05375 punpcklbw mm1,[eax] 05376 mov ebx, ako1 05377 psrlw mm1,8 05378 #ifdef Test_mode 05379 movq TestRam,mm1 05380 #endif 05381 05382 pmullw mm5,mm1 05383 movq mm6, MMXTab [ebx*8] 05384 #ifdef Test_mode 05385 movq TestRam,mm6 05386 #endif 05387 punpcklbw mm2,[eax+(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 05388 mov ebx, ako2 05389 psrlw mm2,8 05390 #ifdef Test_mode 05391 movq TestRam,mm2 05392 #endif 05393 pmullw mm6,mm2 05394 05395 movq mm7, MMXTab [ebx*8] 05396 paddusw mm5,mm6 05397 #ifdef Test_mode 05398 movq TestRam,mm7 05399 #endif 05400 punpcklbw mm1,[eax+(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 05401 mov ebx, ein_regr 05402 psrlw mm1,8 05403 #ifdef Test_mode 05404 movq TestRam,mm1 05405 #endif 05406 pmullw mm7,mm1 05407 05408 movq mm6, MMXTab [ebx*8] 05409 paddusw mm5,mm7 05410 #ifdef Test_mode 05411 movq TestRam,mm7 05412 #endif 05413 punpcklbw mm2,[eax+(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 05414 psrlw mm2,8 05415 #ifdef Test_mode 05416 movq TestRam,mm2 05417 #endif 05418 pmullw mm6,mm2 05419 paddusw mm5,mm6 05420 #ifdef Test_mode 05421 movq TestRam,mm6 05422 #endif 05423 05424 05425 xor eax,eax 05426 psrlw mm5,LH_DATA_SHR 05427 movq ak,mm5 05428 05429 mov ax,ak 05430 mov esi,My_OutputLut 05431 mov al,BYTE PTR[eax+esi] 05432 mov edi,output0 05433 mov [edi], al 05434 mov ax,ak+2 05435 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 05436 mov edi,output1 05437 mov [edi], al 05438 mov ax,ak+4 05439 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 05440 mov edi,output2 05441 mov [edi], al 05442 #if LH_DATA_OUT_COUNT_4 05443 mov ax,ak+6 05444 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 05445 mov edi,output3 05446 mov [edi], al 05447 #endif 05448 05449 05450 } 05451 05452 #endif 05453 } 05454 } 05455 else 05456 { 05457 ako0 = (LH_ADR_BEREICH_SEL) - ein_regb; 05458 ako1 = ein_regb - ein_regr; 05459 ako2 = ein_regr - ein_regg; 05460 #if LH_LUT_DATA_SIZE_16 05461 #if LH_DATA_OUT_SIZE_16 05462 05463 aVal = (ako0 * paNewVal0[0] + 05464 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05465 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05466 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05467 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05468 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05469 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05470 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 05471 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05472 05473 paNewVal0++; 05474 aVal = (ako0 * paNewVal0[0] + 05475 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05476 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05477 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05478 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05479 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05480 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05481 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 05482 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05483 05484 paNewVal0++; 05485 aVal = (ako0 * paNewVal0[0] + 05486 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05487 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05488 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05489 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05490 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05491 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05492 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 05493 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05494 05495 #if LH_DATA_OUT_COUNT_4 05496 paNewVal0++; 05497 aVal = (ako0 * paNewVal0[0] + 05498 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05499 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05500 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05501 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05502 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05503 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05504 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 05505 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05506 #endif 05507 05508 #else 05509 *output0 = My_OutputLut[((ako0 * paNewVal0[0] + 05510 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05511 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05512 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 05513 paNewVal0++; 05514 *output1 = My_OutputLut[((ako0 * paNewVal0[0] + 05515 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05516 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05517 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 05518 paNewVal0++; 05519 *output2 = My_OutputLut[((ako0 * paNewVal0[0] + 05520 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05521 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05522 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 05523 #if LH_DATA_OUT_COUNT_4 05524 paNewVal0++; 05525 *output3 = My_OutputLut[((ako0 * paNewVal0[0] + 05526 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05527 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05528 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 05529 #endif 05530 #endif 05531 05532 #else 05533 __asm { 05534 mov eax, paNewVal0 05535 05536 mov ebx, ako0 05537 movq mm5, MMXTab [ebx*8] 05538 #ifdef Test_mode 05539 movq TestRam,mm5 05540 #endif 05541 punpcklbw mm1,[eax] 05542 mov ebx, ako1 05543 psrlw mm1,8 05544 #ifdef Test_mode 05545 movq TestRam,mm1 05546 #endif 05547 05548 pmullw mm5,mm1 05549 movq mm6, MMXTab [ebx*8] 05550 #ifdef Test_mode 05551 movq TestRam,mm6 05552 #endif 05553 punpcklbw mm2,[eax+(((((0 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 05554 mov ebx, ako2 05555 psrlw mm2,8 05556 #ifdef Test_mode 05557 movq TestRam,mm2 05558 #endif 05559 pmullw mm6,mm2 05560 05561 movq mm7, MMXTab [ebx*8] 05562 paddusw mm5,mm6 05563 #ifdef Test_mode 05564 movq TestRam,mm7 05565 #endif 05566 punpcklbw mm1,[eax+(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 05567 mov ebx, ein_regg 05568 psrlw mm1,8 05569 #ifdef Test_mode 05570 movq TestRam,mm1 05571 #endif 05572 pmullw mm7,mm1 05573 05574 movq mm6, MMXTab [ebx*8] 05575 paddusw mm5,mm7 05576 #ifdef Test_mode 05577 movq TestRam,mm7 05578 #endif 05579 punpcklbw mm2,[eax+(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 05580 psrlw mm2,8 05581 #ifdef Test_mode 05582 movq TestRam,mm2 05583 #endif 05584 pmullw mm6,mm2 05585 paddusw mm5,mm6 05586 #ifdef Test_mode 05587 movq TestRam,mm6 05588 #endif 05589 05590 05591 xor eax,eax 05592 psrlw mm5,LH_DATA_SHR 05593 movq ak,mm5 05594 05595 mov ax,ak 05596 mov esi,My_OutputLut 05597 mov al,BYTE PTR[eax+esi] 05598 mov edi,output0 05599 mov [edi], al 05600 mov ax,ak+2 05601 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 05602 mov edi,output1 05603 mov [edi], al 05604 mov ax,ak+4 05605 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 05606 mov edi,output2 05607 mov [edi], al 05608 #if LH_DATA_OUT_COUNT_4 05609 mov ax,ak+6 05610 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 05611 mov edi,output3 05612 mov [edi], al 05613 #endif 05614 05615 05616 } 05617 #endif 05618 } 05619 } 05620 else 05621 { 05622 if (ein_regg >= ein_regr) 05623 { 05624 ako0 = (LH_ADR_BEREICH_SEL) - ein_regg; 05625 ako1 = ein_regg - ein_regr; 05626 ako2 = ein_regr - ein_regb; 05627 #if LH_LUT_DATA_SIZE_16 05628 #if LH_DATA_OUT_SIZE_16 05629 05630 aVal = (ako0 * paNewVal0[0] + 05631 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05632 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05633 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05634 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05635 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05636 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05637 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 05638 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05639 05640 paNewVal0++; 05641 aVal = (ako0 * paNewVal0[0] + 05642 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05643 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05644 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05645 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05646 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05647 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05648 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 05649 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05650 05651 paNewVal0++; 05652 aVal = (ako0 * paNewVal0[0] + 05653 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05654 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05655 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05656 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05657 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05658 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05659 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 05660 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05661 05662 #if LH_DATA_OUT_COUNT_4 05663 paNewVal0++; 05664 aVal = (ako0 * paNewVal0[0] + 05665 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05666 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05667 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05668 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05669 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05670 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05671 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 05672 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05673 #endif 05674 05675 #else 05676 *output0 = My_OutputLut[((ako0 * paNewVal0[0] + 05677 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05678 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05679 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 05680 paNewVal0++; 05681 *output1 = My_OutputLut[((ako0 * paNewVal0[0] + 05682 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05683 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05684 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 05685 paNewVal0++; 05686 *output2 = My_OutputLut[((ako0 * paNewVal0[0] + 05687 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05688 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05689 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 05690 #if LH_DATA_OUT_COUNT_4 05691 paNewVal0++; 05692 *output3 = My_OutputLut[((ako0 * paNewVal0[0] + 05693 ako1 * paNewVal0[(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05694 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05695 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 05696 #endif 05697 #endif 05698 05699 #else 05700 __asm { 05701 mov eax, paNewVal0 05702 05703 mov ebx, ako0 05704 movq mm5, MMXTab [ebx*8] 05705 #ifdef Test_mode 05706 movq TestRam,mm5 05707 #endif 05708 punpcklbw mm1,[eax] 05709 mov ebx, ako1 05710 psrlw mm1,8 05711 #ifdef Test_mode 05712 movq TestRam,mm1 05713 #endif 05714 05715 pmullw mm5,mm1 05716 movq mm6, MMXTab [ebx*8] 05717 #ifdef Test_mode 05718 movq TestRam,mm6 05719 #endif 05720 punpcklbw mm2,[eax+(((((0 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 05721 mov ebx, ako2 05722 psrlw mm2,8 05723 #ifdef Test_mode 05724 movq TestRam,mm2 05725 #endif 05726 pmullw mm6,mm2 05727 05728 movq mm7, MMXTab [ebx*8] 05729 paddusw mm5,mm6 05730 #ifdef Test_mode 05731 movq TestRam,mm7 05732 #endif 05733 punpcklbw mm1,[eax+(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 05734 mov ebx, ein_regb 05735 psrlw mm1,8 05736 #ifdef Test_mode 05737 movq TestRam,mm1 05738 #endif 05739 pmullw mm7,mm1 05740 05741 movq mm6, MMXTab [ebx*8] 05742 paddusw mm5,mm7 05743 #ifdef Test_mode 05744 movq TestRam,mm7 05745 #endif 05746 punpcklbw mm2,[eax+(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 05747 psrlw mm2,8 05748 #ifdef Test_mode 05749 movq TestRam,mm2 05750 #endif 05751 pmullw mm6,mm2 05752 paddusw mm5,mm6 05753 #ifdef Test_mode 05754 movq TestRam,mm6 05755 #endif 05756 05757 05758 xor eax,eax 05759 psrlw mm5,LH_DATA_SHR 05760 movq ak,mm5 05761 05762 mov ax,ak 05763 mov esi,My_OutputLut 05764 mov al,BYTE PTR[eax+esi] 05765 mov edi,output0 05766 mov [edi], al 05767 mov ax,ak+2 05768 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 05769 mov edi,output1 05770 mov [edi], al 05771 mov ax,ak+4 05772 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 05773 mov edi,output2 05774 mov [edi], al 05775 #if LH_DATA_OUT_COUNT_4 05776 mov ax,ak+6 05777 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 05778 mov edi,output3 05779 mov [edi], al 05780 #endif 05781 05782 05783 } 05784 #endif 05785 } 05786 else 05787 { 05788 if (ein_regb >= ein_regg) 05789 { 05790 ako0 = (LH_ADR_BEREICH_SEL) - ein_regr; 05791 ako1 = ein_regr - ein_regb; 05792 ako2 = ein_regb - ein_regg; 05793 #if LH_LUT_DATA_SIZE_16 05794 #if LH_DATA_OUT_SIZE_16 05795 05796 aVal = (ako0 * paNewVal0[0] + 05797 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05798 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05799 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05800 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05801 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05802 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05803 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 05804 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05805 05806 paNewVal0++; 05807 aVal = (ako0 * paNewVal0[0] + 05808 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05809 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05810 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05811 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05812 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05813 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05814 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 05815 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05816 05817 paNewVal0++; 05818 aVal = (ako0 * paNewVal0[0] + 05819 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05820 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05821 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05822 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05823 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05824 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05825 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 05826 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05827 05828 #if LH_DATA_OUT_COUNT_4 05829 paNewVal0++; 05830 aVal = (ako0 * paNewVal0[0] + 05831 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05832 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05833 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05834 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05835 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05836 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05837 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 05838 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05839 #endif 05840 05841 #else 05842 *output0 = My_OutputLut[((ako0 * paNewVal0[0] + 05843 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05844 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05845 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 05846 paNewVal0++; 05847 *output1 = My_OutputLut[((ako0 * paNewVal0[0] + 05848 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05849 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05850 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 05851 paNewVal0++; 05852 *output2 = My_OutputLut[((ako0 * paNewVal0[0] + 05853 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05854 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05855 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 05856 #if LH_DATA_OUT_COUNT_4 05857 paNewVal0++; 05858 *output3 = My_OutputLut[((ako0 * paNewVal0[0] + 05859 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05860 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] + 05861 ein_regg * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 05862 #endif 05863 #endif 05864 05865 #else 05866 __asm { 05867 mov eax, paNewVal0 05868 05869 mov ebx, ako0 05870 movq mm5, MMXTab [ebx*8] 05871 #ifdef Test_mode 05872 movq TestRam,mm5 05873 #endif 05874 punpcklbw mm1,[eax] 05875 mov ebx, ako1 05876 psrlw mm1,8 05877 #ifdef Test_mode 05878 movq TestRam,mm1 05879 #endif 05880 05881 pmullw mm5,mm1 05882 movq mm6, MMXTab [ebx*8] 05883 #ifdef Test_mode 05884 movq TestRam,mm6 05885 #endif 05886 punpcklbw mm2,[eax+(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 05887 mov ebx, ako2 05888 psrlw mm2,8 05889 #ifdef Test_mode 05890 movq TestRam,mm2 05891 #endif 05892 pmullw mm6,mm2 05893 05894 movq mm7, MMXTab [ebx*8] 05895 paddusw mm5,mm6 05896 #ifdef Test_mode 05897 movq TestRam,mm7 05898 #endif 05899 punpcklbw mm1,[eax+(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 05900 mov ebx, ein_regg 05901 psrlw mm1,8 05902 #ifdef Test_mode 05903 movq TestRam,mm1 05904 #endif 05905 pmullw mm7,mm1 05906 05907 movq mm6, MMXTab [ebx*8] 05908 paddusw mm5,mm7 05909 #ifdef Test_mode 05910 movq TestRam,mm7 05911 #endif 05912 punpcklbw mm2,[eax+(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 05913 psrlw mm2,8 05914 #ifdef Test_mode 05915 movq TestRam,mm2 05916 #endif 05917 pmullw mm6,mm2 05918 paddusw mm5,mm6 05919 #ifdef Test_mode 05920 movq TestRam,mm6 05921 #endif 05922 05923 05924 xor eax,eax 05925 psrlw mm5,LH_DATA_SHR 05926 movq ak,mm5 05927 05928 mov ax,ak 05929 mov esi,My_OutputLut 05930 mov al,BYTE PTR[eax+esi] 05931 mov edi,output0 05932 mov [edi], al 05933 mov ax,ak+2 05934 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 05935 mov edi,output1 05936 mov [edi], al 05937 mov ax,ak+4 05938 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 05939 mov edi,output2 05940 mov [edi], al 05941 #if LH_DATA_OUT_COUNT_4 05942 mov ax,ak+6 05943 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 05944 mov edi,output3 05945 mov [edi], al 05946 #endif 05947 05948 05949 } 05950 #endif 05951 } 05952 else 05953 { 05954 ako0 = (LH_ADR_BEREICH_SEL) - ein_regr; 05955 ako1 = ein_regr - ein_regg; 05956 ako2 = ein_regg - ein_regb; 05957 #if LH_LUT_DATA_SIZE_16 05958 #if LH_DATA_OUT_SIZE_16 05959 05960 aVal = (ako0 * paNewVal0[0] + 05961 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05962 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05963 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05964 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05965 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05966 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05967 aVal = (aVal >> ( LH_DATA_SHR )) + ( 0 << LH_ADR_BREIT_AUS_LUT ); 05968 *output0 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05969 05970 paNewVal0++; 05971 aVal = (ako0 * paNewVal0[0] + 05972 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05973 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05974 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05975 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05976 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05977 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05978 aVal = (aVal >> ( LH_DATA_SHR )) + ( 1 << LH_ADR_BREIT_AUS_LUT ); 05979 *output1 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05980 05981 paNewVal0++; 05982 aVal = (ako0 * paNewVal0[0] + 05983 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05984 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05985 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05986 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05987 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 05988 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 05989 aVal = (aVal >> ( LH_DATA_SHR )) + ( 2 << LH_ADR_BREIT_AUS_LUT ); 05990 *output2 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 05991 05992 #if LH_DATA_OUT_COUNT_4 05993 paNewVal0++; 05994 aVal = (ako0 * paNewVal0[0] + 05995 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05996 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 05997 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)]); 05998 aVal = aVal + ( aVal >> ( LH_LUT_DATA_SHR )); 05999 aVal = aVal - ( aVal >> ( LH_ADR_BREIT_AUS_LUT )); 06000 ko = (aVal>>LH_DATA_SHR_CORR) & ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR))-1 ); 06001 aVal = (aVal >> ( LH_DATA_SHR )) + ( 3 << LH_ADR_BREIT_AUS_LUT ); 06002 *output3 = (LH_DATA_OUT_TYPE)((My_OutputLut[aVal] * ( (1<<( LH_DATA_SHR - LH_DATA_SHR_CORR )) - ko ) + My_OutputLut[aVal +1] * ko)>>(LH_DATA_SHR - LH_DATA_SHR_CORR) ); 06003 #endif 06004 06005 #else 06006 *output0 = My_OutputLut[((ako0 * paNewVal0[0] + 06007 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 06008 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 06009 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (0<<LH_ADR_BREIT_AUS_LUT)]>>8; 06010 paNewVal0++; 06011 *output1 = My_OutputLut[((ako0 * paNewVal0[0] + 06012 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 06013 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 06014 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (1<<LH_ADR_BREIT_AUS_LUT)]>>8; 06015 paNewVal0++; 06016 *output2 = My_OutputLut[((ako0 * paNewVal0[0] + 06017 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 06018 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 06019 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (2<<LH_ADR_BREIT_AUS_LUT)]>>8; 06020 #if LH_DATA_OUT_COUNT_4 06021 paNewVal0++; 06022 *output3 = My_OutputLut[((ako0 * paNewVal0[0] + 06023 ako1 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 06024 ako2 * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] + 06025 ein_regb * paNewVal0[(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)])>>LH_DATA_SHR) + (3<<LH_ADR_BREIT_AUS_LUT)]>>8; 06026 #endif 06027 #endif 06028 06029 #else 06030 __asm { 06031 mov eax, paNewVal0 06032 06033 mov ebx, ako0 06034 movq mm5, MMXTab [ebx*8] 06035 #ifdef Test_mode 06036 movq TestRam,mm5 06037 #endif 06038 punpcklbw mm1,[eax] 06039 mov ebx, ako1 06040 psrlw mm1,8 06041 #ifdef Test_mode 06042 movq TestRam,mm1 06043 #endif 06044 06045 pmullw mm5,mm1 06046 movq mm6, MMXTab [ebx*8] 06047 #ifdef Test_mode 06048 movq TestRam,mm6 06049 #endif 06050 punpcklbw mm2,[eax+(((((1 << LH_BIT_BREIT_ADR) | 0) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 06051 mov ebx, ako2 06052 psrlw mm2,8 06053 #ifdef Test_mode 06054 movq TestRam,mm2 06055 #endif 06056 pmullw mm6,mm2 06057 06058 movq mm7, MMXTab [ebx*8] 06059 paddusw mm5,mm6 06060 #ifdef Test_mode 06061 movq TestRam,mm7 06062 #endif 06063 punpcklbw mm1,[eax+(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 0) * LH_DATA_OUT_COUNT)] 06064 mov ebx, ein_regb 06065 psrlw mm1,8 06066 #ifdef Test_mode 06067 movq TestRam,mm1 06068 #endif 06069 pmullw mm7,mm1 06070 06071 movq mm6, MMXTab [ebx*8] 06072 paddusw mm5,mm7 06073 #ifdef Test_mode 06074 movq TestRam,mm7 06075 #endif 06076 punpcklbw mm2,[eax+(((((1 << LH_BIT_BREIT_ADR) | 1) << LH_BIT_BREIT_ADR) | 1) * LH_DATA_OUT_COUNT)] 06077 psrlw mm2,8 06078 #ifdef Test_mode 06079 movq TestRam,mm2 06080 #endif 06081 pmullw mm6,mm2 06082 paddusw mm5,mm6 06083 #ifdef Test_mode 06084 movq TestRam,mm6 06085 #endif 06086 06087 06088 xor eax,eax 06089 psrlw mm5,LH_DATA_SHR 06090 movq ak,mm5 06091 06092 mov ax,ak 06093 mov esi,My_OutputLut 06094 mov al,BYTE PTR[eax+esi] 06095 mov edi,output0 06096 mov [edi], al 06097 mov ax,ak+2 06098 mov al,BYTE PTR[eax+esi+(1<<LH_ADR_BREIT_AUS_LUT)] 06099 mov edi,output1 06100 mov [edi], al 06101 mov ax,ak+4 06102 mov al,BYTE PTR[eax+esi+(2<<LH_ADR_BREIT_AUS_LUT)] 06103 mov edi,output2 06104 mov [edi], al 06105 #if LH_DATA_OUT_COUNT_4 06106 mov ax,ak+6 06107 mov al,BYTE PTR[eax+esi+(3<<LH_ADR_BREIT_AUS_LUT)] 06108 mov edi,output3 06109 mov [edi], al 06110 #endif 06111 06112 06113 } 06114 #endif 06115 } 06116 } 06117 } 06118 #if LH_DATA_OUT_SIZE_16 && ! LH_LUT_DATA_SIZE_16 06119 *output0 |= (*output0 << 8); 06120 *output1 |= (*output1 << 8); 06121 *output2 |= (*output2 << 8); 06122 #if LH_DATA_OUT_COUNT_4 06123 *output3 |= (*output3 << 8); 06124 #endif 06125 #endif 06126 06127 if (Mode == LH_CALC_ENGINE_P_TO_P) 06128 { 06129 while (--i) 06130 { 06131 input0 += inputOffset; 06132 input1 += inputOffset; 06133 input2 += inputOffset; 06134 output0 += outputOffset; 06135 output1 += outputOffset; 06136 output2 += outputOffset; 06137 #if LH_DATA_OUT_COUNT_4 06138 output3 += outputOffset; 06139 #endif 06140 06141 if ((*input0 ^ ein_cache[0]) || (*input1 ^ ein_cache[1]) || (*input2 ^ ein_cache[2])) 06142 { 06143 break; 06144 } 06145 *output0 = output0[-outputOffset]; 06146 *output1 = output1[-outputOffset]; 06147 *output2 = output2[-outputOffset]; 06148 #if LH_DATA_OUT_COUNT_4 06149 *output3 = output3[-outputOffset]; 06150 #endif 06151 } 06152 } 06153 else if (Mode == LH_CALC_ENGINE_P_TO_U) 06154 { 06155 #if LH_DATA_OUT_COUNT_4 06156 *output4 &= Mask; 06157 #else 06158 *output3 &= Mask; 06159 #endif 06160 while (--i) 06161 { 06162 input0 += inputOffset; 06163 input1 += inputOffset; 06164 input2 += inputOffset; 06165 output0 += outputOffset; 06166 output1 += outputOffset; 06167 output2 += outputOffset; 06168 output3 += outputOffset; 06169 #if LH_DATA_OUT_COUNT_4 06170 output4 += outputOffset; 06171 #endif 06172 if ((*input0 ^ ein_cache[0]) || (*input1 ^ ein_cache[1]) || (*input2 ^ ein_cache[2])) 06173 { 06174 break; 06175 } 06176 *output0 = output0[-outputOffset]; 06177 *output1 = output1[-outputOffset]; 06178 *output2 = output2[-outputOffset]; 06179 #if LH_DATA_OUT_COUNT_4 06180 *output3 = output3[-outputOffset]; 06181 *output4 &= Mask; 06182 #else 06183 *output3 &= Mask; 06184 #endif 06185 } 06186 } 06187 else 06188 { 06189 #if LH_DATA_OUT_COUNT_4 06190 *output4 = (LH_DATA_OUT_TYPE)*input3; 06191 #else 06192 *output3 = (LH_DATA_OUT_TYPE)*input3; 06193 #endif 06194 while (--i) 06195 { /*U_TO_U*/ 06196 input0 += inputOffset; 06197 input1 += inputOffset; 06198 input2 += inputOffset; 06199 input3 += inputOffset; 06200 06201 output0 += outputOffset; 06202 output1 += outputOffset; 06203 output2 += outputOffset; 06204 output3 += outputOffset; 06205 #if LH_DATA_OUT_COUNT_4 06206 output4 += outputOffset; 06207 #endif 06208 if ((*input0 ^ ein_cache[0]) || (*input1 ^ ein_cache[1]) || (*input2 ^ ein_cache[2])) 06209 { 06210 break; 06211 } 06212 *output0 = output0[-outputOffset]; 06213 *output1 = output1[-outputOffset]; 06214 *output2 = output2[-outputOffset]; 06215 #if LH_DATA_OUT_COUNT_4 06216 *output3 = output3[-outputOffset]; 06217 *output4 = (LH_DATA_OUT_TYPE)*input3; 06218 #else 06219 *output3 = (LH_DATA_OUT_TYPE)*input3; 06220 #endif 06221 } 06222 } 06223 } 06224 if (--LineCount) 06225 { 06226 j++; 06227 input0 = (LH_DATA_IN_TYPE *)((LH_UINT8 *)calcParam->inputData[0] + j * calcParam->cmInputBytesPerLine); 06228 input1 = (LH_DATA_IN_TYPE *)((LH_UINT8 *)calcParam->inputData[1] + j * calcParam->cmInputBytesPerLine); 06229 input2 = (LH_DATA_IN_TYPE *)((LH_UINT8 *)calcParam->inputData[2] + j * calcParam->cmInputBytesPerLine); 06230 input3 = (LH_DATA_IN_TYPE *)((LH_UINT8 *)calcParam->inputData[3] + j * calcParam->cmInputBytesPerLine); 06231 06232 output0 = (LH_DATA_OUT_TYPE *)((LH_UINT8 *)calcParam->outputData[0] + j * calcParam->cmOutputBytesPerLine); 06233 output1 = (LH_DATA_OUT_TYPE *)((LH_UINT8 *)calcParam->outputData[1] + j * calcParam->cmOutputBytesPerLine); 06234 output2 = (LH_DATA_OUT_TYPE *)((LH_UINT8 *)calcParam->outputData[2] + j * calcParam->cmOutputBytesPerLine); 06235 output3 = (LH_DATA_OUT_TYPE *)((LH_UINT8 *)calcParam->outputData[3] + j * calcParam->cmOutputBytesPerLine); 06236 #if LH_DATA_OUT_COUNT_4 06237 output4 = (LH_DATA_OUT_TYPE *)((LH_UINT8 *)calcParam->outputData[4] + j * calcParam->cmOutputBytesPerLine); 06238 #endif 06239 } 06240 } 06241 __asm { 06242 emms 06243 frstor bFPUState 06244 } 06245 LH_END_PROC(LH_CALC_PROC_NAME) 06246 return 0; 06247 } 06248 #endif 06249 #undef LH_CALC_PROC_NAME

Generated on Sat May 15 19:39:52 2004 for test by doxygen 1.3.7