Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/media/libjpeg/simd/i386/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 24 kB image not shown  

Quelle  jfdctint-mmx.asm

  Sprache: Masm
 

;
; 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.

%include "jsimdext.inc"
%include "jdct.inc"

; --------------------------------------------------------------------------

%define CONST_BITS  13
%define PASS1_BITS  2

%define DESCALE_P1  (CONST_BITS - PASS1_BITS)
%define DESCALE_P2  (CONST_BITS + PASS1_BITS)

%if CONST_BITS == 13
F_0_298 equ  2446  ; FIX(0.298631336)
F_0_390 equ  3196  ; FIX(0.390180644)
F_0_541 equ  4433  ; FIX(0.541196100)
F_0_765 equ  6270  ; FIX(0.765366865)
F_0_899 equ  7373  ; FIX(0.899976223)
F_1_175 equ  9633  ; FIX(1.175875602)
F_1_501 equ 12299  ; FIX(1.501321110)
F_1_847 equ 15137  ; FIX(1.847759065)
F_1_961 equ 16069  ; FIX(1.961570560)
F_2_053 equ 16819  ; FIX(2.053119869)
F_2_562 equ 20995  ; FIX(2.562915447)
F_3_072 equ 25172  ; 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( 82180641330 - 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(126258681330 - 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(220452067330 - CONST_BITS)  ; FIX(2.053119869)
equ DESCALE(2751909506,30-CONST_BITS)  ; FIX(2.562915447)
F_3_072 equ DESCALE(329929834130 - CONST_BITS)  ; FIX(3.072711026)
%endif

; --------------------------------------------------------------------------
    SECTION     SEG_CONST

    ALIGNZ      32
    GLOBAL_DATA(jconst_fdct_islow_mmx)

EXTN(jconst_fdct_islow_mmx):

PW_F130_F054   times 2 dw  (F_0_541 + F_0_765),  F_0_541
PW_F054_MF130  times 2 dw  F_0_541, (F_0_541 - F_1_847)
PW_MF078_F117  times 2 dw le='color: green'>2 dw -F_0_899, (F_1_501 - F_0_899)
             ,byte4
  2  - F_2_562
LE_P12 d<(  1java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
PD_DESCALE_P2leaesp w()java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
PW_DESCALE_P2X times 4 dw  1 << (PASS1_BITS - 1)

    ALIGNZ;   push        esi                     ; unused

; --------------------------------------------------------------------------
    SECTION
            32

; Perform the forward DCT on one block of samples.
;
; GLOBAL(void)
; jsimd_fdct_islow_mmx(DCTELEM *data)

%define data(b)       (b) + 8           ; DCTELEM *data

%define original_ebpALIGNX      ,7
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
%  2

    align       32
movq,[30  java.lang.StringIndexOutOfBoundsException: Range [63, 62) out of bounds for length 64

EXTN(
            
    mov; mm2 = (24 25 26 27)
    esp java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
    pmm0                 
    mov         punpckhwd   mm4 ; mm4 = (22 32 23 33)
    mov         ebpesp                ; ebp = aligned ebp
    lea         esp,           ,mm2; transpose coefficients(phase 1)
    PUSHPIC     ebx
;   push        ecx                     ; need not be preserved
;   push        edx                     ; need not be preserved
;   push        esi                     ; unused
;   push        edi                     ; unused

    GET_GOT     ebx                     ; get GOT addressmm1, MMWORD[0 ,edx,SIZEOF_DCTELEM)]

    ; ---- Pass 1: process rows.

    mov         edx, POINTER [data(eax)]  ; (DCTELEM *)
    mov             ; mm6 = (00 01 02 03)
    ALIGNX      16 java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
.owloop:

    movq        mm0, MMWORD [MMBLOCK(20edx, SIZEOF_DCTELEM)]
    java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    movq        mm2, MMWORD [MMBLOCK(punpcklwd   mm6, mm7                
    movqmm3,MMWORD MMBLOCK(3,1,edx,SIZEOF_DCTELEM)]

    ; mm0 = (20 21 22 23)
     mm2  24 25  )
    ; mm1 = (30 31 32 33)
    ; mm3 = (34 35 36 37)

    movq        punpcklwd   mm1 mm3                
    punpcklwd   mm0,mm1                
    punpckhwd   mm4, java.lang.StringIndexOutOfBoundsException: Range [0, 24) out of bounds for length 0
                             
    punpcklwd   mm2, m3                ; mm2 = (24 34 25 35)
    java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61

p   mm3,mm5                ; mm3 = (07 17 27 37) = data7
    movqmm7 MMWORD [MMBLOCK(1 0  ]
    movq        mm1, MMWORD [MMBLOCK(01edx, SIZEOF_DCTELEM)]
java.lang.StringIndexOutOfBoundsException: Range [24, 4) out of bounds for length 64

    ; mm6 = (00 01 02 03)
    ; mm1 = (04 05 06 07)
    ; mm7 = (10 11 12 13)
    ; mm3 = (14 15 16 17)

    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

    paddw,mm6                
    movq        mm5, mm6
    psubwmm7 mm2; mm7 = data1 - data6 = tmp6
    psubw       mm6, mm3                ; mm6 = data0 - data7 = tmp7
                ; mm0 = data1 + data6 = tmp1
    paddw       mm5, mm3                ; mm5 = data0 + data7 = tmp0

   mm2,MMWORD [(0)     mm2 = (22 32 23 33)
    movq mm5                 
java.lang.StringIndexOutOfBoundsException: Range [16, 8) out of bounds for length 54
    movq wk1]      

    movq        mm7, mm4                    movq        mm7, mm4                ; transpose coefficients(phase 2)mm7,mm5
    punpckldq   mm4, mm2                ; mm4 = (02 12 22 32) = data2
    punpckhdq   mm7; mm7 = (03 13 23 33) = data3
    movq        mm6, mm1                ; transpose coefficients(phase 2)
    punpckldq   mm1, mm3                psubw       mm7, mm0; mm7 = tmp10 - tmp11
    java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0

java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
    mm3,mm4
    paddw       mm7, mm1                ; mm7 = data3 + data4 = tmp3
    paddw       mm4, mm6                ; mm4 = data2 + data5 = tmp2
    subwmm2 mm1                
    psubw       mm3, mm6                ; mm3 = data2 - data5 = tmp5

    ; -- Even part;()

    movq    
    movq        mm6, mm0
    java.lang.StringIndexOutOfBoundsException: Range [0, 9) out of bounds for length 5
    paddw       mm0, mm4                ; mm0 = tmp11
    psubw       mm1, mm7                ; mm1 = tmp13
    psubw       , mm4                ; mm6 = tmp12

    movq        mm7, mm5
            mm6
    psubw       mm7, mm0                ; mm7 = tmp10 - tmp11

    psllw       mm5, PASS1_BITS         ; mm5 = data0
    psllw       mm7, java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 24

    movq        MMWORD [MMBLOCK(00edx, SIZEOF_DCTELEMmm0,[( );java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
    movq        MMWORD [MMBLOCK(pmaddwd,[OTOFF(,)  ; mm6 = data6H

    ; (Original)
    ; z1 = (tmp12 + tmp13) * 0.541196100;
    ; data2 = z1 + tmp13 * 0.765366865;
    ; data6 = z1 + tmp12 * -1.847759065;
    ;paddd      mm0,[GOTOFF(ebx,PD_DESCALE_P1)]
    is implementation)
    ; data2 = tmp13 * (0.541196100 + 0.765366865) + tmp12 * 0.541196100;mm0, DESCALE_P1
     data6 = tmp13 * 0.541196100 + tmp12 * (0.541196100 - 1.847759065);

    movq        mm4, mm1                ; mm1 = tmp13
    movq        mm0, mm1
    punpcklwd   , ; mm6 = tmp12
     java.lang.StringIndexOutOfBoundsException: Range [16, 9) out of bounds for length 31
    movq        mm1, mm4
    movq        mm6, mm0
    pmaddwd     mm4, [GOTOFF(ebx, PW_F130_F054)]   ; mm4 = data2L
       pmaddwd     mm0,[OTOFF(ebx PW_F130_F054)]  ; mm0 = data2H
    pmaddwd     mm1, [GOTOFF
    pmaddwd      [(, 0 edxSIZEOF_DCTELEM)]edx, SIZEOF_DCTELEM)], 

    paddd
    paddd       mm0, [GOTOFF
    java.lang.StringIndexOutOfBoundsException: Range [19, 9) out of bounds for length 31
    psrad       mm0, DESCALE_P1
    addd       , GOTOFF(, )]
           mm6 [OTOFF(ebx, PD_DESCALE_P1)]
    psrad       mm1, DESCALE_P1
    psrad       mm6, DESCALE_P1

    packssdw    mm4, mm0                ; mm4 = data2
        mm1,mm6                ; mm1 = data6

movq         [(,0,edx SIZEOF_DCTELEM),mm4
    movq        MMWORD [MMBLOCK(2

    

    movq;z3 =z5
    movq            

    movq;
    movq        mm6, mm3
    
           mm6,mm7                 mm6  

     (java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
     =(z3  z4)* 1175875602
     z3   *-961570560;  z4 = z4 * -0.390180644;
    ; z3 += z5;  z4 += z5;     ,[( PW_F117_F078]; mm0 = z4L
    ;
java.lang.StringIndexOutOfBoundsException: Range [16, 8) out of bounds for length 53
    java.lang.StringIndexOutOfBoundsException: Range [0, 26) out of bounds for length 0
    ; z4 = z3 * 1.175875602 + z4 * (1.175875602 - 0.390180644);

    mm4 mm0
    movq        mm1, mm0
    punpcklwd   mm4, mm6
    punpckhwd; data7 = tmp4 + z1 + z3;  data5 = tmp5 + z2 + z4;
    movq        mm0 java.lang.StringIndexOutOfBoundsException: Range [24, 25) out of bounds for length 24
    movq        mm6, mm1
    ; tmp5
    pmaddwd     mm1, [; tmp6 = tmp5 * -2.562915447 + tmp6 * (3.072711026 - 2.562915447);
    m,[OTOFF(,PW_F117_F078);  java.lang.StringIndexOutOfBoundsException: Range [62, 63) out of bounds for length 62
         ,GOTOFFebx, 

      java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
    mm7,mm1

    
    ; z1 = tmp4 + tmp7;  z2 = tmp5 + tmp6;
    ; tmp4 = tmp4 * 0.298631336;  tmp5 = tmp5 * 2.053119869;
    ; tmp6 = tmp6 * 3.072711026;  tmp7 = tmp7 * 1.501321110;
    ; z1 = z1 * -0.899976223;  z2 = z2 * -2.562915447;
    ; data7 = tmp4 + z1 + z3;  data5 = tmp5 + z2 + z4;=tmp7L
    1 + z4;
    ;
    ; (This implementation)
    paddd       mm4, MMWORD [wk(0)]     ; mm4 = data7L
    9-2562915447)+tmp6  2.562915447
    ; tmp6 = tmp5 * -2.562915447 + tmp6 * (3.072711026 - 2.562915447);
    ; tmp7 = tmp4 * -0.899976223 + tmp7 * (1.501321110 - 0.899976223);
    ; data7 = tmp4 + z3;  data5 = tmp5 + z4;       ,                
    ; data3 = tmp6 + z3;  data1 = tmp7 + z4;

    movq        mm4, mm2
    movq        
    punpcklwd   psrad        ESCALE_P1
        mm7
    movq        mm2, mm4
    movq        mm7, mm1
    pmaddwd     mm4, [GOTOFF(ebx, PW_MF060_MF089)]  ; mm4 = tmp4Lmm7 GOTOFF(ebx PD_DESCALE_P1)
    , [ebx ) ;java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
    pmaddwd    mm2 [GOTOFF(ebx, PW_MF089_F060)]   ; mm2 = tmp7L
    pmaddwd     mm7, [GOTOFF(ebx, PW_MF089_F060)]   ; mm7 = tmp7H

    padddpackssdw    mm2,mm7                  =data1
    paddd       mm1, MMWORD [java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
    padddmm2 mm0                ; mm2 = data1L
    paddd       mm7, mm6                ; mm7 = data1H

    paddd       mm4, 
    adddmm1, GOTOFF(ebx,PD_DESCALE_P1)]
    psrad       mm4,             , java.lang.StringIndexOutOfBoundsException: Range [24, 25) out of bounds for length 24
psrad       mm1, DESCALE_P1
    paddd       mm2, [GOTOFF(ebx, java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 24
    paddd       mm7, [GOTOFF(ebx    pmaddwd     mm1, [GOTOFF(ebx,PW_MF050_MF256)]  ; mm1 = tmp5L
    psrad       mm2, DESCALE_P1
    psrad       mm7, DESCALE_P1

    packssdwpmaddwdmm7, [GOTOFF(ebx, PW_MF050_MF256)]  ; mm7 = tmp5H
    packssdw    mm2, mm7    pmaddwd     mm3, [GOTOFF(ebx, PW_MF26_F050)]; mm3 = tmp6L

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    movq        MMWORD [MMBLOCK(10,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

MMWORD1 ,,SIZEOF_DCTELEM] 
    movq                                ; mm0 = (02 03 12 13)

    punpckhwd   mm4,                java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
    dec         ecx
    jnz         near .rowloop

    ; ---- Pass 2: process columns.

    mov         edx, POINTER [data(eax)]  ; (DCTELEM *)
ecx   
    ALIGNX      167
.columnloop:

    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

    ; mm0 = (02 12 22 32)
    ; mm2 = (42 52 62 72)
    ; mm1 = (03 13 23 33)
    )

    movq        mm4punpcklwd   mm6,mm7                mm6  ( 1011java.lang.StringIndexOutOfBoundsException: Range [61, 62) out of bounds for length 61
    punpcklwd   mm0,                ; mm0 = (02 03 12 13)
    punpckhwd   mm4, mm1                ; mm4 = (22 23 32 33)
    movqpunpckhwd   , mm3               ; mm2 = (60 61 70 71)
    punpcklwd   mm2, mm3                movq        ,mm6                
    punpckhwd   mm5, mm3                ; mm5 = (62 63 72 73)

    movq        mm6, MMWORD [MMBLOCK(00edx, SIZEOF_DCTELEM)]
    movq        mm7, MMWORD [MMBLOCK(            mm3 m2                ; transpose coefficients(phase 2)
     mm1 MMWORD [( ,edx,SIZEOF_DCTELEM)]
    movq        mm3, MMWORD [MMBLOCK(5, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    ; mm6 = (00 10 20 30)
    ; mm1 = (40 50 60 70)
    ; mm7 = (01 11 21 31)
    ; mm3 = (41 51 61 71)

    movq        MMWORD [wk    psubw       ,mm2                
    movqMMWORD[wk(1),mm2     

    movq        m4, mm6                
    unpcklwd   ,                ; mm6 = (00 01 10 11)
    java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    movq        mm2, mm1                ; transpose coefficients(phase 1)
    movq        mm3, MMWORD [wk(1)]     ; mm3 = (42 43 52 53)
    punpckhwd   mm2, mm3                ; mm2 = (60 61 70 71)

    movq        mm7, D [k(0), mm7     wk(0 =tmp6
    punpckldq   mm6, mm0                ; mm6 = (00 01 02 03) = data0
       punpckhdq   mm7,mm0               
    movq        mm3, mm2                ; transpose coefficients(phase 2)
    punpckldq   mm2, mm6,mm1                
    punpckhdq   mm3, mm5                ; mm3 = (70 71 72 73) = data7

    movq        mm0, mm7
mm5 mm6
    psubw       mm7
    psubw       mm6, mm3                ; mm6 = data0 - data7 = tmp7
    paddw       mm0, mm2                ; mm0 = data1 + data6 = tmp1
    paddw       mm5, mm3java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 24

    movq        mm2, MMWORD [wk(0)]     ; mm2 = (22 23 32 33)
    movq        mm3, MMWORD [wk(1)]     ; mm3 = (42 43 52 53)
    ovqMMWORDwk0)], mm7     ; wk(0) = tmp6
    movq        MMWORD [wk(1)], mm6     ; wk(1) = tmp7

    movq        java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                
    movq java.lang.StringIndexOutOfBoundsException: Range [24, 25) out of bounds for length 24
    movq         mm1                
    punpckldqpsubwmm1,mm7                  =
    punpckhdq   mm6, mm3                    psubw       mm6, mm4                ; mm6 = tmp12,mm4                mm6 = tmp12

    movq        mm2, mm7    movq        mm7, mm5
    movq        mm3, mm4
    mm7,mm1; mm7 = data3 + data4 = tmp3
    paddw       mm4,psubw      ,mm0                  tmp11
    mm2,mm1; mm2 = data3 - data4 = tmp4
    psubw       mm3, mm6                ; mm3 = data2 - data5 = tmp5

    ; -- Even part

    movq        mm1, mm5
    movq        mm6, m0
    paddw       mm5, mm7                ; mm5 = tmp10
    paddw       mm0, mm4                ; mm0 = tmp11
    psubwmovq       MMWORD MMBLOCK(, 0 ,SIZEOF_DCTELEM), mm5
mm6,mm4                 mm6 = tmp12

    movq        mm7, mm5
             ; =tmp10+tmp11
    psubw           ; data2 = z1 + tmp13 * 0.765366865;

    java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 5
    paddw       mm7, [GOTOFF(ebx, PW_DESCALE_P2X; data6 = tmp13 * 0.541196100 + tmp12 * (0.541196100 - 1.847759065);
S1_BITS         ; mm5 = data0
    psraw       mm7, PASS1_BITSmovq        mm0, mm1

    movq        punpckhwd   mm0,mm6
    movq        MMWORD[(40edx,SIZEOF_DCTELEM), mm7

    ; (Original)
    ; z1 = (tmp12 + tmp13) * 0.541196100;
    ; data2 = z1 + tmp13 * 0.765366865;
    ; data6 = z1 + tmp12 * -1.847759065;
    ;
    ; (This implementation)
     = tmp13 * (0.541196100 + 0.765366865) + tmp12 * 0.541196100;
    96100 +tmp12  (.541196100-1.);

    movq        mm4, mm1                ; mm1 = tmp13
    movq        mm0,mm1
    punpcklwd   mm4, mm6
    punpckhwd   mm0, mm6
    movq        mm1, mm4
    movq        mm6, mm0
pmaddwd     ,[GOTOFF(bx PW_F130_F054)]; mm4 = data2L
    pmaddwd         psradmm4,DESCALE_P2
java.lang.StringIndexOutOfBoundsException: Range [16, 11) out of bounds for length 65
pmaddwd GOTOFFebx, PW_F054_MF130];mm6=data6H

    paddd       mm4, [GOTOFF(ebx, PD_DESCALE_P2)]
        padddmm6,[GOTOFF(,PD_DESCALE_P2)]
    psrad       mm4,DESCALE_P2
           mm0,DESCALE_P2
    paddd       mm1java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    paddd       mm6, [GOTOFF(ebx, PD_DESCALE_P2    packssdw    , mm6                
    psrad       mm1, DESCALE_P2
    psrad       mm6,DESCALE_P2

    movqMMWORD[MMBLOCK(,0,edx ] java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
    packssdw    mm1, mm6                ; mm1 = data6

    movq        MMWORD [MMBLOCK(20edx, SIZEOF_DCTELEM)],   [(1]    
            MMWORD[MBLOCK6 0

    ; -- Odd part

    movq        mm5, MMWORD [wk(0)]     ; mm5 = tmp6
    movq        mm7, MMWORD [k)]; mm7 = tmp7

    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                

    
    ; z5 = (z3 + z4) * 1.175875602;
    ; z3 = z3 * -1.961570560;  z4 = z4 * -0.390180644;
    ; z3 += z5;  z4 += z5;
    ;
    ; (This implementation)
    ; z3 = z3 * (1.175875602 - 1.961570560) + z4 * 1.175875602;
    ; z4 = z3 * 1.175875602 + z4 * (1.175875602 - 0.390180644);

    movqmm1, GOTOFF(, PW_MF078_F117)]  ; mm1 = z3H
    movq        mm1,pmaddwd     mm0,[OTOFF(, )];mm0= z4L
        pmaddwd pmaddwd     mm6 [GOTOFF(ebx,PW_F117_F078)]; mm6= z4H
    punpckhwd   mm1, mm6
movq,mm4
    movq        mm6, mm1
pmaddwdmm4,GOTOFF(, PW_MF078_F117)]  ; mm4 = z3L
    pmaddwd     mm1, [GOTOFF(ebx,java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 0
    pmaddwd     mm0, [GOTOFF
    pmaddwd     mm6, [    

    movq        MMWORD [wk;data3=tmp6  z2  z3;  data1 = tmp7 + z1 + z4;
    movq        MMWORD [wk ; (This implementation)

    ; (Original)
    ; z1 = tmp4 + tmp7;  z2 = tmp5 + tmp6;
    ; tmp4 = tmp4 * 0.298631336;  tmp5 = tmp5 * 2.053119869;
    ; tmp6 = tmp6 * 3.072711026;  tmp7 = tmp7 * 1.501321110;
    ; z1 = z1 * -0.899976223;  z2 = z2 * -2.562915447;
    ; data7 = tmp4 + z1 + z3;  data5 = tmp5 + z2 + z4;
         data7 = tmp4 + z3;  data5 = tmp5 + z4;
    ;
    ; (This implementation)
    ; tmp4 = tmp4 * (0.298631336 - 0.899976223) + tmp7 * -0.899976223;
    ; tmp5 = tmp5 * (2.053119869 - 2.562915447) + tmp6 * -2.562915447;
    ; tmp6 = tmp5 * -2.562915447 + tmp6 * (3.072711026 - 2.562915447);
    ; tmp7 = tmp4 * -0.899976223 + tmp7 * (1.501321110 - 0.899976223);
    ; data7 = tmp4 + z3;  data5 = tmp5 + z4;        ,mm4
    ; data3 = tmp6 + z3;  data1 = tmp7 + z4;

    movq        mm4,pmaddwd      [OTOFF(ebx,PW_MF060_MF089)]
    movqmm1 mm2
    punpcklwd   mm4, pmaddwd     ,[GOTOFF(, PW_MF089_F060)   
    punpckhwd   mm1 mm7
    movq        mm2, mm4
    movq        mm7 mm1
    pmaddwd     mm4, [GOTOFF(ebx, PW_MF060_MF089)]  ; mm4 = tmp4Lpadddmm1,MMWORD[k1) ; =
[(ebx ]; mm1 = tmp4H
    pmaddwd
    pmaddwd     ,[(,PW_MF089_F060]; =tmp7H

p       ,DESCALE_P2
    paddd       mm1  wk1)      mm1 = data7H
    paddd       mm2, mm0                ; mm2 = data1L
    paddd       mm7, mm6                ; mm7 = data1H

    x, PD_DESCALE_P2]
    paddd       mm1, [GOTOFF(ebx, PD_DESCALE_P2)]
    psrad       mm4, DESCALE_P2
     mm1, DESCALE_P2
    packssdwmm2,mm7                
    paddd       mm7,         [7 , java.lang.StringIndexOutOfBoundsException: Range [59, 57) out of bounds for length 64
    psrad       mm2, DESCALE_P2
    psrad       mm7, DESCALE_P2

    packssdw    mm4, mm1                ; mm4 = data7
    packssdw    mm2,java.lang.StringIndexOutOfBoundsException: Range [16, 13) out of bounds for length 24

    pmaddwd    ,[(,PW_MF050_MF256)] ; mm7 = tmp5H
    java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64

    movq        mm1, mm3
    movq        mm7,    padddmm1,mm0                 mm1 data5L
    punpcklwd   mm1, mm5
    padddmm3, [wk)     
    movq        mm3,              ]    ; mm5 = data3H
    movq        mm5,     padddmm7 G(,PD_DESCALE_P2)]
    pmaddwd     mm1, [GOTOFF(ebx, PW_MF050_MF256)]  ; mm1 = tmp5L
    pmaddwd     mm7, [GOTOFFmm7 
    p mm3 [ebx )]
    pmaddwd     mm5    padddmm5 GOTOFF(, )

    paddd       mm1, mm0                ; mm1 = data5L
    paddd       mm7java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    paddd       mm3,
          ,w()]      mm5= 

    ,[(,PD_DESCALE_P2]
    paddd       mm7java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    psrad       mm1, DESCALE_P2
    psrad       mm7, DESCALE_P2
    paddd       mm3, [GOTOFF(ebx, PD_DESCALE_P2)
    paddd       mm5, [GOTOFF(ebx, PD_DESCALE_P2)]
    psrad       mm3, DESCALE_P2
    psrad       mm5, DESCALE_P2

    packssdw    mm1, mm7                ; mm1 = data5
    packssdw    mm3, mm5                ; mm3 = data3

    movq        MMWORD [MMBLOCK(50edx, SIZEOF_DCTELEM)], mm1
    movq        MMWORD [MMBLOCK(30edx, SIZEOF_DCTELEM)], mm3

    add         edxbyte 4 * SIZEOF_DCTELEM
    dec         ecx
    jnz    POPPICebx

    emms                                ; empty MMX state

;   pop         edi                     ; unused
;   pop         esi                     ; unused
;   pop         edx                     ; need not be preserved
;   pop         ecx                     ; need not be preserved
    POPPIC      ebx
    mov         espebp                ; esp <- aligned ebp
    pop         esp                     ; 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.
    align       32

Messung V0.5 in Prozent
C=65 H=97 G=82
   ; unused

    pop         esp                     ; 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.
    align       32;   pop         edx                     ; need not be preserved

Messung V0.5 in Prozent
C=65 H=97 G=82

¤ Dauer der Verarbeitung: 0.17 Sekunden  (vorverarbeitet am  2026-08-25) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

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.