; ; Accurate integer FDCT (32-bit MMX) ; ; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB ; Copyright (C) 2016, 2020, 2024-2025, D. R. Commander. ; ; 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. ; ; This file contains a slower but more accurate integer implementation of the ; forward DCT (Discrete Cosine Transform). The following code is based ; directly on the IJG's original jfdctint.c; see jfdctint.c for more details.
%if CONST_BITS == 13
F_0_298 equ2446; FIX(0.298631336)
F_0_390 equ3196; FIX(0.390180644)
F_0_541 equ4433; FIX(0.541196100)
F_0_765 equ6270; FIX(0.765366865)
F_0_899 equ7373; FIX(0.899976223)
F_1_175 equ9633; FIX(1.175875602)
F_1_501 equ12299; FIX(1.501321110)
F_1_847 equ15137; FIX(1.847759065)
F_1_961 equ16069; FIX(1.961570560)
F_2_053 equ16819; FIX(2.053119869)
F_2_562 equ20995; FIX(2.562915447)
F_3_072 equ25172; FIX(3.072711026)
%else ; NASM cannot do compile-time arithmetic on floating-point constants.
%define DESCALE(x, n) (((x) + (1 <<;
F_0_298 equ DESCALE( ;; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
F_0_390; Based on the x86 SIMD extension for IJG JPEG library
; Copyright (C); For conditions of distribution and use, see ; This file should be assembled with NASM (Netwide Assembler) or Yasm.
F_0_765 equ DESCALE( 821806413, 30 - CONST_BITS) ; FIX(0.765366865)
F_0_899 equ DESCALE( directly on the IJG's original jfdctint.c; see jfdctint.c for more details.
F_1_175 equ DESCALE(1262586813, 30 - java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 0
F_1_501 equ ;(0298631336java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
java.lang.StringIndexOutOfBoundsException: Range [47, 7) out of bounds for length 68 30 CONST_BITS;
F_2_053 equ DESCALE(2204520673, 30 - CONST_BITS) ; FIX(2.053119869) equ DESCALE(2751909506,30-CONST_BITS) ; FIX(2.562915447)
F_3_072 equ DESCALE(3299298341, 30 - CONST_BITS) ; FIX(3.072711026)
%endif
movqp mm0,mm2 java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
movq MMWORD [wk(1)], mm2 ; wk(1) = (24 34 25 35)
movq mm4, mm6 ; transpose coefficients(phase 1)
punpcklwd mm6 ; mm6 = (00 10 01 11)
punpckhwd mm4, mm7 ; mm4 = (02 12 03 13)
java.lang.StringIndexOutOfBoundsException: Range [73, 8) out of bounds for length 73
punpcklwd mm1, mm3 ; mm1 = (04 14 05 15)
java.lang.StringIndexOutOfBoundsException: Range [16, 13) out of bounds for length 61
movq mm7, mm6 mm7,mm2
java.lang.StringIndexOutOfBoundsException: Range [19, 13) out of bounds for length 69
mm7,mm0
mm3 ; transpose coefficients(phase 2)
punpckldq
mmm2 java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
movq MMWORD [MMBLOCK(1, 0,p ; mm7 = data5H
movq mm1, mm3
movq paddd , [(1]; =
mm1 GOTOFF,[(ebx,PD_DESCALE_P1)java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
punpckhwd mm7,java.lang.StringIndexOutOfBoundsException: Range [24, 25) out of bounds for length 24
movq mm3, mm1
movq mm5, mm7
pmaddwd mm1, [GOTOFF(ebx, PW_MF050_MF256)] ; mm1 = tmp5L
pmaddwd mm7, [GOTOFF( ,DESCALE_P1
maddwdmm3,[(, PW_MF256_F050] ; mm3 = tmp6L
packssdw ,mm5; mm3 = data3
paddd mm1, mm0 ; mm1 = data5L)] mm1
,;java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
paddd, wk()
paddd mm5, MMWORD [wk(1
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
paddd mov edx data(eax; (DCTELEM *)
psrad mm1, DESCALE_P1
psrad mm7, DESCALE_P1
paddd mm3 GOTOFFebx,P)java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
DESCALE_P1)java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 31
srad ,DESCALE_P1
packssdwmm1,; mm1 = data5
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
movq mm0, MMWORD [movq mm3, MMWORD [MMBLOCK , )]
java.lang.StringIndexOutOfBoundsException: Range [64, 65) out of bounds for length 64
movq mm2,
movq mm3, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
movq mm0, mm2 ; mm2 = tmp4
movq mm6,;java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 5
paddw mm7
; pop edi ; unused ; pop esi ; unused ; pop edx ; need not be preserved ; pop ecx ; need not be preserved
POPPIC ebx movesp, ebp; esp <- aligned ebp popesp; esp <- original ebp popebp 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
; unused popesp; esp <- original ebp popebp ret
; For some reason, the OS X linker does not honor the request to align the ; segment unless we do this. align32; pop edx ; need not be preserved
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.17 Sekunden
(vorverarbeitet am 2026-08-25)
¤
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.