Daniel Neilson
1e68724d24
Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1)
Summary:
This is a resurrection of work first proposed and discussed in Aug 2015:
http://lists.llvm.org/pipermail/llvm-dev/2015-August/089384.html
and initially landed (but then backed out) in Nov 2015:
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20151109/312083.html
The @llvm.memcpy/memmove/memset intrinsics currently have an explicit argument
which is required to be a constant integer. It represents the alignment of the
dest (and source), and so must be the minimum of the actual alignment of the
two.
This change is the first in a series that allows source and dest to each
have their own alignments by using the alignment attribute on their arguments.
In this change we:
1) Remove the alignment argument.
2) Add alignment attributes to the source & dest arguments. We, temporarily,
require that the alignments for source & dest be equal.
For example, code which used to read:
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dest, i8* %src, i32 100, i32 4, i1 false)
will now read
call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %dest, i8* align 4 %src, i32 100, i1 false)
Downstream users may have to update their lit tests that check for
@llvm.memcpy/memmove/memset call/declaration patterns. The following extended sed script
may help with updating the majority of your tests, but it does not catch all possible
patterns so some manual checking and updating will be required.
s~declare void @llvm\.mem(set|cpy|move)\.p([^(]*)\((.*), i32, i1\)~declare void @llvm.mem\1.p\2(\3, i1)~g
s~call void @llvm\.memset\.p([^(]*)i8\(i8([^*]*)\* (.*), i8 (.*), i8 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.memset.p\1i8(i8\2* \3, i8 \4, i8 \5, i1 \6)~g
s~call void @llvm\.memset\.p([^(]*)i16\(i8([^*]*)\* (.*), i8 (.*), i16 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.memset.p\1i16(i8\2* \3, i8 \4, i16 \5, i1 \6)~g
s~call void @llvm\.memset\.p([^(]*)i32\(i8([^*]*)\* (.*), i8 (.*), i32 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.memset.p\1i32(i8\2* \3, i8 \4, i32 \5, i1 \6)~g
s~call void @llvm\.memset\.p([^(]*)i64\(i8([^*]*)\* (.*), i8 (.*), i64 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.memset.p\1i64(i8\2* \3, i8 \4, i64 \5, i1 \6)~g
s~call void @llvm\.memset\.p([^(]*)i128\(i8([^*]*)\* (.*), i8 (.*), i128 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.memset.p\1i128(i8\2* \3, i8 \4, i128 \5, i1 \6)~g
s~call void @llvm\.memset\.p([^(]*)i8\(i8([^*]*)\* (.*), i8 (.*), i8 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.memset.p\1i8(i8\2* align \6 \3, i8 \4, i8 \5, i1 \7)~g
s~call void @llvm\.memset\.p([^(]*)i16\(i8([^*]*)\* (.*), i8 (.*), i16 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.memset.p\1i16(i8\2* align \6 \3, i8 \4, i16 \5, i1 \7)~g
s~call void @llvm\.memset\.p([^(]*)i32\(i8([^*]*)\* (.*), i8 (.*), i32 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.memset.p\1i32(i8\2* align \6 \3, i8 \4, i32 \5, i1 \7)~g
s~call void @llvm\.memset\.p([^(]*)i64\(i8([^*]*)\* (.*), i8 (.*), i64 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.memset.p\1i64(i8\2* align \6 \3, i8 \4, i64 \5, i1 \7)~g
s~call void @llvm\.memset\.p([^(]*)i128\(i8([^*]*)\* (.*), i8 (.*), i128 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.memset.p\1i128(i8\2* align \6 \3, i8 \4, i128 \5, i1 \7)~g
s~call void @llvm\.mem(cpy|move)\.p([^(]*)i8\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i8 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.mem\1.p\2i8(i8\3* \4, i8\5* \6, i8 \7, i1 \8)~g
s~call void @llvm\.mem(cpy|move)\.p([^(]*)i16\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i16 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.mem\1.p\2i16(i8\3* \4, i8\5* \6, i16 \7, i1 \8)~g
s~call void @llvm\.mem(cpy|move)\.p([^(]*)i32\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i32 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.mem\1.p\2i32(i8\3* \4, i8\5* \6, i32 \7, i1 \8)~g
s~call void @llvm\.mem(cpy|move)\.p([^(]*)i64\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i64 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.mem\1.p\2i64(i8\3* \4, i8\5* \6, i64 \7, i1 \8)~g
s~call void @llvm\.mem(cpy|move)\.p([^(]*)i128\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i128 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.mem\1.p\2i128(i8\3* \4, i8\5* \6, i128 \7, i1 \8)~g
s~call void @llvm\.mem(cpy|move)\.p([^(]*)i8\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i8 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.mem\1.p\2i8(i8\3* align \8 \4, i8\5* align \8 \6, i8 \7, i1 \9)~g
s~call void @llvm\.mem(cpy|move)\.p([^(]*)i16\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i16 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.mem\1.p\2i16(i8\3* align \8 \4, i8\5* align \8 \6, i16 \7, i1 \9)~g
s~call void @llvm\.mem(cpy|move)\.p([^(]*)i32\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i32 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.mem\1.p\2i32(i8\3* align \8 \4, i8\5* align \8 \6, i32 \7, i1 \9)~g
s~call void @llvm\.mem(cpy|move)\.p([^(]*)i64\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i64 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.mem\1.p\2i64(i8\3* align \8 \4, i8\5* align \8 \6, i64 \7, i1 \9)~g
s~call void @llvm\.mem(cpy|move)\.p([^(]*)i128\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i128 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.mem\1.p\2i128(i8\3* align \8 \4, i8\5* align \8 \6, i128 \7, i1 \9)~g
The remaining changes in the series will:
Step 2) Expand the IRBuilder API to allow creation of memcpy/memmove with differing
source and dest alignments.
Step 3) Update Clang to use the new IRBuilder API.
Step 4) Update Polly to use the new IRBuilder API.
Step 5) Update LLVM passes that create memcpy/memmove calls to use the new IRBuilder API,
and those that use use MemIntrinsicInst::[get|set]Alignment() to use
getDestAlignment() and getSourceAlignment() instead.
Step 6) Remove the single-alignment IRBuilder API for memcpy/memmove, and the
MemIntrinsicInst::[get|set]Alignment() methods.
Reviewers: pete, hfinkel, lhames, reames, bollu
Reviewed By: reames
Subscribers: niosHD, reames, jholewinski, qcolombet, jfb, sanjoy, arsenm, dschuff, dylanmckay, mehdi_amini, sdardis, nemanjai, david2050, nhaehnle, javed.absar, sbc100, jgravelle-google, eraman, aheejin, kbarton, JDevlieghere, asb, rbar, johnrusso, simoncook, jordy.potman.lists, apazos, sabuasal, llvm-commits
Differential Revision: https://reviews.llvm.org/D41675
llvm-svn: 322965
2018-01-19 17:13:12 +00:00
..
2016-04-15 17:24:40 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2015-11-28 13:05:49 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2016-06-27 15:55:30 +00:00
2015-10-01 18:12:28 +00:00
2015-10-01 18:12:28 +00:00
2015-10-01 18:12:28 +00:00
2015-11-18 14:59:00 +00:00
2017-10-06 13:59:28 +00:00
2015-11-18 14:59:00 +00:00
2015-08-13 13:37:06 +00:00
2016-02-19 14:10:21 +00:00
2016-02-19 14:10:21 +00:00
2015-01-13 19:45:16 +00:00
2016-08-18 21:44:15 +00:00
2016-06-09 15:19:16 +00:00
2016-06-13 14:24:05 +00:00
2017-11-09 16:31:57 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-01-13 19:45:16 +00:00
2015-10-10 07:14:24 +00:00
2017-01-11 19:55:19 +00:00
2016-04-04 12:45:44 +00:00
2016-04-04 12:45:44 +00:00
2017-08-04 18:53:35 +00:00
2017-08-04 18:53:35 +00:00
2017-08-04 18:53:35 +00:00
2017-08-04 18:53:35 +00:00
2017-08-04 18:57:58 +00:00
2017-08-04 18:53:35 +00:00
2017-08-04 18:53:35 +00:00
2017-08-04 18:53:35 +00:00
2017-08-04 18:53:35 +00:00
2017-08-04 18:57:58 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-08-11 06:57:08 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2017-12-05 11:24:39 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2016-04-07 16:11:44 +00:00
2015-02-27 21:17:42 +00:00
2016-10-19 16:58:59 +00:00
2015-02-27 21:17:42 +00:00
2017-07-17 17:41:11 +00:00
2018-01-17 17:16:07 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2016-05-16 20:32:22 +00:00
2016-05-16 20:32:22 +00:00
2017-09-19 20:50:05 +00:00
2016-04-20 01:03:48 +00:00
2017-12-05 10:52:24 +00:00
2016-04-08 17:22:19 +00:00
2016-04-11 12:12:32 +00:00
2017-11-30 16:12:24 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-09-28 16:22:54 +00:00
2017-09-28 16:22:54 +00:00
2017-09-28 16:22:54 +00:00
2017-09-28 16:22:54 +00:00
2016-11-28 13:34:08 +00:00
2016-10-25 15:39:15 +00:00
2016-11-28 13:34:08 +00:00
2016-11-28 13:34:08 +00:00
2016-11-28 13:34:08 +00:00
2016-11-28 13:34:08 +00:00
2017-11-10 08:46:26 +00:00
2017-11-20 14:54:03 +00:00
2017-01-11 19:55:19 +00:00
2017-01-11 19:55:19 +00:00
2017-01-11 19:55:19 +00:00
2017-01-11 19:55:19 +00:00
2017-01-11 19:55:19 +00:00
2017-01-11 19:55:19 +00:00
2016-11-28 13:34:08 +00:00
2015-02-27 21:17:42 +00:00
2016-11-28 13:34:08 +00:00
2017-05-04 13:33:30 +00:00
2015-03-31 12:56:33 +00:00
2017-07-21 11:59:37 +00:00
2018-01-19 17:13:12 +00:00
2017-04-07 12:35:11 +00:00
2017-04-05 13:45:37 +00:00
2017-12-04 17:18:51 +00:00
2016-05-04 23:31:26 +00:00
2017-03-22 06:03:32 +00:00
2017-03-31 13:22:59 +00:00
2017-03-21 05:49:40 +00:00
2015-10-01 18:12:28 +00:00
2015-10-01 18:12:28 +00:00
2017-07-17 17:44:20 +00:00
2017-07-17 17:44:20 +00:00
2017-07-17 17:42:48 +00:00
2015-10-26 15:03:07 +00:00
2017-10-06 13:59:28 +00:00
2017-07-17 17:44:20 +00:00
2017-07-17 17:42:48 +00:00
2016-04-07 16:11:44 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-01-30 17:57:28 +00:00
2017-07-17 17:44:20 +00:00
2018-01-10 00:56:48 +00:00
2015-10-01 18:12:28 +00:00
2016-08-08 18:11:13 +00:00
2017-07-17 17:44:20 +00:00
2015-05-05 19:28:34 +00:00
2017-10-06 13:59:28 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-03-21 10:56:30 +00:00
2014-03-21 10:56:30 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-03-21 10:56:30 +00:00
2015-02-27 21:17:42 +00:00
2017-07-17 17:44:20 +00:00
2017-07-17 17:44:20 +00:00
2017-11-30 16:12:24 +00:00
2016-05-18 13:24:57 +00:00
2017-10-06 13:59:28 +00:00
2017-07-17 17:42:48 +00:00
2015-05-05 19:28:34 +00:00
2017-10-06 13:59:28 +00:00
2017-07-17 17:44:20 +00:00
2015-09-21 17:35:45 +00:00
2016-03-14 13:50:03 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2015-10-26 15:03:41 +00:00
2015-02-27 19:29:02 +00:00
2015-05-05 19:28:34 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2015-05-05 19:28:34 +00:00
2016-03-14 13:50:03 +00:00
2017-11-27 15:28:15 +00:00
2017-07-17 17:42:48 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2015-02-27 21:17:42 +00:00
2017-10-06 13:59:28 +00:00
2017-07-17 17:42:48 +00:00
2015-05-05 19:28:34 +00:00
2017-07-17 17:42:48 +00:00
2015-05-05 19:28:34 +00:00
2017-07-17 17:42:48 +00:00
2017-07-17 17:44:20 +00:00
2017-07-17 17:44:20 +00:00
2015-10-01 18:12:28 +00:00
2017-07-17 17:44:20 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2017-07-17 17:44:20 +00:00
2017-06-12 17:15:41 +00:00
2017-07-17 17:42:48 +00:00
2016-04-07 16:11:44 +00:00
2015-02-27 21:17:42 +00:00
2017-07-17 17:44:20 +00:00
2017-07-17 17:42:48 +00:00
2015-05-05 19:28:34 +00:00
2017-10-06 13:59:28 +00:00
2017-07-17 17:44:20 +00:00
2016-12-02 18:21:53 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:28:34 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-01-13 15:44:44 +00:00
2016-07-20 00:21:32 +00:00
2016-07-20 00:21:32 +00:00
2016-07-20 00:21:32 +00:00
2016-07-20 00:21:32 +00:00
2015-05-05 19:28:34 +00:00
2015-02-27 21:17:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:28:34 +00:00
2017-06-26 16:50:32 +00:00
2016-04-04 12:44:55 +00:00
2016-04-07 16:11:44 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-08-15 13:27:30 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2016-05-10 08:09:37 +00:00
2017-07-17 17:41:11 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2017-01-11 19:55:19 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2017-01-11 19:55:19 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2016-04-07 16:11:44 +00:00
2017-01-31 23:48:32 +00:00
2015-02-27 21:17:42 +00:00
2016-04-07 16:11:44 +00:00
2017-12-05 19:42:07 +00:00
2017-08-17 08:33:44 +00:00
2015-03-30 13:46:59 +00:00
2017-12-04 17:18:51 +00:00
2015-12-16 18:04:06 +00:00
2016-02-01 18:31:19 +00:00
2017-06-26 13:38:27 +00:00
2017-11-14 20:00:34 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2016-11-11 12:43:51 +00:00
2016-11-11 12:46:28 +00:00
2017-11-28 17:15:09 +00:00
2017-11-28 17:15:09 +00:00
2017-11-28 17:15:09 +00:00
2017-11-28 17:15:09 +00:00
2017-11-28 17:15:09 +00:00
2017-11-28 17:15:09 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2017-11-28 17:15:09 +00:00
2017-07-17 17:41:11 +00:00
2017-11-28 17:15:09 +00:00
2017-07-17 17:41:11 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2017-07-17 17:41:11 +00:00
2017-05-10 13:03:25 +00:00
2014-06-09 22:42:55 +00:00
2018-01-15 15:41:26 +00:00
2017-03-31 14:06:59 +00:00
2018-01-19 17:13:12 +00:00
2016-11-28 13:40:08 +00:00
2018-01-19 17:13:12 +00:00
2017-05-12 06:32:03 +00:00
2017-02-03 11:14:39 +00:00
2017-02-03 19:11:19 +00:00
2016-06-17 20:24:07 +00:00
2016-04-07 16:11:44 +00:00
2016-06-17 20:24:07 +00:00
2018-01-19 17:13:12 +00:00
2015-02-27 21:17:42 +00:00
2018-01-19 17:13:12 +00:00
2018-01-19 17:13:12 +00:00
2018-01-19 17:13:12 +00:00
2018-01-19 17:13:12 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2016-06-23 21:18:59 +00:00
2017-01-30 18:29:46 +00:00
2017-12-04 17:18:51 +00:00
2017-12-07 10:40:31 +00:00
2015-02-27 19:29:02 +00:00
2018-01-10 00:56:48 +00:00
2017-12-12 17:53:59 +00:00
2017-09-29 14:31:39 +00:00
2016-04-04 12:44:55 +00:00
2017-12-05 11:24:39 +00:00
2016-06-22 16:16:27 +00:00
2015-03-31 12:58:17 +00:00
2017-11-14 19:20:46 +00:00
2014-01-09 11:28:53 +00:00
2014-01-09 11:28:53 +00:00
2017-12-06 13:53:24 +00:00
2016-07-06 18:13:11 +00:00
2016-07-06 18:13:11 +00:00
2014-01-09 11:28:53 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2016-10-19 16:58:59 +00:00
2016-08-18 18:04:26 +00:00
2016-07-06 18:13:11 +00:00
2015-10-29 08:28:35 +00:00
2017-04-24 12:40:28 +00:00
2017-03-17 06:47:08 +00:00
2017-04-10 20:18:21 +00:00
2017-12-04 17:18:51 +00:00
2016-06-17 20:24:07 +00:00
2015-02-27 21:17:42 +00:00
2016-06-17 20:24:07 +00:00
2017-12-04 17:18:51 +00:00
2016-06-17 20:24:07 +00:00
2017-12-05 10:52:24 +00:00
2017-12-05 10:52:24 +00:00
2016-04-28 00:17:23 +00:00
2018-01-19 17:13:12 +00:00
2016-07-10 14:41:22 +00:00
2016-07-10 14:41:22 +00:00
2016-07-10 14:41:22 +00:00
2016-07-10 14:41:22 +00:00
2016-07-10 14:41:22 +00:00
2017-10-06 13:59:28 +00:00
2017-07-17 17:44:20 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2015-02-18 09:13:27 +00:00
2015-02-18 09:13:27 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2016-06-10 19:58:10 +00:00
2017-06-23 14:30:46 +00:00
2016-11-28 13:59:22 +00:00
2016-11-28 13:59:22 +00:00
2016-11-28 13:59:22 +00:00
2017-12-05 11:24:39 +00:00
2017-03-14 00:34:14 +00:00
2017-01-18 11:40:28 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:28:34 +00:00
2017-07-17 17:42:48 +00:00
2015-05-05 19:28:34 +00:00
2017-07-17 17:42:48 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2017-07-17 17:41:11 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:29:21 +00:00
2015-08-28 17:31:28 +00:00
2015-08-28 17:31:28 +00:00
2016-10-20 08:27:16 +00:00
2015-08-13 13:37:06 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:30:05 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:28:34 +00:00
2017-07-17 17:42:48 +00:00
2017-12-04 17:18:51 +00:00
2017-12-04 17:18:51 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:26:48 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:26:48 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:26:48 +00:00
2015-05-05 19:26:48 +00:00
2015-05-05 19:28:34 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2017-07-17 17:41:11 +00:00
2015-05-05 19:25:42 +00:00
2017-10-06 13:59:28 +00:00
2017-07-17 17:42:48 +00:00
2015-05-05 19:33:37 +00:00
2016-06-30 07:13:56 +00:00
2017-07-17 17:41:11 +00:00
2017-07-17 17:42:48 +00:00
2018-01-10 09:33:00 +00:00
2015-05-05 19:26:48 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2017-07-17 17:44:20 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2017-07-17 17:44:20 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:32:57 +00:00
2015-05-05 19:32:57 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:29:21 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:32:57 +00:00
2015-05-05 19:32:57 +00:00
2015-05-05 19:32:57 +00:00
2017-07-17 17:41:11 +00:00
2015-05-05 19:28:34 +00:00
2015-05-05 19:26:48 +00:00
2017-07-17 17:42:48 +00:00
2017-07-17 17:42:48 +00:00
2017-07-17 17:42:48 +00:00
2015-05-05 19:28:34 +00:00
2017-07-17 17:42:48 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2017-07-17 17:41:11 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:27:45 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2016-10-20 08:27:16 +00:00
2016-09-28 06:13:58 +00:00
2015-05-05 19:28:34 +00:00
2017-07-17 17:42:48 +00:00
2017-01-27 07:46:26 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:25:42 +00:00
2015-05-05 19:28:34 +00:00
2017-07-17 17:42:48 +00:00
2017-10-06 13:59:28 +00:00
2017-07-17 17:42:48 +00:00
2017-12-05 11:24:39 +00:00
2015-05-05 19:25:42 +00:00
2017-07-17 17:41:11 +00:00
2017-01-27 07:46:26 +00:00
2017-03-07 09:49:31 +00:00
2015-10-21 07:39:47 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00