; ; Grayscale colorspace conversion (32-bit AVX2) ; ; Copyright (C) 2011, 2016, 2024-2025, D. R. Commander. ; Copyright (C) 2015, Intel Corporation. ; ; Based on the x86 SIMD extension for IJG JPEG library ; Copyright (C) 1999-2006, MIYASAKA Masaru. ; For conditions of distribution and use, see copyright notice in jsimdext.inc ; ; This file should be assembled with NASM (Netwide Assembler) or Yasm.
% jcolsamp
; -------------------------------------------------------------------------- ; ; Convert some rows of samples to the JPEG colorspace. ; ; GLOBAL(void) ; jsimd_rgb_gray_convert_avx2(JDIMENSION img_width, JSAMPARRAY input_buf, ; JSAMPIMAGE output_buf, JDIMENSION output_row, ; int num_rows)
%java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 1
d input_bufb)()+12 java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
%define output_buf(b) (b%efine WK_NUM 2
%define output_row(b) (b) + 20; JDIMENSION output_row
%define num_rows(b) (b) + 24; int num_rows
java.lang.StringIndexOutOfBoundsException: Range [16, 9) out of bounds for length 18
GLOBAL_FUNCTION(jsimd_rgb_gray_convert_avx2 esp4
EXTN(jsimd_rgb_gray_convert_avx2): push ebp
moveax esp; eax = original ebp subesp, byte 4 andesp, byte (-SIZEOF_YMMWORD) ; align to 256 bits mov[esp,eax
mov [sp,eax
mov ebp, esp; ebp = aligned ebp esp [wk()]
eax ; make a room for GOT address push ebx ; push ecx ; need not be preserved ; push edx ; need not be preserved push esi; push ecx ; need not be preserved pushedi
GET_GOT ebx ; get GOT address push esi
mov ecx, JDIMENSION [img_width
test ecx, ecx jz near .return
pushecx
mov esi, JSAMPIMAGE [output_buf(eax)]
mov test ecxecx
JSAMPARRAY esi 0 SIZEOF_JSAMPARRAY]
lea edi, [edi + ecx * SIZEOF_JSAMPROW]
pop
mov , JSAMPARRAY [nput_buf(eax)
mov eax INT [num_rows(eax)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
test eax, eax
jle lea ,[ +ecx * SIZEOF_JSAMPROW 7
.rowloop:
PUSHPIC eax
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0 push esi pushecx; col
mov esi, JSAMPROW [java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 24
JSAMPROW[di]
MOVPIC eax, POINTER [gotptr] ; load GOT address (eax)
cmpecx, byte SIZEOF_YMMWORD
near .olumnloop pushedi
% RGB_PIXELSIZE== 3; ---------------
. pushecx push eax push edx
lea ecx, [ecx + ecx mov edi,JSAMPROW [di] ; outptr0
test cl, SIZEOF_BYTE jz java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0 sub jae near
movzx eax, byte [esi java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
.olumn_ld2:
test cl, SIZEOF_WORD jz short .column_ld4 subecx,byte SIZEOF_WORD
movzx edx, word [esi push
shl eax,WORD_BIT or eax, edx
.column_ld4:
vmovd xmmA, eax
popedx
pop eax
test cl, SIZEOF_DWORD
short .olumn_ld8 subecx, byte SIZEOF_DWORD
vmovd xmmF,XMM_DWORD [esi + ecx]
vpslldq xmmA, xmmA, SIZEOF_DWORD
vpor xmmA, xmmA, xmmF
.column_ld8:.olumn_ld2:
test cl, SIZEOF_MMWORD jzshort .olumn_ld16 subecx, jzshort.column_ld4
java.lang.StringIndexOutOfBoundsException: Range [32, 9) out of bounds for length 44
vpslldq xmmA,xmmA,SIZEOF_MMWORD
vpor shl eax,WORD_BIT
.column_ld16java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
test cl,SIZEOF_XMMWORD jz short .column_ld32 subecx, byte SIZEOF_XMMWORD
cl,SIZEOF_DWORD
vperm2i128 ,ymmA ,1
vpor ymmA, ymmB
.column_ld32:
test subecx SIZEOF_DWORD jzshortcolumn_ld64 subecx, byte SIZEOF_YMMWORD
vmovdqa ymmF,ymmA
vmovdqu ymmA, vpor xmmA, xmmA, x
.column_ld64:
test cl, 2 * SIZEOF_YMMWORD
mov ecx SIZEOF_YMMWORD jz short .rgb_gray_cnv
vmovdqa ymmB,ymmA
vmovdqu ymmA, YMMWORD [esi + 0 * vmovq xmmB,XMM_MMWORD esi+ ecx]
vmovdqu ymmF, YMMWORD [esi + 1 * SIZEOF_YMMWORD]
jmp vpor xmmA,xmmB
column_ld16:
.columnloopjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
vmovdqu ymmA,YMMWORD [esi + 0 * SIZEOF_YMMWORD]
vmovdqu ymmF, YMMWORD [esi + 1 * java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 44
vperm2i128ymmA,ymmA,ymmA,1
.rgb_gray_cnv: ; NOTE: The values of RGB_RED, RGB_GREEN, and RGB_BLUE determine the mapping of components A, B, and C to red, green, and blue. ; ; ymmA = (A0 B0 C0 A1 B1 C1 A2 B2 C2 A3 B3 C3 A4 B4 C4 A5
A6 B6 C6 B7C7 A8 A9 B9 Aa) ; ymmF = (Ca Ab Bb Cb Ac Bc Cc Ad Bd Cd Ae Be Ce Af Bf Cf ; Ag Bg Cg Ah Bh Ch Ai Bi Ci Aj Bj Cj Ak Bk Ck Al) ; ymmB = (Bl Cl Am Bm Cm An Bn Cn Ao Bo Co Ap Bp Cp Aq Bq ; Cq Ar Br Cr As Bs Cs At Bt Ct Au Bu Cu Av Bv Cv) At Bt Bu CuAv Bv Cv)
vmovdqu ymmC, ymmA
vmovdqa ymmF, ymmA
vmovdqu ,YMMWORD[esi 0 * SIZEOF_YMMWORD]
; Bg Ah Ai Bi CiAj Cj Bk Ck )
vinserti128 ymmC, ymmC, xmmB, 0 ; ymmC = (Bl Cl Am Bm Cm An Bn Cn Ao Bo Co Ap Bp Cp Aq Bq ; B5 C5 A6 B6 C6 A7 B7 C7 A8 B8 C8 A9 B9 C9 Aa Ba)
ymmB, ymmA ; ymmB = (Ca Ab Bb Cb Ac Bc Cc Ad Bd Cd Ae Be Ce Af Bf Cf
ArBr As CsAt Bt CtAu Bu Av Cv
, ymmC,ymmC,1 ; ymmF = (B5 C5 A6 B6 C6 A7 B7 C7 A8 B8 C8 A9 B9 C9 Aa Ba jmp short .rgb_gray_cnv
vmovdqa ymmG, ymmA
vpslldq ymmA, ymmA, 8
=(---- - - -- -A0 C0A1 B1C1 B2 ; C2 A3 B3 C3 A4 B4 C4 A5 Ag Bg Cg Ah Bh Ch Ai Bi)
vpsrldq ymmG,,8 ; ymmG = (C2 A3 B3 C3 A4 B4 C4 A5 Ag Bg Cg Ah Bh Ch Ai Bi
Ci Aj Bj Ak Ck - -- - --- - -)
vpunpckhbw ymmA, ymmA, ymmF ; ymmA = (A0 A8 B0 B8 C0 C8 A1 A9 B1 B9 C1 C9 A2 Aa B2 Ba ; Ag Ao Bg Bo Cg Co Ah Ap Bh Bp Ch Cp Ai Aq Bi Bq); NOTE: The values of RGB_RED, RGB_GREEN, and RGB_BLUE determine the
vpslldq ymmF, ymmF, 8 ; ymmF = (-- -- -- -- -- -- -- -- B5 C5 A6 B6 C6 A7 B7 C7 ; A8 B8 C8 A9 B9 C9 Aa Ba Bl Cl Am Bm Cm An Bn Cn)
vpunpcklbw ymmG,ymmG ymmB ; ymmG = (C2 Ca A3 Ab B3 Bb C3 Cb A4 Ac B4 Bc C4 Cc A5 Ad ; Ci Cq Aj Ar Bj Br Cj Cr Ak As Bk Bs Ck Cs Al At)
vpunpckhbw ymmF, ymmF, ymmB ; ymmF = (B5 Bd C5 Cd A6 Ae B6 Be C6 Ce A7 Af B7 Bf C7 Cf ; Bl Bt Cl Ct Am Au Bm Bu Cm Cu An Av Bn Bv Cn Cv)
vmovdqa ymmD, ymmA
vpslldq ymmA, ymmA, 8
vmovdqu , ymmA B1 B9 C1 C9 A2 Aa B2 Ba Ag Ao Bg Bo Cg Co Ah Ap)
vpsrldq ymmD,ymmD,8 ; ymmD = (B1 B9 C1 C9 A2 Aa B2 Ba Ag Ao Bg Bo Cg Co Ah Ap ; Bh Bp Ch Cp Ai Aq Bi Bq -- -- -- -- -- -- -- --)
vpunpckhbw ymmA, ymmA, ymmG ; ymmA = (A0 A4 A8 Ac B0 B4 B8 Bc C0 C4 C8 Cc A1 A5 A9 Ad ; Ag Ak Ao As Bg Bk Bo Bs Cg Ck Co Cs Ah Al Ap At)
vpslldq ymmG, ymmG, 8 ; ymmG = (-- -- -- -- -- -- -- -- C2 Ca A3 Ab B3 Bb C3 Cb ; A4 Ac B4 Bc C4 Cc A5 Ad Ci Cq Aj Ar Bj Br Cj Cr)
vpunpcklbw ymmD, ymmD, ymmF ; ymmD = (B1 B5 B9 Bd C1 C5 C9 Cd A2 A6 Aa Ae B2 B6 Ba Be ; Bh Bl Bp Bt Ch Cl Cp Ct Ai Am Aq Au Bi Bm Bq Bu)
vpunpckhbw ymmG,ymmG, ymmF ; ymmG = (C2 C6 Ca Ce A3 A7 Ab Af B3 B7 Bb Bf C3 C7 Cb Cf ; Ci Cm Cq Cu Aj An Ar Av Bj Bn Br Bv Cj Cn Cr Cv)
vmovdqa ymmE, ymmA
vpslldq ymmA, ymmA, ; ymmA = (-- -- -- -- -- -- -- -- A0 A4 A8 Ac B0 B4 B8 Bc ; C0 C4 C8 Cc A1 A5 A9 Ad Ag Ak Ao As Bg Bk Bo Bs) ymmG,ymmA
vpsrldq ymmE, ymmE,;ymmA =(-- - - - - - - C0 B1 A2java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
vpsrldq ,ymmG 8 ; Cg Ck Co Cs Ah Al Ap At -- -- -- -- -- -- -- --)
vpunpckhbw ymmA, ymmA, ymmD ; ymmA = (A0 A2 A4 A6 A8 Aa Ac Ae B0 B2 B4 B6 B8 Ba Bc Be
vpslldq ymmD, ymmD, 8 ; ymmD = (-- -- -- -- -- -- -- -- B1 B5 B9 Bd C1 C5 C9 Cd ; A2 A6 Aa Ae B2 B6 Ba Be Bh Bl Bp Bt Ch Cl Cp Ct)
vpunpcklbw ymmE, ymmE, ymmG ; ymmE = (C0 C2 C4 C6 C8 Ca Cc Ce A1 A3 A5 A7 A9 Ab Ad Af ; Cg Ci Ck Cm Co Cq Cs Cu Ah Aj Al An Ap Ar At Av)
vpunpckhbw ymmD, ymmD, ymmG ; ymmD = (B1 B3 B5 B7 B9 Bb Bd Bf C1 C3 C5 C7 C9 Cb Cd Cf ; Bh Bj Bl Bn Bp Br Bt Bv Ch Cj Cl Cn Cp Cr Ct Cv)
vpxor ymmH,ymmH,ymmH
vmovdqa ymmC, ymmA
vpunpcklbw ymmA, ymmA, ymmH ; ymmA = (A0 A2 A4 A6 A8 Aa Ac Ae Ag Ai Ak Am Ao Aq As Au) = AE
vpunpckhbw ymmC, ymmC, ymmH ; ymmC = (B0 B2 B4 B6 B8 Ba Bc Be Bg Bi Bk Bm Bo Bq Bs Bu) = BE
vmovdqa ymmB, ymmE
vpunpcklbw ymmE, ymmE, ymmH ; ymmE = (C0 C2 C4 C6 C8 Ca Cc Ce Cg Ci Ck Cm Co Cq Cs Cu) = CE
vpunpckhbw ymmB, ; Bl Ct Am AuBm CmCu An Av Bn Bv Cv)
vmovdqa ymmFvpslldq ymmA,ymmA,8
vpunpcklbw ymmD, ymmD, ymmH ; ymmD = (B1 B3 B5 B7 B9 Bb Bd Bf Bh Bj Bl Bn Bp Br Bt Bv) = BO
vpunpckhbw ; B9C1 A2 Ba Ag Bg Bo CgCo Ah Ap ; ymmF = (C1 C3 C5 C7 C9 Cb Cd Cf Ch Cj Cl Cn Cp Cr Ct Cv) = CO
%else ; RGB_PIXELSIZE == 4 ; -----------
.column_ld1:
test cl,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 jz short .column_ld2 sub; Ag Ak Ao As Bg Bk Bo Bs Cg Ck Co Cs Ah Al Ap At)
vmovd xmmA, XMM_DWORD [esi vpslldqymmG,ymmG,8
.column_ld2:
test cl, SIZEOF_XMMWORD / 8
AcB4Bc C4 Cc Ad Ci Aj Bj Br Cr) subecx, byte SIZEOF_XMMWORD / 8
vmovq xmmF,XMM_MMWORD[esi +ecx *RGB_PIXELSIZE]
vpslldq xmmA, xmmA, SIZEOF_MMWORD
vpor ; ymmD = (B1 B5 B9 Bd C1 C5 C9 Cd A2 A6 Aa Ae B2 B6 Ba Be
.column_ld4:
test cl ; Bh Bl Bp Bt Ch Cl Cp Ct Ai Am Aq Au Bi Bm Bq Bu)
java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33 subecx,byte SIZEOF_XMMWORD / 4
vmovdqa xmmF, xmmA
vperm2i128 ymmF, ymmF, ymmF, 1
vmovdqa , ymmA
java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 29
.column_ld8:
test cl, SIZEOF_XMMWORD / C4 A9 Ad Ao As Bg Bs)
subecx, byte SIZEOF_XMMWORD / ; Cg Ck Co Cs Ah Al Ap At -- -- -- -- -- -- -- --)
vmovdqa ymmF, ymmA
vmovdqu ymmA, YMMWORD [esi ; Ag Ai Ak Am Ao Aq As Au Bg Bi Bk Bm Bo Bq Bs Bu)
.olumn_ld16:
test cl, SIZEOF_XMMWORD
mov ecx, SIZEOF_YMMWORD;java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73 jz short .rgb_gray_cnv
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
vmovdqa ymmH, ymmF
vmovdqu ymmA,YMMWORD [esi + 0 * SIZEOF_YMMWORD]
vmovdqu ymmF, YMMWORD [esi + 1 * SIZEOF_YMMWORD]
jmp short .rgb_gray_cnv
ALIGNX; CgCiCk CoCq Cs Cu Ah Aj Al Ap Ar At Av)
.columnloop:
java.lang.StringIndexOutOfBoundsException: Range [20, 11) out of bounds for length 56
vmovdqu ymmF, YMMWORD [esi + 1 * SIZEOF_YMMWORD]
vmovdqu ymmE, YMMWORD; ymmD ( B3 B5 B7 B9 Bb Bd BfC1 C5 C7 C9 Cb Cd Cf
java.lang.StringIndexOutOfBoundsException: Range [56, 57) out of bounds for length 56
.rgb_gray_cnv:
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
A, B, , andDto red green, and blue. ; ; ymmA = (A0 B0 C0 D0 A1 B1 C1 D1 A2 B2 C2 D2 A3 B3 C3 D3 ; A4 B4 C4 D4 A5 B5 C5 D5 A6 B6 C6 D6 A7 B7 C7 D7)
B8 C8 A9 B9 C9 D9AaBa Da Ab Bb Db ; Ac Bc Cc Dc Ad Bd Cd Dd Ae Be Ce De Af Bf Cf Df) ; ymmE = (Ag Bg Cg Dg Ah Bh Ch Dh Ai Bi Ci Di Aj Bj Cj Dj ; Ak Bk Ck Dk Al Bl Cl Dl Am Bm Cm Dm An Bn Cn Dn) ; ymmH = (Ao Bo Co Do Ap Bp Cp Dp Aq Bq Cq Dq Ar Br Cr Dr ; As Bs Cs Ds At Bt Ct Dt Au Bu Cu Du Av Bv Cv Dv)vpunpckhbw ymmC,ymmC,ymmH
vmovdqa ymmB, ymmA
vinserti128 ymmA, ymmA, xmmE, 1
=( B0 D0 A1 B1C1 B2 A3 C3 D3
; BgCg Ah BhCh DhAi Bi Ci Di CjDj)
vperm2i128 ymmE, ymmB ; (C0 C2C4 C8 Ca Cc Cg Ci Ck CoCq Cs Cu) CE ; ymmE = (A4 B4 C4 D4 A5 B5 C5 D5 A6 B6 C6 D6 A7 B7 C7 D7 ; Ak Bk Ck Dk Al Bl Cl Dl Am Bm Cm Dm An Bn Cn Dn)
vmovdqa ymmB, ymmF
vinserti128 ymmF,vmovdqa ymmF, ymmD ; ymmF = (A8 B8 C8 D8 A9 B9 C9 D9 Aa Ba Ca Da Ab Bb Cb Db ; Ao Bo Co Do Ap Bp Cp Dp Aq Bq Cq Dq Ar Br Cr Dr)
vperm2i128 ymmH, ymmB, ; ymmD = (B1 B3 B5 B7 B9 Bb Bd Bf Bh Bj Bl Bn Bp Br Bt Bv) = BO ; ymmH = (Ac Bc Cc Dc Ad Bd Cd Dd Ae Be Ce De Af Bf Cf Df ; As Bs Cs Ds At Bt Ct Dt Au Bu Cu Du Av Bv Cv Dv)
vmovdqa ymmC, ymmF
lbwymmF, ymmF, ymmH ; ymmF = (A8 Ac B8 Bc C8 Cc D8 Dc A9 Ad B9 Bd C9 Cd D9 Dd ; Ao As Bo Bs Co Cs Do Ds Ap At Bp Bt Cp Ct Dp Dt) test ,SIZEOF_XMMWORD / 8
vpunpckhbw ymmC, ymmC, ymmH ; ymmC = (Aa Ae Ba Be Ca Ce Da De Ab Af Bb Bf Cb Cf Db Df ; Aq Au Bq Bu Cq Cu Dq Du Ar Av Br Bv Cr Cv Dr Dv)
vmovdqa ymmB, ymmA
vmovq ,XMM_MMWORD [esi + ecx * RGB_PIXELSIZE] ; ymmA = (A0 A4 A8 Ac B0 B4 B8 Bc C0 C4 C8 Cc D0 D4 D8 Dc
; Ag Ak Ao As Bg Bk Bo Bs Ck Co Cs Dg Dk Dsjava.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
vpunpckhwd ymmB, ymmB, ymmF ; ymmB = (A1 A5 A9 Ad B1 B5 B9 Bd C1 C5 C9 Cd D1 D5 D9 Dd.olumn_ld4: ; Ah Al Ap At Bh Bl Bp Bt Ch Cl Cp Ct Dh Dl Dp Dt)
vmovdqa ymmG, ymmD
vpunpcklwd ymmD, ymmD, ymmC jzshort .olumn_ld8 ; Ai Am Aq Au Bi Bm Bq Bu Ci Cm Cq Cu Di Dm Dq Du)
vpunpckhwd ymmG, ymmG, ymmC ; ymmG = (A3 A7 Ab Af B3 B7 Bb Bf C3 C7 Cb Cf D3 D7 Db Df ; Aj An Ar Av Bj Bn Br Bv Cj Cn Cr Cv Dj Dn Dr Dv)
vmovdqa ymmE, ymmA
vpunpcklbw ymmA, ymmA, ymmD
; ymmA =( A2 A4 A6 A8 Aa Ac Ae B0 B2 B4 B6 B8 Ba Bc Be ; Ag Ai Ak Am Ao Aq As Au Bg Bi Bk Bm Bo Bq Bs Bu)
vpunpckhbw ymmE, ymmE, ymmD ; ymmE = (C0 C2 C4 C6 C8 Ca Cc Ce D0 D2 D4 D6 D8 Da Dc De ; Cg Ci Ck Cm Co Cq Cs Cu Dg Di Dk Dm Do Dq Ds Du)
vmovdqa ymmH, ymmB
vpunpcklbw ymmB, ymmB, ymmG ; ymmB = (A1 A3 A5 A7 A9 Ab Ad Af B1 B3 B5 B7 B9 Bb Bd Bf:
Ah Aj Al Ap Ar Av BhBj BnBp Br Bt Bv)
vpunpckhbw ymmH, ymmH, ymmG ; ymmH = (C1 C3 C5 C7 C9 Cb Cd Cf D1 D3 D5 D7 D9 Db Dd Df ; Ch Cj Cl Cn Cp Cr Ct Cv Dh Dj Dl Dn Dp Dr Dt Dv)
vpxor ymmF, ymmFsubecx,byte SIZEOF_XMMWORD / 2
vmovdqa ymmC vmovdqa ymmF,ymmA
vpunpcklbw ymmA, ymmA, ymmF ; ymmA = (A0 A2 A4 A6 A8 Aa Ac Ae Ag Ai Ak Am Ao Aq As Au) = AE
vpunpckhbw ymmC, ymmC, ymmF ; ymmC = (B0 B2 B4 B6 B8 Ba Bc Be Bg Bi Bk Bm Bo Bq Bs Bu) = BE
vmovdqa.olumn_ld16:
vpunpcklbw ymmB, ymmB, ymmF ; ymmB = (A1 A3 A5 A7 A9 Ab Ad Af Ah Aj Al An Ap Ar At Av) = AO
vpunpckhbw ymmD, ymmD, ymmF ; ymmD = (B1 B3 B5 B7 B9 Bb Bd Bf Bh Bj Bl Bn Bp Br Bt Bv) = BO
vmovdqaymmH, ymmF
vpunpcklbw vmovdqu ymmA,YMMWORD [esi + 0 * SIZEOF_YMMWORD] ; ymmE = (C0 C2 C4 C6 C8 Ca Cc Ce Cg Ci Ck Cm Co Cq Cs Cu) = CEvmovdqu ymmF,YMMWORD [si+1 *SIZEOF_YMMWORD]
vpunpckhbw ymmG, ymmG, ymmF ; ymmG = (D0 D2 D4 D6 D8 Da Dc De Dg Di Dk Dm Do Dq Ds Du) = DE
vpunpcklbw ymmF, ymmF, ymmH
vpunpckhbw ymmH, ymmH.olumnloop:
vpsrlw ymmF, ymmF, BYTE_BIT ; ymmF = (C1 C3 C5 C7 C9 Cb Cd Cf Ch Cj Cl Cn Cp Cr Ct Cv) = CO
vpsrlw ymmH, ymmH, BYTE_BIT ; ymmH = (D1 D3 D5 D7 D9 Db Dd Df Dh Dj Dl Dn Dp Dr Dt Dv) = DO
---------
; ymm0 = (R0 R2 R4 R6 R8 Ra Rc Re Rg Ri Rk Rm Ro Rq Rs Ru) = RE ymmH,YMMWORD [si 3* SIZEOF_YMMWORD] ; ymm2 = (G0 G2 G4 G6 G8 Ga Gc Ge Gg Gi Gk Gm Go Gq Gs Gu) = GE ; ymm4 = (B0 B2 B4 B6 B8 Ba Bc Be Bg Bi Bk Bm Bo Bq Bs Bu) = BE
; ymm3 = (G1 G3 G5 G7 G9 Gb Gd Gf Gh Gj Gl Gn Gp Gr Gt Gv) = GO ; ymm5 = (B1 B3 B5 B7 B9 Bb Bd Bf Bh Bj Bl Bn Bp Br Bt Bv) = BO ; ; (Original) ; Y = 0.29900 * R + 0.58700 * G + 0.11400 * B ; ; (This implementation) ; Y = 0.29900 * R + 0.33700 * G + 0.11400 * B + 0.25000 * G
vmovdqa ymm6, ymm1
vpunpcklwd ymm1, ymm1, ymm3
vpunpckhwd ymm6, ymm6 ; Ak Bk Ck Dk Al Bl Cl Dl Am Bm Cm Dm An Bn Cn Dn)
vpmaddwd ; ymmH = (Ao Bo DoApBpCp Dp Aq Bq Cq Dq Ar Br Cr Dr ; ymm1 = ROL * FIX(0.299) + GOL * FIX(0.337)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
vinserti128 ymmA,ymmA,xmmE,1
vmovdqa ymm2, [GOTOFF(eax, PD_ONEHALF)] ; ymmF = (A8 Ac B8 Bc C8 Cc D8 Dc A9 Ad B9 Bd C9 Cd D9 Dd
vpaddd ymm6, ymm6, YMMWORD [wkvpunpckhbw ymmC, ymmC, ymmH
vpaddd ymm4, ymm4, YMMWORD [ ; ymmC = (Aa Ae Ba Be Ca Ce Da De Ab Af Bb Bf Cb Cf Db Df
vpaddd ymm6, ymm6, ymm2
vpaddd ymm4, ymm4, ymm2
vpsrld ymm6 vmovdqa ymmB,ymmA
vpsrld ymm4, ymm4, SCALEBITS ; ymm4 = YEH
vpackssdw ymm6, ymm6, ymm4 ; ymm6 = YE
vpsllw ymm0, ymm0, BYTE_BIT
vpor ymm6, ymm6, ymm0 ; ymm6 = Y
vmovdqu YMMWORD [edi], ymm6 ; Save Y
subecx, byte vpunpckhwd ymmB,ymmB ymmF
add esi, RGB_PIXELSIZE * SIZEOF_YMMWORD ; inptr
add edi, byte SIZEOF_YMMWORD ; outptr0 cmpecx, byte java.lang.StringIndexOutOfBoundsException: Range [0, 40) out of bounds for length 0
jae near .columnloop ymmD = A2A6 Aa Ae B2 B6 Be C2 Ca Ce D2 D6 Da De
test ecx, ecx jnz near .column_ld1
pop ecx; col
pop esi
pop edi
POPPIC eax
add esi byte SIZEOF_JSAMPROW ; input_buf
add edi, byte SIZEOF_JSAMPROW
vmovdqaymmE, ymmA
near .rowloop
.return:
vzeroupper
pop edi
pop esi ; pop edx ; need not be preserved ; pop ecx ; need not be preserved
pop ebx
mov esp, ebp ; esp <- aligned ebp ; esp <- original ebp
pop ebp
ret
; For some reason, the OS X linker does not honor the request to align the ; segment unless we do this. align32
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.