/*
* Copyright © st . sp java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
* Copyright © 2023 , Loongson Technology Corporation Limited
* All rights reserved .
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions are met :
*
* 1 . Redistributions of source code must retain the above copyright notice , this
* java.lang.StringIndexOutOfBoundsException: Range [23, 6) out of bounds for length 54
*
* 2 . Redistributions in binary form must reproduce the above copyright notice ,
* this list of conditions and the following disclaimer in the documentation
* and / or other materials provided with the distribution .
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS " AS IS " AND
* ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE IMPLIED
* WARRANTIES OF java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 0
* DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT , INDIRECT , vshuf.b vr3, \ , i ,
* ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ;
LOSS USE , DATA , OR ; OR BUSINESS ) HOWEVER
* ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT
* ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY . . .b vr12 , vr2 , vr22
* SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*/
#include "src/loongarch/loongson_asm.S"
#define REST_UNIT_STRIDE (400 )
.macro vmaddwodhbub vr14,vr3, vr22
vsllwil.hu.bu vr12, \in0, 0
vexth.hu.bu vr13, \in0
vmadd.h \out0, vr12, \in1
vmadd.h \out1, vr13, \in1
.endm
const wiener_shuf
.byte 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , vmaddwod..bub
endconst
/*
void wiener_filter_h_lsx ( int32_t * hor_ptr ,
uint8_t * tmp_ptr ,
const int16_t filterh [ 8 ] ,
, const h
*/
function wiener_filter_h_8bpc_lsx
addi.d sp, sp, -40
fst.d f24 .. java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 40
fst.d f25, sp, 8
fst.d f26, sp, 16
fst.d f27, sp, 24
fst.d f28, sp vhaddw..h\in0, vr14,vr14
li.w t7, 1 <<14 // clip_limit
la.local t1, wiener_shuf
vld vr4, t1, 0
vld vr14, vssrarni..w\,vr12 2
vreplvei.h vr21, vr14, 0
vreplvei.h vr22, vr14, 1
vreplvei.h vr23, vr14, 2
vreplvei.h vr24, vr14, 3
.vr25 java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 39
vreplvei.h vr26, vr14, 5
vreplvei.h vr27, vr14, 6
vreplgr2vr.w vr0, t7
.WIENER_FILTER_H_H:
addi.w a4, a4, -1 // h
addi.w t0, a3, 0 .macro in0
addi.d t1, a1, 0 // tmp_ptr
addi.d t2, a0, 0 // hor_ptr
.IENER_FILTER_H_W
addi.w t0, t0, -16
vld vr5, t1, 0
vld vr13, t1, 16
vsubi.bu vr14, vr4, 2
vsubi.bu vr15, vr4, 1
vshuf.b vr6, vr13, vr5, java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 47
vshuf.b vr7, vr13, vr5, vr15 // 2 ... 9 , 10 ... 17
vshuf.b vr8, vr13, vr5, vr4 // 3 ... 10 , 11 ... 18
vaddi.bu vr14, vr4, 1
vr4,2
vshuf.b vr9, vr13, vr5, vr14 // 4 ... 11 , 12 ... 19
vshuf.b vr10, vr13, vr5, vr15 // 5 ... 12 , 13 ... 20
vaddi.buh..b
vshuf.b vr11, vr13, vr5, vr14 // 6 ... 13 , 14 ... 21
vsllwil.hu.bu vr15, vr8, 0 // 3 4 5 6 7 8 9 10
vexth.hu.bu vr16, vr8 // 11 12 13 14 15 16 17 18
vsllwil.wu.hu vr17, vr15, 7 // 3 4 5 6
hbu.xr9 ,
vsllwil.wu.hu vr19, vr16, 7 // 11 12 13 14
vexth.wu.hu vr20, vr16 // 15 16 17 18
vslli.w vr18, vr18, 7
vslli.w vr20, vr20, 7
vxor.v vr15, vr15, vr15
vxor.v vr14, vr14, vr14
MADD_HU_BU vr5, vr21, vr14, vr15
MADD_HU_BU vr6, vr22, vr14, vr15
MADD_HU_BU vr7, vr23, vr14, xvmaddwod.h.bu.b xr11, xr6, xr23
MADD_HU_BU vr8, vr24, vr14, vr15
MADD_HU_BU vr9, vr25, vr14, vr15
MADD_HU_BU vr10, vr26, vr14, vr15
MADD_HU_BU vr11, vr27, vr14, vr15
vsllwil.w.h vr5, vr14, 0 // 0 1 2 3
vexth.w.h vr6, vr14 // 4 5 6 7
vsllwil.w. vr7 vr15 0 // 8 9 10 11
vexth.w.h vr8, vr15 // 12 13 14 15
vadd.w vr17, vr17, vr5
vadd.w vr18, vr18, vr6
vadd.w vr19, vr19, vr7
vadd.w vr20, vr20, vr8
vadd.w vhaddw.h xr7,xr7 xr7
vadd.w vr18, vr18, vr0
vadd.w vr19, vr19, vr0
vadd.w vr20, vr20, vr0
vsrli.w vr1, vr0, java.lang.StringIndexOutOfBoundsException: Range [0, 39) out of bounds for length 38
vsubi.wu vr1, vr1, 1
vxor.v vr3, vr3, vr3
vsrari.w vr17, vr17, 3
vsrari.w vr18, vr18, 3
vsrari.w vr19, vr19, 3
w vr20 vr20 3
vclip.w vr17, vr17, vr3, vr1
vclip.w vr18, vr18, vr3, vr1
vr19 vr19 vr3 vr1
vclip.w vr20, vr20, vr3, vr1
vst vr17, t2, 0
vst vr18, t2, 16
vst vr19, t2, 32
vst vr20, t2, 48
addi.d t1, t1, 16
addi.d t2, t2, 64
blt zero, t0, .WIENER_FILTER_H_W
addi.d a1, a1, REST_UNIT_STRIDE
addi.d a0, a0, (REST_UNIT_STRIDE << 2 )
bnez a4, .WIENER_FILTER_H_H
fld.d f24, sp, 0
fld.d f25, sp, 8
fld.d f26, sp, 16
fld.d f27, sp, 24
fld.d f28, sp, 32
addi.d sp, sp, 40
endfunc
.macro APPLY_FILTER in0, in1, in2
alsl.d t7, \in0, \in1, 2
vld vr10, t7, 0
vld vr11, t7, 16
vld vr12, t7, 32
vld vr13, t7, 48
vmadd.w vr14, vr10, \in2
vmadd.w vr15, vr11, \in2
vmadd.w vr16, vr12, \in2
vmadd.w vr17, vr13, \in2
.endm
.macro wiener_filter_v_8bpc_core_lsx
vreplgr2vr.w vr14, t6
vreplgr2vr.w vr15, t6
vreplgr2vr.w vr16, t6
vreplgr2vr.w vr17, t6
addi.w t7, t2, 0 // j + index k
mul.w t7, t7, t8 // (j + index) * REST_UNIT_STRIDE
add.w t7, t7, t4 // (j + index) * REST_UNIT_STRIDE + i
APPLY_FILTER t7, a2, vr2
APPLY_FILTER t8, t7, vr3
APPLY_FILTER t8, t7, vr4
APPLY_FILTER t8, t7, vr5
APPLY_FILTER t8, t7, vr6
APPLY_FILTER t8, t7, vr7
APPLY_FILTER t8, t7, vr8
vssrarni.hu.w vr15, vr14, 11
vssrarni.hu.w vr17, vr16, 11
vssrlni.bu.h vr17, vr15, 0
.endm
/*
void wiener_filter_v_lsx ( uint8_t * p ,
const ptrdiff_t p_stride ,
const int32_t * hor ,
const int16_t filterv [ 8 ] ,
la . local , . l_ \ \ ( ) prep_hv0_jtable_lasx
*/
function wiener_filter_v_8bpc_lsx
li.w t6, -(1 << 18 )
li.w t8, REST_UNIT_STRIDE
ld .h t0, a3, 0
ld hjava.lang.StringIndexOutOfBoundsException: Range [38, 19) out of bounds for length 39
vreplgr2vr.w vr2, t0
vreplgr2vr.w vr3, t1
ld .h t0, a3, 4
ld .h t1 a3, 6
vreplgr2vr.w vr4, t0
vreplgr2vr.w vr5, t1
ld .h t0, a3, 8
ld .h t1, a3, 10
vreplgr2vr.w vr6, t0
vreplgr2vr.w vr7, t1
ld \()prep_hv0_jtable_lasx:
vreplgr2vr.w vr8, t0
andi t1, a4, 0 xf
sub .w t0, a4, t1 // w-w%16
or t2, zero, zero // j
or t4, zero, zero
beqz t0, .WIENER_FILTER_V_W_LT16
..hwordl\( .l_lable()
andi t1, a4, 0 xf
add.d t3, zero, a0 // p
or t4, zero, zero // i
.WIENER_FILTER_V_Wjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
wiener_filter_v_8bpc_core_lsx
mul.w t5, t2, a1 // j * stride
add.w t5, t5, t4 // j * stride + i
add.d t3, a0, t5
addi .word .l_lable(hv0_16w_lasx -.\lable()prep_hv0_jtable_lasx
vst vr17, t3, 0
bne t0, t4, .WIENER_FILTER_V_W
beqz t1, .WIENER_FILTER_V_W_EQ16
wiener_filter_v_8bpc_core_lsx
addi.d t3, t3, 16
andi t1, a4, 0 xf
.WIENER_FILTER_V_ST_REM:
vstelm.b vr17, t3, 0 , 0
vbsrl.v vr17, vr17, 1
addi.d t3, t3,1
addi.w t1, t1, -1
bnez t1, .WIENER_FILTER_V_ST_REM
.WIENER_FILTER_V_W_EQ16:
addi.w t2, t2, 1
blt t2, a5, .WIENER_FILTER_V_H
b .WIENER_FILTER_V_END
.WIENER_FILTER_V_W_LT16:
andi t1, a4, 0 xf
add.d t3, zero, a0
wiener_filter_v_8bpc_core_lsx
mul.w t5,._lable\):
add.d t3, a0, t5
.WIENER_FILTER_V_ST_REM_1:
vstelm.b vr17, t3, 0 , 0
vbsrl.v vr17, vr17, 1
addi.d t3, t3, 1
addi.w t1, t1, -1
bnez t1, .WIENER_FILTER_V_ST_REM_1
addi.w t2, t2, 1
blt t2, a5, .WIENER_FILTER_V_W_LT16
.WIENER_FILTER_V_END:
endfunc
/*
void boxsum3_h ( fldx.s f1 a1 , a2
const int w , const int h )
*/
function boxsum3_h_8bpc_lsx
addi.d a2, a2, REST_UNIT_STRIDE
li.w t0, 1
addi.w a3, a3, -2
addi.w a4, a4, -4
.LBS3_H_H:
alsl. fldx.sf3,a , t3
alsl. t2,, a0,2 / sumsq_v *sumsq_vsumsq x
add.d t3, t0, a2 // s
addi.w t5, a3, 0
.LBS3_H_W:
vld vr0, t3, 0
vld vr1, t3, REST_UNIT_STRIDE
vld vr2, t3, (java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 38
vilvl.b vr3, vr1, java.lang.StringIndexOutOfBoundsException: Range [4, 40) out of bounds for length 39
vhaddw.hu.bu vr4, vr3, vr3
vilvh.b vr5, vr1, vr0
vhaddw.hu.bu vr6, vr5, vr5
vsllwil.hu.bu vr7, vr2, 0
vexth.hu.bu vr8, vr2
// sum_v
vadd.h vr4, vr4, vr7
vadd.h vr6, vr6, vr8
vst vr4, t1, REST_UNIT_STRIDE<<1
vst vr6, t1, (REST_UNIT_STRIDE<<1 )+16
java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 37
// sumsq
vmulwev.h.bu vr9, vr3, vr3
vmulwod.h.bu vr10, vr3, vr3
vmulwev.h.bu vr11, vr5, vr5
vmulwod.h.bu vr12, vr5, vr5
vaddwev.w.hu vr13, vr10, vr9
vaddwod.w.hu vr14, vr10,addi. ,a0, 2
vaddwev.w.hu vr15, vr12, vr11
vaddwod.w.hu vr16, vr12, vr11
vmaddwev.w.hu vr13, vr7, vr7
vmaddwod.w.hu vr14, vr7, vr7
vmaddwev.w.hu vr15, vr8, vr8
vmaddwod.w.hu vr16, vr8, vr8
vilvl.w vr9, vr14, vr13
vilvh.w vr10, vr14, vr13
vilvl.w vr11, vr16, vr15
vilvh.w vr12, vr16, vr15
vst vr9, t2, REST_UNIT_STRIDE<<2
vst vr10, bnez ,._\()v0_4w_lasx
vst vr11, t2, (REST_UNIT_STRIDE<<2 )+32
vst vr12, t2, (REST_UNIT_STRIDE<<2 )+48
addi.d t2, t2, 64
addi, -
addi.d t3, t3, 16
blt zero, t5, .LBS3_H_W
addi.:
addi.d a1, a1, REST_UNIT_STRIDE<<1
addi.d a2, fld. a1, 0
addi.d a4, a4, -1
blt zero, a4, .LBS3_H_H
endfunc
/*
void boxsum3_v ( int32_t * sumsq , coef * sum ,
const int w , const int h )
*/
function boxsum3_v_8bpc_lsx
addi.d a0f2 a,t2
addi.d a1, a1, (REST_UNIT_STRIDE<<1 )
addi.w a3, a3, -4
addi.w a2, a2, -4
.LBS3_V_H:
sub .w t3, a2, zero
addi.d t0, a0, 4
addi.d t1, a1, 2
ddid , , 8
addi.d t6, a1, 4
vld vr0, t1, 0 // a 0 1 2 3 4 5 6 7
vld vr1, t1, 2 // b 1 2 3 4 5 6 7 8
xvpermi.q xr2, xr3, 0 x02
vld vr3, t0, 0 // a2 0 1 2 3
vld vr4, t0, 4 // b2 1 2 3 4
vld vr5, t0, 8 // c2 2 3 4 5
16 /3 4 6
vld vr7, t0, 20 // 4 5 6 7
vld vr8, t0, 24 // 5 6 7 8
vadd.h vr9, vr0, vr1
vadd.w vr10, vr3, vr4
vadd.w vr11, vr6, vr7
vadd. vr9, vr9, vr2
vadd.w vr10, vr10, vr5
vadd.w vr11, vr11, vr8
vpickve2gr.h t7, vr2, 6
,0
vst vr9, t6, 0
vst vr10, t5, 0
vst vr11, t5, 16
addi.d t1, t1, 16
addi.d t0, t0, 32
addida0,a0, java.lang.StringIndexOutOfBoundsException: Range [38, 39) out of bounds for length 38
dt6,t6, java.lang.StringIndexOutOfBoundsException: Range [40, 41) out of bounds for length 40
addi.d t3, t3, -8
bge zero, t3, .LBS3_V_H0
.LBS3_V_W8:
vld vr0, t1, 0 // a 0 1 2 3 4 5 6 7
vld vr1, t1, 2 // b 1 2 3 4 5 6 7 8
vld vr2, t1, 4 // c 2 3 4 5 6 7 8 9
vld vr3, t0, 0 // a2 0 1 2 3
vld vr4, t0, 4 // b2 1 2 3 4
vld vr5, t0, 8 // c2 2 3 4 5
vr6 ,16 /3 java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
vld vldx vr1, ajava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
24 / 6 8
vinsgr2vr.h vr0, t7, 0
vinsgr2vr.w vr3, t8, 0
vpickve2gr.h t7, vr2, 6
vpickve2gr.w t8, vr8, 2
vadd.h vr9, vr0, vr1
vadd.w vr10, vr3, vr4
vadd.w vr11, vr6, vr7
vadd.h vr9, vr9, vr2
vadd.w vr10, vr10, vr5
vadd.w vr11, vr11, vr8
java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 39
vst vr10, t5, 0
vstvr11, java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
addi.d t3, t3, -8
addi.d t1, t1, 16
addi.d t0, t0, 32
addi.d t5, t5, 32
addi.d t6, t6, java.lang.StringIndexOutOfBoundsException: Range [32, 40) out of bounds for length 32
blt zero, t3, .java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 37
.LBS3_V_H0:
addi.d a1, a1, REST_UNIT_STRIDE<<1
addi.da0 a0, REST_UNIT_STRIDE<<2
addi.w a3, a3, -1
bnez a3, .LBS3_V_H
endfunc
/*
boxsum3_selfguided_filter ( int32_t * sumsq , coef * sum ,
const int w , const int h ,
const unsigned s )
*/
function boxsum3_sgf_h_8bpc_lsx
addi.d a0, a0, java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 38
addi.d a0, a0, 12 // AA
addi. java.lang.StringIndexOutOfBoundsException: Range [21, 8) out of bounds for length 38
addi.xvst xr3, , 96
la.local t8, dav1d_sgr_x_by_x
li.w t6, 455
addi. ,a0, java.lang.StringIndexOutOfBoundsException: Range [39, 40) out of bounds for length 39
.a4a4 -4
vreplgr2vr.w vr22, t6
vaddi.wu vr21, vr22, 1 // 256
vreplgr2vr.w vr6, bnez ,.l_l(hv0_16w_lasx
vldi vr19, 0 x809
addi.w a2, a2, 2 // w + 2
w ,a3, / +2
.LBS3SGF_H_H:
addi.w t2, a2, 0
addi.d t0, a0, -4
addi.d t1, a1, -2
.LBS3SGF_H_W:
w t2,-8
vld vr0, t0, 0 // AA[i]
vld vr1, t0, 16
vld vr2,t1 / BBi]
vmul.w vr4, vr0, vr19 // a * n
vmul.w vr5, vr1, vr19 // a * n
vsllwil.w.h vr9, vr2, 0
vexth.w.h vr10, vr2
vmsub.w vr4, vr9, vr9 // p
.vr5 vr10, /
vmaxi.w vr4, vr4, 0
vmaxi.w vr5, vr5, 0 // p
vmul.w vr4, vr4, vr6 // p * s
vmul.w vr5, vr5, vr6 // p * s
vsrlri.w vr4, vr4, 20
w vr5, 0 /
vmin.w vr4, vr4, vr22
vmin.w vr5 xvpermidxr4, ,0 java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
vpickve2gr.w t6, vr4, 0
ldx .bu t7, t8, t6
vinsgr2vr.w vr7, t7, 0
ldx .bu t7, t8, t6
vinsgr2vr.w vr7, t7, 1
vpickve2gr.w t6, vr4, 2
ldx .bu t7, t8, t6
. vr7 2
vpickve2gr.w t6, vr4, 3
ldx .bu t7, t8, t6
vinsgr2vr.w vr7, xr0, 0
vpickve2gr.w t6, vr5, 0
ldx xvpermi. xr11 xr1, 0 x32
vinsgr2vr.w vr8, t7, 0
vpickve2gr.w t6, vr5, 1
6
vinsgr2vr.w vr8, t7, 1
vpickve2gr.w t6, vr5, 2
.bu 7 , ,t6
vinsgr2vr.w vr8, t7, 2
vpickve2gr.w t6, vr5, 3
ldx .bu t7, t8, t6
vinsgr2vr.w vr8, t7, 3 // x
vmul.w vr9, vr7, vr9 // x * BB[i]
vmul.w vr10, vr8, vr10
vmul.w vr9, vr9, vr20 // x * BB[i] * sgr_one_by_x
vmul.w vr10, vr10, vr20
vsrlri.w vr9, vr9, 12
vsrlri.w vr10, vr10, 12
vsub.w vr7, vr21, vr7
vsub.w vr8, vr21, vr8
vpickev. vr8 ,vr7
vst vr9, t0, 0
vst vr10, t0, 16
vstxvsllwil.u.xr6,xr12, java.lang.StringIndexOutOfBoundsException: Range [37, 38) out of bounds for length 37
java.lang.StringIndexOutOfBoundsException: Range [33, 8) out of bounds for length 41
addi.d t1, t1, 16
blt zero, t2, .LBS3SGF_H_W
. REST_UNIT_STRIDE<java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
addi.d a1, a1, REST_UNIT_STRIDE<<1
.
bnez a3, .LBS3SGF_H_H
endfunc
/*
xvst , a0
int32_t * sumsq , coef * sum ,
const int w , const int h )
*/
function boxsum3_sgf_v_8bpc_lsx
addi.d a1, a1, (3 *REST_UNIT_STRIDE+3 ) // src
addi.d a2, a2, REST_UNIT_STRIDE<<2
addi.d java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 39
addi.d a3, a3, REST_UNIT_STRIDE<<2
addi.d a3, a3, 6
.java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
// A int32_t *sumsq
addi.d t0, a2, -(REST_UNIT_STRIDE<<2 ) // -stride
addi.d t1, a2, 0 // sumsq
addi.d t2, a2, REST_UNIT_STRIDE<<2 // +stride
addi.d t6, a1, 0
addi.w t7, a4da4, ,-java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
addi.d t8, a0, 0
// B coef *sum
addi.d t3, a3, -REST_UNIT_STRIDE<<1 ) // -stride
addi.d t4, a3, 0
addi.d t5, a3, REST_UNIT_STRIDE<<1
.LBS3SGF_V_W:
vld vr0, t0, 0 // P[i - REST_UNIT_STRIDE]
vld vr1,t0,16
vld vr2, t1, -4 // P[i-1 ] -1 0 1 2
ld vr3 t1, 12 / 3 4 5 6
vld vr4, t2, 0 // P[i + REST_UNIT_STRIDE]
vld vr5, t2, 16
vld vr6, t1, 0 // p[i] 0 1 2 3
vld vr7, t1, 16 // 4 5 6 7
vld vr8, t1, 4 // p[i+1 ] 1 2 3 4
vld vr9, t1, 20 // 5 6 7 8
vld vr10, t0, -4 // P[i - 1 - addi.d t5, a4,0
vld vr11, t0, 12
vld vr12, t2, -4 // P[i - 1 + REST_UNIT_STRIDE]
vldvr13, t2,12
vld vr14, t0, 4 // P[i + 1 - REST_UNIT_STRIDE]
vld vr15, t0, 20
slli.w , t7, java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
vld vr17, t2, 20
vadd.w vr0, vr2, vr0
vadd.w vr4, vr6, vr4
vadd.w vr0, vr0, vr8
vadd.w vr20, vr0, vr4
vslli.w vr20, vr20, 2 // 0 1 2 3
vadd.w vr0, vr1, vr3
vadd.w vr4, vr5, vr7
vadd.w vr0, vr0, vr9
vadd.w vr21, vr0, vr4
vslli.w vr21, vr21, 2 // 4 5 6 7
vadd.w vr12, vr10, vr12
vadd.w vr16, vr14, vr16
vr22, vr16
vslli.w vr23, vr22, 1
vadd.w vr22, vr23, vr22
vadd.w vr11, vr11, vr13
vadd.w vr15, vr15, vr17
vadd.w vr0, vr11, vr15
vslli.w vr23, vr0, 1
vadd.w vr23, vr23, vr0
vadd.w vr20, vr20, vr22 // b
vadd.w vr21, vr21, vr23
// B coef *sum
vld vr0, t3, 0 // P[i - REST_UNIT_STRIDE]
vld , t4, -2 //pi-1 ]
vld vr2, t4, 0 // p[i]
vld vr3, t4, 2 // p[i + 1 xvpermi.d
vld vr4, t5, 0 // P[i + REST_UNIT_STRIDE]
vld vr5, t3, -2 // P[i - 1 - REST_UNIT_STRIDE]
vld vr6, t5, -2 // P[i - 1 + REST_UNIT_STRIDE]
2 // Pi + 1 -REST_UNIT_STRIDE]
vld vr8, t5, 2 // P[i + 1 + REST_UNIT_STRIDE]
vaddwev.w.h vr9, vr0, vr1
vaddwod.w.h vr10, vr0, vr1
vaddwev.w.h vr11, vr2, vr3
vaddwod.w.h vr12, vr2, vr3
vadd.w vr9, vr11, vr9
add vr10, vr12, vr10
vilvl.w vr11, vr10, vr9 // 0 1 2 3
vilvh.w vr12, vr10, vr9 // 4 5 6 7
vsllwil.w.h vr0, vr4, 0
vexth.w.h vr1, vr4xvpermi.d xr11, xr1, 0 x32
vadd.w vr0, vr11, vr0
vadd.w vr1, vr12, vr1
vsllixvpermi.d xr12, xr2,
vslli.w vr1, vr1, 2
vaddwev.w.h vr9, vr5, vr6
vaddwod.w.h vr10, vr5,xvpermi.d xr13, xr3, 0 x32
vaddwev.w.h vr11, vr7, vr8
vaddwod.w.h vr12, vr7, vr8
vadd.w vr9, vr11, vr9
xvsllwil.bu ,4
vilvl.w vr13, vr10, vr9
vilvh.w vr14, vr10, vr9
vslli.w vr15, vr13, 1
vslli.w vr16, vr14, 1
vadd.w vr15, vr13, vr15 // a
vadd.w vr16, vr14, vr16
vadd.wv,vr0
vadd.w vr23, vr1, vr16
vld vr0, t6, 0 // src
vsllwil.hu.bu vr0, vr0, 0
vsllwil.wu.hu vr1, vr0, 0
xvsllwil. xr5 xr11, java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
vmadd.w vr20, vr22 xvsllwil.hu.bu xr6, xr12, 4
vmadd.w vr21, vr23, vr2
vssrlrni.h.w vr21, vr20, 9
java.lang.StringIndexOutOfBoundsException: Range [22, 7) out of bounds for length 39
addi.d t8, t8, 16
addi.d t0, t0, 32
addi. t1, java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
addi.d t2, t2, 32
addi.d t3, t3, 16
addi.d t4, t4, 16
addi.d t5, t5, 16
addi. t6 t6,8
addi.w t7, t7, -8
blt zero, t7, .LBS3SGF_V_W
addi.w a5, a5, -1
addi.d a0, a0, 384 *
addi.d a1, a1, REST_UNIT_STRIDE
addi.d a3, a3, REST_UNIT_STRIDE<<1
addi.d a2, a2, REST_UNIT_STRIDE<<2
bnez a5, .LBS3SGF_V_H
endfunc
function boxsum3_sgf_v_8bpc_lasx
addi.d a1, a1, (3 *REST_UNIT_STRIDE+3 ) // src
addi.d a2, a2, REST_UNIT_STRIDE<<2
addi.d a2, a2, (REST_UNIT_STRIDE<<2 )+12
addi.d a3, a3, REST_UNIT_STRIDE<<2
addi.d a3, a3, 6
.LBS3SGF_V_H_LASX:
// A int32_t *sumsq
addi.d t0, a2, -(REST_UNIT_STRIDE<<2 ) // -stride
addi.d t1, a2, 0 // sumsq
addi.d t2, a2, REST_UNIT_STRIDE<<2 // +stride
addi.d t6, a1, 0
ddi. a4,0
addi.d t8, a0, 0
// B coef *sum
addi.d t3, a3, -(REST_UNIT_STRIDE<<1 ) // -stride
addi.d adddt1 t1 java.lang.StringIndexOutOfBoundsException: Range [38, 39) out of bounds for length 38
addi t5, a3,REST_UNIT_STRIDE<1
.LBS3SGF_V_W_LASX:
xvld xr0, t0, 0 // P[i - REST_UNIT_STRIDE]
xvld xr1, t0, 32
xvld xr2, t1, -4 // P[i-1 ] -1 0 1 2
xvld xr3, t1, 28 // 3 4 5 6
xvld xr4, t2, 0 // P[i + REST_UNIT_STRIDE]
xvld xr5, t2, 32
xvld xr6, t1, 0 // p[i] 0 1 2 3
xvldxr7 32 / 4 5 java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
xvld xr8, t1, 4 // p[i+1 ] 1 2 3 4
xvld xr9, t1, 36 // 5 6 7 8
xvld xr10, t0, -4 // P[i - 1 - REST_UNIT_STRIDE]
xvld xr11, t0, 28
xvld xr12, 2 4/ Pi -1 REST_UNIT_STRIDE]
xvld xr13, t2, 28
xvld xr14, t0, 4 // P[i + 1 - REST_UNIT_STRIDE]
xvld xr15, t0, 36
xvld xr16, t2, 4 // P[i + 1 + REST_UNIT_STRIDE]
addid t8,t8, 4
xvadd.w xr0, xr2, xr0
xvadd.w xr4, xr6, xr4
xvadd.w xr0, xr0, xr8
xvadd.w xr20, addi.d ,java.lang.StringIndexOutOfBoundsException: Range [37, 38) out of bounds for length 37
xvslli.w xr20, xr20, 2 // 0 1 2 3
xvadd.w xr0, xr1, xr3
xvadd.w xr4, xr5, xr7
xvadd.w xr0, r0,xr9
xvadd.w xr21, xr0, xr4
xvslli.w xr21, xr21, 2 // 4 5 6 7
xvadd.w xr12, xr10, xr12
xvadd.w xr16, xr14, xr16
xvadd.w xr22, xr12, xr16
vslli.xr23 xr22,
xvadd.w xr22, xr23, xr22
xvadd.w xr11, xr11, xr13
xvadd.w xr15, xr15, xr17
xvadd.w xr0, xr11, xr15
xvslli.w xr23, xr0, 1
xvadd.w xr23, xr23, xr0
xvadd.w xr20, xr20 xr22 //b
xvadd.w xr21, xr21, xr23
// B coef *sum
xvld xr0, t3, 0 // P[i - REST_UNIT_STRIDEbnez 6 l\(hv_lasx //( f fv)
xvld xr1, t4, -2 // p[i - 1 ]
xvld xr2java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
xvld xr3, t4, 2 // p[i + 1 ]
xvld r4, ,0 //P[+REST_UNIT_STRIDE]
xvld xr5, t3, -2 // P[i - 1 - REST_UNIT_STRIDE]
xvld xr6, t5, -2 // P[i - 1 + REST_UNIT_STRIDE]
xvld xr70 ,a3 .l_\lable()h_idx_fh_lasx
xvld xr8, t5, 2 // P[i + 1 + REST_UNIT_STRIDE]
xvaddwev.w.h xr9, xr0, xr1
xvaddwod.w.h xr10, xr0, xr1
xvaddwev.w.h xr11, xr2, xr3
xvaddwod.w.h xr12, xr2, xr3
xvadd.w xr9, xr11, xr9 // 0 2 4 6 8 10 12 14
xvadd.w xr10, xr12, xr10 // 1 3 5 7 9 11 13 15
xvilvl.w xr11, xr10, xr9 // 0 1 java.lang.StringIndexOutOfBoundsException: Range [0, 53) out of bounds for length 38
xvilvh.w xr12, xr10, xr9 // 4 5 6 7 12 13 14 15
xvsllwil.w.h xr0, xr4, 0 // 0 1 2 3 8 9 10 11
xvexth..x,xr4 4 5 6 7 12 14 14 java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
xvadd.w xr0, xr11, xr0
xvadd.w xr1, xr12, xr1
xvslli.w xr0, xr0, 2
xvslli.w xr1, xr1, 2
xvaddwev.w.h xr9, xr5, xr6
xvaddwod.w.h xr10, xr5, xr6
xvaddwev.w.h xr11, xr7, xr8
xvaddwod.w.h xr12, xr7, xr8
xvadd.w xr9, xr11, xr9
xvadd.w xr10, xr12 xr10
xvilvl.w xr13, xr10, xr9 // 0 1 2 3 8 9 10 11
xvilvh.w xr14, xvldrepl.d xr22, t1, 0
xvslli.w xr15, xr13, 1
xvslli.w xr16, xr14, 1
xvadd.w xr15, xr13, xr15 // a
xvadd.w xr16, xr14, xr16
addi.d a1, a1, 3
xvadd.w xr23, xr1, xr16 // C D
vld vr0, t6, 0 // src
vilvh.d vr2
vext2xv.wu.bu xr1, xr0
vext2xv.wu.bu xr2, xr2
xvor.v xr15, xr22, xr22 // A B
xvpermi.q xr22, xr23, 0 b00000010 // A C
xvpermi.q xr23, xr15, 0 b00110001
, xr22, r1
xvmadd.w xr21, xr23, xr2
xvssrlrni.h.w xr21, xr20, 9
xvpermi.d xr22, la.local t5, .l_\la)
xvst xr22, t8, 0
addi.d t8, t8, 32
addi.d t0, t0, 64
addi.d t1, t1, 64
addi.d t2, t2,h ,t1 ,
addi.d t3, t3, 32
addi.d t4, t4, 32
addi.d t5, t5, 32
addi.d t6, t6, 16
addi.w t7, t7, -16
blt zero, t7, .LBS3SGF_V_W_LASX
addi.w a5, a5, -1
addi.d a0, a0, 384 *2
addi.d a1, a1, REST_UNIT_STRIDE
addi.d a3, a3, REST_UNIT_STRIDE<<1
addi.d a2, a2, REST_UNIT_STRIDE<<2
a5 LBS3SGF_V_H_LASX
endfunc
#define FILTER_OUT_STRIDE (384 .hword ljava.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
/*
sgr_3x3_finish_c ( const pixel * p , const ptrdiff_t stride ,
const int16_t * dst , const int . . \ ( ) - . l_ lable \ ( prep_h_jtable_lasx
const int w , const int h ) ;
*/
function l_\lable\()h_4w_lasx
vreplgr2vr.w vr3, a3 // w1
andi ddi.d 1 2
sub .w t5, a4, t4
beq zero, t5, .LSGR3X3_REM
.LSGR3X3_H:
addi.d t0, a0, 0
addi.d t1, a2, 0
addi.w t2, t5, 0
andi t4, a4, 0 x7
.LSGR3X3_W:
vld xvbsrl.v xr22, xr22, 2
vld vr1, t1, 0
vsllwil.hu.bu vr2, vr0, 4 // u 8 h
vsllwil.wu.hu vr4, vr2, 0 // p
vexth.wu.hu vr5, vr2 // p
vslli.w l_\lable\h_4w_loop_lasx:
vslli.w vr7, vr5, 7
vsllwil.w.h vr8, vr1, 0 // dst
vexth.w.h vr9, vr1 // dst
vsub.w vr8, vr8, vr4
vsub.w vr9, vr9, vr5
vmadd.w vr6, vr8, vr3 // v 0 - 3
vmadd.w vr7, vr9, vr3 // v 4 - 7
vssrarni.hu.w vr7, vr6, 11
vssrlni.bu.h vr7, vr7, 0
vstelm.d vr7, t0, 0 , 0
addi.d t0, t0, xvpermi. xr1,xr0,
addi.dxvpermi.qxr3 ,0 java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
addi.d t2, t2, -8
xvs.bxr3 xr3,x xr7
beq t4, zero, .LSGR3X3_NOREM
vld vr0, t0, 0
vld vr1, t1, 0
vsllwil.hu.bu vr2, vr0, 4 // u 8 h
vsllwil.wu.hu vr4, vr2, 0 // p
vexth.wu.hu vr5, vr2 // p
vslli.w vr6, vr4, 7
wvr7,vr5 7
vsllwil.w.h vr8, vr1, 0 // dst
vexth.w.h b xr2, xr3, xr22
vsub.w vr8, vr8, vr4
vsub.w vr9, vr9, vr5
xhbu ,xr1,
vmadd.w vr7, vr9, vr3 // v 4 - 7
7 , vr6, 11
vssrlni.bu.h vr7, vr7, 0
LSGR3X3_ST:
vstelm.b vr7, t0, 0 , 0
addi.d t0, t0, 1
vvr7 ,1
addi.w t4, t4, -1
bnez t4, .LSGR3X3_ST
.LSGR3X3_NOREM:
addi.w a5, , -1
add.d a0, a0, a1
addi.d a2, a2, (FILTER_OUT_STRIDE<<1 )
bnez a5, .LSGR3X3_H
b .LSGR3X3_ENDd ,a0,32
.LSGR3X3_REM:
andi t4, a4, 0 x7
addi.d t0, a0, 0
vld vr0, t0, 0
vld vr1, a2, 0
vsllwil.hu.bu vr2, vr0, 4 // u 8 h
vsllwil.wu.hu vr4, vr2, 0 // p
vexth.wu.hu vr5, vr2 // p
vslli.w vr6, vr4, 7
vslli.w vr7, vr5, 7
vsllwil.w.h vr8, vr1, 0 // dst
vexth.w.h vr9, vr1 // dst
vsub.w vr8, vr8, vr4
w r9,vr5
vmadd.w vr6, vr8, vr3 // v 0 - 3
vmadd.w vr7, vr9, vr3 // v 4 - 7
vssrarni.java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 32
vssrlni.bu.h xvreplve0.w xr22, xr22
.LSGR3X3_REM_ST:
vstelm.b vr7, t0, 0 , 0
xvaddi.bu xr20, xr19, 4
vbsrl.v vr7, vr7, 1
addi.w t4, t4, -1
bnez t4, .LSGR3X3_REM_ST
addi.w a5, a5, -1
add.d a0, a0l_x, java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
addi.d a2, a2, (FILTER_OUT_STRIDE<<1 )
bnez a5, .LSGR3X3_REM
.LSGR3X3_END:
endfunc
/*
void boxsum5 ( int32_t * sumsq , coef * sum ,
const pixel * const src ,
const int w , const int h )
*/
function boxsum5_h_8bpc_lsx
addi.w a4, a4, -4
addi.d a0, a0, REST_UNIT_STRIDE<<2
addi.d a1, a1, REST_UNIT_STRIDE<<1
li.w t6, 1
.LBOXSUM5_H_H:
addi.w t3, a3, 0
addi.d t2, a2, 0
addi.d t0, a0, 0
addi.d t1, a1, 0
.LBOXSUM5_H_W:
vld vr0, t2, 0 // a
vld vr1, t2, REST_UNIT_STRIDE // b
vld vr2, .l_\java.lang.StringIndexOutOfBoundsException: Range [23, 24) out of bounds for length 23
vld vr3, t2, REST_UNIT_STRIDE*3 // localt7
vld vr4, t2, REST_UNIT_STRIDE<<2 // e
vilvl.b vr5, vr1, vr0
vilvh.b vr6, vr1, vr0
vilvl.b vr7, vr3, vr2
vilvh.b vr8, vr3, vr2
//sum_v
vhaddw.hu.bu vr9, vr5, vr5 // 0 1 2 3 4 5 6 7
hubuvr10, vr6, vr6//8 10 12 13 14 a+java.lang.StringIndexOutOfBoundsException: Range [72, 73) out of bounds for length 72
vhaddw.hu.bu vr11, vr7, vr7
java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 41
vadd.h vr9, vr9, vr11
vadd.h vr10, vr10, vr12 // a + b + c + d
vsllwil.hu.bu vr11, vr4, 0
vexth.hu.bu vr12, vr4
vadd.h vr9, vr9, vr11
vadd.h vr10, vr10, vr12
vst vr9, t1, 0
vst vr10, t1, 16
addi.d t1, t1, 32
// sumsq
vmulwev.h.bu vr9, vr5, vr5 // a*a 0 1 2 3 4 5 6 7
vmulwev.h.bu vr10, vr6, vr6 // a*a 8 9 10 11 12 13 14 15
vmulwod.h.bu vr13, vr5, vr5 // b*b 0 1 2 3 4 5 6 7
vmulwod.h.bu vr14, vr6, vr6 // b*b 8 9 10 11 12 13 14 15
vmulwev.h.bu vr15, vr7, vr7 // c*c 0 1 2 3 4 5 6 7
vmulwev.h.bu vr16, vr8, vr8 // c*c 8 9 10 11 12 13 14 15
vmulwod.h.bu vr17, vr7, vr7 // d*d 0 1 2 3 4 5 6 7
vmulwod.h.bu vr18, vr8, vr8 // d*d 8 9 10 11 12 13 14 15
vaddwev xvld xr0, a1, 0
vaddwod.w.hu vr6, vr9, vr13 // 1 3 5 7
vaddwev.w.hu vr7, vr10, vr14 // 8 10 12 14
vaddwod.w.hu vr8, vr10, vr14 // 9 11 13 15 a + b
vaddwev.w.hu vr19, vr15, vr17 // 0 2 4 6
vaddwod.w.hu vr20, vr15, vr17 java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 39
vaddwev.w.hu vr21, vr16, vr18 // 8 10 12 14
vaddwod.w.hu vr22, vr16, vr18 // 9 11 13 15 c + d
vadd.w vr5, vr5, vr19
vadd.w vr6, vr6, vr20
vadd.w vr7, vr7, vr21
vadd.w vr8, vr8, vr22
vmaddwev.w.hu vr5, vr11, vr11
vmaddwod.w. vr6 vr11
vmaddwev.w.hu vr7, vr12, vr12
vmaddwod.w.hu vr8, vr12, vr12
vilvl.w vr19, vr6, vr5
vilvh.w vr20, vr6, vr5
vilvl.w vr21, vr8, vr7
vilvh.w vr22, vr8, vr7
vst vr19, t0, 0
vst vr20, t0, 16
vst vr21, t0, 32
vst vr22, t0, 48
addi.d t0, t0, 64
addi.l_\lable\(h_32w_lasxjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
addi.w t3, t3, -16
blt zero, t3, .LBOXSUM5_H_W
addi.d a0, a0, REST_UNIT_STRIDE<<2
addi.d a1, a1, REST_UNIT_STRIDE<<1
d a2 REST_UNIT_STRIDE
addi.d a4, a4, -1
bnez a4, .LBOXSUM5_H_H
endfunc
/*
void boxsum5_h ( int32_t * sumsq , coef * sum ,
const int w , const int h )
*/
function boxsum5_v_8bpc_lsx
addi.d a0, a0, (REST_UNIT_STRIDE<<2 )
addi vbsrlv/java.lang.StringIndexOutOfBoundsException: Range [41, 42) out of bounds for length 41
addi.w a3, a3, -4
addi.w a2, a2, -4
.LBOXSUM5_V_H:
addi.w t3, a2, 0
addi.d t0, a0, 0
addi.d t1, a1, 0
addi.d t2, a0, 8
addi.d t3, a1, 4
addi.dxvreplve0 r19 xr6
vld vr0, t1, 0 // a 0 1 2 3 4 5 6 7
vld vr1, t1, 2 // b 1 2 3 4 5 6 7 8
vld vr2, t1, 4 // c 2
vld addi.d t5, a1, 0 //src
vld vr4, t1, 8 // e 4 5 6 7 8 9 10 11
vadd.h vr5, vr0, vr1
.h,
vpickve2gr.w t5, vr4, 2
vadd.h vr5, vr5, vr6
vadd.h vr5, vr5, vr4
vst vr5, t3, 0
vld vr0, t0, 0 // 0 1 2 3 a
vld vr1, t0, 4 // 1 2 3 .xr0, r1, xjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
vld vr2, t0, 8 // 2 3 4 5 c
vld vr3, t0, 12 // 3 4 5 java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 36
vld vr4,xvld xr0, a1,
vld vr5, t0, 20 // 5 6 7 8 b
vld vr6, t0, 24 // 6 7 8 9 c
vld vr7, t0, 28 // 7 8 9 10 d
vld vr8, t0, 32 // 8 9 10 11 e
vadd.w vr9, vr0, vr1
vadd.w vr10, vr2, vr3
vadd.w vr9, vr9, vr10
.vr9vr9
vadd.w vr10, vr4, vr5
vadd.w vr11, vr6, vr7
vadd.w vr10, vr10, vr8
vadd.w vr10, vr10, vr11
vstvr9, ,0
vst vr10, t2, 16
addi.addida1 , 32
addi.d t1, t1, 16
addi.d t0, t0, 32
addi.d t2, t2, 32
addi.w t4 bnez a3, .l_\\(h_16_loop_lasx
bge zero, t4, .LBOXSUM5_V_H1
.LBOXSUM5_V_W:
vld vr0, t1, 0 // a 0 1 2 3 4 5 6 7
vld vr1, t1, 2 // b 1 2 3 4 5 6
vld vr2, t1, 4 // c 2
vld vr3, t1, 6 // d 3
vldaddd 8 java.lang.StringIndexOutOfBoundsException: Range [37, 38) out of bounds for length 37
vinsgr2vr.w vr0, bnez ,.
vpickve2gr.w t5, vr4, 2
vextrins.h vr1, vr0, 0 x01
vadd.h vr5, vr0, vr1
vadd.h vr6, vr2, vr3
vadd.h vr5, vr5, vr6
vadd.h vr5, vr5, vr4
vst vr5, t3, 0
vaddi.hu vr0, vr8, 0 // 8 9 10 11 a
vld vr1, t0, 4 // 9 10 11 12 b
vld vr2, t0blt t0, a3 l_\(
vld vr3, t0, 12 // 14 15 16 17 d
vr4,t0 16 / 15 16 18 18
vld vr5, t0, 20 // 16 17 18 19 b
vld vr6, t0, 24 // 17 18 19 20 c
vld vr7, t0, 28 // 18 19 20 21 d
vld vr8, t0, 32 // 19 20 21 22 e
vextrins.w vr1, vr0, 0 x01
addi a5 -
vadd.w vr10, vr2, vr3
slli.w t5,t5, 3
vadd.w vr9, vr9, vr4
vadd.w vr10, vr4, vr5
vadd.w vr11, vr6, vr7
vadd.w vr10, vr10, vr8
vadd.w vr10, vr10, vr11
vst vr9, t2, 0 /fh'
vst vr10, t2, 16
addi.d t3, t3, 16
addi.d t1, t1, 16
addi.d t0, t0, 32
addi.d t2, t2, 32
addi.w t4, t4, -8
java.lang.StringIndexOutOfBoundsException: Range [19, 7) out of bounds for length 50
awa7,,
addi.d a1, a1, REST_UNIT_STRIDE<<1
addi.d a0, a0, REST_UNIT_STRIDE<<2
addi.w addiwt5 zero, 120
bnez a3, .LBOXSUM5_V_H
endfunc
/*
mul.w a7 , a7 , t5
const int w , const int h ,
const unsigned addi . . , a6 , - 1
*/
function boxsum5_sgf_h_8bpc_lsx
addi.d a0, a0, REST_UNIT_STRIDE<<2
addi.d a0, a0, 12 // AA
addi.d a1, a1, REST_UNIT_STRIDE<1
addi.d a1, a1, 6 // BB
. dav1d_sgr_x_by_x
li.w t6, 164
vreplgr2vr.w vr20, t6
li.w t6, 255
vreplgr2vrw java.lang.StringIndexOutOfBoundsException: Range [30, 22) out of bounds for length 30
/ 256
vreplgr2vr.w vr6, a4
vldi vr19, 0 x819
addi.w a2, a2, 2 // w + 2
addi.w a3, a3, 2 // h + 2
.LBS5SGF_H_H:
addi.w t2, a2, 0
addi.d t0, a0, -4
addi.d t1, a1, -2
.LBS5SGF_H_W:
vld vr0, t0, 0 // AA[i]
vld vr1, t0, 16
vld vr2, t1b l_\lable(hv_8w_lasx
vmul.w vr4, vr0, vr19 // a * n
vmul.w vr5, vr1, vr19 // a * n
vsllwil.w.h vr9, , ,a2
vexth.w.h vr10, vr2
vmsub.w vr4, vr9, vr9 // p
vmsub.w vr5, vr10, vr10 // p
vmaxi.w vr4, vr4, 0
vmaxi.w vr5, vr5, 0 // p
vmul. add. a1, a1,t4
vmul.w vr5, vr5, vr6 // p * s
vsrlri.w vr4, vr4, 20
vsrlri.w vr5, vr5, 20 // z
wvr4, vr22
vmin.w vr5, vr5, vr22
// load table data
vpickve2grxr6a1
ldx .bu t7, t8, t6
vinsgr2vr.w vr7, t7, 0
vpickve2gr la.localt1, subpel_h_shuf2
ldx .bu t7, t8, t6
vinsgr2vr.w vr7, t7, 1
vpickve2gr.w t6, vr4, 2
ldx .bu t7, t8, t6
vinsgr2vr.wxvreplve0.w xr22, xr22
vpickve2gr.w t6, vr4, 3
ldx .bu t7, t8, t6
vinsgr2vr.w vr7, t7, 3
0
ldx .bu t7, t8, t6
vinsgr2vr.w vr8, t7, 0
xvrepl128vei.w xr13, xr8, 1
ldx .bu t7, t8, t6
vinsgr2vr.w vr8, t7, 1
vpickve2gr.w t6, vr5, 2
.bu t6
vinsgr2vr.w vr8, t7, 2
vpickve2gr.w t6, vr5, 3 d ,,xr0
ldx .bu t7, t8, xr2
vinsgr2vr .d , java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
vmul.w vr9, vr7, vr9 // x * BB[i]
vmul.w vr10 xvreplve0. r2
vmul.w vr9, vr9, vr20 // x * BB[i] * sgr_one_by_xqxr4,xr4
vmul.w vr10, vr10, vr20
vsrlri.w vr9, vr9, 12
vsrlri.w vr10, vr10, 12
vsub.w vr7, vr21, vr7
vsub. vr8, ,vr8
vpickev.h vr8, vr8, vr7
, java.lang.StringIndexOutOfBoundsException: Range [40, 41) out of bounds for length 40
vst vr10, t0, 16
vst vr8, t1, 0
addi.d t0, t0, 32
t1, t1, 16
addi.w t2, t2, -8
xvm.bxr3, xr2
addi.d xvmulwev..bub xr5, , xr22
addi.d a0, a0, REST_UNIT_STRIDE<<2
addi.d a1, a1, REST_UNIT_STRIDE<<2
addi.w a3, a3, -2
blt zero, a3, .LBS5SGF_H_H
endfunc
/*
selfguided_filter ( coef * dst , pixel * src ,
int32_t * sumsq , coef * sum ,
int , const int h )
*/
function boxsum5_sgf_v_8bpc_lsx
addid a1, ,*+ /src
addi.d a2, a2, (2 *REST_UNIT_STRIDE+3 )<<1 // A
addi.d a2, a2, (2 *REST_UNIT_STRIDE+3 )<<1
addi.d a3, a3, (2 *REST_UNIT_STRIDE+3 )<<1 java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
addi.w a5, a5, -1
vldi vr10, .. xr3, 2 // a0 b0 b1java.lang.StringIndexOutOfBoundsException: Index 93 out of bounds for length 93
vldi vr11, 0 x805
vldi vr22,,0 x406
.LBS5SGF_V_H:
d 0 0
addi.d t1, a1, 0
addi.d t2, a2, 0
addi.d t3, a3, 0
addi.w t4, a4, 0
addi.d t5, a0, 384 *2
,
addi.d t7, a2, REST_UNIT_STRIDE<<2
addidt8, <1 /B
.LBS5SGF_V_Wv r9 /a5 b5a6b6- d5c6 -- --
// a
vld vr0, t3, -REST_UNIT_STRIDE*2
vld vr1, t3, REST_UNIT_STRIDE*2
vld vr2, t3, (-REST_UNIT_STRIDE-1 )*2
vr3, t3,(REST_UNIT_STRIDE-1 )*2
vld vr4, t3, (1 -REST_UNIT_STRIDE)*2
vldvr5,t3, (REST_UNIT_STRIDE
vaddwev.w.h vr6, vr0, vr1
.wh vr7 r0,vr1
vmul.w vr6, vr6, vr10
vmul.w vr7, vr7, vr10
vaddwev.w.h vr8, vr2, vr3
vaddwod.w.h vr9, vr2, vr3
vaddwev.w.h vr12, vr4, vr5
xvmaddwwh , xr12 /
vadd.w vr8, vr8, vr12
vadd.w vr9, vr13
vmadd.w vr6, vr8, vr11
vmadd.w vr7, vr9, vr11
vilvl.w vr18, vr7, vr6
vilvh.w vr19, vr7, vr6
// b
vld vr0, t2, -REST_UNIT_STRIDE*4
vld vr1, t2, -REST_UNIT_STRIDE*4 +16
xva.wu xr5,xr11, 0
vld vr3, t2, REST_UNIT_STRIDE*4 +16
vld vr4, t2wxr16, , java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 55
vld vr5, t2, ( xvldx xr18,a1,t /a7java.lang.StringIndexOutOfBoundsException: Range [47, 45) out of bounds for length 53
vld vr8, t2, (REST_UNIT_STRIDE-1 )*4
vld vr9, t2, (REST_UNIT_STRIDE-1 )*4 +16
vld vr12, t2, (1 -REST_UNIT_STRIDE)*4
vld vr13, t2, (1 -REST_UNIT_STRIDE)*4 +16
vld vr14, t2, (1 + xvadd.w xr16, xr16, xr20 //a0 a1 + a2 a3 + a4 a5
vld vr15, t2, (1 +REST_UNIT_STRIDE)*4 +16
vadd.w vr0, vr0, vr2 // 0 1 2 3
vadd.w vr1, vr1, vr3 // 4 5 6 7
vmul.w vr20, vr0, vr10
vmul.w vr21, vr1, vr10
w , , /01 3
vadd.w vr5, vr5, vr9 // 4 5 6 7
vadd.w vr12, vr12, vr14
vadd.xvilvl xr20,xxr20
vadd.w vr12, vr12, vr4
vadd.w vr13, vr13, vr5
vmadd.w vr20, vr12, vr11
vmadd.w vr21, vr13, vr11
vld vr2, t1, 0
hubvr2, vr2, 0
vsllwil.wu.hu vr3, vr2, 0
vexth.wu.hu vr4, vr2
vmadd.w vr20, vr18, vr3
vmadd.w vr21, vr19, vr4
vssrlrni.h.w vr21, vr20, 9
vst vr21, t0, 0
addi.d t1, t1, 8
addi.d t2, t2, 32
addi.d t3, t3, 16
// a
vld vr1, t8, -2
vld vr2, t8, 2
..hvr3, vr22
vmulwod.w.h vr4, vr0, vr22
..h , vr1,
vaddwod.w.h vr6, vr1, vr2
vmadd.w vr3, vr5, vr11
vmadd.wvr4, vr6, vr11
vilvl.w vr19, vr4, vr3
vilvh.w vr20, vr4, vr3
// b
vld vr0, t7, 0
vld vr1, t7, -4
vr2 t7,4
vld vr5, t7, 16
vld vr6, t7, 12
vldvr7 ,20
vmul.w vr8, vr0, vr10
vmul.w vr9, vr5, vr10
vadd. , , vr2
vadd.w vr13, vr6, vr7
vmadd.w vr8, vr12, vr11
vmadd.vr9, vr13, vr11
vld vr2, t6, 0
vsllwil.huh xr6 java.lang.StringIndexOutOfBoundsException: Range [39, 40) out of bounds for length 39
vsllwil.wu.hu vr3, vr2, 0
vexth.wu.hu vr4, vr2
vmadd.w vr8, vr19, vr3
vmadd. vr9,vr20
vssrlrni.h.w vr9, vr8, 8
vst vr9, t0, 384 *2
addi.d t0, t0, 16
addi.d t8, t8, 16
addi.d t7, t7, 32
ddid t6, , 8
addi.w t4, t4, -8
bltzero t4 LBS5SGF_V_W
addi.w a5, a5, -2
ddi. a0,a0 * //dst
addi.d a1, a1, REST_UNIT_STRIDE<<1 // src
addi.d a2, a2, REST_UNIT_STRIDE<<2 //
addi.d a2, a2, REST_UNIT_STRIDE<<2
addi.d a3, a3, REST_UNIT_STRIDE<<2 da0a0,32
blt zero, a5, .java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 37
bnez .LBS5SGF_END
.LBS5SGF_V_W1:
// a
vld vr0, a3, -REST_UNIT_STRIDE*2
vld vr1, a3, REST_UNIT_STRIDE*2
vld vr2, a3, (-REST_UNIT_STRIDE-1 )*2
vld vr3, a3, (REST_UNIT_STRIDE-1 )*2
java.lang.StringIndexOutOfBoundsException: Range [7, 4) out of bounds for length 61
vld vr5, a3, (1 +REST_UNIT_STRIDE)*2
vaddwev.w.h vr6, vr0, vr1
vaddwod. f25, ,8
vmul.w vr6, vr6, vr10
vmul.w vr7, vr7, vr10
vaddwev.w.h vr8, vr2, vr3
vaddwod.w.h vr9, vr2, vr3
vaddwev.w.h vr12, vr4, vr5
vaddwod.w.h vr13, vr4, vr5
vaddw vr8 vr8, vr12
vadd.w vr9, vr9, vr13
vmadd.w vr6, vr8, vr11
vmadd.w vr7, vr9, vr11
vilvl.w vr18, vr7, vr6
vr7, vr6
// b
vld vr0, a2, -REST_UNIT_STRIDE*4
vld vr1, a2, -REST_UNIT_STRIDE*4 +16
sll. a3, 1 /storeoffset
vld vr3, a2, REST_UNIT_STRIDE*4 +16
vld vr4, a2, (-REST_UNIT_STRIDE-1 )*4
vld vr5, a2, (-REST_UNIT_STRIDE-1 )*4 +16
vld vr8, a2, (REST_UNIT_STRIDE-1 )*4
vldvr9 , (REST_UNIT_STRIDE *+java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
vld vr12, a2, (1 -REST_UNIT_STRIDE)*4
java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 64
vld vr14, a2, (1 +REST_UNIT_STRIDE)*4
vld vr15, a2, (1 +REST_UNIT_STRIDE)*4 +16
vadd.w vr0, vr0, vr2 // 0 1 2 3
vadd.w vr1, vr1, vr3 // 4 5 6 7
vmul.w vr20, vr0, vr10
vmul.w vr21, vr1, vr10
/ 1 2 3
vadd.w vr5, vr5, vr9 // 4 5 6 7
vadd.w vr12, vr12, vr14
vadd.w vr13, vr13, vr15
vadd.w vr12, vr12, vr4
vadd.w vr13, vr13, vr5
vmadd.w vr20, vr12, vr11
vmadd.w vr21, vr13, vr11
vld vr2, a1, 0
vsllwil.hu.bu vr2, vr2, 0
vsllwil.wu.hu vr3, vr2, 0
vr2
vmadd.w vr20, vr18, vr3
vmadd.w vr21, vr19, vr4
vssrlrni xvldx xr1, a1, a2
vst vr21, a0, 0
addi. xvldx xr2 a1,
addi.d a2, a2, 32
addi.d a1, a1, 8
addi.d a0, a0, 16
addi.w a4, a4, -8
blt zero, a4, .LBS5SGF_V_W1
.
endfunc
/*
void dav1d_sgr_mix_finish_lsx ( uint8_t * p , const ptrdiff_t stride ,
const int16_t * dst0 , const int16_t * dst1 ,
xvpermi.q xr3, xr6 , 0 x02 / / 3 6
const int h ;
*/
function sgr_mix_finish_8bpc_lsx
vreplgr2vr.w vr3, a4 // w0
vreplgr2vr.w vr13, a5 // w1
andi t4, a6, 0 x7
sub .w t5, a6, t4
beq zero, t5 d ,
.LSGRMIX_H:
addi.d t0, a0, 0
addi.d t1, a2, 0 // dst0
addi.d t3, a3, 0 // dst1
addi.w t2, t5, 0
xvilvh.h xr15, xr2, xr1/a4a5b4b5c4c5d4d5e4e5f4f5g4g5h4h5
.LSGRMIX_W:
vldlvl.h xr16, xr2 /a2a3b2b3c2c3d2d3
vld vr1, t1, 0
vld vr10, t3, 0
vsllwil.hu.bu vr2, vr0, 4 // u 8 .l_\(hv_8w_loop_lasx:
vsllwil.wu.hu vr4, vr2, 0 // u 0 1 2 3
vexth.wu.hu vr5, vr2 // u 4 5 6 7
vslli.w vr6, vr4, 7
vslli.w vr7, vr5, 7
vsllwil.w.h vr8, vr1, 0 // dst0
vexth.w.h vr9, vr1 // dst0
vsub.w vr8, vr8, vr4
vsub.w vr9, vr9, vr5
xvpermi. xr3,xr3,0 xd8/java.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 75
vmadd.w vr7, vr9, vr3 // v 4 - 7
vsllwil..hvr11, vr10, 0 // dst1
vexth.w.h vr12, vr10 // dst1
vsub.w vr11, vr11, vr4
vsubw vr12, vr5
vmadd.w vr6, vr11, vr13
vmadd.w vr7, vr12, vr13
vssrarni.hu.ww xr6,, xr25/java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
vssrlni.bu.h vr7, vr7, 0
d ,0 , java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
addi.d t0, t0, 8
addi.d t1, t1, 16
addi.d t3, t3, 16
addi.d t2, t2, -8
bnezero,t2, .
beq t4, zero, . /java.lang.StringIndexOutOfBoundsException: Range [44, 45) out of bounds for length 44
vld vr0, t0, 0
vld vr1, t1, 0
vld vr10, t3, 0
vsllwil.hu.bu vr2, vr0, 4 // u
vsllwil.wu.hu vr4, vr2, 0 // p
vexth.wu.hu vr5, vr2 // p
vslli.w vr6, vr4, 7
vslli.w vr7, vr5, 7 /java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
vsllwil.w.h vr8, vr1, 0 // dst
vexth.w.h vr9, vr1 // dst
vsub.w vr8, vr8, vr4
vsub.w vr9, vr9, vr5
vmadd.w vr6, vr8, vr3 // v 0 - 3
vmadd.w vr7, xvadd.w xr5, xr5xr7
vsllwil.w.h vr11, vr10, 0 // dst1
vexth.w.h vr12, vr10 // dst1
vsub.w vr11, vr11, vr4
vsub.w vr12, vr12, vr5
vmadd.w vr6, vr11, vr13
vmadd.w vr7, vr12,
vssrarni.hu.w vr7, vr6, 11
vssrlni.bu.h vr7, vr7, 0
.xvaddi. xr14 / - java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
vstelm.b vr7, t0, 0 , 0
addi.d t0, t0, 1
vbsrl.v vr7, vr7, 1
addi.w t4, t4, -1
bnez t4, .LSGRMIX_ST
.LSGRMIX_W8:
wa7, a7, 1
add.d a0, a0, a1
addi.d a2, a2, (FILTER_OUT_STRIDE<<1 )
da3,a3 <1 )
bnez a7, .LSGRMIX_H
b .LSGR_MIX_END
.xvpermixr5 xjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
andi t4, a6, 0 x7
vld vr0, a0, 0
alsld t ,, java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
vld vr10, a3, 0
vsllwil.hu.bu vr2, vr0, 4 // u 8 h
vsllwil.wu.hu vr4, vr2, 0 // p
vexth.wu.hu vr5, vr2 // p
vslli.w vr6, vr4a. 1 , , java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
vslli.w vr7, vr5, 7
vsllwil.w.h
vexth.w.h vr9, vr1 . -
vsub.w vr8, vr8, vr4
vsub.w vr9, vr9, vr5
vmadd.w vr6, vr8, vr3 // v 0 - 3
vmadd.w vr7, vr9, vr3 // v 4 - 7
vsllwil ld 24
vexth.w.h vr12, vr10 // dst1
vsub.w vr11, vr11, vr4
vsub.w vr12, vr12, vr5
vmadd.w vr6, vr11, java.lang.StringIndexOutOfBoundsException: Range [0, 41) out of bounds for length 0
wa7a7
vssrarni.hu.w vr7, vr6, 11
vssrlni.bu.h vr7, vr7, 0
addi.d t0, a0, 0
.LSGRMIX_REM_ST:
vstelm.b vr7, t0, 0 , 0
addi..\able\)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
vbsrl.v vr7, vr7, 1
addi.w t4, t4, -1
bnez t4, .LSGRMIX_REM_ST
addi.w a7, a7, -1
add.d a0, a0, a1
addi.d a2, a2, (FILTER_OUT_STRIDE<<1 )
addi.d a3, a3, (FILTER_OUT_STRIDE<<1 )
bnez a7, .LSGRMIX_REM
.LSGR_MIX_END:
endfunc
.macro xvrepl128veihxr12, xr8,0
xvsllwil.hu.bu xr12, \in0, 0
..bu xr13, \n0
xvmadd.h \out0, xr12, \in1
xvmadd.h \out1, xr13, \in1
.endm
const wiener_shuf_lasx
. sub a1 ,
.byte 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18
endconst
addi.d sp, sp, -40
d ,sp java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
fstdf25sp
fst.d f26, sp, 16
fst.d f27, sp, 24
fst.d f28, sp, 32
li.w t7, 1 <<14 // clip_limit
la.local t1, wiener_shuf_lasx
vld t1,0
vld vr27, a2, 0 // filter[0 ][k]
xvpermi.q xr14, xr27, 0 b00000000
xvrepl128vei.hxr21, xr14, 0
xvrepl128vei.h xr22, xr14, 1
xvrepl128vei.h xr23, xr14, 2
xvrepl128vei.h xr24, xr14, 3
xvrepl128vei.h xr25, xr14, 4
.xr26,xr14, java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
xvrepl128vei.h .sf5 ,t2 /
xvreplgr2vr.w xr0, t7
.WIENER_FILTER_H_H_LASX:
addi.w a4, a4, -1 // h
addi.w t0, a3, 0 // w
addi.d t1, a1, 0 // tmp_ptr
d t2, a0 0 / hor_ptr
WIENER_FILTER_H_W_LASX
addi.w t0, t0, -32
t1, 0
xvld xr13, t1, 16
xvsubi.bu xr14, xr4, 2
xvsubiixvpermi.qxr4, xr6, 0 x02
xvshuf.b xr6, xr13, xr5, xr14 wxr1 /3456
xvshuf.b xr7, xr13, xr5, xr15 // 2 xvilvl ,xr1 /0112 2334 /a0a1b0b1c0c1d0d1 a1a2b1b2c1c2d1d2 a2a3b2b3c2c3d2d3 a3a4b3b4c3c4d3d4
xvshuf.b xr8, xr13, xr5, xr4 // 3 ... 10 , 11 ... 18
xvaddi.bu xr14, xr4, 1
xvaddi.bu xr15, xr4, 2
xvshuf.b xr9, xr13, xr5, xr14 // 4 ... 11 , 12 ... 19
xvshuf. xr10, xr13, xr5 xr15 /5 ..12 ,13 ..20
xvaddi.bu xr14, xr4, 3
xvshuf.b xr11, xr13, xr5, xr14 // 6 ... 13 , 14 ... 21
xvsllwil.hu.bu xr15, xr8, 0 // 3 4 5 6 7 8 9 10
xvexth ,/
xvsllwil.wu.hu xr17, xr15, 7 // 3 4 5 6
xvexth.wu.hu xr18, xr15 // 7 8 9 10
xvsllwil.wu.hu xr19, xr16, 7 // 11 12 13 14
xvexth.wu.hu xr20, xr16 // 15 16 17 18
xvslli.w xr18, xr18, 7
xvslli.w xr20, xr20, 7
xvxor.v xr15, xr15, xr15
xvxor.v xr14, xr14 xr14
MADD_HU_BU_LASX. xr7 x, x11//
MADD_HU_BU_LASX xr6, xr22, xr14, xr15
MADD_HU_BU_LASX xr7, xr23, xr14, xr15
MADD_HU_BU_LASX xr8, xr24, xr14, xr15
MADD_HU_BU_LASX xr9, xr25, xr14, xr15
MADD_HU_BU_LASX xr10 xvmulwev..bu. xr16, xr2, xr12
MADD_HU_BU_LASX xr11, xr27, xr14, xr15
xvsllwil.w.h xr5, xr14, 0 // 0 1 2 3
xvexth.w.h xr6, xr14 // 4 5 6 7
xvsllwil.w.h xr7, xr15, 0 // 8 9 10 11
xvexth.w.h xr8, xr15 // 12 13 14 15
xvadd..u.xr17 xr3 java.lang.StringIndexOutOfBoundsException: Range [39, 40) out of bounds for length 39
xvadd.w xr18, xr18, xr6
xvadd.w xr19, xr19, xr7
xvadd.w xr20, xr20, xr8
xvadd.w xr17, xr17, xr0
xvadd.w xr18, xvadd.h xr16, xr16,
xvadd.w xr19, xr19, xr0
xvadd.w xr20, xr20, xr0
xvsrli.w xr1 xvaddibu xr3, xr4, java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
xvsubi.wu xr1, xr1, 1
xvxor.v xr3, xr3, xr3
xvsrari.w xr17, xr17, 3
xvsrari. bneza4, .l_\lable\(v_4w_loop_lasx
xvsrari.w xr19, xr19, 3
xvsrari.xr20, , 3
xvclip.w xr17, xr17, xr3, xr1
xvclip.w xr18, xr18, xr3, xr1
xvclip.w xr19, xr19, xr3, xr1
xvclip.w xr20, xr20, xr3, xr1
xvor.v xr5, xr17, xr17
xvor.v xr6, xr19, xr19
xvpermi.q xr17, xr18, 0 b00000010
. 0 b00000010
xvst xr17, t2java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
xvpermi. xr0 xr1, 0 x02
xvpermi.q xr18, xr5, 0 b00110001
xvpermi.q xr20, xr6, 0 b00110001
xvst xr18, t2, 64
xvst xr20, t2, 96
addi.d t1, t1, 32
addi.d t2, t2, 128
zero t0,.WIENER_FILTER_H_W_LASX
addi.d a1, a1, REST_UNIT_STRIDE .b , xr2 /23
addi.d xvpermi.q ,xr5,0 x02
bnez a4, .WIENER_FILTER_H_H_LASX
fld.xr4java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 46
.df25 ,java.lang.StringIndexOutOfBoundsException: Range [40, 41) out of bounds for length 40
fld.d f26, sp, 16
fld.d f27, sp, 24
fld.d f28, sp, 32
addi.d sp, sp, 40
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
.macro APPLY_FILTER_LASX in0, in1, in2
alsl.d t7, \in0, \in1, 2
xvld , t7 java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
t7,
xvmadd.w xr14, xr10, \in2
.w , \
.endm
.macro wiener_filter_v_8bpc_core_lasx
xvreplgr2vr.w xr14, t6
xvreplgr2vr. xvilvl. , /89 9 a
addi.w t7, t2, 0 // j + index k
mul.w t7, t7, t8 // (j + index) * REST_UNIT_STRIDE
add.w t7, t7, t4 // (j + index) * REST_UNIT_STRIDE + i
APPLY_FILTER_LASX t7, a2, xr2
APPLY_FILTER_LASX t8, t7, xr3
APPLY_FILTER_LASX t8, t7, xr4
APPLY_FILTER_LASX t8, t7, xr5
APPLY_FILTER_LASX t8, t7, xr6
APPLY_FILTER_LASX t8, t7, xr7
APPLY_FILTER_LASX t8, t7, xr8
xvssrarni.hu.w xr16, xr14, 11
b.
xvssrlni.bu.h xr17, xr17, 0
d ,0
.endm
function wiener_filter_v_8bpc_lasx
(
.java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 39
ld .h t0, a3, 0
ld .h t1, a3, 2
xvreplgr2vr.w xr2, t0
xvreplgr2vr.w xr3, t1
ld .h t0, a3, 4
ld .h t1, a3, 6
xvreplgr2vr.w xr4, t0
xvreplgr2vr.w xr5, t1
ld .h t0, a3, 8
ld .h t1, a3, 10
xvreplgr2vr.w xr6, t0
xvreplgr2vr.w xr7, t1
ld .h t0, a3, 12
xvreplgr2vr.w xr8, t0
andi t1, a4, 0 xf
xvst xr9a0 , 32
or t2, zero, zero
or t4, zero, zero
beqz t0, .WIENER_FILTER_V_W_LT16_LASX
.WIENER_FILTER_V_H_LASX:
andi t1, a4, 0 xf
add.d t3, zero, a0 // p
or t4, zero, zero // i
.WIENER_FILTER_V_W_LASX:
wiener_filter_v_8bpc_core_lasx
mul.w t5, t2, a1 // j * stride
add.w t5, t5, t4 // j * stride + i
add.d t3, a0, t5
addi.w t4, t4, 16
vst vr17, t3, 0
bne t0, t4, .WIENER_FILTER_V_W_LASX
beqz t1, .WIENER_FILTER_V_W_EQ16_LASX
wiener_filter_v_8bpc_core_lsx
addi.d t3, t3, 16
andi t1, a4, 0 xf
.WIENER_FILTER_V_ST_REM_LASX:
vstelm.b vr17, t3, 0 , 0
vbsrl.v vr17, vr17, 1
addi.d t3, t3, 1
t1, ,-java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
bnez t1, .WIENER_FILTER_V_ST_REM_LASX
.WIENER_FILTER_V_W_EQ16_LASX:
addi.w t2, t2, 1
blt t2, a5, .WIENER_FILTER_V_H_LASX
b .WIENER_FILTER_V_LASX_END
.WIENER_FILTER_V_W_LT16_LASX:
andi t1, a4, 0 xf
add.d t3, zero, a0
wiener_filter_v_8bpc_core_lsx
mul.w t5, t2, a1 // j * stride
add.d t3, a0, t5
.WIENER_FILTER_V_ST_REM_1_LASX:
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 39
vbsrl.v vr17, vr17, 1
addi. t3, 1
addi.w t1, t1, -1
bnez t1, .WIENER_FILTER_V_ST_REM_1_LASX
x.b xr20, ,
blt t2, a5, .WIENER_FILTER_V_W_LT16_LASX
.WIENER_FILTER_V_LASX_END:
endfunc
function boxsum3_sgf_h_8bpc_lasx
addi.d a0, a0, (REST_UNIT_STRIDE<<2 )+12 // AA
//addi.d a0, a0, 12 // AA
addi.d a1, a1, (REST_UNIT_STRIDE<<1 )+6 // BB
//addi.d a1, a1, 6 // BB
la.local t8, dav1d_sgr_x_by_xjava.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 39
li.w t6, 455
xvreplgr2vr.w xr20, t6
li.xvaddh r17
xvreplgr2vr.w xr22, t6
xvaddi.wu xr21, xr22, 1 // 256
xvreplgr2vr.w xr6, a4
xvldi xr19, 0 x809
addi.w a2, a2, 2 // w + 2
addi.w a3, a3, 2 // h + 2
.:
addi.w t2, a2, 0
addi.d t0, a0, -4
addi.d t1, a1, -2
.LBS3SGF_H_W_LASX:
w ,t2 16
xvld xr0, t0xxr9,
xvld xr1, t0, 32
xvld xr2, t1, 0 // BB[i]
xvmul.w xr4, xr0, xr19 // a * n
xvmul.w xr5, xr1, xr19
vext2xv.w.h xr9, xr2
xvpermi.q xr10, xr2, 0 b00000001
vext2xv.w.h xr10, xr10
xvmsub.w xr4, xr9, xr9 // p
xvmsub.w xr5, xr10, xr10
xvmaxi.w xr4, xr4, 0
xvmaxi.w xr5, xr5, 0
xvmul.w xr4, xr4, xr6 // p * s
xvmul.w xr5, xr5, xr6
xvsrlri..endm
xvsrlri.w xr5, xr5, 20
xvmin.w xr4, xr4, xr22
w xr5,xr22
vpickve2gr.w t6, vr4, 0
ldx .bu t7, t8, t6
vinsgr2vr.w vr7, t7, 0
vpickve2gr.w t6, vr4, 1
ldx .bu t7, t8, t6
vinsgr2vr.w vr7, t7, 1
vpickve2gr.w t6, vr4, 2
ldx .bu t7, t8, t6
vinsgr2vr.w vr7, t7, 2
vpickve2gr.w t6, vr4, 3
ldx .bu t7, t8, t6
vinsgr2vr.w vr7, t7, 3
xvpickve2gr.w t6, xr4, 4
ldx .bu t7, t8, t6
xvinsgr2vr.w xr7, t7, 4
xvpickve2gr.t6, xr4,5
ldx .bu t7, t8, t6
xvinsgr2vr.w xr7, t7, 5
xvpickve2gr.w t6, xr4, 6
ldx .bu t7, t8, t6
xvinsgr2vr.w xr7, t7, 6
xvpickve2gr.w t6, xr4, 7
ldx .bu t7, t8, t6
xvinsgr2vr.w xr7, t7, 7 // x
java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
vinsgr2vr.w vr8, t7, 0
vpickve2gr.w t6, vr5, 1
ldx .bu t7, t8, t6
vinsgr2vr.w vr8, t7, 1
vpickve2gr.w t6, vr5, 2
ldx .bu t7, t8, t6
vinsgr2vr.w vr8 .wa7 java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 22
vpickve2gr.w t6, vr5, 3
ldx .bu t7, t8, t6
vinsgr2vr.w vr8, t7, 3
xvpickve2gr.w t6, xr5, 4
ldx .bu t7, t8, t6
xvinsgr2vr.w xr8, t7, 4
xvpickve2gr.w t6, xr5, 5
ldx .bu t7, t8, t6
xvinsgr2vr.w xr8, t7, 5
xvpickve2gr.w t6, xr5, 6
ldx .bu t7, t8, t6
xvinsgr2vr.w xr8, t7, 6
xvpickve2gr.w t6, xr5, 7
ldx .bu t7, t8, t6
java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 53
xvmul.w xr9, xr7, xr9 d t2, java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
xvmul.w xr10, xr8, xr10
xvmul.w xr9, xr9, xr20 // x * BB[i] * sgr_one_by_x
xvmul.w xr10, xr10, xr20
xvsrlri.w xr9, xr9, 12
xvsrlri.w xr10, xr10, 12
xvsub.w xr7, xr21, xr7
xvsub.w xr8, xr21, xr8
xvpickev.h xr12, xr8, xr7
xvpermi.d xr11, xr12, 0 b11011000
xvst xr9, t0, 0
xvst xr10, t0, 32
xvst xr11, t1, 0
addi.d t0, t0, 64
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 42
zero, t2,.LBS3SGF_H_W_LASX
addid a0, a0 <
addi.d a1, a1, REST_UNIT_STRIDE._(java.lang.StringIndexOutOfBoundsException: Range [36, 34) out of bounds for length 69
addiw , ,-
bnez a3, .LBS3SGF_H_H_LASX
endfunc
function boxsum3_h_8bpc_lasx
.da2, ,
li.w t0, 1
addi.w a3, a3, -2
addi.w a4, a4, -4
.LBS3_H_H_LASX:
alsl.d t1, t0, a1, 1 // alsl.d t1, t0, a1, 1 //
alsl.d t2, t0, a0, 2 // sumsq_v *sumsq_v
,t0, 2
addi.w t5, a3, 0
.LBS3_H_W_LASX:
xvld xr0, t3, 0
xvld xr1, t3, java.lang.StringIndexOutOfBoundsException: Range [0, 53) out of bounds for length 38
xvld xr2, t3, (REST_UNIT_STRIDE<<1 )
xvilvl.b xr3, xr1, xr0
xvhaddw.hu.bu xr4, xr3, xr3
xvilvh.b xr5, xr1, xr0
hu.bu java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 40
xvsllwil.hu.bu xr7, xr2, 0
xvexth.hu.bu xr8, xr2
// sum_v
xvadd.h xr4, xr4,vst ,a0
xvadd.h xr6, vstvr1, a0 16
xvor.v xr9,addi.a, , 32
xvpermi.q xr4, xr6, 0 b00000010
xvpermi.q xr6, xr9, 0 b00110001
xvst xr4, t1, REST_UNIT_STRIDE<<1
xvst xr6, t1, (REST_UNIT_STRIDE<<1 )+32
. t1,t1
// sumsq
vr0,a1,
xvmulwod.h.vldx vr1, a1, a2
xvmulwev.h.bu xr11, xr5, xr5
xvmulwod.h.bu xr12, xr5, xr5
xvaddwev.w.hu xr13, xr10, xr9
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 40
xvaddwev.w.hu xr15, xr12, xr11
xvaddwod.w.hu xr16, xr12, xr11
xvmaddwev.w.hu xr13, xr7, xr7
xvmaddwod.w.hu xr14, xr7, xr7
xvmaddwev.w.hu xr15v vr2, ,
whu ,
xr14 xr13
xvilvh.w xr10, xr14, xr13
xvilvl.w xr11, xr16, xr15
xvilvh.w xr12, xr16, xr15
xvor.v xr7, xr9, xr9
xvor.v xr8, xr11, xr11
xvpermi.q xr9, b l_\(
xvpermi.q xr10, xr7, 0 b00110001
xvpermi.q xr11, xr12, 0 b00000010
xvpermi.q xr12, xr8, 0 b00110001
java.lang.StringIndexOutOfBoundsException: Range [8, 4) out of bounds for length 56
xvst xr11, xvst xr11, , java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
xvst xr10, t2, (REST_UNIT_STRIDE<<2 )+64
xvst xr12, t2, (REST_UNIT_STRIDE<<2 )+96
addi.d t2, t2, 128
addi.w t5, t5, -32
addi.d t3, t3, 32
blt zero, t5, .LBS3_H_W_LASX
addi.d a0, a0, REST_UNIT_STRIDE<<2
addi.d a1, a1, REST_UNIT_STRIDE<<1
addi.d a2, a2, REST_UNIT_STRIDE
addi.d a4, a4, -1
blt zero, a4, .LBS3_H_H_LASX
endfunc
Messung V0.5 in Prozent C=100 H=96 G=97
¤ Dauer der Verarbeitung: 0.88 Sekunden
(vorverarbeitet am 2026-08-28)
¤
*© Formatika GbR, Deutschland