History

aarch64: 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 09eb88a1 parent de06bdf1 file · +62 −62Browse files

Unified · Split

libavcodec/aarch64/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
@@ -192,14 +192,14 @@ endconst · 154 unmodified lines
192192 .endm
193193
194194 .macro idct4 c0, c1, c2, c3
195− smull v22.4s, \c1\().4h, v0.h[2]
196− smull v20.4s, \c1\().4h, v0.h[1]
195+ smull v22.4s, \c1\().4h, v0.h[3]
196+ smull v20.4s, \c1\().4h, v0.h[2]
197197 add v16.4h, \c0\().4h, \c2\().4h
198198 sub v17.4h, \c0\().4h, \c2\().4h
199− smlal v22.4s, \c3\().4h, v0.h[1]
199+ smlal v22.4s, \c3\().4h, v0.h[2]
200200 smull v18.4s, v16.4h, v0.h[0]
201201 smull v19.4s, v17.4h, v0.h[0]
202− smlsl v20.4s, \c3\().4h, v0.h[2]
202+ smlsl v20.4s, \c3\().4h, v0.h[3]
203203 rshrn v22.4h, v22.4s, #14
204204 rshrn v18.4h, v18.4s, #14
205205 rshrn v19.4h, v19.4s, #14
@@ -326,9 +326,9 @@ itxfm_func4x4 iwht, iwht · 120 unmodified lines
326326
327327 .macro idct8
328328 dmbutterfly0 v16, v20, v16, v20, v2, v3, v4, v5, v6, v7 // v16 = t0a, v20 = t1a
329− dmbutterfly v18, v22, v0.h[1], v0.h[2], v2, v3, v4, v5 // v18 = t2a, v22 = t3a
330− dmbutterfly v17, v23, v0.h[3], v0.h[4], v2, v3, v4, v5 // v17 = t4a, v23 = t7a
331− dmbutterfly v21, v19, v0.h[5], v0.h[6], v2, v3, v4, v5 // v21 = t5a, v19 = t6a
329+ dmbutterfly v18, v22, v0.h[2], v0.h[3], v2, v3, v4, v5 // v18 = t2a, v22 = t3a
330+ dmbutterfly v17, v23, v0.h[4], v0.h[5], v2, v3, v4, v5 // v17 = t4a, v23 = t7a
331+ dmbutterfly v21, v19, v0.h[6], v0.h[7], v2, v3, v4, v5 // v21 = t5a, v19 = t6a
332332
333333 butterfly_8h v24, v25, v16, v22 // v24 = t0, v25 = t3
334334 butterfly_8h v28, v29, v17, v21 // v28 = t4, v29 = t5a
@@ -361,8 +361,8 @@ itxfm_func4x4 iwht, iwht · 26 unmodified lines
361361 dmbutterfly0 v19, v20, v6, v7, v24, v26, v27, v28, v29, v30 // v19 = -out[3], v20 = out[4]
362362 neg v19.8h, v19.8h // v19 = out[3]
363363
364− dmbutterfly_l v26, v27, v28, v29, v5, v3, v0.h[1], v0.h[2] // v26,v27 = t5a, v28,v29 = t4a
365− dmbutterfly_l v2, v3, v4, v5, v31, v25, v0.h[2], v0.h[1] // v2,v3 = t6a, v4,v5 = t7a
364+ dmbutterfly_l v26, v27, v28, v29, v5, v3, v0.h[2], v0.h[3] // v26,v27 = t5a, v28,v29 = t4a
365+ dmbutterfly_l v2, v3, v4, v5, v31, v25, v0.h[3], v0.h[2] // v2,v3 = t6a, v4,v5 = t7a
366366
367367 dbutterfly_n v17, v30, v28, v29, v2, v3, v6, v7, v24, v25 // v17 = -out[1], v30 = t6
368368 dbutterfly_n v22, v31, v26, v27, v4, v5, v6, v7, v24, v25 // v22 = out[6], v31 = t7
@@ -543,13 +543,13 @@ endfunc · 174 unmodified lines
543543
544544 function idct16
545545 dmbutterfly0 v16, v24, v16, v24, v2, v3, v4, v5, v6, v7 // v16 = t0a, v24 = t1a
546− dmbutterfly v20, v28, v0.h[1], v0.h[2], v2, v3, v4, v5 // v20 = t2a, v28 = t3a
547− dmbutterfly v18, v30, v0.h[3], v0.h[4], v2, v3, v4, v5 // v18 = t4a, v30 = t7a
548− dmbutterfly v26, v22, v0.h[5], v0.h[6], v2, v3, v4, v5 // v26 = t5a, v22 = t6a
549− dmbutterfly v17, v31, v0.h[7], v1.h[0], v2, v3, v4, v5 // v17 = t8a, v31 = t15a
550− dmbutterfly v25, v23, v1.h[1], v1.h[2], v2, v3, v4, v5 // v25 = t9a, v23 = t14a
551− dmbutterfly v21, v27, v1.h[3], v1.h[4], v2, v3, v4, v5 // v21 = t10a, v27 = t13a
552− dmbutterfly v29, v19, v1.h[5], v1.h[6], v2, v3, v4, v5 // v29 = t11a, v19 = t12a
546+ dmbutterfly v20, v28, v0.h[2], v0.h[3], v2, v3, v4, v5 // v20 = t2a, v28 = t3a
547+ dmbutterfly v18, v30, v0.h[4], v0.h[5], v2, v3, v4, v5 // v18 = t4a, v30 = t7a
548+ dmbutterfly v26, v22, v0.h[6], v0.h[7], v2, v3, v4, v5 // v26 = t5a, v22 = t6a
549+ dmbutterfly v17, v31, v1.h[0], v1.h[1], v2, v3, v4, v5 // v17 = t8a, v31 = t15a
550+ dmbutterfly v25, v23, v1.h[2], v1.h[3], v2, v3, v4, v5 // v25 = t9a, v23 = t14a
551+ dmbutterfly v21, v27, v1.h[4], v1.h[5], v2, v3, v4, v5 // v21 = t10a, v27 = t13a
552+ dmbutterfly v29, v19, v1.h[6], v1.h[7], v2, v3, v4, v5 // v29 = t11a, v19 = t12a
553553
554554 butterfly_8h v4, v28, v16, v28 // v4 = t0, v28 = t3
555555 butterfly_8h v5, v20, v24, v20 // v5 = t1, v20 = t2
@@ -561,20 +561,20 @@ function idct16 · 5 unmodified lines
561561 butterfly_8h v29, v23, v31, v23 // v29 = t15, v23 = t14
562562
563563 dmbutterfly0 v22, v26, v22, v26, v2, v3, v18, v19, v30, v31 // v22 = t6a, v26 = t5a
564− dmbutterfly v23, v25, v0.h[1], v0.h[2], v18, v19, v30, v31 // v23 = t9a, v25 = t14a
565− dmbutterfly v27, v21, v0.h[1], v0.h[2], v18, v19, v30, v31, neg=1 // v27 = t13a, v21 = t10a
564+ dmbutterfly v23, v25, v0.h[2], v0.h[3], v18, v19, v30, v31 // v23 = t9a, v25 = t14a
565+ dmbutterfly v27, v21, v0.h[2], v0.h[3], v18, v19, v30, v31, neg=1 // v27 = t13a, v21 = t10a
566566 idct16_end
567567 endfunc
568568
569569 function idct16_half
570570 dmbutterfly0_h v16, v24, v16, v24, v2, v3, v4, v5, v6, v7 // v16 = t0a, v24 = t1a
571− dmbutterfly_h1 v20, v28, v0.h[1], v0.h[2], v2, v3, v4, v5 // v20 = t2a, v28 = t3a
572− dmbutterfly_h1 v18, v30, v0.h[3], v0.h[4], v2, v3, v4, v5 // v18 = t4a, v30 = t7a
573− dmbutterfly_h2 v26, v22, v0.h[5], v0.h[6], v2, v3, v4, v5 // v26 = t5a, v22 = t6a
574− dmbutterfly_h1 v17, v31, v0.h[7], v1.h[0], v2, v3, v4, v5 // v17 = t8a, v31 = t15a
575− dmbutterfly_h2 v25, v23, v1.h[1], v1.h[2], v2, v3, v4, v5 // v25 = t9a, v23 = t14a
576− dmbutterfly_h1 v21, v27, v1.h[3], v1.h[4], v2, v3, v4, v5 // v21 = t10a, v27 = t13a
577− dmbutterfly_h2 v29, v19, v1.h[5], v1.h[6], v2, v3, v4, v5 // v29 = t11a, v19 = t12a
571+ dmbutterfly_h1 v20, v28, v0.h[2], v0.h[3], v2, v3, v4, v5 // v20 = t2a, v28 = t3a
572+ dmbutterfly_h1 v18, v30, v0.h[4], v0.h[5], v2, v3, v4, v5 // v18 = t4a, v30 = t7a
573+ dmbutterfly_h2 v26, v22, v0.h[6], v0.h[7], v2, v3, v4, v5 // v26 = t5a, v22 = t6a
574+ dmbutterfly_h1 v17, v31, v1.h[0], v1.h[1], v2, v3, v4, v5 // v17 = t8a, v31 = t15a
575+ dmbutterfly_h2 v25, v23, v1.h[2], v1.h[3], v2, v3, v4, v5 // v25 = t9a, v23 = t14a
576+ dmbutterfly_h1 v21, v27, v1.h[4], v1.h[5], v2, v3, v4, v5 // v21 = t10a, v27 = t13a
577+ dmbutterfly_h2 v29, v19, v1.h[6], v1.h[7], v2, v3, v4, v5 // v29 = t11a, v19 = t12a
578578
579579 butterfly_8h v4, v28, v16, v28 // v4 = t0, v28 = t3
580580 butterfly_8h v5, v20, v24, v20 // v5 = t1, v20 = t2
@@ -586,20 +586,20 @@ function idct16_half · 5 unmodified lines
586586 butterfly_8h v29, v23, v31, v23 // v29 = t15, v23 = t14
587587
588588 dmbutterfly0 v22, v26, v22, v26, v2, v3, v18, v19, v30, v31 // v22 = t6a, v26 = t5a
589− dmbutterfly v23, v25, v0.h[1], v0.h[2], v18, v19, v30, v31 // v23 = t9a, v25 = t14a
590− dmbutterfly v27, v21, v0.h[1], v0.h[2], v18, v19, v30, v31, neg=1 // v27 = t13a, v21 = t10a
589+ dmbutterfly v23, v25, v0.h[2], v0.h[3], v18, v19, v30, v31 // v23 = t9a, v25 = t14a
590+ dmbutterfly v27, v21, v0.h[2], v0.h[3], v18, v19, v30, v31, neg=1 // v27 = t13a, v21 = t10a
591591 idct16_end
592592 endfunc
593593
594594 function idct16_quarter
595− dsmull_h v24, v25, v19, v1.h[6]
596− dsmull_h v4, v5, v17, v0.h[7]
597− dsmull_h v7, v6, v18, v0.h[4]
598− dsmull_h v30, v31, v18, v0.h[3]
595+ dsmull_h v24, v25, v19, v1.h[7]
596+ dsmull_h v4, v5, v17, v1.h[0]
597+ dsmull_h v7, v6, v18, v0.h[5]
598+ dsmull_h v30, v31, v18, v0.h[4]
599599 neg v24.4s, v24.4s
600600 neg v25.4s, v25.4s
601− dsmull_h v29, v28, v17, v1.h[0]
602− dsmull_h v26, v27, v19, v1.h[5]
601+ dsmull_h v29, v28, v17, v1.h[1]
602+ dsmull_h v26, v27, v19, v1.h[6]
603603 dsmull_h v22, v23, v16, v0.h[0]
604604 drshrn_h v24, v24, v25, #14
605605 drshrn_h v16, v4, v5, #14
@@ -609,8 +609,8 @@ function idct16_quarter · 3 unmodified lines
609609 drshrn_h v17, v26, v27, #14
610610 drshrn_h v28, v22, v23, #14
611611
612− dmbutterfly_l v20, v21, v22, v23, v17, v24, v0.h[1], v0.h[2]
613− dmbutterfly_l v18, v19, v30, v31, v29, v16, v0.h[1], v0.h[2]
612+ dmbutterfly_l v20, v21, v22, v23, v17, v24, v0.h[2], v0.h[3]
613+ dmbutterfly_l v18, v19, v30, v31, v29, v16, v0.h[2], v0.h[3]
614614 neg v22.4s, v22.4s
615615 neg v23.4s, v23.4s
616616 drshrn_h v27, v20, v21, #14
@@ -646,16 +646,16 @@ function iadst16 · 29 unmodified lines
646646 dmbutterfly_l v10, v11, v8, v9, v17, v30, v1.h[7], v1.h[6] // v10,v11 = t15, v8,v9 = t14
647647 ld1 {v0.8h}, [x10]
648648 dbutterfly_n v22, v30, v6, v7, v10, v11, v12, v13, v10, v11 // v22 = t7a, v30 = t15a
649− dmbutterfly_l v14, v15, v12, v13, v23, v24, v0.h[3], v0.h[4] // v14,v15 = t9, v12,v13 = t8
649+ dmbutterfly_l v14, v15, v12, v13, v23, v24, v0.h[4], v0.h[5] // v14,v15 = t9, v12,v13 = t8
650650 dbutterfly_n v25, v17, v4, v5, v8, v9, v6, v7, v8, v9 // v25 = t6a, v17 = t14a
651651
652− dmbutterfly_l v4, v5, v6, v7, v28, v19, v0.h[4], v0.h[3] // v4,v5 = t12, v6,v7 = t13
652+ dmbutterfly_l v4, v5, v6, v7, v28, v19, v0.h[5], v0.h[4] // v4,v5 = t12, v6,v7 = t13
653653 dbutterfly_n v23, v19, v12, v13, v4, v5, v8, v9, v4, v5 // v23 = t8a, v19 = t12a
654− dmbutterfly_l v10, v11, v8, v9, v21, v26, v0.h[5], v0.h[6] // v10,v11 = t11, v8,v9 = t10
654+ dmbutterfly_l v10, v11, v8, v9, v21, v26, v0.h[6], v0.h[7] // v10,v11 = t11, v8,v9 = t10
655655 butterfly_8h_r v4, v27, v16, v27 // v4 = t4, v27 = t0
656656 dbutterfly_n v24, v28, v14, v15, v6, v7, v12, v13, v6, v7 // v24 = t9a, v28 = t13a
657657
658− dmbutterfly_l v12, v13, v14, v15, v30, v17, v0.h[6], v0.h[5] // v12,v13 = t14, v14,v15 = t15
658+ dmbutterfly_l v12, v13, v14, v15, v30, v17, v0.h[7], v0.h[6] // v12,v13 = t14, v14,v15 = t15
659659 butterfly_8h_r v5, v20, v31, v20 // v5 = t5, v20 = t1
660660 dbutterfly_n v21, v17, v8, v9, v12, v13, v6, v7, v12, v13 // v21 = t10a, v17 = t14a
661661 dbutterfly_n v26, v30, v10, v11, v14, v15, v8, v9, v14, v15 // v26 = t11a, v30 = t15a
@@ -663,15 +663,15 @@ function iadst16 · 1 unmodified line
663663 butterfly_8h_r v6, v25, v18, v25 // v6 = t6, v25 = t2
664664 butterfly_8h_r v7, v22, v29, v22 // v7 = t7, v22 = t3
665665
666− dmbutterfly_l v10, v11, v8, v9, v19, v28, v0.h[1], v0.h[2] // v10,v11 = t13, v8,v9 = t12
667− dmbutterfly_l v12, v13, v14, v15, v30, v17, v0.h[2], v0.h[1] // v12,v13 = t14, v14,v15 = t15
666+ dmbutterfly_l v10, v11, v8, v9, v19, v28, v0.h[2], v0.h[3] // v10,v11 = t13, v8,v9 = t12
667+ dmbutterfly_l v12, v13, v14, v15, v30, v17, v0.h[3], v0.h[2] // v12,v13 = t14, v14,v15 = t15
668668
669669 dbutterfly_n v18, v30, v8, v9, v12, v13, v16, v17, v12, v13 // v18 = out[2], v30 = t14a
670670 dbutterfly_n v29, v17, v10, v11, v14, v15, v12, v13, v14, v15 // v29 = -out[13], v17 = t15a
671671 neg v29.8h, v29.8h // v29 = out[13]
672672
673− dmbutterfly_l v10, v11, v8, v9, v4, v5, v0.h[1], v0.h[2] // v10,v11 = t5a, v8,v9 = t4a
674− dmbutterfly_l v12, v13, v14, v15, v7, v6, v0.h[2], v0.h[1] // v12,v13 = t6a, v14,v15 = t7a
673+ dmbutterfly_l v10, v11, v8, v9, v4, v5, v0.h[2], v0.h[3] // v10,v11 = t5a, v8,v9 = t4a
674+ dmbutterfly_l v12, v13, v14, v15, v7, v6, v0.h[3], v0.h[2] // v12,v13 = t6a, v14,v15 = t7a
675675
676676 butterfly_8h v2, v6, v27, v25 // v2 = out[0], v6 = t2a
677677 butterfly_8h v3, v7, v23, v21 // v3 =-out[1], v7 = t10
@@ -1101,10 +1101,10 @@ endfunc · 423 unmodified lines
11011101 butterfly_8h v7, v3, v29, v31 // v7 = t31a, v3 = t28a
11021102 butterfly_8h v22, v27, v24, v27 // v22 = t30, v27 = t29
11031103
1104− dmbutterfly v27, v20, v0.h[1], v0.h[2], v24, v25, v30, v31 // v27 = t18a, v20 = t29a
1105− dmbutterfly v3, v5, v0.h[1], v0.h[2], v24, v25, v30, v31 // v3 = t19, v5 = t28
1106− dmbutterfly v28, v6, v0.h[1], v0.h[2], v24, v25, v30, v31, neg=1 // v28 = t27, v6 = t20
1107− dmbutterfly v26, v21, v0.h[1], v0.h[2], v24, v25, v30, v31, neg=1 // v26 = t26a, v21 = t21a
1104+ dmbutterfly v27, v20, v0.h[2], v0.h[3], v24, v25, v30, v31 // v27 = t18a, v20 = t29a
1105+ dmbutterfly v3, v5, v0.h[2], v0.h[3], v24, v25, v30, v31 // v3 = t19, v5 = t28
1106+ dmbutterfly v28, v6, v0.h[2], v0.h[3], v24, v25, v30, v31, neg=1 // v28 = t27, v6 = t20
1107+ dmbutterfly v26, v21, v0.h[2], v0.h[3], v24, v25, v30, v31, neg=1 // v26 = t26a, v21 = t21a
11081108
11091109 butterfly_8h v31, v24, v7, v4 // v31 = t31, v24 = t24
11101110 butterfly_8h v30, v25, v22, v23 // v30 = t30a, v25 = t25a
@@ -1141,10 +1141,10 @@ function idct32_odd · 30 unmodified lines
11411141 butterfly_8h v29, v23, v31, v23 // v29 = t31, v23 = t30
11421142 butterfly_8h v31, v27, v19, v27 // v31 = t28, v27 = t29
11431143
1144− dmbutterfly v23, v24, v0.h[3], v0.h[4], v16, v17, v18, v19 // v23 = t17a, v24 = t30a
1145− dmbutterfly v27, v20, v0.h[3], v0.h[4], v16, v17, v18, v19, neg=1 // v27 = t29a, v20 = t18a
1146− dmbutterfly v21, v26, v0.h[5], v0.h[6], v16, v17, v18, v19 // v21 = t21a, v26 = t26a
1147− dmbutterfly v25, v22, v0.h[5], v0.h[6], v16, v17, v18, v19, neg=1 // v25 = t25a, v22 = t22a
1144+ dmbutterfly v23, v24, v0.h[4], v0.h[5], v16, v17, v18, v19 // v23 = t17a, v24 = t30a
1145+ dmbutterfly v27, v20, v0.h[4], v0.h[5], v16, v17, v18, v19, neg=1 // v27 = t29a, v20 = t18a
1146+ dmbutterfly v21, v26, v0.h[6], v0.h[7], v16, v17, v18, v19 // v21 = t21a, v26 = t26a
1147+ dmbutterfly v25, v22, v0.h[6], v0.h[7], v16, v17, v18, v19, neg=1 // v25 = t25a, v22 = t22a
11481148 idct32_end
11491149 endfunc
11501150
@@ -1167,10 +1167,10 @@ function idct32_odd_half · 16 unmodified lines
11671167 butterfly_8h v29, v23, v31, v23 // v29 = t31, v23 = t30
11681168 butterfly_8h v31, v27, v19, v27 // v31 = t28, v27 = t29
11691169
1170− dmbutterfly v23, v24, v0.h[3], v0.h[4], v16, v17, v18, v19 // v23 = t17a, v24 = t30a
1171− dmbutterfly v27, v20, v0.h[3], v0.h[4], v16, v17, v18, v19, neg=1 // v27 = t29a, v20 = t18a
1172− dmbutterfly v21, v26, v0.h[5], v0.h[6], v16, v17, v18, v19 // v21 = t21a, v26 = t26a
1173− dmbutterfly v25, v22, v0.h[5], v0.h[6], v16, v17, v18, v19, neg=1 // v25 = t25a, v22 = t22a
1170+ dmbutterfly v23, v24, v0.h[4], v0.h[5], v16, v17, v18, v19 // v23 = t17a, v24 = t30a
1171+ dmbutterfly v27, v20, v0.h[4], v0.h[5], v16, v17, v18, v19, neg=1 // v27 = t29a, v20 = t18a
1172+ dmbutterfly v21, v26, v0.h[6], v0.h[7], v16, v17, v18, v19 // v21 = t21a, v26 = t26a
1173+ dmbutterfly v25, v22, v0.h[6], v0.h[7], v16, v17, v18, v19, neg=1 // v25 = t25a, v22 = t22a
11741174 idct32_end
11751175 endfunc
11761176
@@ -1198,18 +1198,18 @@ function idct32_odd_quarter · 21 unmodified lines
11981198 drshrn_h v6, v20, v21, #14
11991199 drshrn_h v30, v24, v25, #14
12001200
1201− dmbutterfly_l v16, v17, v18, v19, v29, v4, v0.h[3], v0.h[4]
1202− dmbutterfly_l v27, v26, v20, v21, v31, v5, v0.h[3], v0.h[4]
1201+ dmbutterfly_l v16, v17, v18, v19, v29, v4, v0.h[4], v0.h[5]
1202+ dmbutterfly_l v27, v26, v20, v21, v31, v5, v0.h[4], v0.h[5]
12031203 drshrn_h v23, v16, v17, #14
12041204 drshrn_h v24, v18, v19, #14
12051205 neg v20.4s, v20.4s
12061206 neg v21.4s, v21.4s
12071207 drshrn_h v27, v27, v26, #14
12081208 drshrn_h v20, v20, v21, #14
1209− dmbutterfly_l v16, v17, v18, v19, v30, v6, v0.h[5], v0.h[6]
1209+ dmbutterfly_l v16, v17, v18, v19, v30, v6, v0.h[6], v0.h[7]
12101210 drshrn_h v21, v16, v17, #14
12111211 drshrn_h v26, v18, v19, #14
1212− dmbutterfly_l v16, v17, v18, v19, v28, v7, v0.h[5], v0.h[6]
1212+ dmbutterfly_l v16, v17, v18, v19, v28, v7, v0.h[6], v0.h[7]
12131213 drshrn_h v25, v16, v17, #14
12141214 neg v18.4s, v18.4s
12151215 neg v19.4s, v19.4s

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