diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-11-26 22:38:21 +0100 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-11-27 17:26:40 +0100 |
| commit | fbd81ed45d5889db28c9d60696048a97dc0ca8cb (patch) | |
| tree | 86c0b0be8b1003e43eb02d9d1d771e05d58c639a /validation/optim/fact-and-shift.c | |
| parent | 540c2c4bf47f0c517c042ff689679b2900bb36a5 (diff) | |
| download | sparse-dev-fbd81ed45d5889db28c9d60696048a97dc0ca8cb.tar.gz | |
add testscases for some factorization of distributive operations
Add some testcases for factorizations of:
(x * z) + (y * z) --> (x + y) * z
(x | z) & (y | z) --> (x & y) | z
(x & z) | (y & z) --> (x | y) & z
(x & z) ^ (y & z) --> (x ^ y) & z
and
(x << s) | (y << s) --> ((x | y) << s)
and same for &, ^, LSR and ASR.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation/optim/fact-and-shift.c')
| -rw-r--r-- | validation/optim/fact-and-shift.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/validation/optim/fact-and-shift.c b/validation/optim/fact-and-shift.c new file mode 100644 index 00000000..40175021 --- /dev/null +++ b/validation/optim/fact-and-shift.c @@ -0,0 +1,27 @@ +typedef unsigned int uint; +typedef signed int sint; + + +uint fact_and_shl(uint a, uint b, uint s) +{ + return ((a << s) & (b << s)) == ((a & b) << s); +} + +uint fact_and_lsr(uint a, uint b, uint s) +{ + return ((a >> s) & (b >> s)) == ((a & b) >> s); +} + +sint fact_and_asr(sint a, sint b, sint s) +{ + return ((a >> s) & (b >> s)) == ((a & b) >> s); +} + +/* + * check-name: fact-and-shift + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-returns: 1 + */ |
