1
0
mirror of https://git.ffmpeg.org/ffmpeg.git synced 2026-11-06 21:04:45 +03:00
Files
ffmpeg/libavcodec
Martin Storsjö a63da4511d aarch64: vp9itxfm: Do separate functions for half/quarter idct16 and idct32
This work is sponsored by, and copyright, Google.

This avoids loading and calculating coefficients that we know will
be zero, and avoids filling the temp buffer with zeros in places
where we know the second pass won't read.

This gives a pretty substantial speedup for the smaller subpartitions.

The code size increases from 14740 bytes to 24292 bytes.

The idct16/32_end macros are moved above the individual functions; the
instructions themselves are unchanged, but since new functions are added
at the same place where the code is moved from, the diff looks rather
messy.

Before:
vp9_inv_dct_dct_16x16_sub1_add_neon:     236.7
vp9_inv_dct_dct_16x16_sub2_add_neon:    1051.0
vp9_inv_dct_dct_16x16_sub4_add_neon:    1051.0
vp9_inv_dct_dct_16x16_sub8_add_neon:    1051.0
vp9_inv_dct_dct_16x16_sub12_add_neon:   1387.4
vp9_inv_dct_dct_16x16_sub16_add_neon:   1387.6
vp9_inv_dct_dct_32x32_sub1_add_neon:     554.1
vp9_inv_dct_dct_32x32_sub2_add_neon:    5198.5
vp9_inv_dct_dct_32x32_sub4_add_neon:    5198.6
vp9_inv_dct_dct_32x32_sub8_add_neon:    5196.3
vp9_inv_dct_dct_32x32_sub12_add_neon:   6183.4
vp9_inv_dct_dct_32x32_sub16_add_neon:   6174.3
vp9_inv_dct_dct_32x32_sub20_add_neon:   7151.4
vp9_inv_dct_dct_32x32_sub24_add_neon:   7145.3
vp9_inv_dct_dct_32x32_sub28_add_neon:   8119.3
vp9_inv_dct_dct_32x32_sub32_add_neon:   8118.7

After:
vp9_inv_dct_dct_16x16_sub1_add_neon:     236.7
vp9_inv_dct_dct_16x16_sub2_add_neon:     640.8
vp9_inv_dct_dct_16x16_sub4_add_neon:     639.0
vp9_inv_dct_dct_16x16_sub8_add_neon:     842.0
vp9_inv_dct_dct_16x16_sub12_add_neon:   1388.3
vp9_inv_dct_dct_16x16_sub16_add_neon:   1389.3
vp9_inv_dct_dct_32x32_sub1_add_neon:     554.1
vp9_inv_dct_dct_32x32_sub2_add_neon:    3685.5
vp9_inv_dct_dct_32x32_sub4_add_neon:    3685.1
vp9_inv_dct_dct_32x32_sub8_add_neon:    3684.4
vp9_inv_dct_dct_32x32_sub12_add_neon:   5312.2
vp9_inv_dct_dct_32x32_sub16_add_neon:   5315.4
vp9_inv_dct_dct_32x32_sub20_add_neon:   7154.9
vp9_inv_dct_dct_32x32_sub24_add_neon:   7154.5
vp9_inv_dct_dct_32x32_sub28_add_neon:   8126.6
vp9_inv_dct_dct_32x32_sub32_add_neon:   8127.2

Signed-off-by: Martin Storsjö <martin@martin.st>
2017-02-09 12:32:03 +02:00
..
…
…
2017-02-07 18:27:21 +01:00
2016-02-18 15:35:30 +01:00
…
…
…
…
…
2016-11-13 18:44:00 +01:00
2016-08-17 12:16:42 +02:00
…
…
2016-05-04 18:16:21 +02:00
2016-06-07 13:09:57 +02:00
…
…
…
…
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
…
…
…
2017-01-30 23:03:46 +00:00
…
2016-05-04 18:16:21 +02:00
2016-02-18 15:35:30 +01:00
…
2016-05-04 18:16:21 +02:00
…
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
…
…
…
…
2016-05-04 18:16:21 +02:00
…
…
…
…
…
2017-02-07 18:27:21 +01:00
…
…
…
…
2016-03-20 08:15:01 +01:00
2016-05-04 18:16:21 +02:00
…
…
…
…
2017-02-07 18:27:21 +01:00
2016-05-04 18:16:21 +02:00
…
…
…
2016-05-04 18:16:21 +02:00
…
2016-05-04 18:16:21 +02:00
…
…
…
…
2016-05-04 18:16:21 +02:00
…
2016-05-04 18:16:21 +02:00
…
…
…
…
…
…
…
…
2016-04-26 16:30:18 -04:00
…
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
…
…
2016-06-07 13:09:57 +02:00
…
…
…
…
…
…
2016-05-04 18:16:21 +02:00
…
…
…
2016-11-18 10:35:04 +01:00
2016-08-17 12:16:42 +02:00
…
2016-05-04 18:16:21 +02:00
…
…
2016-03-01 10:18:28 +01:00
2016-06-08 18:51:57 +02:00
2017-01-31 17:54:10 +01:00
2016-11-13 18:44:01 +01:00
…
…
…
…
…
…
2016-05-04 18:16:21 +02:00
…
…
…
…
…
…
…
…
2017-02-07 18:27:21 +01:00
…
…
…
…
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-06-08 18:51:56 +02:00
…
…
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
…
…
…
2016-10-21 10:11:20 +02:00
…
2016-11-18 10:35:43 +01:00
…
…
…
…
…
2016-05-04 18:16:21 +02:00
2017-02-07 18:27:21 +01:00
…
…
…
2016-05-04 18:16:21 +02:00
2016-03-29 13:41:09 +02:00
2016-03-22 17:12:20 -04:00
2017-02-07 18:27:21 +01:00
2016-08-17 12:16:42 +02:00
2016-05-04 18:16:21 +02:00
…
…
…
…
…
…
…
…
2016-06-28 14:17:43 +03:00
2016-06-28 14:17:43 +03:00
2016-11-13 18:44:01 +01:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-11-13 18:44:01 +01:00
2016-05-04 18:16:21 +02:00
…
…
2016-07-23 08:27:29 +02:00
…
…
…
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-11-07 22:42:00 +01:00
…
…
…
…
…
2017-01-30 23:03:46 +00:00
2016-05-05 10:48:34 +02:00
…
…
2016-11-30 13:44:05 +01:00
…
2016-05-04 18:16:21 +02:00
2016-05-03 15:45:10 +02:00
2016-05-04 18:16:21 +02:00
…
…
…
…
…
2016-05-04 18:16:21 +02:00
2017-02-07 18:27:21 +01:00
2017-02-07 18:27:21 +01:00
2016-06-07 13:09:57 +02:00
…
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
…
…
2016-05-04 18:16:21 +02:00
…
2016-05-04 18:16:21 +02:00
…
2016-05-04 18:16:21 +02:00
…
2016-05-04 18:16:21 +02:00
…
2016-05-04 18:16:21 +02:00
…
2016-12-14 09:06:44 +01:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
…
…
2016-05-04 18:16:21 +02:00
…
2017-02-07 18:27:21 +01:00
…
…
…
…
…
…
…
…
…
…
…
2016-06-12 20:27:53 +02:00
…
…
2017-02-07 18:27:21 +01:00
…
…
…
…
2016-11-17 16:53:48 +01:00
…
2016-11-14 19:38:20 +00:00
2016-07-22 19:08:13 +02:00
2016-05-04 18:16:21 +02:00
2016-05-11 12:22:49 +02:00
…
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
…
…
…
…
…
…
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-06-29 15:25:42 -04:00
2016-06-29 15:25:42 -04:00
…
2016-05-04 18:16:21 +02:00
2016-10-02 15:42:03 -04:00
…
2016-05-04 18:16:21 +02:00
…
2016-05-04 18:16:21 +02:00
…
2016-05-04 18:16:21 +02:00
…
2016-05-04 18:16:21 +02:00
…
…
…
…
…
…
…
…
…
…
…
…
2016-05-04 18:16:21 +02:00
…
…
2016-05-04 18:16:21 +02:00
…
…
…
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
…
2017-01-25 11:06:58 +01:00
2017-01-25 11:06:58 +01:00
…
…
2016-09-28 10:01:52 +02:00
2016-05-04 18:16:21 +02:00
…
…
…
…
…
…
2016-02-18 15:35:30 +01:00
2017-02-07 18:27:21 +01:00
…
2016-05-04 18:16:21 +02:00
…
…
…
…
…
…
…
…
…
2016-03-30 09:10:26 +02:00
2016-03-30 09:10:26 +02:00
2016-12-19 08:13:08 +01:00
…
2017-02-07 18:27:21 +01:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
…
…
…
…
2016-11-13 18:44:01 +01:00
2017-01-30 23:03:46 +00:00
…
2016-05-04 18:16:21 +02:00
…
…
2016-09-08 21:58:22 +01:00
2016-03-25 15:23:56 +01:00
…
2016-08-11 10:54:44 +02:00
…
…
2016-05-04 18:16:21 +02:00
2017-02-07 18:27:21 +01:00
2017-02-06 15:13:34 +01:00
2017-02-06 15:13:34 +01:00
…
…
2016-03-29 13:41:09 +02:00
2016-05-04 18:16:21 +02:00
2017-02-07 18:27:21 +01:00
…
2017-02-07 18:27:21 +01:00
…
…
…
…
…
…
…
…
…
2016-06-07 13:09:57 +02:00
2016-05-04 18:16:21 +02:00
2017-01-19 09:52:10 +01:00