Martin Storsjö
9d2afd1eb8
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.
Signed-off-by: Martin Storsjö <martin@martin.st>
2016-11-14 00:10:13 +02:00
..
2016-11-14 00:10:13 +02:00
2016-11-14 00:10:13 +02:00
2016-10-18 00:10:36 +02:00
2016-09-29 14:48:03 +02:00
2016-11-08 17:21:02 +01:00
2016-05-13 14:55:56 +02:00
2016-03-20 08:15:01 +01:00
2016-11-08 17:54:34 +01:00
2016-11-13 18:44:00 +01:00
2016-08-17 12:16:42 +02:00
2016-11-02 10:33:36 +01:00
2016-05-04 18:16:21 +02:00
2016-06-07 13:09:57 +02:00
2016-10-01 00:46:25 +02:00
2016-10-01 00:45:55 +02:00
2016-10-01 00:46:25 +02:00
2016-10-01 00:46:25 +02:00
2016-09-22 09:47:52 +02:00
2016-05-27 15:49:48 +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-06 12:03:20 -04:00
2016-11-08 17:54:34 +01:00
2016-03-23 09:25:30 +01:00
2016-09-08 21:58:22 +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-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-09-22 09:47:52 +02:00
2016-09-22 09:47:52 +02:00
2016-10-12 11:06:58 -04:00
2016-06-13 13:31:21 -04:00
2016-06-07 13:09:57 +02:00
2016-06-07 13:09:57 +02:00
2016-11-02 10:33:39 +01:00
2016-03-20 08:15:01 +01:00
2016-10-16 20:27:16 +02:00
2016-10-28 13:24:44 +02:00
2016-09-29 14:48:03 +02:00
2016-09-29 14:48:03 +02:00
2016-11-08 17:54:34 +01:00
2016-11-03 20:17:12 +01:00
2016-03-20 08:15:01 +01:00
2016-05-04 18:16:21 +02:00
2016-05-04 15:14:14 +02:00
2016-08-26 11:48:15 +02:00
2016-08-26 11:48:15 +02:00
2016-08-26 11:48:15 +02:00
2016-08-26 11:48:15 +02:00
2016-08-26 11:48:15 +02:00
2016-03-20 08:15:01 +01:00
2016-05-04 18:16:21 +02:00
2016-08-24 14:45:08 +02:00
2016-09-22 09:47:52 +02:00
2016-05-04 18:16:21 +02:00
2016-09-04 12:19:47 +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-09-29 14:48:03 +02:00
2016-04-26 16:30:18 -04:00
2016-05-25 16:37:43 +02:00
2016-05-04 18:16:21 +02:00
2016-10-28 13:24:44 +02:00
2016-10-27 12:21:46 +02:00
2016-11-03 17:43:55 +01:00
2016-05-04 18:16:21 +02:00
2016-03-20 08:15:01 +01:00
2016-06-07 13:09:57 +02:00
2016-09-29 14:48:03 +02:00
2016-06-08 18:51:56 +02:00
2016-08-17 12:16:42 +02:00
2016-10-28 13:24:44 +02:00
2016-10-28 13:24:44 +02:00
2016-09-14 14:12:36 +02:00
2016-10-28 13:24:55 +02:00
2016-10-28 13:24:44 +02:00
2016-06-21 22:09:35 +03:00
2016-10-16 20:26:40 +02:00
2016-10-05 18:37:27 +02:00
2016-11-07 10:05:12 +01:00
2016-04-02 14:05:07 +02:00
2016-09-29 17:54:23 +02:00
2016-09-29 17:54:23 +02:00
2016-09-29 17:54:23 +02:00
2016-09-29 17:54:23 +02:00
2016-09-29 17:54:23 +02:00
2016-09-29 17:54:23 +02:00
2016-09-29 17:54:23 +02:00
2016-05-04 18:16:21 +02:00
2016-09-07 11:30:17 +02:00
2016-09-07 11:30:17 +02:00
2016-06-07 13:09:57 +02:00
2016-06-07 13:09:57 +02:00
2016-05-04 18:16:21 +02:00
2016-10-16 20:27:16 +02:00
2016-08-17 12:16:42 +02:00
2016-09-29 14:48:03 +02:00
2016-09-29 14:48:03 +02:00
2016-05-04 18:16:21 +02:00
2016-03-01 10:18:28 +01:00
2016-03-01 10:18:28 +01:00
2016-06-08 18:51:57 +02:00
2016-08-17 12:16:42 +02:00
2016-08-17 12:16:42 +02:00
2016-11-13 18:44:01 +01:00
2016-06-07 13:09:57 +02:00
2016-10-29 18:32:21 +02:00
2016-05-04 18:16:21 +02:00
2016-11-08 17:54:34 +01:00
2016-11-08 17:54:34 +01:00
2016-06-07 13:09:57 +02:00
2016-11-08 17:54:34 +01:00
2016-05-04 18:16:21 +02:00
2016-05-22 20:22:43 +02:00
2016-08-17 12:22:29 +02:00
2016-06-07 13:22:22 +02:00
2016-06-07 13:22:22 +02:00
2016-06-07 13:22:22 +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-08 18:51:56 +02:00
2016-11-03 17:43:55 +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-06-21 11:17:53 +02:00
2016-06-21 11:11:26 +02:00
2016-08-11 10:52:54 +02:00
2016-10-27 12:21:46 +02:00
2016-04-24 10:06:25 +02:00
2016-06-21 11:13:29 +02:00
2016-06-21 11:11:26 +02:00
2016-04-24 10:06:23 +02:00
2016-06-21 11:11:26 +02:00
2016-06-21 11:17:28 +02:00
2016-06-21 11:13:29 +02:00
2016-06-21 11:17:28 +02:00
2016-06-21 11:11:26 +02:00
2016-11-08 17:54:34 +01:00
2016-07-11 16:29:57 +02:00
2016-08-17 12:16:42 +02:00
2016-06-21 11:15:44 +02:00
2016-04-24 10:06:24 +02:00
2016-07-15 15:33:54 +02:00
2016-06-21 11:17:28 +02:00
2016-05-04 18:16:21 +02:00
2016-09-29 14:48:04 +02:00
2016-09-29 14:48:04 +02:00
2016-06-21 11:11:26 +02:00
2016-06-21 11:11:26 +02:00
2016-10-02 11:41:45 +02:00
2016-07-15 15:33:54 +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-21 11:11:26 +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-07-13 18:18:46 -04:00
2016-05-04 18:16:21 +02:00
2016-10-28 11:22:22 +02:00
2016-10-21 10:11:20 +02:00
2016-10-16 20:26:40 +02:00
2016-10-16 20:26:40 +02:00
2016-10-16 20:26:17 +02:00
2016-10-16 20:26:28 +02:00
2016-10-21 10:11:20 +02:00
2016-10-16 20:26:28 +02:00
2016-11-08 17:54:34 +01:00
2016-11-08 17:54:34 +01:00
2016-10-16 20:26:47 +02:00
2016-10-21 10:11:20 +02:00
2016-11-03 20:17:12 +01:00
2016-10-21 10:11:20 +02:00
2016-11-08 11:22:29 -05:00
2016-10-21 10:11:20 +02:00
2016-10-16 20:26:17 +02:00
2016-07-18 15:27:13 +02:00
2016-10-22 17:33:35 +02:00
2016-10-16 20:26:17 +02:00
2016-10-16 20:26:17 +02:00
2016-07-25 19:38:18 +02:00
2016-06-07 13:09:57 +02:00
2016-06-07 13:09:57 +02:00
2016-05-17 10:29:27 +02:00
2016-05-17 10:29:27 +02:00
2016-10-02 17:13:36 +02:00
2016-05-04 18:16:21 +02:00
2016-09-29 14:48:03 +02:00
2016-11-02 10:33:39 +01:00
2016-05-04 15:14:14 +02:00
2016-09-07 11:30:18 +02:00
2016-09-07 11:30:18 +02:00
2016-05-04 18:16:21 +02:00
2016-03-20 08:15:01 +01:00
2016-06-07 13:09:57 +02:00
2016-06-07 13:09:57 +02:00
2016-11-03 20:17:12 +01: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-03-23 19:31:23 +01:00
2016-06-07 13:09:57 +02:00
2016-11-03 15:50:48 +01:00
2016-03-29 13:41:09 +02:00
2016-09-29 14:48:03 +02:00
2016-09-29 14:48:03 +02:00
2016-03-22 17:12:20 -04:00
2016-05-04 18:16:21 +02:00
2016-06-08 18:51:56 +02:00
2016-09-04 11:57:15 +02:00
2016-09-04 11:57:15 +02:00
2016-09-04 11:57:15 +02:00
2016-09-04 11:57:15 +02:00
2016-08-17 12:16:42 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-09-29 14:48:03 +02:00
2016-05-04 18:16:21 +02:00
2016-05-29 16:43:11 +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-07-15 13:36:21 +03:00
2016-11-13 18:44:01 +01:00
2016-11-08 17:54:34 +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-08 17:54:34 +01:00
2016-11-13 18:44:01 +01:00
2016-06-21 19:54:42 +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-08-26 13:25:59 +02:00
2016-07-23 08:27:29 +02:00
2016-04-21 12:25:42 -04:00
2016-11-07 10:16:10 +02:00
2016-11-11 10:17:07 +01:00
2016-05-04 18:16:21 +02:00
2016-07-20 18:59:36 +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
2016-06-20 15:45:51 -04:00
2016-10-16 20:27:16 +02:00
2016-08-17 12:16:42 +02:00
2016-03-25 15:23:56 +01:00
2016-03-01 10:18:28 +01:00
2016-05-05 10:48:34 +02:00
2016-06-07 13:09:57 +02:00
2016-07-29 15:59:48 +02:00
2016-03-20 08:15:01 +01:00
2016-03-20 08:15:01 +01:00
2016-11-08 17:54:34 +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
2016-10-02 19:35:12 +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-03-20 08:15:01 +01:00
2016-06-07 13:09:57 +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
2016-05-04 18:16:21 +02:00
2016-05-16 10:51:17 +02:00
2016-08-17 12:16:42 +02:00
2016-05-04 18:16:21 +02:00
2016-06-29 12:31:03 +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 12:31:03 +02:00
2016-06-07 13:09:57 +02:00
2016-10-27 12:21:46 +02:00
2016-05-04 18:16:21 +02:00
2016-09-29 17:54:24 +02:00
2016-09-29 17:54:24 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-09-28 10:01:52 +02:00
2016-09-16 16:28:07 +02:00
2016-05-04 18:16:21 +02:00
2016-07-31 08:19:27 +02:00
2016-05-04 18:16:21 +02: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-06-07 13:09:57 +02:00
2016-08-17 12:16:42 +02:00
2016-08-17 12:16:42 +02:00
2016-05-04 18:16:21 +02:00
2016-09-29 17:54:24 +02:00
2016-09-29 17:54:24 +02:00
2016-09-29 17:54:24 +02:00
2016-09-29 17:54:24 +02:00
2016-09-29 17:54:24 +02:00
2016-09-29 17:54:24 +02:00
2016-09-29 17:54:24 +02:00
2016-09-29 17:54:24 +02:00
2016-09-29 17:54:24 +02:00
2016-05-04 18:16:21 +02:00
2016-06-07 13:09:57 +02:00
2016-06-07 13:09:57 +02:00
2016-03-20 08:15:01 +01:00
2016-05-04 18:16:21 +02:00
2016-09-24 19:03:10 +02:00
2016-09-24 19:03:10 +02:00
2016-10-09 20:58:10 +02:00
2016-09-24 19:03:10 +02:00
2016-06-24 22:30:54 +03:00
2016-06-08 18:51:57 +02:00
2016-11-08 11:22:29 -05:00
2016-07-22 19:08:13 +02:00
2016-11-08 17:54:34 +01:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-08-18 17:06:46 +02:00
2016-05-11 12:21:25 +02:00
2016-09-14 14:12:36 +02:00
2016-09-14 14:12:36 +02:00
2016-11-03 17:43:55 +01:00
2016-05-04 18:16:21 +02:00
2016-08-17 12:16:42 +02:00
2016-06-12 20:27:53 +02:00
2016-08-26 11:50:21 +02:00
2016-08-26 11:50:21 +02:00
2016-08-26 11:50:21 +02:00
2016-11-10 20:36:11 +00:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-07-31 08:19:27 +02:00
2016-08-18 17:06:46 +02:00
2016-11-07 12:48:00 +01:00
2016-11-07 12:48:00 +01:00
2016-07-03 09:13:29 +02:00
2016-06-21 19:53:38 +02:00
2016-11-07 12:48:00 +01:00
2016-07-03 09:13:29 +02:00
2016-07-22 19:08:13 +02:00
2016-10-16 20:26:28 +02:00
2016-11-07 12:48:00 +01:00
2016-06-21 19:53:38 +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-06-07 13:09:57 +02:00
2016-05-04 18:16:21 +02:00
2016-04-07 16:14:42 +02:00
2016-08-17 12:16:42 +02:00
2016-11-12 16:47:06 +01:00
2016-07-20 18:59:36 +02:00
2016-05-04 18:16:21 +02:00
2016-03-20 08:15:01 +01:00
2016-05-04 18:16:21 +02:00
2016-05-17 10:29:27 +02:00
2016-05-17 10:29:27 +02:00
2016-06-29 15:25:42 -04:00
2016-06-29 15:25:42 -04:00
2016-10-29 18:32:21 +02:00
2016-08-17 12:16:42 +02: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-25 16:37:43 +02:00
2016-05-04 18:16:21 +02:00
2016-05-25 16:37:43 +02:00
2016-05-04 18:16:21 +02:00
2016-05-25 16:37:43 +02:00
2016-09-29 14:48:04 +02:00
2016-11-03 20:17:12 +01:00
2016-08-03 08:26:40 +02:00
2016-05-04 18:16:21 +02:00
2016-06-06 12:05:02 -04:00
2016-11-08 17:54:34 +01:00
2016-09-29 14:48:03 +02:00
2016-09-29 14:48:03 +02:00
2016-09-29 14:48:03 +02:00
2016-06-07 13:09:57 +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-10-28 13:28:36 +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-09-04 11:57:15 +02:00
2016-05-04 18:16:21 +02:00
2016-06-07 13:09:57 +02:00
2016-11-03 15:52:12 +01:00
2016-06-07 13:09:57 +02:00
2016-06-07 13:09:57 +02:00
2016-06-07 13:09:57 +02:00
2016-11-08 17:54:34 +01:00
2016-06-29 15:25:42 -04:00
2016-09-28 10:01:52 +02:00
2016-05-04 18:16:21 +02:00
2016-05-05 10:48:34 +02:00
2016-06-07 13:09:57 +02:00
2016-06-29 15:25:42 -04:00
2016-06-21 09:38:56 -04:00
2016-06-07 13:09:57 +02:00
2016-03-25 15:23:56 +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-11-08 17:54:34 +01:00
2016-10-12 21:33:34 +02:00
2016-09-08 13:51:30 +02:00
2016-09-08 13:51:30 +02:00
2016-09-08 13:51:30 +02:00
2016-10-24 20:17:47 +01:00
2016-08-30 22:16:01 +01:00
2016-03-30 09:10:26 +02:00
2016-03-30 09:10:26 +02:00
2016-10-02 20:23:18 +01:00
2016-10-21 10:11:20 +02:00
2016-09-28 22:54:11 +01:00
2016-10-17 21:07:25 +01:00
2016-10-17 21:07:25 +01:00
2016-10-24 20:17:47 +01:00
2016-08-30 21:45:59 +01:00
2016-08-30 21:45:59 +01:00
2016-08-30 21:45:59 +01:00
2016-09-09 18:56:18 +01:00
2016-08-30 22:16:01 +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-06-07 13:09:57 +02:00
2016-08-18 17:06:46 +02:00
2016-09-29 14:48:04 +02:00
2016-09-29 14:48:03 +02:00
2016-06-21 11:11:26 +02:00
2016-06-21 11:13:29 +02:00
2016-10-16 20:26:40 +02:00
2016-11-13 18:44:01 +01:00
2016-05-04 18:16:21 +02:00
2016-11-08 11:22:29 -05:00
2016-05-17 10:29:27 +02:00
2016-08-18 17:06:46 +02:00
2016-06-07 13:09:57 +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-08-26 11:36:26 +02:00
2016-08-26 11:36:26 +02:00
2016-11-08 17:54:34 +01:00
2016-08-26 11:50:22 +02:00
2016-08-26 11:36:26 +02:00
2016-09-08 21:58:22 +01:00
2016-09-08 21:58:22 +01:00
2016-03-25 15:23:56 +01:00
2016-07-10 14:52:16 +03:00
2016-10-04 10:54:07 +02:00
2016-11-10 11:15:56 +02:00
2016-11-10 11:15:56 +02:00
2016-11-10 11:15:56 +02:00
2016-08-11 10:54:44 +02:00
2016-08-26 11:50:22 +02:00
2016-08-26 11:50:22 +02:00
2016-08-26 11:50:22 +02:00
2016-08-26 11:50:22 +02:00
2016-05-04 18:16:21 +02:00
2016-06-07 13:09:57 +02:00
2016-06-07 13:09:57 +02:00
2016-08-17 12:16:42 +02:00
2016-05-04 18:16:21 +02:00
2016-08-17 12:16:42 +02:00
2016-05-04 18:16:21 +02:00
2016-05-04 18:16:21 +02:00
2016-08-30 22:06:47 +02:00
2016-03-29 13:41:09 +02:00
2016-09-29 14:48:03 +02:00
2016-09-29 14:48:03 +02:00
2016-05-04 18:16:21 +02:00
2016-06-07 13:09:57 +02:00
2016-05-11 12:21:25 +02:00
2016-09-29 14:48:03 +02:00
2016-11-08 17:54:34 +01:00
2016-06-07 13:09:57 +02:00
2016-05-04 15:14:14 +02:00
2016-05-04 18:16:21 +02:00