diff options
author | Hans Wennborg <hans@chromium.org> | 2015-09-16 10:23:56 -0700 |
---|---|---|
committer | Hans Wennborg <hans@chromium.org> | 2015-09-16 10:23:56 -0700 |
commit | 52e8b6949a23a95fe1b6118805579e9aea268c3e (patch) | |
tree | 59c714bc04437798a80f67749345b1fb9e6b8996 /simd | |
parent | 631e2dd119d49794e3572b6ca3f16ee39d59f372 (diff) | |
download | libjpeg-turbo-52e8b6949a23a95fe1b6118805579e9aea268c3e.tar.gz |
Rewrite the JDIMENSION argument management for x86 64-bit assembly to
correctly handle a 32-bit argument width. The ABI leaves the high 32
bits undefined when passing 32-bit integers through arguments.
Also enhance the documentation of JDIMENSION to explain that its size
is significant to the implementation of the assembly.
This prevents libjpeg_turbo from crashing when compiled with recent
versions of Clang. This patch has been sent upstream:
https://github.com/libjpeg-turbo/libjpeg-turbo/pull/20
BUG=532214
R=thakis@chromium.org
Review URL: https://codereview.chromium.org/1347093003 .
Diffstat (limited to 'simd')
-rw-r--r-- | simd/jcclrss2-64.asm | 4 | ||||
-rw-r--r-- | simd/jcgryss2-64.asm | 4 | ||||
-rw-r--r-- | simd/jcqnts2f-64.asm | 2 | ||||
-rw-r--r-- | simd/jcqnts2i-64.asm | 2 | ||||
-rw-r--r-- | simd/jcsamss2-64.asm | 10 | ||||
-rw-r--r-- | simd/jdclrss2-64.asm | 4 | ||||
-rw-r--r-- | simd/jdmrgss2-64.asm | 8 | ||||
-rw-r--r-- | simd/jdsamss2-64.asm | 8 | ||||
-rw-r--r-- | simd/jiss2flt-64.asm | 2 | ||||
-rw-r--r-- | simd/jiss2fst-64.asm | 2 | ||||
-rw-r--r-- | simd/jiss2int-64.asm | 2 | ||||
-rw-r--r-- | simd/jiss2red-64.asm | 4 |
12 files changed, 26 insertions, 26 deletions
diff --git a/simd/jcclrss2-64.asm b/simd/jcclrss2-64.asm index 02ccaf3d..a0763651 100644 --- a/simd/jcclrss2-64.asm +++ b/simd/jcclrss2-64.asm @@ -50,14 +50,14 @@ EXTN(jsimd_rgb_ycc_convert_sse2): collect_args push rbx - mov rcx, r10 + mov ecx, r10d test rcx,rcx jz near .return push rcx mov rsi, r12 - mov rcx, r13 + mov ecx, r13d mov rdi, JSAMPARRAY [rsi+0*SIZEOF_JSAMPARRAY] mov rbx, JSAMPARRAY [rsi+1*SIZEOF_JSAMPARRAY] mov rdx, JSAMPARRAY [rsi+2*SIZEOF_JSAMPARRAY] diff --git a/simd/jcgryss2-64.asm b/simd/jcgryss2-64.asm index b4cee924..103a920c 100644 --- a/simd/jcgryss2-64.asm +++ b/simd/jcgryss2-64.asm @@ -50,14 +50,14 @@ EXTN(jsimd_rgb_gray_convert_sse2): collect_args push rbx - mov rcx, r10 + mov ecx, r10d test rcx,rcx jz near .return push rcx mov rsi, r12 - mov rcx, r13 + mov ecx, r13d mov rdi, JSAMPARRAY [rsi+0*SIZEOF_JSAMPARRAY] lea rdi, [rdi+rcx*SIZEOF_JSAMPROW] diff --git a/simd/jcqnts2f-64.asm b/simd/jcqnts2f-64.asm index 5ee98b3a..0bc73bcf 100644 --- a/simd/jcqnts2f-64.asm +++ b/simd/jcqnts2f-64.asm @@ -50,7 +50,7 @@ EXTN(jsimd_convsamp_float_sse2): packsswb xmm7,xmm7 ; xmm7 = PB_CENTERJSAMPLE (0x808080..) mov rsi, r10 - mov rax, r11 + mov eax, r11d mov rdi, r12 mov rcx, DCTSIZE/2 .convloop: diff --git a/simd/jcqnts2i-64.asm b/simd/jcqnts2i-64.asm index c3e3bffe..bd84c6a2 100644 --- a/simd/jcqnts2i-64.asm +++ b/simd/jcqnts2i-64.asm @@ -50,7 +50,7 @@ EXTN(jsimd_convsamp_sse2): psllw xmm7,7 ; xmm7={0xFF80 0xFF80 0xFF80 0xFF80 ..} mov rsi, r10 - mov rax, r11 + mov eax, r11d mov rdi, r12 mov rcx, DCTSIZE/4 .convloop: diff --git a/simd/jcsamss2-64.asm b/simd/jcsamss2-64.asm index e20084ee..57daf90b 100644 --- a/simd/jcsamss2-64.asm +++ b/simd/jcsamss2-64.asm @@ -49,11 +49,11 @@ EXTN(jsimd_h2v1_downsample_sse2): mov rbp,rsp collect_args - mov rcx, r13 + mov ecx, r13d shl rcx,3 ; imul rcx,DCTSIZE (rcx = output_cols) jz near .return - mov rdx, r10 + mov edx, r10d ; -- expand_right_edge @@ -90,7 +90,7 @@ EXTN(jsimd_h2v1_downsample_sse2): ; -- h2v1_downsample - mov rax, r12 ; rowctr + mov eax, r12d ; rowctr test eax,eax jle near .return @@ -193,7 +193,7 @@ EXTN(jsimd_h2v2_downsample_sse2): mov rbp,rsp collect_args - mov rcx, r13 + mov ecx, r13d shl rcx,3 ; imul rcx,DCTSIZE (rcx = output_cols) jz near .return @@ -234,7 +234,7 @@ EXTN(jsimd_h2v2_downsample_sse2): ; -- h2v2_downsample - mov rax, r12 ; rowctr + mov eax, r12d ; rowctr test rax,rax jle near .return diff --git a/simd/jdclrss2-64.asm b/simd/jdclrss2-64.asm index a5ae01b8..37f74687 100644 --- a/simd/jdclrss2-64.asm +++ b/simd/jdclrss2-64.asm @@ -52,14 +52,14 @@ EXTN(jsimd_ycc_rgb_convert_sse2): collect_args push rbx - mov rcx, r10 ; num_cols + mov ecx, r10d ; num_cols test rcx,rcx jz near .return push rcx mov rdi, r11 - mov rcx, r12 + mov ecx, r12d mov rsi, JSAMPARRAY [rdi+0*SIZEOF_JSAMPARRAY] mov rbx, JSAMPARRAY [rdi+1*SIZEOF_JSAMPARRAY] mov rdx, JSAMPARRAY [rdi+2*SIZEOF_JSAMPARRAY] diff --git a/simd/jdmrgss2-64.asm b/simd/jdmrgss2-64.asm index 8c98a623..09361883 100644 --- a/simd/jdmrgss2-64.asm +++ b/simd/jdmrgss2-64.asm @@ -52,14 +52,14 @@ EXTN(jsimd_h2v1_merged_upsample_sse2): collect_args push rbx - mov rcx, r10 ; col + mov ecx, r10d ; col test rcx,rcx jz near .return push rcx mov rdi, r11 - mov rcx, r12 + mov ecx, r12d mov rsi, JSAMPARRAY [rdi+0*SIZEOF_JSAMPARRAY] mov rbx, JSAMPARRAY [rdi+1*SIZEOF_JSAMPARRAY] mov rdx, JSAMPARRAY [rdi+2*SIZEOF_JSAMPARRAY] @@ -455,10 +455,10 @@ EXTN(jsimd_h2v2_merged_upsample_sse2): collect_args push rbx - mov rax, r10 + mov eax, r10d mov rdi, r11 - mov rcx, r12 + mov ecx, r12d mov rsi, JSAMPARRAY [rdi+0*SIZEOF_JSAMPARRAY] mov rbx, JSAMPARRAY [rdi+1*SIZEOF_JSAMPARRAY] mov rdx, JSAMPARRAY [rdi+2*SIZEOF_JSAMPARRAY] diff --git a/simd/jdsamss2-64.asm b/simd/jdsamss2-64.asm index 73577fd8..fb7dbf7b 100644 --- a/simd/jdsamss2-64.asm +++ b/simd/jdsamss2-64.asm @@ -67,11 +67,11 @@ EXTN(jsimd_h2v1_fancy_upsample_sse2): mov rbp,rsp collect_args - mov rax, r11 ; colctr + mov eax, r11d ; colctr test rax,rax jz near .return - mov rcx, r10 ; rowctr + mov ecx, r10d ; rowctr test rcx,rcx jz near .return @@ -506,7 +506,7 @@ EXTN(jsimd_h2v1_upsample_sse2): mov rbp,rsp collect_args - mov rdx, r11 + mov edx, r11d add rdx, byte (2*SIZEOF_XMMWORD)-1 and rdx, byte -(2*SIZEOF_XMMWORD) jz near .return @@ -596,7 +596,7 @@ EXTN(jsimd_h2v2_upsample_sse2): collect_args push rbx - mov rdx, r11 + mov edx, r11d add rdx, byte (2*SIZEOF_XMMWORD)-1 and rdx, byte -(2*SIZEOF_XMMWORD) jz near .return diff --git a/simd/jiss2flt-64.asm b/simd/jiss2flt-64.asm index f092599d..5acfcf72 100644 --- a/simd/jiss2flt-64.asm +++ b/simd/jiss2flt-64.asm @@ -326,7 +326,7 @@ EXTN(jsimd_idct_float_sse2): mov rax, [original_rbp] lea rsi, [workspace] ; FAST_FLOAT * wsptr mov rdi, r12 ; (JSAMPROW *) - mov rax, r13 + mov eax, r13d mov rcx, DCTSIZE/4 ; ctr .rowloop: diff --git a/simd/jiss2fst-64.asm b/simd/jiss2fst-64.asm index 2b4e4b55..a6204614 100644 --- a/simd/jiss2fst-64.asm +++ b/simd/jiss2fst-64.asm @@ -323,7 +323,7 @@ EXTN(jsimd_idct_ifast_sse2): mov rax, [original_rbp] mov rdi, r12 ; (JSAMPROW *) - mov rax, r13 + mov eax, r13d ; -- Even part diff --git a/simd/jiss2int-64.asm b/simd/jiss2int-64.asm index 5ebfae84..07308182 100644 --- a/simd/jiss2int-64.asm +++ b/simd/jiss2int-64.asm @@ -515,7 +515,7 @@ EXTN(jsimd_idct_islow_sse2): mov rax, [original_rbp] mov rdi, r12 ; (JSAMPROW *) - mov rax, r13 + mov eax, r13d ; -- Even part diff --git a/simd/jiss2red-64.asm b/simd/jiss2red-64.asm index 637339e5..95f893fc 100644 --- a/simd/jiss2red-64.asm +++ b/simd/jiss2red-64.asm @@ -312,7 +312,7 @@ EXTN(jsimd_idct_4x4_sse2): mov rax, [original_rbp] mov rdi, r12 ; (JSAMPROW *) - mov rax, r13 + mov eax, r13d ; -- Even part @@ -521,7 +521,7 @@ EXTN(jsimd_idct_2x2_sse2): ; ---- Pass 2: process rows, store into output array. mov rdi, r12 ; (JSAMPROW *) - mov rax, r13 + mov eax, r13d ; | input:| result:| ; | A0 B0 | | |