From 5ded12bf5f63929bfa145d32c0c74fc9881c0779 Mon Sep 17 00:00:00 2001 From: Martin Perner Date: Mon, 17 May 2010 19:12:24 +0200 Subject: [PATCH] Some testcasees based on mrstrcmp_12/13 Testing if the code also works with faktors that are not valid scales for lea Also tests other trees where lea can be applied --- codea/skinner33_04.0 | 15 ++++++++++++ codea/skinner33_04.call | 50 ++++++++++++++++++++++++++++++++++++++++ codea/skinner33_04.instr | 1 + codea/skinner33_05.0 | 11 +++++++++ codea/skinner33_05.call | 43 ++++++++++++++++++++++++++++++++++ codea/skinner33_05.instr | 1 + codea/skinner33_06.0 | 15 ++++++++++++ codea/skinner33_06.call | 50 ++++++++++++++++++++++++++++++++++++++++ codea/skinner33_06.instr | 1 + codea/skinner33_07.0 | 7 ++++++ codea/skinner33_07.call | 28 ++++++++++++++++++++++ codea/skinner33_07.instr | 1 + codea/skinner33_08.0 | 7 ++++++ codea/skinner33_08.call | 28 ++++++++++++++++++++++ codea/skinner33_08.instr | 1 + codea/skinner33_09.0 | 7 ++++++ codea/skinner33_09.call | 28 ++++++++++++++++++++++ codea/skinner33_09.instr | 1 + codea/skinner33_10.0 | 7 ++++++ codea/skinner33_10.call | 28 ++++++++++++++++++++++ codea/skinner33_10.instr | 1 + codea/skinner33_11.0 | 7 ++++++ codea/skinner33_11.call | 27 ++++++++++++++++++++++ codea/skinner33_11.instr | 1 + codea/skinner33_12.0 | 7 ++++++ codea/skinner33_12.call | 27 ++++++++++++++++++++++ codea/skinner33_12.instr | 1 + codea/skinner33_13.0 | 7 ++++++ codea/skinner33_13.call | 27 ++++++++++++++++++++++ codea/skinner33_13.instr | 1 + codea/skinner33_14.0 | 7 ++++++ codea/skinner33_14.call | 27 ++++++++++++++++++++++ codea/skinner33_14.instr | 1 + 33 files changed, 471 insertions(+) create mode 100644 codea/skinner33_04.0 create mode 100644 codea/skinner33_04.call create mode 100644 codea/skinner33_04.instr create mode 100644 codea/skinner33_05.0 create mode 100644 codea/skinner33_05.call create mode 100644 codea/skinner33_05.instr create mode 100644 codea/skinner33_06.0 create mode 100644 codea/skinner33_06.call create mode 100644 codea/skinner33_06.instr create mode 100644 codea/skinner33_07.0 create mode 100644 codea/skinner33_07.call create mode 100644 codea/skinner33_07.instr create mode 100644 codea/skinner33_08.0 create mode 100644 codea/skinner33_08.call create mode 100644 codea/skinner33_08.instr create mode 100644 codea/skinner33_09.0 create mode 100644 codea/skinner33_09.call create mode 100644 codea/skinner33_09.instr create mode 100644 codea/skinner33_10.0 create mode 100644 codea/skinner33_10.call create mode 100644 codea/skinner33_10.instr create mode 100644 codea/skinner33_11.0 create mode 100644 codea/skinner33_11.call create mode 100644 codea/skinner33_11.instr create mode 100644 codea/skinner33_12.0 create mode 100644 codea/skinner33_12.call create mode 100644 codea/skinner33_12.instr create mode 100644 codea/skinner33_13.0 create mode 100644 codea/skinner33_13.call create mode 100644 codea/skinner33_13.instr create mode 100644 codea/skinner33_14.0 create mode 100644 codea/skinner33_14.call create mode 100644 codea/skinner33_14.instr diff --git a/codea/skinner33_04.0 b/codea/skinner33_04.0 new file mode 100644 index 0000000..10b8940 --- /dev/null +++ b/codea/skinner33_04.0 @@ -0,0 +1,15 @@ +method f1(a b) + return a - (-3 * b); +end; + +method f2(a b) + return a - (2 * b); +end; + +method f3(a b) + return a - (5 * b); +end; + +method f(a b c d) + return a - (8 * (b - (-4 * (c - (-3 * d))))); +end; diff --git a/codea/skinner33_04.call b/codea/skinner33_04.call new file mode 100644 index 0000000..d83320d --- /dev/null +++ b/codea/skinner33_04.call @@ -0,0 +1,50 @@ +#define F1(a,b) ((long)(a) - (-3UL * (long)(b))) +#define F2(a,b) ((long)(a) - (2UL * (long)(b))) +#define F3(a,b) ((long)(a) - (5UL * (long)(b))) +#define F(a,b,c,d) ((long)(a) - (8UL * ((long)(b) - (-4UL * ((long)(c) - (-3UL * (long)(d))))))) + +/* based on mrstrcmp_13 + in our language the lea opts are only possible for -1, -2, -4 and -8 + this testcase tests other constants +*/ + +long f1(long, long, long); +long f2(long, long, long); +long f3(long, long, long); +long f(long, long, long, long, long); + +RET(f1(0, 3, 20) == F1( 3, 20) && + f1(0, -100, 80) == F1(-100, 80) && + f1(0, 50, -9) == F1( 50, -9) && + f1(0, -77, -50) == F1( -77, -50) && + + f2(0, 3, 20) == F2( 3, 20) && + f2(0, -100, 80) == F2(-100, 80) && + f2(0, 50, -9) == F2( 50, -9) && + f2(0, -77, -50) == F2( -77, -50) && + + f3(0, 3, 20) == F3( 3, 20) && + f3(0, -100, 80) == F3(-100, 80) && + f3(0, 50, -9) == F3( 50, -9) && + f3(0, -77, -50) == F3( -77, -50) && + + f(0, 10, 20, 30, 40) == F( 10, 20, 30, 40) && + f(0, -10, 20, -30, 40) == F(-10, 20, -30, 40) && + f(0, 10, -20, 30, -40) == F( 10, -20, 30, -40) && + f(0, -10, -20, -30, -40) == F(-10, -20, -30, -40) && + + f1(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F1(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + f2(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F2(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + f3(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F3(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + + f1(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F1(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) && + f2(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F2(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) && + f3(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F3(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) + ); + diff --git a/codea/skinner33_04.instr b/codea/skinner33_04.instr new file mode 100644 index 0000000..3b20426 --- /dev/null +++ b/codea/skinner33_04.instr @@ -0,0 +1 @@ +108 diff --git a/codea/skinner33_05.0 b/codea/skinner33_05.0 new file mode 100644 index 0000000..e680181 --- /dev/null +++ b/codea/skinner33_05.0 @@ -0,0 +1,11 @@ +method f1(a b) + return (-3 * b) - a; +end; + +method f2(a b) + return (2 * b) - a; +end; + +method f3(a b) + return (5 * b) - a; +end; diff --git a/codea/skinner33_05.call b/codea/skinner33_05.call new file mode 100644 index 0000000..5c88f7a --- /dev/null +++ b/codea/skinner33_05.call @@ -0,0 +1,43 @@ +#define F1(a,b) ((-3UL * (long)(b)) - (long)(a)) +#define F2(a,b) ((2UL * (long)(b)) - (long)(a)) +#define F3(a,b) ((5UL * (long)(b)) - (long)(a)) + + +/* based on mrstrcmp_13 + this testcase tests an other order of ops where no lea is possible +*/ + +long f1(long, long, long); +long f2(long, long, long); +long f3(long, long, long); + +RET(f1(0, 3, 20) == F1( 3, 20) && + f1(0, -100, 80) == F1(-100, 80) && + f1(0, 50, -9) == F1( 50, -9) && + f1(0, -77, -50) == F1( -77, -50) && + + f2(0, 3, 20) == F2( 3, 20) && + f2(0, -100, 80) == F2(-100, 80) && + f2(0, 50, -9) == F2( 50, -9) && + f2(0, -77, -50) == F2( -77, -50) && + + f3(0, 3, 20) == F3( 3, 20) && + f3(0, -100, 80) == F3(-100, 80) && + f3(0, 50, -9) == F3( 50, -9) && + f3(0, -77, -50) == F3( -77, -50) && + + f1(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F1(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + f2(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F2(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + f3(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F3(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + + f1(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F1(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) && + f2(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F2(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) && + f3(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F3(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) + ); + diff --git a/codea/skinner33_05.instr b/codea/skinner33_05.instr new file mode 100644 index 0000000..fb1e7bc --- /dev/null +++ b/codea/skinner33_05.instr @@ -0,0 +1 @@ +54 diff --git a/codea/skinner33_06.0 b/codea/skinner33_06.0 new file mode 100644 index 0000000..cc943e1 --- /dev/null +++ b/codea/skinner33_06.0 @@ -0,0 +1,15 @@ +method f1(a b) + return a - (b * -3); +end; + +method f2(a b) + return a - (b * 2); +end; + +method f3(a b) + return a - (b * 5); +end; + +method f(a b c d) + return a - ((b - ((c - (d * -3)) * -4)) * 8); +end; diff --git a/codea/skinner33_06.call b/codea/skinner33_06.call new file mode 100644 index 0000000..7ea7701 --- /dev/null +++ b/codea/skinner33_06.call @@ -0,0 +1,50 @@ +#define F1(a,b) ((long)(a) - ((long)(b) * -3UL)) +#define F2(a,b) ((long)(a) - ((long)(b) * 2UL)) +#define F3(a,b) ((long)(a) - ((long)(b) * 5UL)) +#define F(a,b,c,d) ((long)(a) - (8UL * ((long)(b) - (-4UL * ((long)(c) - (-3UL * (long)(d))))))) + + +/* based on mrstrcmp_14 + in our language the lea opts are only possible for -1, -2, -4 and -8 + this testcase tests other constants and other op order in mul +*/ + +long f1(long, long, long); +long f2(long, long, long); +long f3(long, long, long); +long f(long, long, long, long, long); + +RET(f1(0, 3, 20) == F1( 3, 20) && + f1(0, -100, 80) == F1(-100, 80) && + f1(0, 50, -9) == F1( 50, -9) && + f1(0, -77, -50) == F1( -77, -50) && + + f2(0, 3, 20) == F2( 3, 20) && + f2(0, -100, 80) == F2(-100, 80) && + f2(0, 50, -9) == F2( 50, -9) && + f2(0, -77, -50) == F2( -77, -50) && + + f3(0, 3, 20) == F3( 3, 20) && + f3(0, -100, 80) == F3(-100, 80) && + f3(0, 50, -9) == F3( 50, -9) && + f3(0, -77, -50) == F3( -77, -50) && + + f(0, 10, 20, 30, 40) == F( 10, 20, 30, 40) && + f(0, -10, 20, -30, 40) == F(-10, 20, -30, 40) && + f(0, 10, -20, 30, -40) == F( 10, -20, 30, -40) && + f(0, -10, -20, -30, -40) == F(-10, -20, -30, -40) && + + f1(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F1(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + f2(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F2(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + f3(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F3(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + + f1(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F1(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) && + f2(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F2(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) && + f3(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F3(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) + ); diff --git a/codea/skinner33_06.instr b/codea/skinner33_06.instr new file mode 100644 index 0000000..3b20426 --- /dev/null +++ b/codea/skinner33_06.instr @@ -0,0 +1 @@ +108 diff --git a/codea/skinner33_07.0 b/codea/skinner33_07.0 new file mode 100644 index 0000000..3191ec2 --- /dev/null +++ b/codea/skinner33_07.0 @@ -0,0 +1,7 @@ +method f1(a b c) + return a - ((b - c) * -2); +end; + +method f2(a b c) + return a - ((b - c) * -3); +end; diff --git a/codea/skinner33_07.call b/codea/skinner33_07.call new file mode 100644 index 0000000..62902cc --- /dev/null +++ b/codea/skinner33_07.call @@ -0,0 +1,28 @@ +#define F1(a,b,c) ((long)(a) -(((long)(b) - (long)(c)) * -2UL)) +#define F2(a,b,c) ((long)(a) -(((long)(b) - (long)(c)) * -3UL)) + + +long f1(long, long, long, long); +long f2(long, long, long, long); + +RET(f1(0, 3, 20, 15) == F1( 3, 20, 15) && + f1(0, -100, 80, 23) == F1(-100, 80, 23) && + f1(0, 50, -9, -5) == F1( 50, -9, -5) && + f1(0, -77, -50, 87) == F1( -77, -50, 87) && + + f2(0, 3, 20, 15) == F2( 3, 20, 15) && + f2(0, -100, 80, 23) == F2(-100, 80, 23) && + f2(0, 50, -9, -5) == F2( 50, -9, -5) && + f2(0, -77, -50, 87) == F2( -77, -50, 87) && + + f1(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F1(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + f2(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F2(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + + f1(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F1(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) && + f2(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F2(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) + ); + diff --git a/codea/skinner33_07.instr b/codea/skinner33_07.instr new file mode 100644 index 0000000..69a893a --- /dev/null +++ b/codea/skinner33_07.instr @@ -0,0 +1 @@ +66 diff --git a/codea/skinner33_08.0 b/codea/skinner33_08.0 new file mode 100644 index 0000000..55a4687 --- /dev/null +++ b/codea/skinner33_08.0 @@ -0,0 +1,7 @@ +method f1(a b c) + return a - (-2 * (b - c)); +end; + +method f2(a b c) + return a - (-3 * (b - c)); +end; diff --git a/codea/skinner33_08.call b/codea/skinner33_08.call new file mode 100644 index 0000000..2fbb006 --- /dev/null +++ b/codea/skinner33_08.call @@ -0,0 +1,28 @@ +#define F1(a,b,c) ((long)(a) -(-2UL * ((long)(b) - (long)(c)))) +#define F2(a,b,c) ((long)(a) -(-3UL * ((long)(b) - (long)(c)))) + + +long f1(long, long, long, long); +long f2(long, long, long, long); + +RET(f1(0, 3, 20, 15) == F1( 3, 20, 15) && + f1(0, -100, 80, 23) == F1(-100, 80, 23) && + f1(0, 50, -9, -5) == F1( 50, -9, -5) && + f1(0, -77, -50, 87) == F1( -77, -50, 87) && + + f2(0, 3, 20, 15) == F2( 3, 20, 15) && + f2(0, -100, 80, 23) == F2(-100, 80, 23) && + f2(0, 50, -9, -5) == F2( 50, -9, -5) && + f2(0, -77, -50, 87) == F2( -77, -50, 87) && + + f1(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F1(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + f2(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F2(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + + f1(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F1(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) && + f2(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F2(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) + ); + diff --git a/codea/skinner33_08.instr b/codea/skinner33_08.instr new file mode 100644 index 0000000..69a893a --- /dev/null +++ b/codea/skinner33_08.instr @@ -0,0 +1 @@ +66 diff --git a/codea/skinner33_09.0 b/codea/skinner33_09.0 new file mode 100644 index 0000000..ae8403d --- /dev/null +++ b/codea/skinner33_09.0 @@ -0,0 +1,7 @@ +method f1(a b c) + return ((b - c) * -2) - a; +end; + +method f2(a b c) + return ((b - c) * -3) - a; +end; diff --git a/codea/skinner33_09.call b/codea/skinner33_09.call new file mode 100644 index 0000000..224059c --- /dev/null +++ b/codea/skinner33_09.call @@ -0,0 +1,28 @@ +#define F1(a,b,c) ((((long)(b) - (long)(c)) * -2UL) - (long)(a)) +#define F2(a,b,c) ((((long)(b) - (long)(c)) * -3UL) - (long)(a)) + + +long f1(long, long, long, long); +long f2(long, long, long, long); + +RET(f1(0, 3, 20, 15) == F1( 3, 20, 15) && + f1(0, -100, 80, 23) == F1(-100, 80, 23) && + f1(0, 50, -9, -5) == F1( 50, -9, -5) && + f1(0, -77, -50, 87) == F1( -77, -50, 87) && + + f2(0, 3, 20, 15) == F2( 3, 20, 15) && + f2(0, -100, 80, 23) == F2(-100, 80, 23) && + f2(0, 50, -9, -5) == F2( 50, -9, -5) && + f2(0, -77, -50, 87) == F2( -77, -50, 87) && + + f1(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F1(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + f2(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F2(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + + f1(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F1(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) && + f2(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F2(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) + ); + diff --git a/codea/skinner33_09.instr b/codea/skinner33_09.instr new file mode 100644 index 0000000..abdfb05 --- /dev/null +++ b/codea/skinner33_09.instr @@ -0,0 +1 @@ +60 diff --git a/codea/skinner33_10.0 b/codea/skinner33_10.0 new file mode 100644 index 0000000..6c08195 --- /dev/null +++ b/codea/skinner33_10.0 @@ -0,0 +1,7 @@ +method f1(a b c) + return (-2 * (b - c)) - a; +end; + +method f2(a b c) + return (-3 * (b - c)) - a; +end; diff --git a/codea/skinner33_10.call b/codea/skinner33_10.call new file mode 100644 index 0000000..a2eb7e9 --- /dev/null +++ b/codea/skinner33_10.call @@ -0,0 +1,28 @@ +#define F1(a,b,c) ((-2UL * ((long)(b) - (long)(c))) - (long)(a)) +#define F2(a,b,c) ((-3UL * ((long)(b) - (long)(c))) - (long)(a)) + + +long f1(long, long, long, long); +long f2(long, long, long, long); + +RET(f1(0, 3, 20, 15) == F1( 3, 20, 15) && + f1(0, -100, 80, 23) == F1(-100, 80, 23) && + f1(0, 50, -9, -5) == F1( 50, -9, -5) && + f1(0, -77, -50, 87) == F1( -77, -50, 87) && + + f2(0, 3, 20, 15) == F2( 3, 20, 15) && + f2(0, -100, 80, 23) == F2(-100, 80, 23) && + f2(0, 50, -9, -5) == F2( 50, -9, -5) && + f2(0, -77, -50, 87) == F2( -77, -50, 87) && + + f1(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F1(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + f2(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F2(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + + f1(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F1(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) && + f2(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F2(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) + ); + diff --git a/codea/skinner33_10.instr b/codea/skinner33_10.instr new file mode 100644 index 0000000..abdfb05 --- /dev/null +++ b/codea/skinner33_10.instr @@ -0,0 +1 @@ +60 diff --git a/codea/skinner33_11.0 b/codea/skinner33_11.0 new file mode 100644 index 0000000..2aebf85 --- /dev/null +++ b/codea/skinner33_11.0 @@ -0,0 +1,7 @@ +method f1(a b) + return (a - b) - (-3 * b); +end; + +method f2(a b) + return (a -b) - (-2 * b); +end; diff --git a/codea/skinner33_11.call b/codea/skinner33_11.call new file mode 100644 index 0000000..3c9cdce --- /dev/null +++ b/codea/skinner33_11.call @@ -0,0 +1,27 @@ +#define F1(a,b) (((long)(a) - (long)(b)) - (-3UL * (long)(b))) +#define F2(a,b) (((long)(a) - (long)(b)) - (-2UL * (long)(b))) + +long f1(long, long, long); +long f2(long, long, long); + +RET(f1(0, 3, 20) == F1( 3, 20) && + f1(0, -100, 80) == F1(-100, 80) && + f1(0, 50, -9) == F1( 50, -9) && + f1(0, -77, -50) == F1( -77, -50) && + + f2(0, 3, 20) == F2( 3, 20) && + f2(0, -100, 80) == F2(-100, 80) && + f2(0, 50, -9) == F2( 50, -9) && + f2(0, -77, -50) == F2( -77, -50) && + + f1(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F1(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + f2(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F2(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + + f1(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F1(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) && + f2(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F2(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) + ); + diff --git a/codea/skinner33_11.instr b/codea/skinner33_11.instr new file mode 100644 index 0000000..fb1e7bc --- /dev/null +++ b/codea/skinner33_11.instr @@ -0,0 +1 @@ +54 diff --git a/codea/skinner33_12.0 b/codea/skinner33_12.0 new file mode 100644 index 0000000..1835cfe --- /dev/null +++ b/codea/skinner33_12.0 @@ -0,0 +1,7 @@ +method f1(a b) + return (a - b) - (b * -3); +end; + +method f2(a b) + return (a -b) - (b * -2); +end; diff --git a/codea/skinner33_12.call b/codea/skinner33_12.call new file mode 100644 index 0000000..f18e5a2 --- /dev/null +++ b/codea/skinner33_12.call @@ -0,0 +1,27 @@ +#define F1(a,b) (((long)(a) - (long)(b)) - ((long)(b) * -3UL)) +#define F2(a,b) (((long)(a) - (long)(b)) - ((long)(b)* -2UL)) + +long f1(long, long, long); +long f2(long, long, long); + +RET(f1(0, 3, 20) == F1( 3, 20) && + f1(0, -100, 80) == F1(-100, 80) && + f1(0, 50, -9) == F1( 50, -9) && + f1(0, -77, -50) == F1( -77, -50) && + + f2(0, 3, 20) == F2( 3, 20) && + f2(0, -100, 80) == F2(-100, 80) && + f2(0, 50, -9) == F2( 50, -9) && + f2(0, -77, -50) == F2( -77, -50) && + + f1(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F1(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + f2(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F2(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + + f1(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F1(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) && + f2(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F2(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) + ); + diff --git a/codea/skinner33_12.instr b/codea/skinner33_12.instr new file mode 100644 index 0000000..fb1e7bc --- /dev/null +++ b/codea/skinner33_12.instr @@ -0,0 +1 @@ +54 diff --git a/codea/skinner33_13.0 b/codea/skinner33_13.0 new file mode 100644 index 0000000..5cf8b8b --- /dev/null +++ b/codea/skinner33_13.0 @@ -0,0 +1,7 @@ +method f1(a b) + return (a - b) - (-3 * (b - a)); +end; + +method f2(a b) + return (a - b) - (-2 * (b - a)); +end; diff --git a/codea/skinner33_13.call b/codea/skinner33_13.call new file mode 100644 index 0000000..77dace7 --- /dev/null +++ b/codea/skinner33_13.call @@ -0,0 +1,27 @@ +#define F1(a,b) (((long)(a) - (long)(b)) - (-3UL * ((long)(b) - (long)(a)))) +#define F2(a,b) (((long)(a) - (long)(b)) - (-2UL * ((long)(b) - (long)(a)))) + +long f1(long, long, long); +long f2(long, long, long); + +RET(f1(0, 3, 20) == F1( 3, 20) && + f1(0, -100, 80) == F1(-100, 80) && + f1(0, 50, -9) == F1( 50, -9) && + f1(0, -77, -50) == F1( -77, -50) && + + f2(0, 3, 20) == F2( 3, 20) && + f2(0, -100, 80) == F2(-100, 80) && + f2(0, 50, -9) == F2( 50, -9) && + f2(0, -77, -50) == F2( -77, -50) && + + f1(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F1(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + f2(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F2(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + + f1(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F1(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) && + f2(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F2(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) + ); + diff --git a/codea/skinner33_13.instr b/codea/skinner33_13.instr new file mode 100644 index 0000000..8e14edc --- /dev/null +++ b/codea/skinner33_13.instr @@ -0,0 +1 @@ +78 diff --git a/codea/skinner33_14.0 b/codea/skinner33_14.0 new file mode 100644 index 0000000..f03aab8 --- /dev/null +++ b/codea/skinner33_14.0 @@ -0,0 +1,7 @@ +method f1(a b) + return (a - b) - ((b - a) * -3); +end; + +method f2(a b) + return (a - b) - ((b - a) * -2); +end; diff --git a/codea/skinner33_14.call b/codea/skinner33_14.call new file mode 100644 index 0000000..714f7bd --- /dev/null +++ b/codea/skinner33_14.call @@ -0,0 +1,27 @@ +#define F1(a,b) (((long)(a) - (long)(b)) - (((long)(b) -(long)(a))* -3UL)) +#define F2(a,b) (((long)(a) - (long)(b)) - (((long)(b) -(long)(a))* -2UL)) + +long f1(long, long, long); +long f2(long, long, long); + +RET(f1(0, 3, 20) == F1( 3, 20) && + f1(0, -100, 80) == F1(-100, 80) && + f1(0, 50, -9) == F1( 50, -9) && + f1(0, -77, -50) == F1( -77, -50) && + + f2(0, 3, 20) == F2( 3, 20) && + f2(0, -100, 80) == F2(-100, 80) && + f2(0, 50, -9) == F2( 50, -9) && + f2(0, -77, -50) == F2( -77, -50) && + + f1(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F1(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + f2(0, 0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) == + F2(0x7FFFFFFFFFFFFFFFUL, 0x7FFFFFFFFFFFFFFFUL) && + + f1(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F1(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) && + f2(0, 0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) == + F2(0x8FFFFFFFFFFFFFFFUL, 0x8FFFFFFFFFFFFFFFUL) + ); + diff --git a/codea/skinner33_14.instr b/codea/skinner33_14.instr new file mode 100644 index 0000000..8e14edc --- /dev/null +++ b/codea/skinner33_14.instr @@ -0,0 +1 @@ +78 -- 2.25.1