-/** extended tests for shift operations, added by\r
- Frieder Ferlemann to check for bugs related to bug 1533966\r
-\r
- size: 8,16,32\r
- right: 0,1\r
- vol: 0,1\r
- sign: u,\r
-*/\r
-#include <testfwk.h>\r
-#ifdef __sun__\r
-# include <inttypes.h>\r
-#else\r
-# include <stdint.h>\r
-#endif\r
-\r
-#define SIZE ({size})\r
-#define RIGHT ({right})\r
-#define VOL ({vol})\r
-\r
-#if SIZE == 8\r
-# define TYPE {sign}int8_t\r
-# define TEST_VECT 0xa4\r
-#endif\r
-\r
-#if SIZE == 16\r
-# define TYPE {sign}int16_t\r
-# define TEST_VECT 0xa8ce\r
-#endif\r
-\r
-#if SIZE == 32\r
-# define TYPE {sign}int32_t\r
-# define TEST_VECT 0xa8b5c4d6\r
-#endif\r
-\r
-#if RIGHT == 0\r
-# define SHIFT(x,y) (TYPE)((TYPE)(x)<<(y))\r
-#else\r
-# define SHIFT(x,y) (TYPE)((TYPE)(x)>>(y))\r
-#endif\r
-\r
-#if VOL == 0\r
- volatile TYPE s = TEST_VECT;\r
- TYPE t;\r
- #define TESTSHIFT(x) t=s; t = SHIFT (t,(x)); ASSERT( t == SHIFT (TEST_VECT, (x)));\r
-#else\r
- volatile TYPE t = TEST_VECT;\r
- #define TESTSHIFT(x) t=TEST_VECT; t = SHIFT (t,(x)); ASSERT( t == SHIFT (TEST_VECT, (x)));\r
-#endif\r
-\r
-static void\r
-testShift(void)\r
-{\r
- TESTSHIFT(0);\r
- TESTSHIFT(1);\r
- TESTSHIFT(2);\r
- TESTSHIFT(3);\r
- TESTSHIFT(4);\r
- TESTSHIFT(5);\r
- TESTSHIFT(6);\r
- TESTSHIFT(7);\r
-\r
-#if SIZE >= 16\r
- TESTSHIFT(8);\r
- TESTSHIFT(9);\r
- TESTSHIFT(10);\r
- TESTSHIFT(11);\r
- TESTSHIFT(12);\r
- TESTSHIFT(13);\r
- TESTSHIFT(14);\r
- TESTSHIFT(15);\r
-#endif\r
-\r
-#if SIZE >= 32\r
- TESTSHIFT(16);\r
- TESTSHIFT(17);\r
- TESTSHIFT(18);\r
- TESTSHIFT(19);\r
- TESTSHIFT(20);\r
- TESTSHIFT(21);\r
- TESTSHIFT(22);\r
- TESTSHIFT(23);\r
-\r
- TESTSHIFT(24);\r
- TESTSHIFT(25);\r
- TESTSHIFT(26);\r
- TESTSHIFT(27);\r
- TESTSHIFT(28);\r
- TESTSHIFT(29);\r
- TESTSHIFT(30);\r
- TESTSHIFT(31);\r
-#endif\r
-}\r
+/** extended tests for shift operations, added by
+ Frieder Ferlemann to check for bugs related to bug 1533966
+
+ size: 8,16,32
+ right: 0,1
+ vol: 0,1
+ sign: u,
+*/
+#include <testfwk.h>
+#ifdef __sun__
+# include <inttypes.h>
+#else
+# include <stdint.h>
+#endif
+
+#define SIZE ({size})
+#define RIGHT ({right})
+#define VOL ({vol})
+
+#if SIZE == 8
+# define TYPE {sign}int8_t
+# define TEST_VECT 0xa4
+#endif
+
+#if SIZE == 16
+# define TYPE {sign}int16_t
+# define TEST_VECT 0xa8ce
+#endif
+
+#if SIZE == 32
+# define TYPE {sign}int32_t
+# define TEST_VECT 0xa8b5c4d6
+#endif
+
+#if RIGHT == 0
+# define SHIFT(x,y) (TYPE)((TYPE)(x)<<(y))
+#else
+# define SHIFT(x,y) (TYPE)((TYPE)(x)>>(y))
+#endif
+
+#if VOL == 0
+ volatile TYPE s = TEST_VECT;
+ TYPE t;
+ #define TESTSHIFT(x) t=s; t = SHIFT (t,(x)); ASSERT( t == SHIFT (TEST_VECT, (x)));
+#else
+ volatile TYPE t = TEST_VECT;
+ #define TESTSHIFT(x) t=TEST_VECT; t = SHIFT (t,(x)); ASSERT( t == SHIFT (TEST_VECT, (x)));
+#endif
+
+static void
+testShift(void)
+{
+ TESTSHIFT(0);
+ TESTSHIFT(1);
+ TESTSHIFT(2);
+ TESTSHIFT(3);
+ TESTSHIFT(4);
+ TESTSHIFT(5);
+ TESTSHIFT(6);
+ TESTSHIFT(7);
+
+#if SIZE >= 16
+ TESTSHIFT(8);
+ TESTSHIFT(9);
+ TESTSHIFT(10);
+ TESTSHIFT(11);
+ TESTSHIFT(12);
+ TESTSHIFT(13);
+ TESTSHIFT(14);
+ TESTSHIFT(15);
+#endif
+
+#if SIZE >= 32
+ TESTSHIFT(16);
+ TESTSHIFT(17);
+ TESTSHIFT(18);
+ TESTSHIFT(19);
+ TESTSHIFT(20);
+ TESTSHIFT(21);
+ TESTSHIFT(22);
+ TESTSHIFT(23);
+
+ TESTSHIFT(24);
+ TESTSHIFT(25);
+ TESTSHIFT(26);
+ TESTSHIFT(27);
+ TESTSHIFT(28);
+ TESTSHIFT(29);
+ TESTSHIFT(30);
+ TESTSHIFT(31);
+#endif
+}