From abd86de05499d3a8fbb2eeb9bf1c34c67d46a19a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Christian=20W=C3=BCrdig?= Date: Fri, 18 Aug 2006 14:14:00 +0000 Subject: [PATCH] another long long test --- ir/be/test/ll.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 ir/be/test/ll.c diff --git a/ir/be/test/ll.c b/ir/be/test/ll.c new file mode 100644 index 000000000..72fdfee39 --- /dev/null +++ b/ir/be/test/ll.c @@ -0,0 +1,87 @@ +#include +#include + +typedef long long int ll_t; + +#ifndef _WIN32 +ll_t mul_ll(ll_t a, ll_t b) __attribute__((noinline)); +ll_t shl_ll(ll_t a, ll_t b) __attribute__((noinline)); +ll_t shr_ll(ll_t a, ll_t b) __attribute__((noinline)); +ll_t add_ll(ll_t a, ll_t b) __attribute__((noinline)); +ll_t sub_ll(ll_t a, ll_t b) __attribute__((noinline)); +ll_t div_ll(ll_t a, ll_t b) __attribute__((noinline)); +ll_t mod_ll(ll_t a, ll_t b) __attribute__((noinline)); +ll_t divmod_ll(ll_t a, ll_t b) __attribute__((noinline)); +ll_t abs_ll(ll_t a) __attribute__((noinline)); +ll_t neg_ll(ll_t a) __attribute__((noinline)); +#endif + +ll_t mul_ll(ll_t a, ll_t b) { + return a * b; +} + +ll_t shl_ll(ll_t a, ll_t b) { + return a << b; +} + +ll_t shr_ll(ll_t a, ll_t b) { + return a >> b; +} + +ll_t add_ll(ll_t a, ll_t b) { + return a + b; +} + +ll_t sub_ll(ll_t a, ll_t b) { + return a - b; +} + +ll_t div_ll(ll_t a, ll_t b) { + return a / b; +} + +ll_t mod_ll(ll_t a, ll_t b) { + return a % b; +} + +ll_t divmod_ll(ll_t a, ll_t b) { + return (a / b) + (a % b); +} + +ll_t neg_ll(ll_t a) { + return -a; +} + +ll_t abs_ll(ll_t a) { + return llabs(a); +} + +double conv_ll_d(ll_t a) { + return (double)a; +} + +ll_t conv_d_ll(double a) { + return (ll_t)a; +} + +int main(void) { + ll_t a = 0xff; + ll_t b = 0x123456789; + ll_t c = 0x8001023000002460; + double d = (double)c; + + printf("%lld * %lld = %lld\n", a, b, mul_ll(a, b)); + printf("%lld + %lld = %lld\n", a, b, add_ll(a, b)); + printf("%lld - %lld = %lld\n", a, b, sub_ll(a, b)); + printf("%lld / %lld = %lld\n", a, b, div_ll(a, b)); + printf("%lld % %lld = %lld\n", a, b, mod_ll(a, b)); + printf("%lld / + % %lld = %lld\n", a, b, divmod_ll(a, b)); + printf("%lld << %lld = %lld\n", a, 2, shl_ll(a, 2)); + printf("%lld >> %lld = %lld\n", a, 2, shr_ll(a, 2)); + printf("abs(%lld) = %lld\n", c, abs_ll(c)); + printf("neg(%lld) = %lld\n", b, neg_ll(b)); + printf("conv(%lld) = %lf\n", c, conv_ll_d(c)); + printf("conv(%lf) = %lld\n", d, conv_d_ll(d)); + + return 0; +} -- 2.20.1