fixed lots of warnings in testprograms
[libfirm] / ir / be / test / optest.h
index 8514cc9..67428b9 100644 (file)
@@ -1,10 +1,15 @@
+#include <string.h>
+
 #ifndef TESTANZ
-#define TESTANZ 16
+#define TESTANZ 21
 #define IMM         23
+#define IMM_SHIFT   4
 #define        test16_1        42
 #define        test16_2        11
-#define        test32_1        0x001200AB
-#define        test32_2        0x00341501
+#define test16_shift 7
+#define        test32_1        (T) 0x001200AB
+#define        test32_2        (T) 0x00341501
+#define test32_shift 5
 #define test32_s    7
 #endif
 
@@ -44,13 +49,23 @@ T tname(test_divi_) (T a) {
        return a/IMM;
 }
 
+#ifndef TEST_UNSIGNED
+T tname(test_abs_) (T a) {
+       return a < 0 ? -a : a;
+}
+
+T tname(test_neg_) (T a) {
+       return -a;
+}
+#endif
+
 #ifndef TEST_FLOAT
 T tname(test_shl_) (T a, T b) {
        return a<<b;
 }
 
 T tname(test_shli_) (T a) {
-       return a<<IMM;
+       return a<<IMM_SHIFT;
 }
 
 T tname(test_shr_) (T a, T b) {
@@ -58,7 +73,11 @@ T tname(test_shr_) (T a, T b) {
 }
 
 T tname(test_shri_) (T a) {
-       return a>>IMM;
+       return a>>IMM_SHIFT;
+}
+
+T tname(test_mod_) (T a, T b) {
+       return a%b;
 }
 #endif
 
@@ -76,49 +95,65 @@ T tname(res32_) [TESTANZ];
 void tname(test_) () {
        int i;
        T *res16 = tname(res16_);
+       memset(res16, 0, TESTANZ * sizeof(res16[0]));
        T *res32 = tname(res32_);
+       memset(res32, 0, TESTANZ * sizeof(res32[0]));
 
        res16[ 0] = tname(test_add_)  (test16_1, test16_2);
        res16[ 1] = tname(test_sub_)  (test16_1, test16_2);
        res16[ 2] = tname(test_mul_)  (test16_1, test16_2);
        res16[ 3] = tname(test_div_)  (test16_1, test16_2);
 #ifndef TEST_FLOAT
-       res16[ 4] = tname(test_shl_)  (test16_1, test16_2);
-       res16[ 5] = tname(test_shr_)  (test16_1, test16_2);
+       res16[ 4] = tname(test_shl_)  (test16_1, test16_shift);
+       res16[ 5] = tname(test_shr_)  (test16_1, test16_shift);
+       res16[ 6] = tname(test_mod_)  (test16_1, test16_2);
 #endif
-       res16[ 6] = tname(test_div_)  (test16_1, test16_2);
-       res16[ 7] = tname(test_cmp_)  (test16_1, test16_2);
-       res16[ 8] = tname(test_addi_) (test16_1);
-       res16[ 9] = tname(test_subi_) (test16_1);
-       res16[10] = tname(test_subfi_)(test16_1);
-       res16[11] = tname(test_muli_) (test16_1);
-       res16[12] = tname(test_divi_) (test16_1);
+       res16[ 7] = tname(test_div_)  (test16_1, test16_2);
+       res16[ 8] = tname(test_cmp_)  (test16_1, test16_2);
+       res16[ 9] = tname(test_addi_) (test16_1);
+       res16[10] = tname(test_subi_) (test16_1);
+       res16[11] = tname(test_subfi_)(test16_1);
+       res16[12] = tname(test_muli_) (test16_1);
+       res16[13] = tname(test_divi_) (test16_1);
 #ifndef TEST_FLOAT
-       res16[13] = tname(test_shli_) (test16_1);
-       res16[14] = tname(test_shri_) (test16_1);
+       res16[14] = tname(test_shli_) (test16_1);
+       res16[15] = tname(test_shri_) (test16_1);
+#endif
+       res16[16] = tname(test_cmpi_) (test16_1);
+#ifndef TEST_UNSIGNED
+       res16[17] = tname(test_neg_)  (test16_1);
+       res16[18] = tname(test_neg_)  (-test16_1);
+       res16[19] = tname(test_abs_)  (test16_1);
+       res16[20] = tname(test_abs_)  (-test16_1);
 #endif
-       res16[15] = tname(test_cmpi_) (test16_1);
 
        res32[ 0] = tname(test_add_)  (test32_1, test32_2);
        res32[ 1] = tname(test_sub_)  (test32_1, test32_2);
        res32[ 2] = tname(test_mul_)  (test32_1, test32_2);
        res32[ 3] = tname(test_div_)  (test32_1, test32_2);
 #ifndef TEST_FLOAT
-       res32[ 4] = tname(test_shl_)  (test32_1, test32_2);
-       res32[ 5] = tname(test_shr_)  (test32_1, test32_2);
+       res32[ 4] = tname(test_shl_)  (test32_1, test32_shift);
+       res32[ 5] = tname(test_shr_)  (test32_1, test32_shift);
+       res32[ 6] = tname(test_mod_)  (test32_1, test32_2);
 #endif
-       res32[ 6] = tname(test_div_)  (test32_1, test32_2);
-       res32[ 7] = tname(test_cmp_)  (test32_1, test32_2);
-       res32[ 8] = tname(test_addi_) (test32_1);
-       res32[ 9] = tname(test_subi_) (test32_1);
-       res32[10] = tname(test_subfi_)(test32_1);
-       res32[11] = tname(test_muli_) (test32_1);
-       res32[12] = tname(test_divi_) (test32_1);
+       res32[ 7] = tname(test_div_)  (test32_1, test32_2);
+       res32[ 8] = tname(test_cmp_)  (test32_1, test32_2);
+       res32[ 9] = tname(test_addi_) (test32_1);
+       res32[10] = tname(test_subi_) (test32_1);
+       res32[11] = tname(test_subfi_)(test32_1);
+       res32[12] = tname(test_muli_) (test32_1);
+       res32[13] = tname(test_divi_) (test32_1);
 #ifndef TEST_FLOAT
-       res32[13] = tname(test_shli_) (test32_1);
-       res32[14] = tname(test_shri_) (test32_1);
+       res32[14] = tname(test_shli_) (test32_1);
+       res32[15] = tname(test_shri_) (test32_1);
+#endif
+       res32[16] = tname(test_cmpi_) (test32_1);
+#ifndef TEST_UNSIGNED
+       res32[17] = tname(test_neg_)  (test32_1);
+       res32[18] = tname(test_neg_)  (-test32_1);
+       res32[19] = tname(test_abs_)  (test32_1);
+       res32[20] = tname(test_abs_)  (-test32_1);
 #endif
-       res32[15] = tname(test_cmpi_) (test32_1);
 
        printf("Result for %s\n", __PRETTY_FUNCTION__);
        for (i=0; i<TESTANZ; i++) {