mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2026-04-30 19:09:18 +08:00
Use ptrdiff_t for buffer offsets
Use ptrdiff_t instead of intptr_t for buffer offsets, such as stride, width_temp, and src_step*. Change-Id: I64e6701fa71ab59c94325a6dad8762d040035208 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/7800070 Reviewed-by: Frank Barchard <fbarchard@google.com> Commit-Queue: Wan-Teh Chang <wtc@google.com>
This commit is contained in:
parent
9a0226cb3f
commit
b438739c8b
@ -101,11 +101,11 @@ void TransposeWx8_SSSE3(const uint8_t* src,
|
||||
"movq %%xmm7,(%1,%4) \n"
|
||||
"lea (%1,%4,2),%1 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"r"((intptr_t)(dst_stride)) // %4
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(width) // %2
|
||||
: "r"((ptrdiff_t)(src_stride)), // %3
|
||||
"r"((ptrdiff_t)(dst_stride)) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
@ -243,11 +243,11 @@ void TransposeWx8_Fast_SSSE3(const uint8_t* src,
|
||||
"movq %%xmm15,(%1,%4) \n"
|
||||
"lea (%1,%4,2),%1 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"r"((intptr_t)(dst_stride)) // %4
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(width) // %2
|
||||
: "r"((ptrdiff_t)(src_stride)), // %3
|
||||
"r"((ptrdiff_t)(dst_stride)) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7", "xmm8", "xmm9", "xmm10", "xmm11", "xmm12", "xmm13", "xmm14",
|
||||
"xmm15");
|
||||
@ -356,13 +356,13 @@ void TransposeUVWx8_SSE2(const uint8_t* src,
|
||||
"movhpd %%xmm8,(%2,%6) \n"
|
||||
"lea (%2,%6,2),%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst_a), // %1
|
||||
"+r"(dst_b), // %2
|
||||
"+r"(width) // %3
|
||||
: "r"((intptr_t)(src_stride)), // %4
|
||||
"r"((intptr_t)(dst_stride_a)), // %5
|
||||
"r"((intptr_t)(dst_stride_b)) // %6
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst_a), // %1
|
||||
"+r"(dst_b), // %2
|
||||
"+r"(width) // %3
|
||||
: "r"((ptrdiff_t)(src_stride)), // %4
|
||||
"r"((ptrdiff_t)(dst_stride_a)), // %5
|
||||
"r"((ptrdiff_t)(dst_stride_b)) // %6
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7", "xmm8", "xmm9");
|
||||
}
|
||||
|
||||
@ -1913,9 +1913,9 @@ void ARGBToUVMatrixRow_SSSE3(const uint8_t* src_argb,
|
||||
#else
|
||||
"+rm"(width) // %3
|
||||
#endif
|
||||
: "r"((intptr_t)(src_stride_argb)), // %4
|
||||
"r"(c), // %5
|
||||
"m"(kShuffleAARRGGBB) // %6
|
||||
: "r"((ptrdiff_t)(src_stride_argb)), // %4
|
||||
"r"(c), // %5
|
||||
"m"(kShuffleAARRGGBB) // %6
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
@ -1988,9 +1988,9 @@ void ARGBToUVMatrixRow_AVX2(const uint8_t* src_argb,
|
||||
#else
|
||||
"+rm"(width) // %3
|
||||
#endif
|
||||
: "r"((intptr_t)(src_stride_argb)), // %4
|
||||
"r"(c), // %5
|
||||
"m"(kShuffleAARRGGBB) // %6
|
||||
: "r"((ptrdiff_t)(src_stride_argb)), // %4
|
||||
"r"(c), // %5
|
||||
"m"(kShuffleAARRGGBB) // %6
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
@ -2293,11 +2293,11 @@ void ARGBToUVMatrixRow_AVX512BW(const uint8_t* src_argb,
|
||||
#else
|
||||
"+rm"(width) // %3
|
||||
#endif
|
||||
: "r"((intptr_t)(src_stride_argb)), // %4
|
||||
"r"(c), // %5
|
||||
"m"(kShuffleAARRGGBB), // %6
|
||||
"m"(kPermdARGBToY_AVX512BW), // %7
|
||||
"m"(kPermdARGBToUV_AVX512BW) // %8
|
||||
: "r"((ptrdiff_t)(src_stride_argb)), // %4
|
||||
"r"(c), // %5
|
||||
"m"(kShuffleAARRGGBB), // %6
|
||||
"m"(kPermdARGBToY_AVX512BW), // %7
|
||||
"m"(kPermdARGBToUV_AVX512BW) // %8
|
||||
: "memory", "cc", "zmm0", "zmm1", "zmm2", "zmm3", "zmm4", "zmm5", "zmm6",
|
||||
"zmm7", "zmm16", "zmm17", "zmm18", "zmm19");
|
||||
}
|
||||
@ -4649,7 +4649,7 @@ static const uvec8 kShuffleMirror = {15u, 14u, 13u, 12u, 11u, 10u, 9u, 8u,
|
||||
7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u};
|
||||
|
||||
void MirrorRow_SSSE3(const uint8_t* src, uint8_t* dst, int width) {
|
||||
intptr_t temp_width = (intptr_t)(width);
|
||||
ptrdiff_t temp_width = (ptrdiff_t)(width);
|
||||
asm volatile("movdqa %3,%%xmm5 \n"
|
||||
|
||||
LABELALIGN
|
||||
@ -4670,7 +4670,7 @@ void MirrorRow_SSSE3(const uint8_t* src, uint8_t* dst, int width) {
|
||||
|
||||
#ifdef HAS_MIRRORROW_AVX2
|
||||
void MirrorRow_AVX2(const uint8_t* src, uint8_t* dst, int width) {
|
||||
intptr_t temp_width = (intptr_t)(width);
|
||||
ptrdiff_t temp_width = (ptrdiff_t)(width);
|
||||
asm volatile("vbroadcastf128 %3,%%ymm5 \n"
|
||||
|
||||
LABELALIGN
|
||||
@ -4697,7 +4697,7 @@ static const uvec8 kShuffleMirrorUV = {14u, 15u, 12u, 13u, 10u, 11u, 8u, 9u,
|
||||
6u, 7u, 4u, 5u, 2u, 3u, 0u, 1u};
|
||||
|
||||
void MirrorUVRow_SSSE3(const uint8_t* src_uv, uint8_t* dst_uv, int width) {
|
||||
intptr_t temp_width = (intptr_t)(width);
|
||||
ptrdiff_t temp_width = (ptrdiff_t)(width);
|
||||
asm volatile("movdqa %3,%%xmm5 \n"
|
||||
|
||||
LABELALIGN
|
||||
@ -4718,7 +4718,7 @@ void MirrorUVRow_SSSE3(const uint8_t* src_uv, uint8_t* dst_uv, int width) {
|
||||
|
||||
#ifdef HAS_MIRRORUVROW_AVX2
|
||||
void MirrorUVRow_AVX2(const uint8_t* src_uv, uint8_t* dst_uv, int width) {
|
||||
intptr_t temp_width = (intptr_t)(width);
|
||||
ptrdiff_t temp_width = (ptrdiff_t)(width);
|
||||
asm volatile("vbroadcastf128 %3,%%ymm5 \n"
|
||||
|
||||
LABELALIGN
|
||||
@ -4747,7 +4747,7 @@ void MirrorSplitUVRow_SSSE3(const uint8_t* src,
|
||||
uint8_t* dst_u,
|
||||
uint8_t* dst_v,
|
||||
int width) {
|
||||
intptr_t temp_width = (intptr_t)(width);
|
||||
ptrdiff_t temp_width = (ptrdiff_t)(width);
|
||||
asm volatile(
|
||||
"movdqa %4,%%xmm1 \n"
|
||||
"lea -0x10(%0,%3,2),%0 \n"
|
||||
@ -4786,7 +4786,7 @@ static const uvec8 kShuffleMirrorRGB1 = {
|
||||
void RGB24MirrorRow_SSSE3(const uint8_t* src_rgb24,
|
||||
uint8_t* dst_rgb24,
|
||||
int width) {
|
||||
intptr_t temp_width = (intptr_t)(width);
|
||||
ptrdiff_t temp_width = (ptrdiff_t)(width);
|
||||
src_rgb24 += width * 3 - 48;
|
||||
asm volatile(
|
||||
"movdqa %3,%%xmm4 \n"
|
||||
@ -4822,7 +4822,7 @@ void RGB24MirrorRow_SSSE3(const uint8_t* src_rgb24,
|
||||
#ifdef HAS_ARGBMIRRORROW_SSE2
|
||||
|
||||
void ARGBMirrorRow_SSE2(const uint8_t* src, uint8_t* dst, int width) {
|
||||
intptr_t temp_width = (intptr_t)(width);
|
||||
ptrdiff_t temp_width = (ptrdiff_t)(width);
|
||||
asm volatile("lea -0x10(%0,%2,4),%0 \n"
|
||||
|
||||
LABELALIGN
|
||||
@ -4846,7 +4846,7 @@ void ARGBMirrorRow_SSE2(const uint8_t* src, uint8_t* dst, int width) {
|
||||
// Shuffle table for reversing the bytes.
|
||||
static const ulvec32 kARGBShuffleMirror_AVX2 = {7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u};
|
||||
void ARGBMirrorRow_AVX2(const uint8_t* src, uint8_t* dst, int width) {
|
||||
intptr_t temp_width = (intptr_t)(width);
|
||||
ptrdiff_t temp_width = (ptrdiff_t)(width);
|
||||
asm volatile("vmovdqu %3,%%ymm5 \n"
|
||||
|
||||
LABELALIGN
|
||||
@ -6867,10 +6867,10 @@ void YUY2ToNVUVRow_SSE2(const uint8_t* src_yuy2,
|
||||
"lea 0x10(%1),%1 \n"
|
||||
"sub $0x10,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_uv), // %1
|
||||
"+r"(width) // %2
|
||||
: "r"((intptr_t)(stride_yuy2)) // %3
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_uv), // %1
|
||||
"+r"(width) // %2
|
||||
: "r"((ptrdiff_t)(stride_yuy2)) // %3
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3");
|
||||
}
|
||||
|
||||
@ -6906,11 +6906,11 @@ void YUY2ToUVRow_SSE2(const uint8_t* src_yuy2,
|
||||
"lea 0x8(%1),%1 \n"
|
||||
"sub $0x10,%3 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(width) // %3
|
||||
: "r"((intptr_t)(stride_yuy2)) // %4
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(width) // %3
|
||||
: "r"((ptrdiff_t)(stride_yuy2)) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm5");
|
||||
}
|
||||
|
||||
@ -7001,11 +7001,11 @@ void UYVYToUVRow_SSE2(const uint8_t* src_uyvy,
|
||||
"lea 0x8(%1),%1 \n"
|
||||
"sub $0x10,%3 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_uyvy), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(width) // %3
|
||||
: "r"((intptr_t)(stride_uyvy)) // %4
|
||||
: "+r"(src_uyvy), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(width) // %3
|
||||
: "r"((ptrdiff_t)(stride_uyvy)) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm5");
|
||||
}
|
||||
|
||||
@ -7092,10 +7092,10 @@ void YUY2ToNVUVRow_AVX2(const uint8_t* src_yuy2,
|
||||
"sub $0x20,%2 \n"
|
||||
"jg 1b \n"
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_uv), // %1
|
||||
"+r"(width) // %2
|
||||
: "r"((intptr_t)(stride_yuy2)) // %3
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_uv), // %1
|
||||
"+r"(width) // %2
|
||||
: "r"((ptrdiff_t)(stride_yuy2)) // %3
|
||||
: "memory", "cc", "xmm0", "xmm1");
|
||||
}
|
||||
|
||||
@ -7132,11 +7132,11 @@ void YUY2ToUVRow_AVX2(const uint8_t* src_yuy2,
|
||||
"sub $0x20,%3 \n"
|
||||
"jg 1b \n"
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(width) // %3
|
||||
: "r"((intptr_t)(stride_yuy2)) // %4
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(width) // %3
|
||||
: "r"((ptrdiff_t)(stride_yuy2)) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm5");
|
||||
}
|
||||
|
||||
@ -7232,11 +7232,11 @@ void UYVYToUVRow_AVX2(const uint8_t* src_uyvy,
|
||||
"sub $0x20,%3 \n"
|
||||
"jg 1b \n"
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_uyvy), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(width) // %3
|
||||
: "r"((intptr_t)(stride_uyvy)) // %4
|
||||
: "+r"(src_uyvy), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(width) // %3
|
||||
: "r"((ptrdiff_t)(stride_uyvy)) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm5");
|
||||
}
|
||||
|
||||
@ -8596,12 +8596,12 @@ void CumulativeSumToAverageRow_SSE2(const int32_t* topleft,
|
||||
"sub $0x1,%3 \n"
|
||||
"jge 10b \n"
|
||||
"19: \n"
|
||||
: "+r"(topleft), // %0
|
||||
"+r"(botleft), // %1
|
||||
"+r"(dst), // %2
|
||||
"+rm"(count) // %3
|
||||
: "r"((intptr_t)(width)), // %4
|
||||
"rm"(area) // %5
|
||||
: "+r"(topleft), // %0
|
||||
"+r"(botleft), // %1
|
||||
"+r"(dst), // %2
|
||||
"+rm"(count) // %3
|
||||
: "r"((ptrdiff_t)(width)), // %4
|
||||
"rm"(area) // %5
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6");
|
||||
}
|
||||
#endif // HAS_CUMULATIVESUMTOAVERAGEROW_SSE2
|
||||
@ -8614,7 +8614,7 @@ void ARGBAffineRow_SSE2(const uint8_t* src_argb,
|
||||
uint8_t* dst_argb,
|
||||
const float* src_dudv,
|
||||
int width) {
|
||||
intptr_t src_argb_stride_temp = src_argb_stride;
|
||||
ptrdiff_t src_argb_stride_temp = src_argb_stride;
|
||||
intptr_t temp;
|
||||
asm volatile(
|
||||
"movq (%3),%%xmm2 \n"
|
||||
@ -8766,11 +8766,11 @@ void InterpolateRow_SSSE3(uint8_t* dst_ptr,
|
||||
"jg 100b \n"
|
||||
|
||||
"99: \n"
|
||||
: "+r"(dst_ptr), // %0
|
||||
"+r"(src_ptr), // %1
|
||||
"+rm"(width), // %2
|
||||
"+r"(source_y_fraction) // %3
|
||||
: "r"((intptr_t)(src_stride)) // %4
|
||||
: "+r"(dst_ptr), // %0
|
||||
"+r"(src_ptr), // %1
|
||||
"+rm"(width), // %2
|
||||
"+r"(source_y_fraction) // %3
|
||||
: "r"(src_stride) // %4
|
||||
: "memory", "cc", "eax", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5");
|
||||
}
|
||||
#endif // HAS_INTERPOLATEROW_SSSE3
|
||||
@ -8844,11 +8844,11 @@ void InterpolateRow_AVX2(uint8_t* dst_ptr,
|
||||
|
||||
"99: \n"
|
||||
"vzeroupper \n"
|
||||
: "+r"(dst_ptr), // %0
|
||||
"+r"(src_ptr), // %1
|
||||
"+r"(width), // %2
|
||||
"+r"(source_y_fraction) // %3
|
||||
: "r"((intptr_t)(src_stride)) // %4
|
||||
: "+r"(dst_ptr), // %0
|
||||
"+r"(src_ptr), // %1
|
||||
"+r"(width), // %2
|
||||
"+r"(source_y_fraction) // %3
|
||||
: "r"(src_stride) // %4
|
||||
: "memory", "cc", "eax", "xmm0", "xmm1", "xmm2", "xmm4", "xmm5");
|
||||
}
|
||||
#endif // HAS_INTERPOLATEROW_AVX2
|
||||
@ -9678,12 +9678,12 @@ void HalfMergeUVRow_SSSE3(const uint8_t* src_u,
|
||||
"lea 0x10(%2),%2 \n"
|
||||
"sub $0x10,%3 \n" // 16 src pixels per loop
|
||||
"jg 1b \n"
|
||||
: "+r"(src_u), // %0
|
||||
"+r"(src_v), // %1
|
||||
"+r"(dst_uv), // %2
|
||||
"+r"(width) // %3
|
||||
: "r"((intptr_t)(src_stride_u)), // %4
|
||||
"r"((intptr_t)(src_stride_v)) // %5
|
||||
: "+r"(src_u), // %0
|
||||
"+r"(src_v), // %1
|
||||
"+r"(dst_uv), // %2
|
||||
"+r"(width) // %3
|
||||
: "r"((ptrdiff_t)(src_stride_u)), // %4
|
||||
"r"((ptrdiff_t)(src_stride_v)) // %5
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5");
|
||||
}
|
||||
|
||||
@ -9724,12 +9724,12 @@ void HalfMergeUVRow_AVX2(const uint8_t* src_u,
|
||||
"sub $0x20,%3 \n" // 32 src pixels per loop
|
||||
"jg 1b \n"
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_u), // %0
|
||||
"+r"(src_v), // %1
|
||||
"+r"(dst_uv), // %2
|
||||
"+r"(width) // %3
|
||||
: "r"((intptr_t)(src_stride_u)), // %4
|
||||
"r"((intptr_t)(src_stride_v)) // %5
|
||||
: "+r"(src_u), // %0
|
||||
"+r"(src_v), // %1
|
||||
"+r"(dst_uv), // %2
|
||||
"+r"(width) // %3
|
||||
: "r"((ptrdiff_t)(src_stride_u)), // %4
|
||||
"r"((ptrdiff_t)(src_stride_v)) // %5
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5");
|
||||
}
|
||||
|
||||
|
||||
@ -183,10 +183,10 @@ void ScaleRowDown2Box_SSSE3(const uint8_t* src_ptr,
|
||||
"lea 0x10(%1),%1 \n"
|
||||
"sub $0x10,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)) // %3
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride) // %3
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm5");
|
||||
}
|
||||
|
||||
@ -283,10 +283,10 @@ void ScaleRowDown2Box_AVX2(const uint8_t* src_ptr,
|
||||
"sub $0x20,%2 \n"
|
||||
"jg 1b \n"
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)) // %3
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride) // %3
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm5");
|
||||
}
|
||||
#endif // HAS_SCALEROWDOWN2_AVX2
|
||||
@ -326,7 +326,7 @@ void ScaleRowDown4Box_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width) {
|
||||
intptr_t stridex3;
|
||||
ptrdiff_t stridex3;
|
||||
asm volatile(
|
||||
"pcmpeqb %%xmm4,%%xmm4 \n"
|
||||
"pabsw %%xmm4,%%xmm5 \n"
|
||||
@ -367,11 +367,11 @@ void ScaleRowDown4Box_SSSE3(const uint8_t* src_ptr,
|
||||
"lea 0x8(%1),%1 \n"
|
||||
"sub $0x8,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width), // %2
|
||||
"=&r"(stridex3) // %3
|
||||
: "r"((intptr_t)(src_stride)) // %4
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width), // %2
|
||||
"=&r"(stridex3) // %3
|
||||
: "r"(src_stride) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5");
|
||||
}
|
||||
|
||||
@ -456,11 +456,11 @@ void ScaleRowDown4Box_AVX2(const uint8_t* src_ptr,
|
||||
"sub $0x10,%2 \n"
|
||||
"jg 1b \n"
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"r"((intptr_t)(src_stride * 3)) // %4
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"r"(src_stride * 3) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5");
|
||||
}
|
||||
#endif // HAS_SCALEROWDOWN4_AVX2
|
||||
@ -557,11 +557,11 @@ void ScaleRowDown34_1_Box_SSSE3(const uint8_t* src_ptr,
|
||||
"lea 0x18(%1),%1 \n"
|
||||
"sub $0x18,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"m"(kMadd21) // %4
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"m"(kMadd21) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
@ -625,11 +625,11 @@ void ScaleRowDown34_0_Box_SSSE3(const uint8_t* src_ptr,
|
||||
"lea 0x18(%1),%1 \n"
|
||||
"sub $0x18,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"m"(kMadd21) // %4
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"m"(kMadd21) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
@ -701,10 +701,10 @@ void ScaleRowDown38_2_Box_SSSE3(const uint8_t* src_ptr,
|
||||
"lea 0x6(%1),%1 \n"
|
||||
"sub $0x6,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)) // %3
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride) // %3
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6");
|
||||
}
|
||||
|
||||
@ -762,10 +762,10 @@ void ScaleRowDown38_3_Box_SSSE3(const uint8_t* src_ptr,
|
||||
"lea 0x6(%1),%1 \n"
|
||||
"sub $0x6,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)) // %3
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride) // %3
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
@ -935,11 +935,11 @@ void ScaleRowUp2_Bilinear_SSE2(const uint8_t* src_ptr,
|
||||
"lea 0x10(%1),%1 \n" // 8 sample to 16 sample
|
||||
"sub $0x10,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"r"((intptr_t)(dst_stride)) // %4
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"r"(dst_stride) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
@ -1084,12 +1084,12 @@ void ScaleRowUp2_Bilinear_12_SSSE3(const uint16_t* src_ptr,
|
||||
"lea 0x20(%1),%1 \n" // 8 sample to 16 sample
|
||||
"sub $0x10,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"r"((intptr_t)(dst_stride)), // %4
|
||||
"m"(kLinearShuffleFar) // %5
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"r"(dst_stride), // %4
|
||||
"m"(kLinearShuffleFar) // %5
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
@ -1246,11 +1246,11 @@ void ScaleRowUp2_Bilinear_16_SSE2(const uint16_t* src_ptr,
|
||||
"lea 0x10(%1),%1 \n" // 4 pixel to 8 pixel
|
||||
"sub $0x8,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"r"((intptr_t)(dst_stride)) // %4
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"r"(dst_stride) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
@ -1371,12 +1371,12 @@ void ScaleRowUp2_Bilinear_SSSE3(const uint8_t* src_ptr,
|
||||
"lea 0x10(%1),%1 \n" // 8 sample to 16 sample
|
||||
"sub $0x10,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"r"((intptr_t)(dst_stride)), // %4
|
||||
"m"(kLinearMadd31) // %5
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"r"(dst_stride), // %4
|
||||
"m"(kLinearMadd31) // %5
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
@ -1497,12 +1497,12 @@ void ScaleRowUp2_Bilinear_AVX2(const uint8_t* src_ptr,
|
||||
"sub $0x20,%2 \n"
|
||||
"jg 1b \n"
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"r"((intptr_t)(dst_stride)), // %4
|
||||
"m"(kLinearMadd31) // %5
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"r"(dst_stride), // %4
|
||||
"m"(kLinearMadd31) // %5
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
@ -1612,12 +1612,12 @@ void ScaleRowUp2_Bilinear_12_AVX2(const uint16_t* src_ptr,
|
||||
"sub $0x10,%2 \n"
|
||||
"jg 1b \n"
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"r"((intptr_t)(dst_stride)), // %4
|
||||
"m"(kLinearShuffleFar) // %5
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"r"(dst_stride), // %4
|
||||
"m"(kLinearShuffleFar) // %5
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5");
|
||||
}
|
||||
#endif
|
||||
@ -1746,11 +1746,11 @@ void ScaleRowUp2_Bilinear_16_AVX2(const uint16_t* src_ptr,
|
||||
"sub $0x10,%2 \n"
|
||||
"jg 1b \n"
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"r"((intptr_t)(dst_stride)) // %4
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"r"(dst_stride) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6");
|
||||
}
|
||||
#endif
|
||||
@ -2016,10 +2016,10 @@ void ScaleARGBRowDown2Box_SSE2(const uint8_t* src_argb,
|
||||
"lea 0x10(%1),%1 \n"
|
||||
"sub $0x4,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)) // %3
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride) // %3
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3");
|
||||
}
|
||||
|
||||
@ -2030,8 +2030,8 @@ void ScaleARGBRowDownEven_SSE2(const uint8_t* src_argb,
|
||||
int src_stepx,
|
||||
uint8_t* dst_argb,
|
||||
int dst_width) {
|
||||
intptr_t src_stepx_x4 = (intptr_t)(src_stepx);
|
||||
intptr_t src_stepx_x12;
|
||||
ptrdiff_t src_stepx_x4 = (ptrdiff_t)(src_stepx);
|
||||
ptrdiff_t src_stepx_x12;
|
||||
(void)src_stride;
|
||||
asm volatile(
|
||||
"lea 0x00(,%1,4),%1 \n"
|
||||
@ -2067,9 +2067,8 @@ void ScaleARGBRowDownEvenBox_SSE2(const uint8_t* src_argb,
|
||||
int src_stepx,
|
||||
uint8_t* dst_argb,
|
||||
int dst_width) {
|
||||
intptr_t src_stepx_x4 = (intptr_t)(src_stepx);
|
||||
intptr_t src_stepx_x12;
|
||||
intptr_t row1 = (intptr_t)(src_stride);
|
||||
ptrdiff_t src_stepx_x4 = (ptrdiff_t)(src_stepx);
|
||||
ptrdiff_t src_stepx_x12;
|
||||
asm volatile(
|
||||
"lea 0x00(,%1,4),%1 \n"
|
||||
"lea 0x00(%1,%1,2),%4 \n"
|
||||
@ -2102,7 +2101,7 @@ void ScaleARGBRowDownEvenBox_SSE2(const uint8_t* src_argb,
|
||||
"+r"(dst_argb), // %2
|
||||
"+rm"(dst_width), // %3
|
||||
"=&r"(src_stepx_x12), // %4
|
||||
"+r"(row1) // %5
|
||||
"+r"(src_stride) // %5
|
||||
:
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3");
|
||||
}
|
||||
@ -2364,12 +2363,12 @@ void ScaleUVRowDown2Box_SSSE3(const uint8_t* src_ptr,
|
||||
"lea 0x8(%1),%1 \n" // 4 UV
|
||||
"sub $0x4,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"m"(kShuffleSplitUV), // %4
|
||||
"m"(kShuffleMergeUV) // %5
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"m"(kShuffleSplitUV), // %4
|
||||
"m"(kShuffleMergeUV) // %5
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5");
|
||||
}
|
||||
#endif // HAS_SCALEUVROWDOWN2BOX_SSSE3
|
||||
@ -2405,12 +2404,12 @@ void ScaleUVRowDown2Box_AVX2(const uint8_t* src_ptr,
|
||||
"sub $0x8,%2 \n"
|
||||
"jg 1b \n"
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"m"(kShuffleSplitUV), // %4
|
||||
"m"(kShuffleMergeUV) // %5
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"m"(kShuffleSplitUV), // %4
|
||||
"m"(kShuffleMergeUV) // %5
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5");
|
||||
}
|
||||
#endif // HAS_SCALEUVROWDOWN2BOX_AVX2
|
||||
@ -2531,12 +2530,12 @@ void ScaleUVRowUp2_Bilinear_SSSE3(const uint8_t* src_ptr,
|
||||
"lea 0x10(%1),%1 \n" // 4 uv to 8 uv
|
||||
"sub $0x8,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"r"((intptr_t)(dst_stride)), // %4
|
||||
"m"(kUVLinearMadd31) // %5
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"r"(dst_stride), // %4
|
||||
"m"(kUVLinearMadd31) // %5
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
@ -2655,12 +2654,12 @@ void ScaleUVRowUp2_Bilinear_AVX2(const uint8_t* src_ptr,
|
||||
"sub $0x10,%2 \n"
|
||||
"jg 1b \n"
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"r"((intptr_t)(dst_stride)), // %4
|
||||
"m"(kUVLinearMadd31) // %5
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"r"(dst_stride), // %4
|
||||
"m"(kUVLinearMadd31) // %5
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
@ -2799,11 +2798,11 @@ void ScaleUVRowUp2_Bilinear_16_SSE41(const uint16_t* src_ptr,
|
||||
"lea 0x10(%1),%1 \n" // 2 uv to 4 uv
|
||||
"sub $0x4,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"r"((intptr_t)(dst_stride)) // %4
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"r"(dst_stride) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
@ -2930,11 +2929,11 @@ void ScaleUVRowUp2_Bilinear_16_AVX2(const uint16_t* src_ptr,
|
||||
"sub $0x8,%2 \n"
|
||||
"jg 1b \n"
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"((intptr_t)(src_stride)), // %3
|
||||
"r"((intptr_t)(dst_stride)) // %4
|
||||
: "+r"(src_ptr), // %0
|
||||
"+r"(dst_ptr), // %1
|
||||
"+r"(dst_width) // %2
|
||||
: "r"(src_stride), // %3
|
||||
"r"(dst_stride) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6");
|
||||
}
|
||||
#endif
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user