xref: /aosp_15_r20/external/pdfium/third_party/libopenjpeg/0012-mct_sse.patch (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1diff --git a/third_party/libopenjpeg/mct.c b/third_party/libopenjpeg/mct.c
2index 88c8f4092..c4c2e732e 100644
3--- a/third_party/libopenjpeg/mct.c
4+++ b/third_party/libopenjpeg/mct.c
5@@ -37,13 +37,15 @@
6  * POSSIBILITY OF SUCH DAMAGE.
7  */
8
9-#ifdef __SSE__
10+#if defined(__SSE__) && !defined(_M_IX86) && !defined(__i386)
11+#define USE_SSE
12 #include <xmmintrin.h>
13 #endif
14-#ifdef __SSE2__
15+#if defined(__SSE2__) && !defined(_M_IX86) && !defined(__i386)
16+#define USE_SSE2
17 #include <emmintrin.h>
18 #endif
19-#ifdef __SSE4_1__
20+#if defined(__SSE4_1__) && !defined(_M_IX86) && !defined(__i386)
21 #include <smmintrin.h>
22 #endif
23
24@@ -72,7 +74,7 @@ const OPJ_FLOAT64 * opj_mct_get_mct_norms_real()
25 /* <summary> */
26 /* Forward reversible MCT. */
27 /* </summary> */
28-#ifdef __SSE2__
29+#ifdef USE_SSE2
30 void opj_mct_encode(
31     OPJ_INT32* OPJ_RESTRICT c0,
32     OPJ_INT32* OPJ_RESTRICT c1,
33@@ -141,7 +143,7 @@ void opj_mct_encode(
34 /* <summary> */
35 /* Inverse reversible MCT. */
36 /* </summary> */
37-#ifdef __SSE2__
38+#ifdef USE_SSE2
39 void opj_mct_decode(
40     OPJ_INT32* OPJ_RESTRICT c0,
41     OPJ_INT32* OPJ_RESTRICT c1,
42@@ -216,7 +218,7 @@ void opj_mct_encode_real(
43     OPJ_SIZE_T n)
44 {
45     OPJ_SIZE_T i;
46-#ifdef __SSE__
47+#ifdef USE_SSE
48     const __m128 YR = _mm_set1_ps(0.299f);
49     const __m128 YG = _mm_set1_ps(0.587f);
50     const __m128 YB = _mm_set1_ps(0.114f);
51@@ -286,7 +288,7 @@ void opj_mct_decode_real(
52     OPJ_SIZE_T n)
53 {
54     OPJ_SIZE_T i;
55-#ifdef __SSE__
56+#ifdef USE_SSE
57     __m128 vrv, vgu, vgv, vbu;
58     vrv = _mm_set1_ps(1.402f);
59     vgu = _mm_set1_ps(0.34413f);
60