@ -57,7 +57,7 @@ endfunc
func f f _ h26 4 _ i d c t _ a d d _ 8 _ r v v , z v e 3 2 x
lpad 0
csrwi v x r m , 0
.Lidct_add4 _8_rvv :
.Lidct4 _add_8_rvv :
vsetivli z e r o , 4 , e 1 6 , m f2 , t a , m a
addi t 1 , a1 , 1 * 4 * 2
vle1 6 . v v0 , ( a1 )
@ -111,7 +111,7 @@ endfunc
func f f _ h26 4 _ i d c t _ a d d _ 1 6 _ r v v , z v e 3 2 x
csrwi v x r m , 0
.Lidct_add4 _16_rvv :
.Lidct4 _add_16_rvv :
vsetivli z e r o , 4 , e 3 2 , m 1 , t a , m a
addi t 1 , a1 , 1 * 4 * 4
vle3 2 . v v0 , ( a1 )
@ -543,19 +543,26 @@ endfunc
.endr
const f f _ h26 4 _ s c a n 8
.byte 0 1 4 , 0 1 5 , 0 2 4 , 0 2 5 , 0 1 6 , 0 1 7 , 0 2 6 , 0 2 7
.byte 0 3 4 , 0 3 5 , 0 4 4 , 0 4 5 , 0 3 6 , 0 3 7 , 0 4 6 , 0 4 7
.byte 0 1 4 , 0 1 5 , 0 2 4 , 0 2 5 , 0 1 6 , 0 1 7 , 0 2 6 , 0 2 7
.byte 0 3 4 , 0 3 5 , 0 4 4 , 0 4 5 , 0 3 6 , 0 3 7 , 0 4 6 , 0 4 7
.byte 0 6 4 , 0 6 5 , 0 7 4 , 0 7 5 , 0 6 6 , 0 6 7 , 0 7 6 , 0 7 7
.byte 0 1 0 4 , 0 1 0 5 , 0 1 1 4 , 0 1 1 5 , 0 1 0 6 , 0 1 0 7 , 0 1 1 6 , 0 1 1 7
.byte 0 1 3 4 , 0 1 3 5 , 0 1 4 4 , 0 1 4 5 , 0 1 3 6 , 0 1 3 7 , 0 1 4 6 , 0 1 4 7
.byte 0 1 5 4 , 0 1 5 5 , 0 1 6 4 , 0 1 6 5 , 0 1 5 6 , 0 1 5 7 , 0 1 6 6 , 0 1 6 7
endconst
.macro idct4_adds type, d e p t h
.macro idct4_add16 type, d e p t h
func f f _ h26 4 _ i d c t _ a d d \ t y p e \ ( ) _ \ d e p t h \ ( ) _ r v v , z v e 3 2 x , b
.if \ depth = = 8
lpad 0
.endif
csrwi v x r m , 0
lla t 0 , f f _ h26 4 _ s c a n 8
li t 1 , 3 2 * ( \ d e p t h / 8 )
vsetivli z e r o , 1 6 , e 8 , m 1 , t a , m a
.ifc \ type, 1 6 i n t r a
.Lidct4_add4_ \ depth\ ( ) _ r v v :
.endif
li t 1 , 3 2 * ( \ d e p t h / 8 )
vle8 . v v8 , ( t 0 )
.if \ depth = = 8
vlse1 6 . v v16 , ( a2 ) , t 1
@ -587,7 +594,7 @@ func ff_h264_idct_add\type\()_\depth\()_rvv, zve32x, b
mv t 5 , a1
mv a1 , a2
mv a2 , a3
li a3 , 1 6
csrr a3 , v l
mv a7 , r a
1 :
andi t 0 , a4 , 1
@ -603,7 +610,7 @@ func ff_h264_idct_add\type\()_\depth\()_rvv, zve32x, b
.else
beqz t 0 , 2 f # i f ( n n z c [ s c a n 8 [ i ] ] )
.endif
jal . L i d c t _ a d d4 _ \ d e p t h \ ( ) _ r v v
jal . L i d c t 4 _ a d d _ \ d e p t h \ ( ) _ r v v
j 3 f
2 :
.ifnc \ type, 1 6
@ -621,9 +628,67 @@ func ff_h264_idct_add\type\()_\depth\()_rvv, zve32x, b
endfunc
.endm
.macro idct4_add8 type, d e p t h
func f f _ h26 4 _ i d c t 4 _ a d d \ t y p e \ ( ) _ \ d e p t h \ ( ) _ r v v , z v e 3 2 x
.if \ depth = = 8
lpad 0
.endif
csrwi v x r m , 0
addi s p , s p , - 3 2
addi a2 , a2 , 1 6 * 1 6 * 2 * ( \ d e p t h / 8 ) # & b l o c k [ 16 * 1 6 ]
lla t 0 , f f _ h26 4 _ s c a n 8 + 1 6
sd s0 , 0 ( s p )
sd r a , 8 ( s p )
mv s0 , s p
sd a0 , 1 6 ( s p )
sd a4 , 2 4 ( s p )
ld a0 , 0 ( a0 ) # d e s t [ 0 ]
addi a1 , a1 , 1 6 * 4 # & b l o c k _ o f f s e t [ 16 ]
vsetivli z e r o , 4 , e 8 , m f4 , t a , m a
jal . L i d c t 4 _ a d d4 _ \ d e p t h \ ( ) _ r v v
ld a4 , 2 4 ( s p ) # n n z c
ld a0 , 1 6 ( s p )
mv a3 , a2 # s t r i d e
addi a2 , a1 , ( 1 6 - 4 ) * 1 6 * 2 * ( \ d e p t h / 8 ) # & b l o c k [ 32 * 1 6 ]
addi a1 , t 5 , ( 1 6 - 4 ) * 4 # & b l o c k _ o f f s e t [ 32 ]
ld a0 , 8 ( a0 ) # d e s t [ 1 ]
lla t 0 , f f _ h26 4 _ s c a n 8 + 3 2
.ifc \ type, 8 _ 4 2 2
vsetivli z e r o , 4 , e 8 , m f4 , t a , m a
jal . L i d c t 4 _ a d d4 _ \ d e p t h \ ( ) _ r v v
ld a4 , 2 4 ( s p ) # n n z c
ld a0 , 1 6 ( s p )
mv a3 , a2 # s t r i d e
addi a2 , a1 , ( - 1 2 - 4 ) * 1 6 * 2 * ( \ d e p t h / 8 ) # & b l o c k [ 20 * 1 6 ]
addi a1 , t 5 , ( - 8 - 4 ) * 4 # & b l o c k _ o f f s e t [ 24 ]
ld a0 , 0 ( a0 ) # d e s t [ 0 ]
lla t 0 , f f _ h26 4 _ s c a n 8 + 2 4
vsetivli z e r o , 4 , e 8 , m f4 , t a , m a
jal . L i d c t 4 _ a d d4 _ \ d e p t h \ ( ) _ r v v
ld a4 , 2 4 ( s p ) # n n z c
ld a0 , 1 6 ( s p )
mv a3 , a2 # s t r i d e
addi a2 , a1 , ( 1 6 - 4 ) * 1 6 * 2 * ( \ d e p t h / 8 ) # & b l o c k [ 36 * 1 6 ]
addi a1 , t 5 , ( 1 6 - 4 ) * 4 # & b l o c k _ o f f s e t [ 40 ]
ld a0 , 8 ( a0 ) # d e s t [ 1 ]
lla t 0 , f f _ h26 4 _ s c a n 8 + 4 0
.endif
ld r a , 8 ( s p )
ld s0 , 0 ( s p )
addi s p , s p , 3 2
vsetivli z e r o , 4 , e 8 , m f4 , t a , m a
j . L i d c t 4 _ a d d4 _ \ d e p t h \ ( ) _ r v v
endfunc
.endm
.irp depth, 8 , 1 6
idct4 _ a d d s 1 6 , \ d e p t h
idct4 _ a d d s 1 6 i n t r a , \ d e p t h
idct4 _ a d d16 1 6 , \ d e p t h
idct4 _ a d d16 1 6 i n t r a , \ d e p t h
idct4 _ a d d8 8 , \ d e p t h
idct4 _ a d d8 8 _ 4 2 2 , \ d e p t h
# if ( _ _ r i s c v _ x l e n = = 6 4 )
func f f _ h26 4 _ i d c t 8 _ a d d4 _ \ d e p t h \ ( ) _ r v v , z v e 3 2 x , b
@ -724,5 +789,17 @@ func ff_h264_idct8_add4_\depth\()_rvv, zve32x
li a5 , ( 1 < < \ d e p t h ) - 1
j f f _ h26 4 _ i d c t 8 _ a d d4 _ 1 6 _ r v v
endfunc
func f f _ h26 4 _ i d c t 4 _ a d d8 _ \ d e p t h \ ( ) _ r v v , z v e 3 2 x
lpad 0
li a5 , ( 1 < < \ d e p t h ) - 1
j f f _ h26 4 _ i d c t 4 _ a d d8 _ 1 6 _ r v v
endfunc
func f f _ h26 4 _ i d c t 4 _ a d d8 _ 4 2 2 _ \ d e p t h \ ( ) _ r v v , z v e 3 2 x
lpad 0
li a5 , ( 1 < < \ d e p t h ) - 1
j f f _ h26 4 _ i d c t 4 _ a d d8 _ 4 2 2 _ 1 6 _ r v v
endfunc
# endif
.endr