Fix missing inline asm register clobbers

Change-Id: Ic573c8d7d8921a1dd00e4481b854a8168d0c94f7
This commit is contained in:
Frank Barchard 2026-10-08 13:06:44 -07:00
parent 9456b06227
commit f73b79a70b
6 changed files with 19 additions and 17 deletions

View File

@ -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.

View File

@ -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.

View File

@ -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,

View File

@ -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
);
}

View File

@ -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
);
}

View File

@ -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