--- old/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BC.c 2020-05-20 18:02:21.016781408 -0700 +++ new/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BC.c 2020-05-20 18:02:20.628773959 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -71,528 +71,7 @@ #define FILTER_BITS 8 /***************************************************************/ -#ifdef __sparc /* for SPARC, using floating-point multiplies is faster */ - -#undef FILTER_ELEM_BITS -#define FILTER_ELEM_BITS 4 - -#ifdef MLIB_USE_FTOI_CLAMPING - -#define SAT8(DST) \ - DST = ((mlib_s32)(val0 - sat) >> 24) ^ 0x80 - -#else - -#define SAT8(DST) \ - val0 -= sat; \ - if (val0 >= MLIB_S32_MAX) \ - DST = MLIB_U8_MAX; \ - else if (val0 <= MLIB_S32_MIN) \ - DST = MLIB_U8_MIN; \ - else \ - DST = ((mlib_s32)val0 >> 24) ^ 0x80 - -#endif /* MLIB_USE_FTOI_CLAMPING */ - -/***************************************************************/ -mlib_status FUN_NAME(1ch)(mlib_affine_param *param) -{ - DECLAREVAR_BC(); - DTYPE *dstLineEnd; - mlib_d64 sat = (mlib_d64) 0x7F800000; - const mlib_f32 *mlib_filters_table; - - if (filter == MLIB_BICUBIC) { - mlib_filters_table = mlib_filters_u8f_bc; - } - else { - mlib_filters_table = mlib_filters_u8f_bc2; - } - - for (j = yStart; j <= yFinish; j++) { - mlib_d64 xf0, xf1, xf2, xf3; - mlib_d64 yf0, yf1, yf2, yf3; - mlib_d64 c0, c1, c2, c3, val0; - mlib_s32 filterpos; - mlib_f32 *fptr; - mlib_u8 s0, s1, s2, s3; - - CLIP(1); - dstLineEnd = (DTYPE *) dstData + xRight; - - filterpos = (X >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - xf0 = fptr[0]; - xf1 = fptr[1]; - xf2 = fptr[2]; - xf3 = fptr[3]; - - filterpos = (Y >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - yf0 = fptr[0]; - yf1 = fptr[1]; - yf2 = fptr[2]; - yf3 = fptr[3]; - - xSrc = (X >> MLIB_SHIFT) - 1; - ySrc = (Y >> MLIB_SHIFT) - 1; - - srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + xSrc; - s0 = srcPixelPtr[0]; - s1 = srcPixelPtr[1]; - s2 = srcPixelPtr[2]; - s3 = srcPixelPtr[3]; - -#ifdef __SUNPRO_C -#pragma pipeloop(0) -#endif /* __SUNPRO_C */ - for (; dstPixelPtr <= (dstLineEnd - 1); dstPixelPtr++) { - X += dX; - Y += dY; - - c0 = (mlib_U82D64[s0] * xf0 + mlib_U82D64[s1] * xf1 + - mlib_U82D64[s2] * xf2 + mlib_U82D64[s3] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c1 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[1]] * xf1 + - mlib_U82D64[srcPixelPtr[2]] * xf2 + mlib_U82D64[srcPixelPtr[3]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c2 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[1]] * xf1 + - mlib_U82D64[srcPixelPtr[2]] * xf2 + mlib_U82D64[srcPixelPtr[3]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c3 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[1]] * xf1 + - mlib_U82D64[srcPixelPtr[2]] * xf2 + mlib_U82D64[srcPixelPtr[3]] * xf3); - - filterpos = (X >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - xf0 = fptr[0]; - xf1 = fptr[1]; - xf2 = fptr[2]; - xf3 = fptr[3]; - - val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); - - filterpos = (Y >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - yf0 = fptr[0]; - yf1 = fptr[1]; - yf2 = fptr[2]; - yf3 = fptr[3]; - - SAT8(dstPixelPtr[0]); - - xSrc = (X >> MLIB_SHIFT) - 1; - ySrc = (Y >> MLIB_SHIFT) - 1; - - srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + xSrc; - s0 = srcPixelPtr[0]; - s1 = srcPixelPtr[1]; - s2 = srcPixelPtr[2]; - s3 = srcPixelPtr[3]; - } - - c0 = (mlib_U82D64[s0] * xf0 + mlib_U82D64[s1] * xf1 + - mlib_U82D64[s2] * xf2 + mlib_U82D64[s3] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c1 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[1]] * xf1 + - mlib_U82D64[srcPixelPtr[2]] * xf2 + mlib_U82D64[srcPixelPtr[3]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c2 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[1]] * xf1 + - mlib_U82D64[srcPixelPtr[2]] * xf2 + mlib_U82D64[srcPixelPtr[3]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c3 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[1]] * xf1 + - mlib_U82D64[srcPixelPtr[2]] * xf2 + mlib_U82D64[srcPixelPtr[3]] * xf3); - - val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); - - SAT8(dstPixelPtr[0]); - } - - return MLIB_SUCCESS; -} - -/***************************************************************/ -mlib_status FUN_NAME(2ch)(mlib_affine_param *param) -{ - DECLAREVAR_BC(); - DTYPE *dstLineEnd; - mlib_d64 sat = (mlib_d64) 0x7F800000; - const mlib_f32 *mlib_filters_table; - - if (filter == MLIB_BICUBIC) { - mlib_filters_table = mlib_filters_u8f_bc; - } - else { - mlib_filters_table = mlib_filters_u8f_bc2; - } - - for (j = yStart; j <= yFinish; j++) { - mlib_d64 xf0, xf1, xf2, xf3; - mlib_d64 yf0, yf1, yf2, yf3; - mlib_d64 c0, c1, c2, c3, val0; - mlib_s32 filterpos, k; - mlib_f32 *fptr; - mlib_u8 s0, s1, s2, s3; - - CLIP(2); - dstLineEnd = (DTYPE *) dstData + 2 * xRight; - - for (k = 0; k < 2; k++) { - mlib_s32 X1 = X; - mlib_s32 Y1 = Y; - DTYPE *dPtr = dstPixelPtr + k; - - filterpos = (X1 >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - xf0 = fptr[0]; - xf1 = fptr[1]; - xf2 = fptr[2]; - xf3 = fptr[3]; - - filterpos = (Y1 >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - yf0 = fptr[0]; - yf1 = fptr[1]; - yf2 = fptr[2]; - yf3 = fptr[3]; - - xSrc = (X1 >> MLIB_SHIFT) - 1; - ySrc = (Y1 >> MLIB_SHIFT) - 1; - - srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + 2 * xSrc + k; - s0 = srcPixelPtr[0]; - s1 = srcPixelPtr[2]; - s2 = srcPixelPtr[4]; - s3 = srcPixelPtr[6]; - -#ifdef __SUNPRO_C -#pragma pipeloop(0) -#endif /* __SUNPRO_C */ - for (; dPtr <= (dstLineEnd - 1); dPtr += 2) { - X1 += dX; - Y1 += dY; - - c0 = (mlib_U82D64[s0] * xf0 + mlib_U82D64[s1] * xf1 + - mlib_U82D64[s2] * xf2 + mlib_U82D64[s3] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c1 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[2]] * xf1 + - mlib_U82D64[srcPixelPtr[4]] * xf2 + mlib_U82D64[srcPixelPtr[6]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c2 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[2]] * xf1 + - mlib_U82D64[srcPixelPtr[4]] * xf2 + mlib_U82D64[srcPixelPtr[6]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c3 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[2]] * xf1 + - mlib_U82D64[srcPixelPtr[4]] * xf2 + mlib_U82D64[srcPixelPtr[6]] * xf3); - - filterpos = (X1 >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - xf0 = fptr[0]; - xf1 = fptr[1]; - xf2 = fptr[2]; - xf3 = fptr[3]; - - val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); - - filterpos = (Y1 >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - yf0 = fptr[0]; - yf1 = fptr[1]; - yf2 = fptr[2]; - yf3 = fptr[3]; - - SAT8(dPtr[0]); - - xSrc = (X1 >> MLIB_SHIFT) - 1; - ySrc = (Y1 >> MLIB_SHIFT) - 1; - - srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + 2 * xSrc + k; - s0 = srcPixelPtr[0]; - s1 = srcPixelPtr[2]; - s2 = srcPixelPtr[4]; - s3 = srcPixelPtr[6]; - } - - c0 = (mlib_U82D64[s0] * xf0 + mlib_U82D64[s1] * xf1 + - mlib_U82D64[s2] * xf2 + mlib_U82D64[s3] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c1 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[2]] * xf1 + - mlib_U82D64[srcPixelPtr[4]] * xf2 + mlib_U82D64[srcPixelPtr[6]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c2 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[2]] * xf1 + - mlib_U82D64[srcPixelPtr[4]] * xf2 + mlib_U82D64[srcPixelPtr[6]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c3 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[2]] * xf1 + - mlib_U82D64[srcPixelPtr[4]] * xf2 + mlib_U82D64[srcPixelPtr[6]] * xf3); - - val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); - - SAT8(dPtr[0]); - } - } - - return MLIB_SUCCESS; -} - -/***************************************************************/ -mlib_status FUN_NAME(3ch)(mlib_affine_param *param) -{ - DECLAREVAR_BC(); - DTYPE *dstLineEnd; - mlib_d64 sat = (mlib_d64) 0x7F800000; - const mlib_f32 *mlib_filters_table; - - if (filter == MLIB_BICUBIC) { - mlib_filters_table = mlib_filters_u8f_bc; - } - else { - mlib_filters_table = mlib_filters_u8f_bc2; - } - - for (j = yStart; j <= yFinish; j++) { - mlib_d64 xf0, xf1, xf2, xf3; - mlib_d64 yf0, yf1, yf2, yf3; - mlib_d64 c0, c1, c2, c3, val0; - mlib_s32 filterpos, k; - mlib_f32 *fptr; - mlib_u8 s0, s1, s2, s3; - - CLIP(3); - dstLineEnd = (DTYPE *) dstData + 3 * xRight; - - for (k = 0; k < 3; k++) { - mlib_s32 X1 = X; - mlib_s32 Y1 = Y; - DTYPE *dPtr = dstPixelPtr + k; - - filterpos = (X1 >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - xf0 = fptr[0]; - xf1 = fptr[1]; - xf2 = fptr[2]; - xf3 = fptr[3]; - - filterpos = (Y1 >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - yf0 = fptr[0]; - yf1 = fptr[1]; - yf2 = fptr[2]; - yf3 = fptr[3]; - - xSrc = (X1 >> MLIB_SHIFT) - 1; - ySrc = (Y1 >> MLIB_SHIFT) - 1; - - srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + 3 * xSrc + k; - s0 = srcPixelPtr[0]; - s1 = srcPixelPtr[3]; - s2 = srcPixelPtr[6]; - s3 = srcPixelPtr[9]; - -#ifdef __SUNPRO_C -#pragma pipeloop(0) -#endif /* __SUNPRO_C */ - for (; dPtr <= (dstLineEnd - 1); dPtr += 3) { - X1 += dX; - Y1 += dY; - - c0 = (mlib_U82D64[s0] * xf0 + mlib_U82D64[s1] * xf1 + - mlib_U82D64[s2] * xf2 + mlib_U82D64[s3] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c1 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[3]] * xf1 + - mlib_U82D64[srcPixelPtr[6]] * xf2 + mlib_U82D64[srcPixelPtr[9]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c2 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[3]] * xf1 + - mlib_U82D64[srcPixelPtr[6]] * xf2 + mlib_U82D64[srcPixelPtr[9]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c3 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[3]] * xf1 + - mlib_U82D64[srcPixelPtr[6]] * xf2 + mlib_U82D64[srcPixelPtr[9]] * xf3); - - filterpos = (X1 >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - xf0 = fptr[0]; - xf1 = fptr[1]; - xf2 = fptr[2]; - xf3 = fptr[3]; - - val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); - - filterpos = (Y1 >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - yf0 = fptr[0]; - yf1 = fptr[1]; - yf2 = fptr[2]; - yf3 = fptr[3]; - - SAT8(dPtr[0]); - - xSrc = (X1 >> MLIB_SHIFT) - 1; - ySrc = (Y1 >> MLIB_SHIFT) - 1; - - srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + 3 * xSrc + k; - s0 = srcPixelPtr[0]; - s1 = srcPixelPtr[3]; - s2 = srcPixelPtr[6]; - s3 = srcPixelPtr[9]; - } - - c0 = (mlib_U82D64[s0] * xf0 + mlib_U82D64[s1] * xf1 + - mlib_U82D64[s2] * xf2 + mlib_U82D64[s3] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c1 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[3]] * xf1 + - mlib_U82D64[srcPixelPtr[6]] * xf2 + mlib_U82D64[srcPixelPtr[9]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c2 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[3]] * xf1 + - mlib_U82D64[srcPixelPtr[6]] * xf2 + mlib_U82D64[srcPixelPtr[9]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c3 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[3]] * xf1 + - mlib_U82D64[srcPixelPtr[6]] * xf2 + mlib_U82D64[srcPixelPtr[9]] * xf3); - - val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); - - SAT8(dPtr[0]); - } - } - - return MLIB_SUCCESS; -} - -/***************************************************************/ -mlib_status FUN_NAME(4ch)(mlib_affine_param *param) -{ - DECLAREVAR_BC(); - DTYPE *dstLineEnd; - mlib_d64 sat = (mlib_d64) 0x7F800000; - const mlib_f32 *mlib_filters_table; - - if (filter == MLIB_BICUBIC) { - mlib_filters_table = mlib_filters_u8f_bc; - } - else { - mlib_filters_table = mlib_filters_u8f_bc2; - } - - for (j = yStart; j <= yFinish; j++) { - mlib_d64 xf0, xf1, xf2, xf3; - mlib_d64 yf0, yf1, yf2, yf3; - mlib_d64 c0, c1, c2, c3, val0; - mlib_s32 filterpos, k; - mlib_f32 *fptr; - mlib_u8 s0, s1, s2, s3; - - CLIP(4); - dstLineEnd = (DTYPE *) dstData + 4 * xRight; - - for (k = 0; k < 4; k++) { - mlib_s32 X1 = X; - mlib_s32 Y1 = Y; - DTYPE *dPtr = dstPixelPtr + k; - - filterpos = (X1 >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - xf0 = fptr[0]; - xf1 = fptr[1]; - xf2 = fptr[2]; - xf3 = fptr[3]; - - filterpos = (Y1 >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - yf0 = fptr[0]; - yf1 = fptr[1]; - yf2 = fptr[2]; - yf3 = fptr[3]; - - xSrc = (X1 >> MLIB_SHIFT) - 1; - ySrc = (Y1 >> MLIB_SHIFT) - 1; - - srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + 4 * xSrc + k; - s0 = srcPixelPtr[0]; - s1 = srcPixelPtr[4]; - s2 = srcPixelPtr[8]; - s3 = srcPixelPtr[12]; - -#ifdef __SUNPRO_C -#pragma pipeloop(0) -#endif /* __SUNPRO_C */ - for (; dPtr <= (dstLineEnd - 1); dPtr += 4) { - X1 += dX; - Y1 += dY; - - c0 = (mlib_U82D64[s0] * xf0 + mlib_U82D64[s1] * xf1 + - mlib_U82D64[s2] * xf2 + mlib_U82D64[s3] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c1 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[4]] * xf1 + - mlib_U82D64[srcPixelPtr[8]] * xf2 + mlib_U82D64[srcPixelPtr[12]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c2 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[4]] * xf1 + - mlib_U82D64[srcPixelPtr[8]] * xf2 + mlib_U82D64[srcPixelPtr[12]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c3 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[4]] * xf1 + - mlib_U82D64[srcPixelPtr[8]] * xf2 + mlib_U82D64[srcPixelPtr[12]] * xf3); - - filterpos = (X1 >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - xf0 = fptr[0]; - xf1 = fptr[1]; - xf2 = fptr[2]; - xf3 = fptr[3]; - - val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); - - filterpos = (Y1 >> FILTER_SHIFT) & FILTER_MASK; - fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); - - yf0 = fptr[0]; - yf1 = fptr[1]; - yf2 = fptr[2]; - yf3 = fptr[3]; - - SAT8(dPtr[0]); - - xSrc = (X1 >> MLIB_SHIFT) - 1; - ySrc = (Y1 >> MLIB_SHIFT) - 1; - - srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + 4 * xSrc + k; - s0 = srcPixelPtr[0]; - s1 = srcPixelPtr[4]; - s2 = srcPixelPtr[8]; - s3 = srcPixelPtr[12]; - } - - c0 = (mlib_U82D64[s0] * xf0 + mlib_U82D64[s1] * xf1 + - mlib_U82D64[s2] * xf2 + mlib_U82D64[s3] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c1 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[4]] * xf1 + - mlib_U82D64[srcPixelPtr[8]] * xf2 + mlib_U82D64[srcPixelPtr[12]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c2 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[4]] * xf1 + - mlib_U82D64[srcPixelPtr[8]] * xf2 + mlib_U82D64[srcPixelPtr[12]] * xf3); - srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); - c3 = (mlib_U82D64[srcPixelPtr[0]] * xf0 + mlib_U82D64[srcPixelPtr[4]] * xf1 + - mlib_U82D64[srcPixelPtr[8]] * xf2 + mlib_U82D64[srcPixelPtr[12]] * xf3); - - val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); - - SAT8(dPtr[0]); - } - } - - return MLIB_SUCCESS; -} - -#else /* for x86, using integer multiplies is faster */ +/* for x86, using integer multiplies is faster */ #define SHIFT_X 12 #define ROUND_X 0 /* (1 << (SHIFT_X - 1)) */ @@ -670,9 +149,6 @@ s2 = srcPixelPtr[2]; s3 = srcPixelPtr[3]; -#ifdef __SUNPRO_C -#pragma pipeloop(0) -#endif /* __SUNPRO_C */ for (; dstPixelPtr <= (dstLineEnd - 1); dstPixelPtr++) { X += dX; Y += dY; @@ -792,9 +268,6 @@ s2 = srcPixelPtr[4]; s3 = srcPixelPtr[6]; -#ifdef __SUNPRO_C -#pragma pipeloop(0) -#endif /* __SUNPRO_C */ for (; dPtr <= (dstLineEnd - 1); dPtr += 2) { X1 += dX; Y1 += dY; @@ -915,9 +388,6 @@ s2 = srcPixelPtr[6]; s3 = srcPixelPtr[9]; -#ifdef __SUNPRO_C -#pragma pipeloop(0) -#endif /* __SUNPRO_C */ for (; dPtr <= (dstLineEnd - 1); dPtr += 3) { X1 += dX; Y1 += dY; @@ -1038,9 +508,6 @@ s2 = srcPixelPtr[8]; s3 = srcPixelPtr[12]; -#ifdef __SUNPRO_C -#pragma pipeloop(0) -#endif /* __SUNPRO_C */ for (; dPtr <= (dstLineEnd - 1); dPtr += 4) { X1 += dX; Y1 += dY; @@ -1106,6 +573,4 @@ return MLIB_SUCCESS; } -#endif /* __sparc ( for SPARC, using floating-point multiplies is faster ) */ - /***************************************************************/