History

arm: vp9itxfm: Reorder the idct coefficients for better pairing

All elements are used pairwise, except for the first one. Previously, the 16th element was unused. Move the unused element to the second slot, to make the later element pairs not split across registers. This simplifies loading only parts of the coefficients, reducing the difference to the 16 bpp version.

Martin Storsjö committed 9 years ago

Commit de06bdf1 parent 65aa0021 file · +62 −62Browse files

Unified · Split

libavcodec/arm/vp9itxfm_neon.S+62−62
@@ -22,7 +22,7 @@ · 21 unmodified lines
2222 #include "neon.S"
2323
2424 const itxfm4_coeffs, align=4
25− .short 11585, 6270, 15137, 0
25+ .short 11585, 0, 6270, 15137
2626 iadst4_coeffs:
2727 .short 5283, 15212, 9929, 13377
2828 endconst
@@ -30,8 +30,8 @@ endconst · 1 unmodified line
3030 const iadst8_coeffs, align=4
3131 .short 16305, 1606, 14449, 7723, 10394, 12665, 4756, 15679
3232 idct_coeffs:
33− .short 11585, 6270, 15137, 3196, 16069, 13623, 9102, 1606
34− .short 16305, 12665, 10394, 7723, 14449, 15679, 4756, 0
33+ .short 11585, 0, 6270, 15137, 3196, 16069, 13623, 9102
34+ .short 1606, 16305, 12665, 10394, 7723, 14449, 15679, 4756
3535 .short 804, 16364, 12140, 11003, 7005, 14811, 15426, 5520
3636 .short 3981, 15893, 14053, 8423, 9760, 13160, 16207, 2404
3737 endconst
@@ -224,14 +224,14 @@ endconst · 186 unmodified lines
224224 .endm
225225
226226 .macro idct4 c0, c1, c2, c3
227− vmull.s16 q13, \c1, d0[2]
228− vmull.s16 q11, \c1, d0[1]
227+ vmull.s16 q13, \c1, d0[3]
228+ vmull.s16 q11, \c1, d0[2]
229229 vadd.i16 d16, \c0, \c2
230230 vsub.i16 d17, \c0, \c2
231− vmlal.s16 q13, \c3, d0[1]
231+ vmlal.s16 q13, \c3, d0[2]
232232 vmull.s16 q9, d16, d0[0]
233233 vmull.s16 q10, d17, d0[0]
234− vmlsl.s16 q11, \c3, d0[2]
234+ vmlsl.s16 q11, \c3, d0[3]
235235 vrshrn.s32 d26, q13, #14
236236 vrshrn.s32 d18, q9, #14
237237 vrshrn.s32 d20, q10, #14
@@ -350,9 +350,9 @@ itxfm_func4x4 iwht, iwht · 112 unmodified lines
350350
351351 .macro idct8
352352 dmbutterfly0 d16, d17, d24, d25, q8, q12, q2, q4, d4, d5, d8, d9, q3, q2, q5, q4 @ q8 = t0a, q12 = t1a
353− dmbutterfly d20, d21, d28, d29, d0[1], d0[2], q2, q3, q4, q5 @ q10 = t2a, q14 = t3a
354− dmbutterfly d18, d19, d30, d31, d0[3], d1[0], q2, q3, q4, q5 @ q9 = t4a, q15 = t7a
355− dmbutterfly d26, d27, d22, d23, d1[1], d1[2], q2, q3, q4, q5 @ q13 = t5a, q11 = t6a
353+ dmbutterfly d20, d21, d28, d29, d0[2], d0[3], q2, q3, q4, q5 @ q10 = t2a, q14 = t3a
354+ dmbutterfly d18, d19, d30, d31, d1[0], d1[1], q2, q3, q4, q5 @ q9 = t4a, q15 = t7a
355+ dmbutterfly d26, d27, d22, d23, d1[2], d1[3], q2, q3, q4, q5 @ q13 = t5a, q11 = t6a
356356
357357 butterfly q2, q14, q8, q14 @ q2 = t0, q14 = t3
358358 butterfly q3, q10, q12, q10 @ q3 = t1, q10 = t2
@@ -386,8 +386,8 @@ itxfm_func4x4 iwht, iwht · 27 unmodified lines
386386 vneg.s16 q15, q15 @ q15 = out[7]
387387 butterfly q8, q9, q11, q9 @ q8 = out[0], q9 = t2
388388
389− dmbutterfly_l q10, q11, q5, q7, d4, d5, d6, d7, d0[1], d0[2] @ q10,q11 = t5a, q5,q7 = t4a
390− dmbutterfly_l q2, q3, q13, q14, d12, d13, d8, d9, d0[2], d0[1] @ q2,q3 = t6a, q13,q14 = t7a
389+ dmbutterfly_l q10, q11, q5, q7, d4, d5, d6, d7, d0[2], d0[3] @ q10,q11 = t5a, q5,q7 = t4a
390+ dmbutterfly_l q2, q3, q13, q14, d12, d13, d8, d9, d0[3], d0[2] @ q2,q3 = t6a, q13,q14 = t7a
391391
392392 dbutterfly_n d28, d29, d8, d9, q10, q11, q13, q14, q4, q6, q10, q11 @ q14 = out[6], q4 = t7
393393
@@ -594,13 +594,13 @@ endfunc · 200 unmodified lines
594594
595595 function idct16
596596 mbutterfly0 d16, d24, d16, d24, d4, d6, q2, q3 @ d16 = t0a, d24 = t1a
597− mbutterfly d20, d28, d0[1], d0[2], q2, q3 @ d20 = t2a, d28 = t3a
598− mbutterfly d18, d30, d0[3], d1[0], q2, q3 @ d18 = t4a, d30 = t7a
599− mbutterfly d26, d22, d1[1], d1[2], q2, q3 @ d26 = t5a, d22 = t6a
600− mbutterfly d17, d31, d1[3], d2[0], q2, q3 @ d17 = t8a, d31 = t15a
601− mbutterfly d25, d23, d2[1], d2[2], q2, q3 @ d25 = t9a, d23 = t14a
602− mbutterfly d21, d27, d2[3], d3[0], q2, q3 @ d21 = t10a, d27 = t13a
603− mbutterfly d29, d19, d3[1], d3[2], q2, q3 @ d29 = t11a, d19 = t12a
597+ mbutterfly d20, d28, d0[2], d0[3], q2, q3 @ d20 = t2a, d28 = t3a
598+ mbutterfly d18, d30, d1[0], d1[1], q2, q3 @ d18 = t4a, d30 = t7a
599+ mbutterfly d26, d22, d1[2], d1[3], q2, q3 @ d26 = t5a, d22 = t6a
600+ mbutterfly d17, d31, d2[0], d2[1], q2, q3 @ d17 = t8a, d31 = t15a
601+ mbutterfly d25, d23, d2[2], d2[3], q2, q3 @ d25 = t9a, d23 = t14a
602+ mbutterfly d21, d27, d3[0], d3[1], q2, q3 @ d21 = t10a, d27 = t13a
603+ mbutterfly d29, d19, d3[2], d3[3], q2, q3 @ d29 = t11a, d19 = t12a
604604
605605 butterfly d4, d28, d16, d28 @ d4 = t0, d28 = t3
606606 butterfly d5, d20, d24, d20 @ d5 = t1, d20 = t2
@@ -612,20 +612,20 @@ function idct16 · 5 unmodified lines
612612 butterfly d29, d23, d31, d23 @ d29 = t15, d23 = t14
613613
614614 mbutterfly0 d22, d26, d22, d26, d18, d30, q9, q15 @ d22 = t6a, d26 = t5a
615− mbutterfly d23, d25, d0[1], d0[2], q9, q15 @ d23 = t9a, d25 = t14a
616− mbutterfly d27, d21, d0[1], d0[2], q9, q15, neg=1 @ d27 = t13a, d21 = t10a
615+ mbutterfly d23, d25, d0[2], d0[3], q9, q15 @ d23 = t9a, d25 = t14a
616+ mbutterfly d27, d21, d0[2], d0[3], q9, q15, neg=1 @ d27 = t13a, d21 = t10a
617617 idct16_end
618618 endfunc
619619
620620 function idct16_half
621621 mbutterfly0_h d16, d24, d16, d24, d4, d6, q2, q3 @ d16 = t0a, d24 = t1a
622− mbutterfly_h1 d20, d28, d0[1], d0[2], q2, q3 @ d20 = t2a, d28 = t3a
623− mbutterfly_h1 d18, d30, d0[3], d1[0], q2, q3 @ d18 = t4a, d30 = t7a
624− mbutterfly_h2 d26, d22, d1[1], d1[2], q2, q3 @ d26 = t5a, d22 = t6a
625− mbutterfly_h1 d17, d31, d1[3], d2[0], q2, q3 @ d17 = t8a, d31 = t15a
626− mbutterfly_h2 d25, d23, d2[1], d2[2], q2, q3 @ d25 = t9a, d23 = t14a
627− mbutterfly_h1 d21, d27, d2[3], d3[0], q2, q3 @ d21 = t10a, d27 = t13a
628− mbutterfly_h2 d29, d19, d3[1], d3[2], q2, q3 @ d29 = t11a, d19 = t12a
622+ mbutterfly_h1 d20, d28, d0[2], d0[3], q2, q3 @ d20 = t2a, d28 = t3a
623+ mbutterfly_h1 d18, d30, d1[0], d1[1], q2, q3 @ d18 = t4a, d30 = t7a
624+ mbutterfly_h2 d26, d22, d1[2], d1[3], q2, q3 @ d26 = t5a, d22 = t6a
625+ mbutterfly_h1 d17, d31, d2[0], d2[1], q2, q3 @ d17 = t8a, d31 = t15a
626+ mbutterfly_h2 d25, d23, d2[2], d2[3], q2, q3 @ d25 = t9a, d23 = t14a
627+ mbutterfly_h1 d21, d27, d3[0], d3[1], q2, q3 @ d21 = t10a, d27 = t13a
628+ mbutterfly_h2 d29, d19, d3[2], d3[3], q2, q3 @ d29 = t11a, d19 = t12a
629629
630630 butterfly d4, d28, d16, d28 @ d4 = t0, d28 = t3
631631 butterfly d5, d20, d24, d20 @ d5 = t1, d20 = t2
@@ -637,19 +637,19 @@ function idct16_half · 5 unmodified lines
637637 butterfly d29, d23, d31, d23 @ d29 = t15, d23 = t14
638638
639639 mbutterfly0 d22, d26, d22, d26, d18, d30, q9, q15 @ d22 = t6a, d26 = t5a
640− mbutterfly d23, d25, d0[1], d0[2], q9, q15 @ d23 = t9a, d25 = t14a
641− mbutterfly d27, d21, d0[1], d0[2], q9, q15, neg=1 @ d27 = t13a, d21 = t10a
640+ mbutterfly d23, d25, d0[2], d0[3], q9, q15 @ d23 = t9a, d25 = t14a
641+ mbutterfly d27, d21, d0[2], d0[3], q9, q15, neg=1 @ d27 = t13a, d21 = t10a
642642 idct16_end
643643 endfunc
644644
645645 function idct16_quarter
646− vmull.s16 q12, d19, d3[2]
647− vmull.s16 q2, d17, d1[3]
648− vmull.s16 q3, d18, d1[0]
649− vmull.s16 q15, d18, d0[3]
646+ vmull.s16 q12, d19, d3[3]
647+ vmull.s16 q2, d17, d2[0]
648+ vmull.s16 q3, d18, d1[1]
649+ vmull.s16 q15, d18, d1[0]
650650 vneg.s32 q12, q12
651− vmull.s16 q14, d17, d2[0]
652− vmull.s16 q13, d19, d3[1]
651+ vmull.s16 q14, d17, d2[1]
652+ vmull.s16 q13, d19, d3[2]
653653 vmull.s16 q11, d16, d0[0]
654654 vrshrn.s32 d24, q12, #14
655655 vrshrn.s32 d16, q2, #14
@@ -659,8 +659,8 @@ function idct16_quarter · 3 unmodified lines
659659 vrshrn.s32 d17, q13, #14
660660 vrshrn.s32 d28, q11, #14
661661
662− mbutterfly_l q10, q11, d17, d24, d0[1], d0[2]
663− mbutterfly_l q9, q15, d29, d16, d0[1], d0[2]
662+ mbutterfly_l q10, q11, d17, d24, d0[2], d0[3]
663+ mbutterfly_l q9, q15, d29, d16, d0[2], d0[3]
664664 vneg.s32 q11, q11
665665 vrshrn.s32 d27, q10, #14
666666 vrshrn.s32 d21, q11, #14
@@ -697,16 +697,16 @@ function iadst16 · 30 unmodified lines
697697 movrel r12, idct_coeffs
698698 vld1.16 {q0}, [r12,:128]
699699 butterfly_n d22, d30, q3, q5, q6, q5 @ d22 = t7a, d30 = t15a
700− mbutterfly_l q7, q6, d23, d24, d0[3], d1[0] @ q7 = t9, q6 = t8
700+ mbutterfly_l q7, q6, d23, d24, d1[0], d1[1] @ q7 = t9, q6 = t8
701701 butterfly_n d25, d17, q2, q4, q3, q4 @ d25 = t6a, d17 = t14a
702702
703− mbutterfly_l q2, q3, d28, d19, d1[0], d0[3] @ q2 = t12, q3 = t13
703+ mbutterfly_l q2, q3, d28, d19, d1[1], d1[0] @ q2 = t12, q3 = t13
704704 butterfly_n d23, d19, q6, q2, q4, q2 @ d23 = t8a, d19 = t12a
705− mbutterfly_l q5, q4, d21, d26, d1[1], d1[2] @ q5 = t11, q4 = t10
705+ mbutterfly_l q5, q4, d21, d26, d1[2], d1[3] @ q5 = t11, q4 = t10
706706 butterfly_r d4, d27, d16, d27 @ d4 = t4, d27 = t0
707707 butterfly_n d24, d28, q7, q3, q6, q3 @ d24 = t9a, d28 = t13a
708708
709− mbutterfly_l q6, q7, d30, d17, d1[2], d1[1] @ q6 = t14, q7 = t15
709+ mbutterfly_l q6, q7, d30, d17, d1[3], d1[2] @ q6 = t14, q7 = t15
710710 butterfly_r d5, d20, d31, d20 @ d5 = t5, d20 = t1
711711 butterfly_n d21, d17, q4, q6, q3, q6 @ d21 = t10a, d17 = t14a
712712 butterfly_n d26, d30, q5, q7, q4, q7 @ d26 = t11a, d30 = t15a
@@ -714,15 +714,15 @@ function iadst16 · 1 unmodified line
714714 butterfly_r d6, d25, d18, d25 @ d6 = t6, d25 = t2
715715 butterfly_r d7, d22, d29, d22 @ d7 = t7, d22 = t3
716716
717− mbutterfly_l q5, q4, d19, d28, d0[1], d0[2] @ q5 = t13, q4 = t12
718− mbutterfly_l q6, q7, d30, d17, d0[2], d0[1] @ q6 = t14, q7 = t15
717+ mbutterfly_l q5, q4, d19, d28, d0[2], d0[3] @ q5 = t13, q4 = t12
718+ mbutterfly_l q6, q7, d30, d17, d0[3], d0[2] @ q6 = t14, q7 = t15
719719
720720 butterfly_n d18, d30, q4, q6, q8, q6 @ d18 = out[2], d30 = t14a
721721 butterfly_n d29, d17, q5, q7, q6, q7 @ d29 = -out[13], d17 = t15a
722722 vneg.s16 d29, d29 @ d29 = out[13]
723723
724− mbutterfly_l q5, q4, d4, d5, d0[1], d0[2] @ q5 = t5a, q4 = t4a
725− mbutterfly_l q6, q7, d7, d6, d0[2], d0[1] @ q6 = t6a, q7 = t7a
724+ mbutterfly_l q5, q4, d4, d5, d0[2], d0[3] @ q5 = t5a, q4 = t4a
725+ mbutterfly_l q6, q7, d7, d6, d0[3], d0[2] @ q6 = t6a, q7 = t7a
726726
727727 butterfly d2, d6, d27, d25 @ d2 = out[0], d6 = t2a
728728 butterfly d3, d7, d23, d21 @ d3 =-out[1], d7 = t10
@@ -1194,10 +1194,10 @@ endfunc · 465 unmodified lines
11941194 butterfly d11, d29, d29, d31 @ d11 = t31a, d29 = t28a
11951195 butterfly d22, d27, d24, d27 @ d22 = t30, d27 = t29
11961196
1197− mbutterfly d27, d20, d0[1], d0[2], q12, q15 @ d27 = t18a, d20 = t29a
1198− mbutterfly d29, d9, d0[1], d0[2], q12, q15 @ d29 = t19, d9 = t28
1199− mbutterfly d28, d10, d0[1], d0[2], q12, q15, neg=1 @ d28 = t27, d10 = t20
1200− mbutterfly d26, d21, d0[1], d0[2], q12, q15, neg=1 @ d26 = t26a, d21 = t21a
1197+ mbutterfly d27, d20, d0[2], d0[3], q12, q15 @ d27 = t18a, d20 = t29a
1198+ mbutterfly d29, d9, d0[2], d0[3], q12, q15 @ d29 = t19, d5 = t28
1199+ mbutterfly d28, d10, d0[2], d0[3], q12, q15, neg=1 @ d28 = t27, d6 = t20
1200+ mbutterfly d26, d21, d0[2], d0[3], q12, q15, neg=1 @ d26 = t26a, d21 = t21a
12011201
12021202 butterfly d31, d24, d11, d8 @ d31 = t31, d24 = t24
12031203 butterfly d30, d25, d22, d23 @ d30 = t30a, d25 = t25a
@@ -1235,10 +1235,10 @@ function idct32_odd · 31 unmodified lines
12351235 butterfly d29, d23, d31, d23 @ d29 = t31, d23 = t30
12361236 butterfly d31, d27, d19, d27 @ d31 = t28, d27 = t29
12371237
1238− mbutterfly d23, d24, d0[3], d1[0], q8, q9 @ d23 = t17a, d24 = t30a
1239− mbutterfly d27, d20, d0[3], d1[0], q8, q9, neg=1 @ d27 = t29a, d20 = t18a
1240− mbutterfly d21, d26, d1[1], d1[2], q8, q9 @ d21 = t21a, d26 = t26a
1241− mbutterfly d25, d22, d1[1], d1[2], q8, q9, neg=1 @ d25 = t25a, d22 = t22a
1238+ mbutterfly d23, d24, d1[0], d1[1], q8, q9 @ d23 = t17a, d24 = t30a
1239+ mbutterfly d27, d20, d1[0], d1[1], q8, q9, neg=1 @ d27 = t29a, d20 = t18a
1240+ mbutterfly d21, d26, d1[2], d1[3], q8, q9 @ d21 = t21a, d26 = t26a
1241+ mbutterfly d25, d22, d1[2], d1[3], q8, q9, neg=1 @ d25 = t25a, d22 = t22a
12421242 idct32_end
12431243 endfunc
12441244
@@ -1261,10 +1261,10 @@ function idct32_odd_half · 16 unmodified lines
12611261 butterfly d29, d23, d31, d23 @ d29 = t31, d23 = t30
12621262 butterfly d31, d27, d19, d27 @ d31 = t28, d27 = t29
12631263
1264− mbutterfly d23, d24, d0[3], d1[0], q8, q9 @ d23 = t17a, d24 = t30a
1265− mbutterfly d27, d20, d0[3], d1[0], q8, q9, neg=1 @ d27 = t29a, d20 = t18a
1266− mbutterfly d21, d26, d1[1], d1[2], q8, q9 @ d21 = t21a, d26 = t26a
1267− mbutterfly d25, d22, d1[1], d1[2], q8, q9, neg=1 @ d25 = t25a, d22 = t22a
1264+ mbutterfly d23, d24, d1[0], d1[1], q8, q9 @ d23 = t17a, d24 = t30a
1265+ mbutterfly d27, d20, d1[0], d1[1], q8, q9, neg=1 @ d27 = t29a, d20 = t18a
1266+ mbutterfly d21, d26, d1[2], d1[3], q8, q9 @ d21 = t21a, d26 = t26a
1267+ mbutterfly d25, d22, d1[2], d1[3], q8, q9, neg=1 @ d25 = t25a, d22 = t22a
12681268
12691269 idct32_end
12701270 endfunc
@@ -1291,17 +1291,17 @@ function idct32_odd_quarter · 20 unmodified lines
12911291 vrshrn.s32 d10, q10, #14
12921292 vrshrn.s32 d30, q12, #14
12931293
1294− mbutterfly_l q8, q9, d29, d8, d0[3], d1[0]
1295− mbutterfly_l q13, q10, d31, d9, d0[3], d1[0]
1294+ mbutterfly_l q8, q9, d29, d8, d1[0], d1[1]
1295+ mbutterfly_l q13, q10, d31, d9, d1[0], d1[1]
12961296 vrshrn.s32 d23, q8, #14
12971297 vrshrn.s32 d24, q9, #14
12981298 vneg.s32 q10, q10
12991299 vrshrn.s32 d27, q13, #14
13001300 vrshrn.s32 d20, q10, #14
1301− mbutterfly_l q8, q9, d30, d10, d1[1], d1[2]
1301+ mbutterfly_l q8, q9, d30, d10, d1[2], d1[3]
13021302 vrshrn.s32 d21, q8, #14
13031303 vrshrn.s32 d26, q9, #14
1304− mbutterfly_l q8, q9, d28, d11, d1[1], d1[2]
1304+ mbutterfly_l q8, q9, d28, d11, d1[2], d1[3]
13051305 vrshrn.s32 d25, q8, #14
13061306 vneg.s32 q9, q9
13071307 vrshrn.s32 d22, q9, #14

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t