Martin Storsjö
f1212e472b
aarch64: vp9: Implement NEON loop filters
...
This work is sponsored by, and copyright, Google.
These are ported from the ARM version; thanks to the larger
amount of registers available, we can do the loop filters with
16 pixels at a time. The implementation is fully templated, with
a single macro which can generate versions for both 8 and
16 pixels wide, for both 4, 8 and 16 pixels loop filters
(and the 4/8 mixed versions as well).
For the 8 pixel wide versions, it is pretty close in speed (the
v_4_8 and v_8_8 filters are the best examples of this; the h_4_8
and h_8_8 filters seem to get some gain in the load/transpose/store
part). For the 16 pixels wide ones, we get a speedup of around
1.2-1.4x compared to the 32 bit version.
Examples of runtimes vs the 32 bit version, on a Cortex A53:
ARM AArch64
vp9_loop_filter_h_4_8_neon: 144.0 127.2
vp9_loop_filter_h_8_8_neon: 207.0 182.5
vp9_loop_filter_h_16_8_neon: 415.0 328.7
vp9_loop_filter_h_16_16_neon: 672.0 558.6
vp9_loop_filter_mix2_h_44_16_neon: 302.0 203.5
vp9_loop_filter_mix2_h_48_16_neon: 365.0 305.2
vp9_loop_filter_mix2_h_84_16_neon: 365.0 305.2
vp9_loop_filter_mix2_h_88_16_neon: 376.0 305.2
vp9_loop_filter_mix2_v_44_16_neon: 193.2 128.2
vp9_loop_filter_mix2_v_48_16_neon: 246.7 218.4
vp9_loop_filter_mix2_v_84_16_neon: 248.0 218.5
vp9_loop_filter_mix2_v_88_16_neon: 302.0 218.2
vp9_loop_filter_v_4_8_neon: 89.0 88.7
vp9_loop_filter_v_8_8_neon: 141.0 137.7
vp9_loop_filter_v_16_8_neon: 295.0 272.7
vp9_loop_filter_v_16_16_neon: 546.0 453.7
The speedup vs C code in checkasm tests is around 2-7x, which is
pretty much the same as for the 32 bit version. Even if these functions
are faster than their 32 bit equivalent, the C version that we compare
to also became around 1.3-1.7x faster than the C version in 32 bit.
Based on START_TIMER/STOP_TIMER wrapping around a few individual
functions, the speedup vs C code is around 4-5x.
Examples of runtimes vs C on a Cortex A57 (for a slightly older version
of the patch):
A57 gcc-5.3 neon
loop_filter_h_4_8_neon: 256.6 93.4
loop_filter_h_8_8_neon: 307.3 139.1
loop_filter_h_16_8_neon: 340.1 254.1
loop_filter_h_16_16_neon: 827.0 407.9
loop_filter_mix2_h_44_16_neon: 524.5 155.4
loop_filter_mix2_h_48_16_neon: 644.5 173.3
loop_filter_mix2_h_84_16_neon: 630.5 222.0
loop_filter_mix2_h_88_16_neon: 697.3 222.0
loop_filter_mix2_v_44_16_neon: 598.5 100.6
loop_filter_mix2_v_48_16_neon: 651.5 127.0
loop_filter_mix2_v_84_16_neon: 591.5 167.1
loop_filter_mix2_v_88_16_neon: 855.1 166.7
loop_filter_v_4_8_neon: 271.7 65.3
loop_filter_v_8_8_neon: 312.5 106.9
loop_filter_v_16_8_neon: 473.3 206.5
loop_filter_v_16_16_neon: 976.1 327.8
The speed-up compared to the C functions is 2.5 to 6 and the cortex-a57
is again 30-50% faster than the cortex-a53.
This is an adapted cherry-pick from libav commits
9d2afd1eb8 and
31756abe29 .
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2016-11-15 15:10:03 -05:00
..
2016-11-15 15:10:03 -05:00
2016-11-15 15:10:03 -05:00
2016-10-23 03:23:09 +02:00
2016-11-03 01:23:36 +01:00
2016-07-19 23:25:01 +02:00
2016-11-15 11:01:36 -05:00
2016-05-13 14:55:56 +02:00
2016-10-29 20:43:15 +02:00
2016-10-30 14:15:00 +01:00
2016-04-17 18:47:40 +01:00
2016-03-15 00:47:38 +01:00
2016-10-18 21:41:18 +01:00
2016-10-21 23:58:47 +02:00
2016-10-18 21:41:18 +01:00
2016-03-13 18:15:57 +01:00
2016-03-13 18:15:57 +01:00
2016-05-04 18:16:21 +02:00
2016-10-18 21:41:18 +01:00
2016-10-18 21:41:18 +01:00
2016-10-18 21:41:18 +01:00
2016-03-08 23:56:51 +01:00
2016-10-18 21:41:18 +01:00
2016-10-18 21:41:18 +01:00
2016-11-08 00:50:51 +00:00
2016-11-08 00:50:51 +00:00
2016-05-31 01:08:25 +01:00
2016-06-08 21:01:04 +01:00
2016-05-04 18:16:21 +02:00
2016-03-15 00:47:38 +01:00
2016-06-21 21:55:34 +02:00
2016-06-29 11:16:01 +02:00
2016-09-15 12:18:55 +02:00
2016-11-03 22:05:46 +01:00
2016-09-15 12:18:55 +02:00
2016-06-21 15:26:20 +02:00
2016-05-27 15:49:48 +02:00
2016-03-22 10:15:31 -07:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-09-15 17:24:40 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-06 12:03:20 -04:00
2016-06-21 21:55:34 +02:00
2016-08-28 11:18:16 +02:00
2016-10-30 15:47:37 -07:00
2016-09-09 11:50:12 -03:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-09-26 21:42:17 +02:00
2016-06-21 21:55:34 +02:00
2016-09-12 15:57:51 -05:00
2016-03-28 14:13:17 -08:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-10-09 20:09:00 +02:00
2016-05-04 18:16:21 +02:00
2016-04-14 18:47:57 +02:00
2016-11-14 02:35:26 +01:00
2016-06-16 21:02:41 -04:00
2016-10-26 17:36:12 -03:00
2016-05-11 19:13:03 +01:00
2016-09-22 08:37:46 +02:00
2016-09-20 21:36:04 +02:00
2016-06-29 11:35:10 +02:00
2016-06-29 11:35:10 +02:00
2016-04-18 02:48:44 +02:00
2016-05-12 14:04:02 +01:00
2016-06-23 00:29:25 +02:00
2016-06-06 14:32:48 +02:00
2016-08-26 02:10:42 +02:00
2016-08-13 12:46:18 +02:00
2016-10-21 23:58:47 +02:00
2016-10-22 13:46:05 +02:00
2016-09-23 18:18:18 +02:00
2016-03-13 18:15:57 +01:00
2016-03-14 15:49:34 +01:00
2016-03-13 18:15:57 +01:00
2016-03-13 18:15:57 +01:00
2016-03-13 18:15:57 +01:00
2016-09-09 11:01:24 +02:00
2016-08-19 22:28:32 +02:00
2016-04-17 18:47:40 +01:00
2016-10-30 14:15:00 +01:00
2016-03-22 10:15:31 -07:00
2016-11-04 11:19:47 -08:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-03-05 00:39:53 -03:00
2016-03-28 14:13:17 -08:00
2016-11-02 13:47:57 -07:00
2016-10-30 15:47:37 -07:00
2016-06-21 21:55:34 +02:00
2016-04-17 18:47:40 +01:00
2016-05-20 14:58:25 -03:00
2016-05-01 16:50:29 -03:00
2016-05-26 13:32:48 -03:00
2016-05-25 11:22:55 -03:00
2016-05-31 11:45:48 -03:00
2016-05-10 20:33:28 -03:00
2016-05-31 11:45:59 -03:00
2016-05-31 11:45:48 -03:00
2016-05-31 11:45:49 -03:00
2016-05-26 13:32:48 -03:00
2016-06-21 21:55:34 +02:00
2016-05-26 13:32:48 -03:00
2016-05-31 11:45:48 -03:00
2016-05-31 11:45:48 -03:00
2016-05-10 20:33:28 -03:00
2016-05-10 20:33:28 -03:00
2016-05-01 00:13:41 -03:00
2016-05-01 00:13:41 -03:00
2016-05-10 20:33:28 -03:00
2016-05-10 20:33:28 -03:00
2016-09-21 13:40:04 +02:00
2016-07-14 01:29:34 +01:00
2016-07-12 19:11:40 +02:00
2016-06-26 15:12:48 +02:00
2016-11-04 20:35:23 +01:00
2016-07-11 23:30:11 +01:00
2016-07-11 23:30:11 +01:00
2016-07-11 23:38:01 +01:00
2016-09-19 02:33:58 +02:00
2016-07-25 12:19:39 -03:00
2016-08-03 03:17:32 +02:00
2016-10-21 14:17:50 +02:00
2016-11-01 21:02:26 +01:00
2016-06-21 21:55:34 +02:00
2016-11-14 00:33:12 +01:00
2016-05-15 01:01:45 +02:00
2016-05-15 01:01:45 +02:00
2016-05-15 17:46:38 +02:00
2016-05-15 01:01:45 +02:00
2016-04-08 09:40:32 +02:00
2016-05-15 12:21:15 +02:00
2016-04-18 02:54:33 +02:00
2016-05-24 20:47:03 +02:00
2016-06-29 11:16:01 +02:00
2016-06-29 11:16:01 +02:00
2016-03-23 09:32:34 +01:00
2016-06-29 11:52:03 +02:00
2016-11-10 21:01:59 +01:00
2016-10-26 19:50:53 +02:00
2016-06-29 11:16:01 +02:00
2016-06-29 11:35:10 +02:00
2016-08-01 12:58:09 -03:00
2016-10-10 16:05:14 +02:00
2016-10-20 19:31:34 +02:00
2016-09-15 12:18:55 +02:00
2016-06-21 21:55:34 +02:00
2016-06-29 11:35:10 +02:00
2016-06-29 11:35:10 +02:00
2016-06-21 21:55:34 +02:00
2016-06-22 11:07:54 +02:00
2016-06-21 21:55:34 +02:00
2016-11-09 21:10:59 +01:00
2016-06-29 11:35:10 +02:00
2016-04-02 22:48:15 +01:00
2016-04-02 22:48:15 +01:00
2016-08-25 02:40:59 +02:00
2016-06-21 21:55:34 +02:00
2016-10-21 23:58:47 +02:00
2016-07-27 15:43:39 +02:00
2016-03-04 13:51:42 +01:00
2016-03-04 13:51:42 +01:00
2016-03-04 16:05:47 +01:00
2016-03-04 16:05:47 +01:00
2016-08-08 00:27:43 +02:00
2016-08-08 00:32:09 +02:00
2016-08-08 00:32:09 +02:00
2016-08-16 23:04:00 +02:00
2016-08-08 00:32:09 +02:00
2016-08-16 23:06:02 +02:00
2016-10-25 02:51:34 +02:00
2016-05-01 15:30:22 +02:00
2016-06-24 03:34:42 +02:00
2016-08-28 11:18:16 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-05 15:22:59 +02:00
2016-03-09 14:00:22 +01:00
2016-06-29 11:35:10 +02:00
2016-09-14 15:50:07 +02:00
2016-06-26 14:19:48 +02:00
2016-09-07 15:56:13 +02:00
2016-10-07 13:03:36 +02:00
2016-06-26 15:12:48 +02:00
2016-06-29 11:48:53 +02:00
2016-06-29 11:48:53 +02:00
2016-06-29 11:48:53 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-29 11:52:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-08-01 16:46:57 -03:00
2016-07-29 11:01:36 +02:00
2016-08-01 12:58:09 -03:00
2016-08-01 12:58:09 -03:00
2016-06-20 12:31:29 +02:00
2016-08-01 12:58:09 -03:00
2016-07-29 11:01:36 +02:00
2016-05-12 14:34:03 +01:00
2016-07-29 11:01:36 +02:00
2016-08-18 23:36:18 +02:00
2016-08-01 12:58:09 -03:00
2016-10-24 01:20:18 -05:00
2016-07-29 11:01:36 +02:00
2016-08-01 13:02:20 -03:00
2016-08-03 00:36:09 -03:00
2016-09-12 12:33:44 +02:00
2016-08-01 13:04:30 -03:00
2016-06-18 14:04:55 +02:00
2016-08-03 20:07:21 -07:00
2016-08-01 15:11:05 -03:00
2016-06-21 21:55:34 +02:00
2016-07-29 11:01:36 +02:00
2016-07-29 11:01:36 +02:00
2016-08-23 15:05:06 +02:00
2016-08-18 23:36:18 +02:00
2016-09-23 04:10:44 +02:00
2016-06-21 21:55:34 +02:00
2016-09-23 04:10:44 +02:00
2016-07-29 11:01:36 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-08-20 00:40:43 +02:00
2016-08-20 00:36:38 +02:00
2016-11-10 14:27:38 +00:00
2016-11-04 11:19:47 -08:00
2016-11-10 14:27:38 +00:00
2016-06-21 22:09:35 +02:00
2016-06-29 11:54:54 +02:00
2016-04-17 18:47:40 +01:00
2016-06-21 21:55:34 +02:00
2016-09-15 21:48:28 +02:00
2016-09-15 21:48:28 +02:00
2016-10-31 19:23:40 +00:00
2016-11-14 10:36:25 +01:00
2016-06-21 21:55:34 +02:00
2016-11-03 16:28:04 +01:00
2016-09-09 16:35:37 +02:00
2016-06-29 11:16:01 +02:00
2016-06-29 11:16:01 +02:00
2016-11-12 03:23:03 +01:00
2016-07-22 03:14:07 +02:00
2016-06-23 00:29:25 +02:00
2016-10-30 15:38:44 +01:00
2016-08-15 13:21:47 +02:00
2016-05-11 19:13:03 +01:00
2016-06-21 21:55:34 +02:00
2016-10-26 17:36:12 -03:00
2016-04-17 18:47:40 +01:00
2016-08-19 14:24:13 +02:00
2016-06-29 11:20:20 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-29 11:35:10 +02:00
2016-06-22 20:07:49 +02:00
2016-10-01 17:22:02 +02:00
2016-11-01 00:39:06 +01:00
2016-10-25 04:46:02 +02:00
2016-07-22 19:23:01 +02:00
2016-05-07 21:41:27 +01:00
2016-05-07 21:40:21 +01:00
2016-04-17 19:27:53 +01:00
2016-04-17 19:27:53 +01:00
2016-11-15 18:27:31 +01:00
2016-06-29 11:52:34 +02:00
2016-10-04 18:38:41 +01:00
2016-06-21 21:55:34 +02:00
2016-06-29 11:35:10 +02:00
2016-04-17 18:53:11 +01:00
2016-04-01 17:35:15 +02:00
2016-03-05 08:26:36 -05:00
2016-08-02 22:32:12 -07:00
2016-03-07 11:17:31 +01:00
2016-06-21 21:55:34 +02:00
2016-03-25 22:00:52 +01:00
2016-05-11 19:13:03 +01:00
2016-06-21 21:55:34 +02:00
2016-03-05 08:26:36 -05:00
2016-10-30 15:38:44 +01:00
2016-06-21 21:55:34 +02:00
2016-06-27 17:56:47 +02:00
2016-10-18 20:19:29 +02:00
2016-06-21 21:55:34 +02:00
2016-07-27 10:19:40 +03:00
2016-07-27 10:19:40 +03:00
2016-10-07 13:03:36 +02:00
2016-10-07 13:23:49 +02:00
2016-10-13 21:04:19 +02:00
2016-10-14 16:56:14 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-06-21 21:55:34 +02:00
2016-07-02 23:31:16 +02:00
2016-10-07 13:03:36 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-07-12 23:19:50 -07:00
2016-07-21 20:50:26 -07:00
2016-10-21 18:16:46 -07:00
2016-03-17 21:46:06 -03:00
2016-09-14 17:52:50 +02:00
2016-11-04 02:45:51 +01:00
2016-03-12 02:08:45 +01:00
2016-06-21 21:55:34 +02:00
2016-03-12 02:08:34 +01:00
2016-06-06 02:24:22 +02:00
2016-05-01 10:49:12 +02:00
2016-08-28 11:18:16 +02:00
2016-08-28 11:18:16 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-11-05 18:56:26 +01:00
2016-05-18 23:59:02 +02:00
2016-07-14 18:52:20 +02:00
2016-11-14 12:01:17 +01:00
2016-04-24 11:47:39 +01:00
2016-04-24 11:47:39 +01:00
2016-05-05 10:48:34 +02:00
2016-08-22 16:41:33 +02:00
2016-08-22 16:41:33 +02:00
2016-07-27 15:43:39 +02:00
2016-07-08 17:02:37 +02:00
2016-10-19 10:50:56 +02:00
2016-10-19 10:50:56 +02:00
2016-10-19 09:52:15 +02:00
2016-10-21 23:58:47 +02:00
2016-10-19 10:50:56 +02:00
2016-07-08 17:02:37 +02:00
2016-10-19 10:50:56 +02:00
2016-10-19 10:50:56 +02:00
2016-10-19 10:50:56 +02:00
2016-06-29 11:35:10 +02:00
2016-05-02 04:10:03 +02:00
2016-07-05 23:48:22 +02:00
2016-04-17 18:47:40 +01:00
2016-09-03 14:23:32 +02:00
2016-05-04 18:16:21 +02:00
2016-03-19 16:00:11 +01:00
2016-05-03 15:45:10 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-09-17 13:23:56 +01:00
2016-09-17 13:23:56 +01:00
2016-09-17 13:23:56 +01:00
2016-09-21 16:28:14 +02:00
2016-09-21 16:26:55 +02:00
2016-10-07 13:03:36 +02:00
2016-06-21 21:55:34 +02:00
2016-08-22 16:41:33 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-04-17 18:47:40 +01:00
2016-11-15 15:08:20 +01:00
2016-04-17 18:47:40 +01:00
2016-06-11 17:27:19 +02:00
2016-06-29 11:16:01 +02:00
2016-06-29 11:46:36 +02:00
2016-07-22 19:04:21 +02:00
2016-11-07 00:51:49 +01:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-22 20:07:49 +02:00
2016-06-21 21:55:34 +02:00
2016-08-04 16:40:51 -03:00
2016-06-21 21:55:34 +02:00
2016-11-14 10:42:36 +01:00
2016-06-21 21:55:34 +02:00
2016-10-21 19:41:29 +02:00
2016-06-21 21:55:34 +02:00
2016-11-14 10:42:36 +01:00
2016-06-29 11:16:01 +02:00
2016-11-07 19:41:17 +01:00
2016-06-26 14:31:53 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-10-22 13:46:46 +02:00
2016-06-21 21:55:34 +02:00
2016-10-31 19:23:40 +00:00
2016-11-01 17:44:10 +01:00
2016-08-22 16:41:33 +02:00
2016-06-21 21:55:34 +02:00
2016-06-29 11:35:10 +02:00
2016-06-21 21:55:34 +02:00
2016-06-29 11:16:01 +02:00
2016-10-07 13:23:38 +02:00
2016-06-21 21:55:34 +02:00
2016-10-31 00:19:02 +01:00
2016-06-29 11:42:42 +02:00
2016-10-31 01:08:45 +01:00
2016-05-22 22:58:01 +02:00
2016-06-07 13:09:57 +02:00
2016-06-29 11:35:10 +02:00
2016-05-01 22:23:48 +02:00
2016-06-21 21:55:34 +02:00
2016-10-12 20:51:43 +02:00
2016-10-19 12:45:52 +02:00
2016-11-05 18:09:03 +11:00
2016-10-12 20:51:43 +02:00
2016-08-01 15:11:05 -03:00
2016-09-21 14:37:25 +02:00
2016-11-13 22:29:04 +01:00
2016-06-26 15:20:43 +02:00
2016-11-08 14:18:59 +00:00
2016-11-08 14:18:59 +00:00
2016-11-08 14:18:59 +00:00
2016-11-08 14:18:59 +00:00
2016-09-01 23:53:24 +02:00
2016-11-08 14:18:59 +00:00
2016-11-08 14:18:59 +00:00
2016-11-08 14:18:59 +00:00
2016-11-08 14:18:59 +00:00
2016-10-24 01:20:18 -05:00
2016-06-21 21:55:34 +02:00
2016-08-18 15:30:05 +02:00
2016-03-23 09:25:30 +01:00
2016-06-21 22:40:56 +02:00
2016-11-01 18:49:28 +01:00
2016-10-28 01:53:52 +02:00
2016-06-27 18:04:50 +02:00
2016-11-12 01:36:47 +01:00
2016-11-12 01:36:47 +01:00
2016-07-20 13:40:06 +02:00
2016-07-20 13:40:06 +02:00
2016-05-27 17:25:40 +02:00
2016-11-10 21:00:44 +01:00
2016-03-23 08:22:22 -07:00
2016-10-21 23:58:47 +02:00
2016-03-15 00:51:58 +01:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-09-28 12:35:58 +01:00
2016-04-08 09:40:32 +02:00
2016-10-31 00:36:12 +01:00
2016-11-14 15:19:43 +01:00
2016-11-14 15:20:00 +01:00
2016-11-14 15:20:00 +01:00
2016-10-31 19:23:40 +00:00
2016-10-31 19:23:40 +00:00
2016-11-14 15:20:09 +01:00
2016-11-14 15:19:51 +01:00
2016-10-31 19:23:40 +00:00
2016-08-18 23:36:18 +02:00
2016-11-04 18:56:01 +00:00
2016-10-31 19:23:40 +00:00
2016-10-31 00:27:45 +01:00
2016-06-22 11:09:19 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-08-28 11:18:16 +02:00
2016-06-29 11:35:10 +02:00
2016-06-21 21:55:34 +02:00
2016-04-14 22:31:57 +02:00
2016-05-11 19:13:03 +01:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-11-10 01:18:43 +01:00
2016-11-04 23:38:56 -03:00
2016-08-13 01:44:52 +02:00
2016-06-21 21:55:34 +02:00
2016-09-23 17:15:49 +02:00
2016-03-16 19:52:01 +01:00
2016-05-04 18:16:21 +02:00
2016-06-23 00:42:16 +02:00
2016-06-23 00:29:25 +02:00
2016-11-14 12:03:00 +01:00
2016-11-14 12:03:00 +01:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-10-31 23:20:31 +01:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-26 15:12:48 +02:00
2016-05-04 18:16:21 +02:00
2016-06-26 15:12:48 +02:00
2016-06-21 21:55:34 +02:00
2016-06-26 15:12:48 +02:00
2016-08-13 01:35:10 +02:00
2016-06-06 12:05:02 -04:00
2016-10-20 09:55:52 +02:00
2016-04-27 09:08:45 +02:00
2016-06-21 22:12:36 +02:00
2016-06-29 11:35:10 +02:00
2016-06-29 11:35:10 +02:00
2016-10-31 23:20:47 +01:00
2016-11-12 01:36:47 +01:00
2016-06-17 21:48:34 +02:00
2016-10-22 13:46:58 +02:00
2016-06-21 21:55:34 +02:00
2016-05-01 15:16:50 +02:00
2016-11-02 12:06:22 +01:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-10-22 13:45:59 +02:00
2016-06-29 11:45:37 +02:00
2016-09-08 22:16:35 +02:00
2016-06-29 11:35:10 +02:00
2016-06-29 11:35:10 +02:00
2016-06-29 11:35:10 +02:00
2016-06-29 11:35:10 +02:00
2016-11-14 12:16:32 +01:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 22:09:35 +02:00
2016-06-29 11:35:10 +02:00
2016-10-05 13:49:17 +02:00
2016-11-14 12:32:08 +01:00
2016-09-28 13:19:07 -03:00
2016-06-29 11:35:10 +02:00
2016-04-24 11:47:39 +01:00
2016-10-31 23:20:47 +01:00
2016-08-06 18:27:01 -03:00
2016-08-06 18:27:01 -03:00
2016-08-06 18:27:01 -03:00
2016-08-02 15:47:38 -03:00
2016-08-02 15:48:04 -03:00
2016-08-02 15:48:04 -03:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-11-10 17:44:47 +01:00
2016-06-11 18:36:39 +02:00
2016-09-04 15:51:33 +02:00
2016-09-04 01:57:50 +02:00
2016-10-25 13:44:08 +02:00
2016-05-08 22:43:52 +01:00
2016-05-08 22:43:52 +01:00
2016-08-05 21:24:54 +01:00
2016-08-05 21:24:54 +01:00
2016-05-11 19:40:39 +01:00
2016-11-13 20:39:48 +00:00
2016-11-13 17:38:40 +01:00
2016-08-01 12:58:09 -03:00
2016-06-21 15:36:43 +02:00
2016-06-21 15:36:43 +02:00
2016-06-21 15:36:43 +02:00
2016-06-21 15:36:43 +02:00
2016-06-29 11:35:10 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-10-31 19:23:40 +00:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-29 11:16:01 +02:00
2016-06-21 21:55:34 +02:00
2016-05-08 19:09:42 +01:00
2016-07-11 23:38:01 +01:00
2016-07-29 11:01:36 +02:00
2016-07-29 11:01:36 +02:00
2016-10-21 16:54:25 +02:00
2016-07-29 11:01:36 +02:00
2016-08-01 12:58:09 -03:00
2016-08-04 16:40:51 -03:00
2016-07-29 11:01:36 +02:00
2016-05-04 18:16:21 +02:00
2016-11-13 22:29:04 +01:00
2016-07-29 11:01:36 +02:00
2016-10-18 19:51:42 -04:00
2016-06-23 00:42:16 +02:00
2016-06-29 11:43:57 +02:00
2016-06-29 11:35:10 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-29 11:16:01 +02:00
2016-06-21 22:09:35 +02:00
2016-06-21 21:55:34 +02:00
2016-04-24 11:47:39 +01:00
2016-11-14 15:21:24 +01:00
2016-11-13 12:38:15 +01:00
2016-08-01 17:05:51 +02:00
2016-04-17 18:47:40 +01:00
2016-11-15 15:10:03 -05:00
2016-05-04 18:16:21 +02:00
2016-11-15 15:10:03 -05:00
2016-11-15 15:10:03 -05:00
2016-11-15 15:10:03 -05:00
2016-06-21 21:55:34 +02:00
2016-06-29 11:35:10 +02:00
2016-06-29 11:35:10 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-06-21 21:55:34 +02:00
2016-08-21 21:06:17 +02:00
2016-05-04 18:16:21 +02:00
2016-06-21 21:55:34 +02:00
2016-05-07 21:41:27 +01:00
2016-06-21 21:55:34 +02:00
2016-06-29 11:35:10 +02:00
2016-06-21 22:40:56 +02:00
2016-06-29 11:16:01 +02:00
2016-06-26 10:18:10 +02:00
2016-06-21 15:42:49 +02:00
2016-06-21 21:55:34 +02:00