diff --git a/source/row_neon.cc b/source/row_neon.cc index 3dba9d423..8bd821a41 100644 --- a/source/row_neon.cc +++ b/source/row_neon.cc @@ -1670,8 +1670,8 @@ void YUY2ToNVUVRow_NEON(const uint8_t* src_yuy2, "+r"(dst_uv), // %2 "+r"(width) // %3 : - : "cc", "memory", "d0", "d1", "d2", "d3", "d4", "d5", "d6", - "d7" // Clobber List + : "cc", "memory", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", + "d9" // Clobber List ); } @@ -2981,8 +2981,8 @@ void ARGBSepiaRow_NEON(uint8_t* dst_argb, int width) { : "+r"(dst_argb), // %0 "+r"(width) // %1 : - : "cc", "memory", "q0", "q1", "q2", "q3", "q10", "q11", "q12", "q13", - "q14", "q15"); + : "cc", "memory", "q0", "q1", "q2", "q3", "q8", "q10", "q11", "q12", + "q13", "q14", "q15"); } // Tranform 8 ARGB pixels (32 bytes) with color matrix. diff --git a/source/row_neon64.cc b/source/row_neon64.cc index 8fea6df10..dfb1a839c 100644 --- a/source/row_neon64.cc +++ b/source/row_neon64.cc @@ -2148,7 +2148,7 @@ void ARGB1555ToARGBRow_NEON(const uint8_t* src_argb1555, "+r"(dst_argb), // %1 "+r"(width) // %2 : - : "cc", "memory", "v0", "v1", "v2", "v3", "v29" // Clobber List + : "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v29" // Clobber List ); } @@ -3489,7 +3489,8 @@ void ARGB4444ToYRow_NEON(const uint8_t* src_argb4444, "+r"(dst_y), // %1 "+r"(width) // %2 : - : "cc", "memory", "v0", "v1", "v2", "v3", "v24", "v25", "v26", "v27"); + : "cc", "memory", "v0", "v1", "v2", "v3", "v16", "v17", "v24", "v25", + "v26", "v27"); } // ARGB expects first 3 values to contain RGB and 4th value is ignored. diff --git a/source/scale_gcc.cc b/source/scale_gcc.cc index ed5684748..2f320227b 100644 --- a/source/scale_gcc.cc +++ b/source/scale_gcc.cc @@ -2763,7 +2763,7 @@ void ScaleARGBRowDown2Linear_SSE2(const uint8_t* src_argb, "+r"(dst_argb), // %1 "+r"(dst_width) // %2 : - : "memory", "cc", "xmm0", "xmm1"); + : "memory", "cc", "xmm0", "xmm1", "xmm2"); } void ScaleARGBRowDown2Box_SSE2(const uint8_t* src_argb, diff --git a/source/scale_neon.cc b/source/scale_neon.cc index 0ed3287a6..6bb167010 100644 --- a/source/scale_neon.cc +++ b/source/scale_neon.cc @@ -40,7 +40,7 @@ void ScaleRowDown2_NEON(const uint8_t* src_ptr, "+r"(dst), // %1 "+r"(dst_width) // %2 : - : "q0", "q1" // Clobber List + : "memory", "cc", "q0", "q1" // Clobber List ); } @@ -61,7 +61,7 @@ void ScaleRowDown2Linear_NEON(const uint8_t* src_ptr, "+r"(dst), // %1 "+r"(dst_width) // %2 : - : "q0", "q1" // Clobber List + : "memory", "cc", "q0", "q1" // Clobber List ); } @@ -92,7 +92,7 @@ void ScaleRowDown2Box_NEON(const uint8_t* src_ptr, "+r"(dst), // %2 "+r"(dst_width) // %3 : - : "q0", "q1", "q2", "q3" // Clobber List + : "memory", "cc", "q0", "q1", "q2", "q3" // Clobber List ); } @@ -296,7 +296,7 @@ void ScaleRowDown38_NEON(const uint8_t* src_ptr, "+r"(dst_ptr), // %1 "+r"(dst_width) // %2 : "r"(&kShuf38) // %3 - : "d0", "d1", "d2", "d3", "d4", "d5", "memory", "cc"); + : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "memory", "cc"); } // 32x3 -> 12x1 @@ -725,7 +725,7 @@ void ScaleRowUp2_Linear_16_NEON(const uint16_t* src_ptr, "+r"(dst_width), // %2 "+r"(src_temp) // %3 : - : "memory", "cc", "q0", "q1", "q2", "q15" // Clobber List + : "memory", "cc", "q0", "q1", "q2", "q3", "q4", "q5", "q15" // Clobber List ); } diff --git a/source/scale_neon64.cc b/source/scale_neon64.cc index e7f9f6c03..ded643eed 100644 --- a/source/scale_neon64.cc +++ b/source/scale_neon64.cc @@ -431,8 +431,8 @@ void ScaleRowDown38_3_Box_NEON(const uint8_t* src_ptr, [tblArray2] "r"(kScaleRowDown38_3_BoxIndices2), // %[tblArray2] [tblArray3] "r"(kScaleRowDown38_3_BoxIndices3), // %[tblArray3] [tblArray4] "r"(kScaleRowDown38_NarrowIndices) // %[tblArray4] - : "memory", "cc", "v0", "v1", "v2", "v3", "v4", "v20", "v21", "22", "23", - "24", "v27", "v28", "v29", "v30", "v31"); + : "memory", "cc", "v0", "v1", "v2", "v3", "v4", "v20", "v21", "v22", + "v23", "v24", "v25", "v27", "v28", "v29", "v30", "v31"); } static const uvec8 kScaleRowDown38_2_BoxIndices1[] = { @@ -721,7 +721,7 @@ void ScaleRowUp2_Linear_16_NEON(const uint16_t* src_ptr, "+r"(dst_ptr), // %2 "+r"(dst_width) // %3 : - : "memory", "cc", "v0", "v1", "v2", "v31" // Clobber List + : "memory", "cc", "v0", "v1", "v2", "v3", "v4", "v5", "v31" // Clobber List ); } diff --git a/source/scale_sme.cc b/source/scale_sme.cc index fa74569d1..2753465aa 100644 --- a/source/scale_sme.cc +++ b/source/scale_sme.cc @@ -356,7 +356,7 @@ __arm_locally_streaming void ScaleUVRowDown2Linear_SME(const uint8_t* src_uv, [dst_width] "+r"(dst_width), // %[dst_width] [vl] "=r"(vl) // %[vl] : - : "z0", "z1", "p0", "p1"); + : "memory", "cc", "z0", "z1", "p0", "p1"); } #define SCALEUVROWDOWN2BOX_SVE \ @@ -408,7 +408,8 @@ __arm_locally_streaming void ScaleUVRowDown2Box_SME(const uint8_t* src_uv, [dst_width] "+r"(dst_width), // %[dst_width] [vl] "=r"(vl) // %[vl] : - : "z0", "z1", "z2", "z3", "z4", "z5", "z6", "z7", "p0", "p1"); + : "memory", "cc", "z0", "z1", "z2", "z3", "z4", "z5", "z6", "z7", "p0", + "p1"); } #undef SCALEUVROWDOWN2BOX_SVE