Commit Graph

48 Commits

Author SHA1 Message Date
Harikrishnan Mulackal
2b9f040c48 Optimize exp when base is -1 2020-09-29 17:44:09 +02:00
chriseth
684fff34a9 Replace exp by shl. 2020-09-17 16:06:52 +02:00
chriseth
233604f94b Remove ineffective rules. 2020-09-14 17:35:04 +02:00
chriseth
8e39110a30 Remove flag. 2020-09-14 17:35:04 +02:00
chriseth
a3a9630d8b Optimize byte-after-shr for shift amounts that are not multiples of 8. 2020-08-04 12:16:23 +02:00
Bhargava Shastry
5100effeec yul: Set non movable flag to true in simplification rule for byte of right-shifted expression 2020-08-03 17:30:52 +02:00
Sachin Grover
b7adb2aa42 Add SPDX license identifier if not present already in source file
Fixes: #9220
2020-07-17 20:24:12 +05:30
chriseth
59f4989966 Optimize combination of byte and shl. 2020-07-08 20:26:46 +02:00
Alexander Arlt
a7b89065ca [yul] Add support for EVM version-dependent rules. 2020-05-27 11:57:08 +02:00
chriseth
d136e7dc95 Rules for optimizing idempotency for bitwise operations. 2020-04-23 14:21:00 +02:00
Christian Parpart
345f9928ab Library libdevcore renamed to libsolutil. 2020-01-07 15:51:50 +01:00
Christian Parpart
6b23412fae C++ namespace cleanup (except tests). 2020-01-07 15:51:50 +01:00
chriseth
e70ef0b820 Simplify patterns. 2019-11-15 00:34:01 +01:00
chriseth
4b6647f6e1 Generalize word. 2019-11-07 14:33:34 +01:00
chriseth
fa02667075 Generalize instructions. 2019-11-07 14:33:34 +01:00
chriseth
c224b09bb3 Fix reordering bug in optimizer. 2019-09-17 12:33:00 +02:00
Bhargava Shastry
09fa31ccc5 yul: Add new optimizer rules for create and create2 builtins 2019-09-09 17:06:56 +02:00
chriseth
e86b5cf14e Replace byte(A, X) by zero if A >= 32 2019-08-29 15:35:34 +02:00
chriseth
633510eb04
Merge pull request #6935 from ethereum/subMaxValueXNotXRule
Add optimization rule SUB(~0, X) -> NOT(X).
2019-06-17 14:42:49 +02:00
Bhargava Shastry
e96003e709 optimizer: Remove redundant rule from the optimizer rule list 2019-06-17 13:41:48 +02:00
Daniel Kirchner
7f322c9433 Add optimization rule SUB(~0, X) -> NOT(X). 2019-06-14 14:07:46 +02:00
chriseth
f6437a2016 Optimizer rules that combine shifts and masks. 2019-05-15 20:30:53 +02:00
Daniel Kirchner
a5427bc63a Add optimizer rules for multiplication and division by left-shifted one. 2019-05-14 16:20:45 +02:00
Mathias Baumann
5c66ccc179 Optimize obsolete ANDs in combination with certain SHIFTs 2019-03-29 10:08:05 +01:00
Alex Beregszaszi
84fbf605aa Replace shifts by larger than 255 with 0 2019-03-29 10:07:54 +01:00
chriseth
2308904f68 Remove "using namespace" from header and move Instruction to dev::eth. 2019-03-28 13:48:11 +01:00
Bhargava Shastry
f7b5a27581 Fixes bug in byte optimization rule and adds tests. 2019-03-21 14:29:06 +01:00
chriseth
4c1a9aa273
Merge pull request #6256 from ethereum/completeLtGtRules
Complete the GT/LT rules.
2019-03-13 12:08:34 +01:00
chriseth
571f400a3e Complete the GT/LT rules. 2019-03-13 12:01:23 +01:00
Bhargava Shastry
515fa872c8 Fixes u256 overflow in logical shift optimization rule and adds tests. 2019-03-13 11:19:20 +01:00
chriseth
34082a2368
Merge pull request #6159 from ethereum/more-optims
More optimiser rules for LT/GT/AND/BYTE and address cleanups
2019-03-04 16:24:38 +01:00
Alex Beregszaszi
1272951bbb Do not mask with 160-bits after CREATE/CREATE2 2019-03-04 14:42:29 +01:00
Alex Beregszaszi
7aa2ee1775 More optimiser rules for LT/GT/AND/BYTE 2019-03-04 14:42:29 +01:00
Alex Beregszaszi
a7c2dba681 Document the boost multiprecision shift bug in RuleList 2019-03-04 13:37:20 +01:00
Alex Beregszaszi
4430fe6a54 Combine multiple shifts with constant shift-by values in the optimiser 2019-02-25 20:56:13 +00:00
Alex Beregszaszi
fd936439a4 Add more optimisation rules for shifts 2019-02-20 11:59:15 +00:00
Daniel Kirchner
870b656eda Split up rule list generation further to prevent issues in browsers with the emscripten build. 2019-01-18 17:02:47 +01:00
Daniel Kirchner
a1d73a7bef Split simplification rules into two functions. 2018-09-18 14:28:21 +02:00
Leo Arias
c4a3c48aea
Fix typo 2018-08-07 13:35:15 -06:00
Cryptomental
140dbfdbd8 Code, Changelog, ReleaseChecklist: Fix typos.
Refs: #4442
2018-07-11 00:26:23 +02:00
Alex Beregszaszi
38460d8b47 Remove unnecessary masking of the result of known short instructions 2018-04-19 23:59:06 +01:00
Alex Beregszaszi
cb352edd26 Add constant optimiser for SHR/SHL instructions 2018-04-09 20:07:44 +01:00
Alex Beregszaszi
037b97ef4a Replace MOD with AND if constant is power of 2 2018-02-12 22:47:04 +00:00
chriseth
c961a3079d Turn simplification rule tuple into struct. 2018-02-06 22:51:30 +01:00
chriseth
295f8c07ad Explicitly add reversed operands for commutative operations. 2018-02-06 22:51:30 +01:00
chriseth
9eea3f29ba Expression simplifier. 2018-02-06 22:51:30 +01:00
chriseth
b8074cdf78 Add flag to indicate whether it can be applied to expressions with side-effects. 2018-02-06 22:51:30 +01:00
chriseth
491d6d3e0c Move out the rule list. 2018-02-06 22:51:30 +01:00