0af93b5 | Andrew Adams | 27 April 2020, 22:54:04 UTC | Add a test batch of simplifier rules | 27 April 2020, 22:54:04 UTC |
5b4eac0 | Andrew Adams | 24 April 2020, 18:17:04 UTC | Merge pull request #4870 from halide/reenable_introspection Reenable introspection by default, and add support for the endbr64 in… | 24 April 2020, 18:17:04 UTC |
1e91a20 | Andrew Adams | 24 April 2020, 18:16:43 UTC | Merge pull request #4869 from halide/delete_uphill_div_rules Adjust simplifier rules so that they're provably cycle-free | 24 April 2020, 18:16:43 UTC |
994428a | Andrew Adams | 24 April 2020, 02:05:00 UTC | Delete debugging code | 24 April 2020, 02:05:00 UTC |
e8243b8 | Steven Johnson | 23 April 2020, 20:02:26 UTC | Merge branch 'master' into delete_uphill_div_rules | 23 April 2020, 20:02:26 UTC |
7d8f1f6 | Andrew Adams | 23 April 2020, 19:38:30 UTC | Reenable introspection by default, and add support for the endbr64 instruction Was accidentally deleted in b0b6a4a84c53b47a91a05b4487ef504fe1345e73 Also add handling for newer gccs. They now inject endbr64 instructions at function entry. | 23 April 2020, 19:38:30 UTC |
8975aaf | Andrew Adams | 23 April 2020, 18:34:41 UTC | Adjust simplifier rules so that they're provably cycle-free Several of these division rules weren't strength reducing - they created more ops (or stronger ops) than they removed. This commit tries just adjusting them to be strength-reducing. I'm a little nervous of it because it means in (x*4 - y)/2 we no longer move the x out of the numerator. Needs thorough testing. | 23 April 2020, 18:34:41 UTC |
91eb7e3 | Steven Johnson | 23 April 2020, 18:13:01 UTC | Merge pull request #4847 from pelikan/fix-plain-c-with-libcxx fix build when -stdlib=libc++ was passed into the plain C test | 23 April 2020, 18:13:01 UTC |
a277e60 | Steven Johnson | 23 April 2020, 17:31:36 UTC | Merge pull request #4868 from halide/shift_overflow Internal compiler code can introduce shifts by greater than the type size | 23 April 2020, 17:31:36 UTC |
754ab2a | Andrew Adams | 22 April 2020, 22:36:06 UTC | Internal compiler code can introduce shifts by greater than the type size. So this should be an overflow IR node instead of being an eager user assert. The specific case was a can_prove(x << y) substituting in random values for y when HL_DEBUG_CODEGEN>0 to probe for counterexamples. Some of these random values where greater than the bit-size of x. | 22 April 2020, 22:36:06 UTC |
5bcdf80 | Steven Johnson | 22 April 2020, 20:41:27 UTC | Merge pull request #4840 from Infinoid/python-rdom-getitem Add RDom[i] method to Python bindings. | 22 April 2020, 20:41:27 UTC |
a841d91 | Steven Johnson | 20 April 2020, 22:45:51 UTC | Merge pull request #4861 from Infinoid/python-buffer-leak Fix a leak in python extension wrapper code (Issue #4859) | 20 April 2020, 22:45:51 UTC |
f3af437 | Steven Johnson | 20 April 2020, 22:41:59 UTC | Merge pull request #4844 from pelikan/fix-eigen3-build fix eigen3 build on Gentoo Linux by using pkg-config | 20 April 2020, 22:41:59 UTC |
8815280 | Steven Johnson | 19 April 2020, 21:17:32 UTC | Merge pull request #3037 from halide/add_image_checks_after_bounds_inference Move add_image_checks after bounds inference (See #3036) | 19 April 2020, 21:17:32 UTC |
7cb4f11 | Andrew Adams | 17 April 2020, 23:21:24 UTC | Don't add impure or non-integer things to the containing loops vector in trim_no_ops | 19 April 2020, 16:55:48 UTC |
daac7e5 | Andrew Adams | 17 April 2020, 22:04:26 UTC | Compute func inside GuardWithIf if statement if possible If a Func is computed inside all of the splits on a variable, it should also be computed inside the guardwithif if statement. This means it doesn't have to rely on bounds inference understanding said if statement. | 19 April 2020, 16:55:48 UTC |
649451c | Andrew Adams | 17 April 2020, 21:20:06 UTC | Fix bug with zero- or negative-sized realizations The get dead-stripped *before* allocation bounds inference, now that simplification runs earlier, so we need to make sure allocation bounds inference doesn't get confused by the lack of any access to the buffers. | 19 April 2020, 16:55:48 UTC |
9698c68 | Andrew Adams | 06 April 2020, 23:12:55 UTC | Added test that composes tail strategies in different ways ... ... and checks that bounds are tight when all the splits are exact. | 19 April 2020, 16:55:48 UTC |
020caba | Andrew Adams | 06 April 2020, 23:09:58 UTC | Don't use the loop_min in the promise_clamped from GuardWithIf | 19 April 2020, 16:55:48 UTC |
e8f0dd4 | Andrew Adams | 06 April 2020, 23:08:52 UTC | Don't keep IR just because it refers to the bounds of an input/output | 19 April 2020, 16:55:48 UTC |
1ec4226 | Andrew Adams | 24 March 2020, 21:02:18 UTC | Move printf before assert So that you actually get to see it if the assert fails. | 19 April 2020, 16:55:48 UTC |
bbfd486 | Andrew Adams | 24 March 2020, 21:02:00 UTC | Remove constant substitution in storage folding No point now that full simplification has run | 19 April 2020, 16:55:48 UTC |
0eb29f2 | Andrew Adams | 24 March 2020, 21:01:44 UTC | Remove max on fuse factor Should no longer be necessary | 19 April 2020, 16:55:48 UTC |
8f69a51 | Andrew Adams | 24 March 2020, 21:01:03 UTC | Rearrange lowering to fix input bounds inference issue add_image_checks needs to happen after bounds inference so that it detects buffer overreads on the input. In its current place it only detects if the input is large enough for the output to be correct, but it doesn't check for the presence of guard bands to cover loading out-of-bounds values that then get discarded. In theory this could fault, if a guard band is needed on a dimension with large stride. For this to not break a whole bunch of code due to false positives with overly strict bounds, we need better simplification. So the first simplification pass is moved before allocation bounds inference. As a side benefit, this also reduces the amount of IR that pass needs to chew through, so it speeds up lowering. Fixes #3036 | 19 April 2020, 16:55:48 UTC |
1010cd1 | Andrew Adams | 19 April 2020, 16:55:08 UTC | Merge pull request #4864 from halide/fix_trunk_llvm Fix for llvm trunk | 19 April 2020, 16:55:08 UTC |
c0226f9 | Andrew Adams | 19 April 2020, 06:08:47 UTC | Deal with failure case in llvm::Expected | 19 April 2020, 06:08:47 UTC |
aad1ab9 | Andrew Adams | 19 April 2020, 00:53:07 UTC | Fix for llvm trunk | 19 April 2020, 00:53:07 UTC |
dbb12bd | Steven Johnson | 18 April 2020, 19:31:18 UTC | Merge pull request #4863 from halide/fix_trunk_llvm Add versions of helper functions that just disappeared in trunk llvm | 18 April 2020, 19:31:18 UTC |
da9c4fe | Martin Pelikán | 18 April 2020, 15:57:46 UTC | Merge branch 'fix-eigen3-build' of github.com:pelikan/Halide into fix-eigen3-build | 18 April 2020, 15:57:46 UTC |
96b23db | Martin Pelikán | 18 April 2020, 15:56:14 UTC | add comments describing the decisions we went through | 18 April 2020, 15:56:14 UTC |
6e2dc8f | Martin Pelikán | 11 April 2020, 02:10:25 UTC | third time's the charm: use alexreinking's version | 18 April 2020, 15:48:35 UTC |
37f60bb | Martin Pelikán | 11 April 2020, 01:02:36 UTC | simplify the situation by not using pkg-config but only CMake At the top of FindEigen3.cmake, the module promises to export these two variables: EIGEN3_FOUND (used originally) and EIGEN3_INCLUDE_DIR, which was missing and also the only argument needed for CFLAGS, not LDFLAGS. I couldn't find what "Eigen3::Eigen" refers to in my FindEigen3.cmake, so I kept it as it was (just moved it to one line). | 18 April 2020, 15:48:35 UTC |
8e39a38 | Martin Pelikán | 10 April 2020, 19:40:12 UTC | fix eigen3 build on Gentoo Linux by using pkg-config pkg-config is a standard way of discovering flags needed to build and link your dependencies; all the dependency package needs to do is create a small text file in /usr/share/pkgconfig/ and then you can either run: $ pkg-config --cflags eigen3 $ pkg-config --libs eigen3 These commands will show you the CFLAGS and LDFLAGS as intended by the library author (for instance on Debian, apt install libeigen3-dev will create /usr/share/pkgconfig/eigen3.pc). CMake can then find these dependencies too. Tested on 3.14.5 and 3.17. I'm keeping it optional in case some other platforms don't support it, but according to cmake.org documentation: - find_library(<VAR>) sets <VAR>-NOTFOUND - pkg_check_modules(<prefix>) sets <prefix>_FOUND so I fixed and unified those as well. | 18 April 2020, 15:48:35 UTC |
ac988d4 | Andrew Adams | 18 April 2020, 00:17:51 UTC | Add versions of helper functions that just disappeared in trunk llvm | 18 April 2020, 00:17:51 UTC |
d8ced54 | Mark Glines | 17 April 2020, 17:51:56 UTC | Fix a leak in python extension wrapper code (Issue #4859) | 17 April 2020, 18:04:28 UTC |
76046ee | Mark Glines | 17 April 2020, 11:26:57 UTC | Add __len__ so that pybind11 can convert RDom into a vector of RVars. | 17 April 2020, 11:26:57 UTC |
9cdb402 | Alex Reinking | 16 April 2020, 17:11:56 UTC | Merge pull request #4797 from halide/compute_with_update Compute topological order for scheduling within fused group | 16 April 2020, 17:11:56 UTC |
c307808 | Andrew Adams | 16 April 2020, 03:22:46 UTC | Merge pull request #4857 from halide/delete_bad_simplifier_rules Delete six dubious simplifier rules | 16 April 2020, 03:22:46 UTC |
f6f8c6b | Volodymyr Kysenko | 15 April 2020, 19:31:21 UTC | Merge branch 'master' into compute_with_update | 15 April 2020, 19:31:21 UTC |
3a3a157 | Andrew Adams | 15 April 2020, 18:15:15 UTC | Merge remote-tracking branch 'origin/master' into delete_bad_simplifier_rules | 15 April 2020, 18:15:15 UTC |
a34b55a | Steven Johnson | 15 April 2020, 17:04:26 UTC | Merge pull request #4854 from halide/srj-winweak Remove 'weak' from extern-Function declarations in AOT | 15 April 2020, 17:04:26 UTC |
24aec60 | Steven Johnson | 14 April 2020, 18:29:10 UTC | Remove 'weak' from extern-Function declarations in AOT | 14 April 2020, 23:36:58 UTC |
dea4d0e | Andrew Adams | 14 April 2020, 20:00:23 UTC | Delete six dubious simplifier rules The deleted rules try to make negative constants positive, but don't reduce the total op count, and replace an addition with a subtraction, which doesn't count as a strength reduction. Making negative constants positive may be defensible as a strength reduction, but other rules may make positive constants negative again, and elsewhere we treat replacing subtraction with addition as a strength reduction. So we were unable to prove that these rules don't cause cycles with these other rules (and hence infinite recursion). It would be good to just delete them if possible. In the open source tests, this required adding a few more variants of an EQ rule on selects. These were formally verified. In the strength ordering the new rules are cycle-free, even though they increase the op count in two cases. They reduce the total number of leaf nodes by one (c0 goes away) and we're treating the leaf count as higher priority than the op count in our total ordering over expressions. | 14 April 2020, 20:00:23 UTC |
bd59858 | Steven Johnson | 14 April 2020, 19:53:06 UTC | Merge pull request #4852 from halide/make_member_function_const Add const to some methods that can be const | 14 April 2020, 19:53:06 UTC |
f19ceca | Steven Johnson | 14 April 2020, 17:53:31 UTC | Merge pull request #4850 from halide/add_image_checks_simplifier_changes Add image checks simplifier changes | 14 April 2020, 17:53:31 UTC |
197ba6c | Andrew Adams | 14 April 2020, 01:55:43 UTC | Merge remote-tracking branch 'origin/master' into add_image_checks_simplifier_changes | 14 April 2020, 01:55:43 UTC |
52d87fe | Andrew Adams | 14 April 2020, 01:51:21 UTC | x - min(...x...) cancellation rules Formally verified, but not synthesized. | 14 April 2020, 01:51:21 UTC |
b248f94 | Andrew Adams | 14 April 2020, 00:32:17 UTC | Add more cancellation rules for min/max subtractions These rules aren't complex, but it's notable that they were machine synthesized and verified. | 14 April 2020, 00:32:17 UTC |
42c6b43 | Andrew Adams | 13 April 2020, 23:51:33 UTC | Add const to some methods that can be const These were found with a clang-tidy checker, but the clang-tidy checker also suggested adding const to a bunch of places where it would be technically correct but misleading due to const not being transitive (e.g. mutating a member via a pointer). | 13 April 2020, 23:51:33 UTC |
4b0b2ec | Andrew Adams | 13 April 2020, 23:14:52 UTC | Make sure simplify_correlated_differences doesn't hop over inner constants that shadow outer non-constants | 13 April 2020, 23:14:52 UTC |
584a4a0 | Andrew Adams | 13 April 2020, 22:51:42 UTC | Merge pull request #4849 from halide/reverse_topological_order We want reverse topological order for let bounds | 13 April 2020, 22:51:42 UTC |
409a037 | Andrew Adams | 11 April 2020, 20:30:34 UTC | Merge remote-tracking branch 'origin/master' into add_image_checks_simplifier_changes | 11 April 2020, 20:30:34 UTC |
1bcb0a0 | Andrew Adams | 11 April 2020, 20:21:21 UTC | It's not worth trying to cancel unknowns in simplify_correlated_differences | 11 April 2020, 20:21:21 UTC |
2ffdca7 | Andrew Adams | 11 April 2020, 19:06:09 UTC | Merge remote-tracking branch 'origin/reverse_topological_order' into add_image_checks_simplifier_changes | 11 April 2020, 19:06:09 UTC |
0e01b9d | Andrew Adams | 11 April 2020, 19:03:07 UTC | Merge pull request #4837 from halide/disallow_noncanonical_simplifier_rules Require that rewrite rules are in canonical form | 11 April 2020, 19:03:07 UTC |
72715a1 | Andrew Adams | 11 April 2020, 19:02:39 UTC | Merge pull request #4846 from halide/pelikan-fix-const-bounds clone of #4845 for buildbots | 11 April 2020, 19:02:39 UTC |
81b32de | Andrew Adams | 11 April 2020, 19:00:44 UTC | We want reverse topological order for let bounds | 11 April 2020, 19:00:44 UTC |
b2a007b | Martin Pelikán | 11 April 2020, 02:10:25 UTC | third time's the charm: use alexreinking's version | 11 April 2020, 02:11:47 UTC |
d756af6 | Martin Pelikán | 11 April 2020, 01:02:36 UTC | simplify the situation by not using pkg-config but only CMake At the top of FindEigen3.cmake, the module promises to export these two variables: EIGEN3_FOUND (used originally) and EIGEN3_INCLUDE_DIR, which was missing and also the only argument needed for CFLAGS, not LDFLAGS. I couldn't find what "Eigen3::Eigen" refers to in my FindEigen3.cmake, so I kept it as it was (just moved it to one line). | 11 April 2020, 01:10:09 UTC |
6d12a81 | Martin Pelikán | 11 April 2020, 00:51:29 UTC | fix build when -stdlib=libc++ was passed into the plain C test When LLVM was built with it, the -stdlib=libc++ flag would get passed to correctness_plain_c_includes, which is (correctly) only using the clang C compiler driver, not clang++, where this is an invalid option. Since CMake doesn't seem to have per-language options apart from CMAKE_CXX_FLAGS which people discourage from directly modifying, we use a conditional instead of the string itself. Note that passing the option to the linker is fine as is. | 11 April 2020, 00:51:29 UTC |
66f00f8 | Andrew Adams | 10 April 2020, 22:54:10 UTC | Make simplify_correlated_lets more aggressive | 10 April 2020, 22:54:10 UTC |
14eff0e | Andrew Adams | 10 April 2020, 22:53:51 UTC | Simplifier rules from #3037 These simplifier rules were necessary to get tight bounds with nested tail strategies. This is only possible in conjunction with the rest of 3037, but it's worth testing and merging these separately. | 10 April 2020, 22:53:51 UTC |
9b81989 | Martin Pelikán | 10 April 2020, 20:19:04 UTC | fix build (const& vs. const) with LLVM/clang 11 and -Werror The error message I get (LLVM and clang from today's HEAD): error: loop variable 'l' creates a copy from type 'const Halide::Internal::BoxesTouched::LetBound' [-Werror,-Wrange-loop-construct] | 10 April 2020, 20:19:04 UTC |
62f0209 | Martin Pelikán | 10 April 2020, 19:40:12 UTC | fix eigen3 build on Gentoo Linux by using pkg-config pkg-config is a standard way of discovering flags needed to build and link your dependencies; all the dependency package needs to do is create a small text file in /usr/share/pkgconfig/ and then you can either run: $ pkg-config --cflags eigen3 $ pkg-config --libs eigen3 These commands will show you the CFLAGS and LDFLAGS as intended by the library author (for instance on Debian, apt install libeigen3-dev will create /usr/share/pkgconfig/eigen3.pc). CMake can then find these dependencies too. Tested on 3.14.5 and 3.17. I'm keeping it optional in case some other platforms don't support it, but according to cmake.org documentation: - find_library(<VAR>) sets <VAR>-NOTFOUND - pkg_check_modules(<prefix>) sets <prefix>_FOUND so I fixed and unified those as well. | 10 April 2020, 19:59:19 UTC |
adf9d3c | Steven Johnson | 10 April 2020, 18:45:07 UTC | Merge pull request #4843 from halide/call_llvm_function_not_value In trunk llvm it is no longer legal to call a Value directly | 10 April 2020, 18:45:07 UTC |
653a71e | Mark Glines | 10 April 2020, 18:15:48 UTC | Make sure the negative tests fail if the expected error is absent. | 10 April 2020, 18:15:48 UTC |
3a3881f | Andrew Adams | 10 April 2020, 18:13:15 UTC | In trunk llvm it is no longer legal to call a Value directly | 10 April 2020, 18:13:15 UTC |
6831b27 | Mark Glines | 10 April 2020, 17:10:05 UTC | Indentation fix. | 10 April 2020, 17:10:56 UTC |
ee7fdc7 | Mark Glines | 10 April 2020, 17:04:01 UTC | Add KeyError generation for out-of-bounds RDom[i] requests. | 10 April 2020, 17:08:19 UTC |
940d523 | Mark Glines | 10 April 2020, 16:41:05 UTC | Add RDom[i] method to Python bindings. | 10 April 2020, 16:51:59 UTC |
e0524d1 | Volodymyr Kysenko | 10 April 2020, 16:47:25 UTC | Move progress_made to the place where it was actually made + updated comments | 10 April 2020, 16:47:25 UTC |
baa321d | Volodymyr Kysenko | 10 April 2020, 16:44:57 UTC | Update compute_with tests | 10 April 2020, 16:44:57 UTC |
210d62f | Andrew Adams | 10 April 2020, 16:10:41 UTC | Add more explanatory comments | 10 April 2020, 16:10:41 UTC |
e0d6f03 | Steven Johnson | 09 April 2020, 22:50:05 UTC | Merge pull request #4839 from halide/srj-trim-scope-push Avoid adding duplicate children in trim_scope_push | 09 April 2020, 22:50:05 UTC |
14d61bf | Andrew Adams | 09 April 2020, 18:49:47 UTC | Merge branch 'srj-trim-scope-push' of https://github.com/Halide/Halide into srj-trim-scope-push | 09 April 2020, 18:49:47 UTC |
ee64384 | Andrew Adams | 09 April 2020, 18:45:34 UTC | Do a proper topological sort | 09 April 2020, 18:45:34 UTC |
9cad075 | Steven Johnson | 09 April 2020, 17:35:34 UTC | Appease clang-format | 09 April 2020, 17:35:34 UTC |
054f9eb | Steven Johnson | 09 April 2020, 17:34:55 UTC | Add comment | 09 April 2020, 17:34:55 UTC |
8d8b3a6 | Steven Johnson | 09 April 2020, 17:33:02 UTC | Use Andrew's better version of trim_scope_push() | 09 April 2020, 17:33:02 UTC |
97c7b89 | Steven Johnson | 09 April 2020, 17:08:16 UTC | Merge pull request #4838 from halide/srj-derecurse Remove recursion in trim_scope_pop() | 09 April 2020, 17:08:16 UTC |
fbc57db | Steven Johnson | 09 April 2020, 00:37:02 UTC | fix indent | 09 April 2020, 00:37:02 UTC |
e8ca80e | Steven Johnson | 09 April 2020, 00:36:27 UTC | fix indent | 09 April 2020, 00:36:27 UTC |
0f2bfc9 | Steven Johnson | 09 April 2020, 00:33:42 UTC | Avoid adding duplicate children in trim_scope_push | 09 April 2020, 00:33:42 UTC |
d98c850 | Steven Johnson | 08 April 2020, 22:01:32 UTC | Remove recursion in trim_scope_pop() The current implementation recurses to let_bounds.size(), but a simple loop has the same result. | 08 April 2020, 22:01:32 UTC |
f81ee66 | Volodymyr Kysenko | 08 April 2020, 17:15:42 UTC | Error message for the case of cycle in the fused group. | 08 April 2020, 17:15:42 UTC |
b66a315 | Volodymyr Kysenko | 08 April 2020, 16:44:58 UTC | Replace std::pair with the named structure to improve readability + expand the comment. | 08 April 2020, 16:44:58 UTC |
b8857e2 | Volodymyr Kysenko | 08 April 2020, 05:20:57 UTC | Fix typo | 08 April 2020, 05:20:57 UTC |
30d80e7 | Volodymyr Kysenko | 08 April 2020, 05:17:49 UTC | Merge branch 'master' into compute_with_update | 08 April 2020, 05:17:49 UTC |
f335a2b | Andrew Adams | 07 April 2020, 21:29:23 UTC | Delete dead code These rules were copy-pasted from above. Must have been due to a bad merge. | 07 April 2020, 21:29:23 UTC |
2017ee7 | Andrew Adams | 07 April 2020, 21:26:16 UTC | Account for canonicalization of EQ | 07 April 2020, 21:26:16 UTC |
c7246d1 | Andrew Adams | 07 April 2020, 19:13:09 UTC | Slight cleanup of commutative helper | 07 April 2020, 19:13:09 UTC |
ff4f917 | Andrew Adams | 07 April 2020, 19:08:23 UTC | Require that rewrite rules are in canonical form That is, for every commutative binary op, we know that the weaker IR node is on the right, because the simplifier does that before applying any rules. Similarly, let's never make a right-hand-side that doesn't obey this constraint. It just makes more work for the simplifier. | 07 April 2020, 19:08:23 UTC |
fff536c | Steven Johnson | 07 April 2020, 16:51:29 UTC | Merge pull request #4836 from halide/srj-pip Fix visibility in Pipeline.h | 07 April 2020, 16:51:29 UTC |
9ca43a1 | Steven Johnson | 07 April 2020, 00:34:19 UTC | Fix visibility in Pipeline.h Stuff that should have been private was public. Not sure how or why. | 07 April 2020, 00:34:19 UTC |
b58ddb2 | Steven Johnson | 07 April 2020, 00:28:17 UTC | Merge pull request #4835 from halide/srj-remove-parammap-from-py Remove ParamMap from Python Bindings | 07 April 2020, 00:28:17 UTC |
86c5b60 | Steven Johnson | 07 April 2020, 00:27:30 UTC | Merge pull request #4833 from halide/srj-pmbuf Tweak to ParamMap API | 07 April 2020, 00:27:30 UTC |
22d11fd | Steven Johnson | 06 April 2020, 23:26:59 UTC | Remove ParamMap from Python Bindings The existing "support" was useless, since there was no way to construct a *useful* ParamMap in our Python bindings. Removing for now to clear the way for subsequent ParamMap work. | 06 April 2020, 23:26:59 UTC |
b18be98 | Steven Johnson | 06 April 2020, 18:35:22 UTC | Tweak to ParamMap API | 06 April 2020, 18:35:22 UTC |
3a67edd | Steven Johnson | 06 April 2020, 17:47:24 UTC | Merge pull request #4832 from halide/push_rval Reduce number of copies in Scope::push | 06 April 2020, 17:47:24 UTC |
60dac03 | Andrew Adams | 05 April 2020, 02:10:15 UTC | Merge pull request #4830 from halide/srj-interval Move most Interval method bodies to the .cpp file | 05 April 2020, 02:10:15 UTC |