https://github.com/halide/Halide

sort by:
Revision Author Date Message Commit Date
0af93b5 Add a test batch of simplifier rules 27 April 2020, 22:54:04 UTC
5b4eac0 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 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 Delete debugging code 24 April 2020, 02:05:00 UTC
e8243b8 Merge branch 'master' into delete_uphill_div_rules 23 April 2020, 20:02:26 UTC
7d8f1f6 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 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 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 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 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 Merge pull request #4840 from Infinoid/python-rdom-getitem Add RDom[i] method to Python bindings. 22 April 2020, 20:41:27 UTC
a841d91 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 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 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 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 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 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 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 Don't use the loop_min in the promise_clamped from GuardWithIf 19 April 2020, 16:55:48 UTC
e8f0dd4 Don't keep IR just because it refers to the bounds of an input/output 19 April 2020, 16:55:48 UTC
1ec4226 Move printf before assert So that you actually get to see it if the assert fails. 19 April 2020, 16:55:48 UTC
bbfd486 Remove constant substitution in storage folding No point now that full simplification has run 19 April 2020, 16:55:48 UTC
0eb29f2 Remove max on fuse factor Should no longer be necessary 19 April 2020, 16:55:48 UTC
8f69a51 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 Merge pull request #4864 from halide/fix_trunk_llvm Fix for llvm trunk 19 April 2020, 16:55:08 UTC
c0226f9 Deal with failure case in llvm::Expected 19 April 2020, 06:08:47 UTC
aad1ab9 Fix for llvm trunk 19 April 2020, 00:53:07 UTC
dbb12bd 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 Merge branch 'fix-eigen3-build' of github.com:pelikan/Halide into fix-eigen3-build 18 April 2020, 15:57:46 UTC
96b23db add comments describing the decisions we went through 18 April 2020, 15:56:14 UTC
6e2dc8f third time's the charm: use alexreinking's version 18 April 2020, 15:48:35 UTC
37f60bb 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 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 Add versions of helper functions that just disappeared in trunk llvm 18 April 2020, 00:17:51 UTC
d8ced54 Fix a leak in python extension wrapper code (Issue #4859) 17 April 2020, 18:04:28 UTC
76046ee Add __len__ so that pybind11 can convert RDom into a vector of RVars. 17 April 2020, 11:26:57 UTC
9cdb402 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 Merge pull request #4857 from halide/delete_bad_simplifier_rules Delete six dubious simplifier rules 16 April 2020, 03:22:46 UTC
f6f8c6b Merge branch 'master' into compute_with_update 15 April 2020, 19:31:21 UTC
3a3a157 Merge remote-tracking branch 'origin/master' into delete_bad_simplifier_rules 15 April 2020, 18:15:15 UTC
a34b55a Merge pull request #4854 from halide/srj-winweak Remove 'weak' from extern-Function declarations in AOT 15 April 2020, 17:04:26 UTC
24aec60 Remove 'weak' from extern-Function declarations in AOT 14 April 2020, 23:36:58 UTC
dea4d0e 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 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 Merge pull request #4850 from halide/add_image_checks_simplifier_changes Add image checks simplifier changes 14 April 2020, 17:53:31 UTC
197ba6c Merge remote-tracking branch 'origin/master' into add_image_checks_simplifier_changes 14 April 2020, 01:55:43 UTC
52d87fe x - min(...x...) cancellation rules Formally verified, but not synthesized. 14 April 2020, 01:51:21 UTC
b248f94 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 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 Make sure simplify_correlated_differences doesn't hop over inner constants that shadow outer non-constants 13 April 2020, 23:14:52 UTC
584a4a0 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 Merge remote-tracking branch 'origin/master' into add_image_checks_simplifier_changes 11 April 2020, 20:30:34 UTC
1bcb0a0 It's not worth trying to cancel unknowns in simplify_correlated_differences 11 April 2020, 20:21:21 UTC
2ffdca7 Merge remote-tracking branch 'origin/reverse_topological_order' into add_image_checks_simplifier_changes 11 April 2020, 19:06:09 UTC
0e01b9d 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 Merge pull request #4846 from halide/pelikan-fix-const-bounds clone of #4845 for buildbots 11 April 2020, 19:02:39 UTC
81b32de We want reverse topological order for let bounds 11 April 2020, 19:00:44 UTC
b2a007b third time's the charm: use alexreinking's version 11 April 2020, 02:11:47 UTC
d756af6 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 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 Make simplify_correlated_lets more aggressive 10 April 2020, 22:54:10 UTC
14eff0e 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 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 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 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 Make sure the negative tests fail if the expected error is absent. 10 April 2020, 18:15:48 UTC
3a3881f In trunk llvm it is no longer legal to call a Value directly 10 April 2020, 18:13:15 UTC
6831b27 Indentation fix. 10 April 2020, 17:10:56 UTC
ee7fdc7 Add KeyError generation for out-of-bounds RDom[i] requests. 10 April 2020, 17:08:19 UTC
940d523 Add RDom[i] method to Python bindings. 10 April 2020, 16:51:59 UTC
e0524d1 Move progress_made to the place where it was actually made + updated comments 10 April 2020, 16:47:25 UTC
baa321d Update compute_with tests 10 April 2020, 16:44:57 UTC
210d62f Add more explanatory comments 10 April 2020, 16:10:41 UTC
e0d6f03 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 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 Do a proper topological sort 09 April 2020, 18:45:34 UTC
9cad075 Appease clang-format 09 April 2020, 17:35:34 UTC
054f9eb Add comment 09 April 2020, 17:34:55 UTC
8d8b3a6 Use Andrew's better version of trim_scope_push() 09 April 2020, 17:33:02 UTC
97c7b89 Merge pull request #4838 from halide/srj-derecurse Remove recursion in trim_scope_pop() 09 April 2020, 17:08:16 UTC
fbc57db fix indent 09 April 2020, 00:37:02 UTC
e8ca80e fix indent 09 April 2020, 00:36:27 UTC
0f2bfc9 Avoid adding duplicate children in trim_scope_push 09 April 2020, 00:33:42 UTC
d98c850 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 Error message for the case of cycle in the fused group. 08 April 2020, 17:15:42 UTC
b66a315 Replace std::pair with the named structure to improve readability + expand the comment. 08 April 2020, 16:44:58 UTC
b8857e2 Fix typo 08 April 2020, 05:20:57 UTC
30d80e7 Merge branch 'master' into compute_with_update 08 April 2020, 05:17:49 UTC
f335a2b 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 Account for canonicalization of EQ 07 April 2020, 21:26:16 UTC
c7246d1 Slight cleanup of commutative helper 07 April 2020, 19:13:09 UTC
ff4f917 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 Merge pull request #4836 from halide/srj-pip Fix visibility in Pipeline.h 07 April 2020, 16:51:29 UTC
9ca43a1 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 Merge pull request #4835 from halide/srj-remove-parammap-from-py Remove ParamMap from Python Bindings 07 April 2020, 00:28:17 UTC
86c5b60 Merge pull request #4833 from halide/srj-pmbuf Tweak to ParamMap API 07 April 2020, 00:27:30 UTC
22d11fd 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 Tweak to ParamMap API 06 April 2020, 18:35:22 UTC
3a67edd Merge pull request #4832 from halide/push_rval Reduce number of copies in Scope::push 06 April 2020, 17:47:24 UTC
60dac03 Merge pull request #4830 from halide/srj-interval Move most Interval method bodies to the .cpp file 05 April 2020, 02:10:15 UTC
back to top