; ; 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
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-10-12)
¤
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.