aboutsummaryrefslogtreecommitdiff
path: root/simd
diff options
context:
space:
mode:
authorHans Wennborg <hans@chromium.org>2015-09-16 10:23:56 -0700
committerHans Wennborg <hans@chromium.org>2015-09-16 10:23:56 -0700
commit52e8b6949a23a95fe1b6118805579e9aea268c3e (patch)
tree59c714bc04437798a80f67749345b1fb9e6b8996 /simd
parent631e2dd119d49794e3572b6ca3f16ee39d59f372 (diff)
downloadlibjpeg-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.asm4
-rw-r--r--simd/jcgryss2-64.asm4
-rw-r--r--simd/jcqnts2f-64.asm2
-rw-r--r--simd/jcqnts2i-64.asm2
-rw-r--r--simd/jcsamss2-64.asm10
-rw-r--r--simd/jdclrss2-64.asm4
-rw-r--r--simd/jdmrgss2-64.asm8
-rw-r--r--simd/jdsamss2-64.asm8
-rw-r--r--simd/jiss2flt-64.asm2
-rw-r--r--simd/jiss2fst-64.asm2
-rw-r--r--simd/jiss2int-64.asm2
-rw-r--r--simd/jiss2red-64.asm4
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 | |