From 5e8babf098ec00a6bafe9a0fd5f9cfb53746af56 Mon Sep 17 00:00:00 2001 From: David Given Date: Mon, 14 Nov 2016 22:12:13 +0100 Subject: [PATCH] Add a basic integer shift test. --- plat/qemuppc/tests/intshift.c | 52 +++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 plat/qemuppc/tests/intshift.c diff --git a/plat/qemuppc/tests/intshift.c b/plat/qemuppc/tests/intshift.c new file mode 100644 index 000000000..dd280142c --- /dev/null +++ b/plat/qemuppc/tests/intshift.c @@ -0,0 +1,52 @@ +#include "test.h" + +/* Constants in globals to defeat constant folding. */ +int one = 1; +int zero = 0; +int minusone = -1; + +/* Bypasses the CRT, so there's no stdio or BSS initialisation. */ +void _m_a_i_n(void) +{ + ASSERT((one <>zero) == 1); + ASSERT((one >>one) == 0); + ASSERT((minusone>>zero) == -1); + ASSERT((minusone>>one) == -1); + + ASSERT(((unsigned int)one >>(unsigned int)zero) == 1); + ASSERT(((unsigned int)one >>(unsigned int)one) == 0); + ASSERT(((unsigned int)minusone>>(unsigned int)zero) == 0xffffffff); + ASSERT(((unsigned int)minusone>>(unsigned int)one) == 0x7fffffff); + + ASSERT((one <<0) == 1); + ASSERT((one <<1) == 2); + ASSERT((minusone<<0) == -1); + ASSERT((minusone<<1) == -2); + + ASSERT(((unsigned int)one <<(unsigned int)0) == 1); + ASSERT(((unsigned int)one <<(unsigned int)1) == 2); + ASSERT(((unsigned int)minusone<<(unsigned int)0) == -1); + ASSERT(((unsigned int)minusone<<(unsigned int)1) == -2); + + ASSERT((one >>0) == 1); + ASSERT((one >>1) == 0); + ASSERT((minusone>>0) == -1); + ASSERT((minusone>>1) == -1); + + ASSERT(((unsigned int)one >>(unsigned int)0) == 1); + ASSERT(((unsigned int)one >>(unsigned int)1) == 0); + ASSERT(((unsigned int)minusone>>(unsigned int)0) == 0xffffffff); + ASSERT(((unsigned int)minusone>>(unsigned int)1) == 0x7fffffff); + + finished(); +} \ No newline at end of file -- 2.34.1