e5bbcd6153e5aceedaf1dbae82cbfe7b994064a6
[libfirm] / ir / be / test / fehler51.c
1 /************************************************************************
2 * Program:  maxps.c
3 * Function: Add 2 vectors (lying in memory) and store the result in
4 *           a another vector in memory.
5 *           Used as a test for the simd optimization.
6 * Author:   Andreas Schoesser
7 * Date:     2007-02-13
8 ************************************************************************/
9
10 #include <stdio.h>
11 #include <malloc.h>
12 #include <stdlib.h>
13
14 float maxps();
15 float ueberlappung();
16 //void vadd_loop();
17 //void array_test(int *a[]);
18
19 main()
20 {
21         int a[5][5];
22
23         a[1][1] = 20;
24
25         printf("1. vload -> vadd -> vstore\n===================\n\n");
26         ueberlappung();
27
28         printf("2. vload -> vadd -> vstore, multi dimensional array, in loop\n==========================================\n\n");
29         //      vadd_loop();
30
31         //      array_test(a);
32 }
33
34 float ueberlappung()
35 {
36         float a[4], b[4], c[4], d[4];
37         float a0, a1, a2, a3;
38         float b0, b1, b2, b3;
39         float c0, c1, c2, c3;
40         float sp1, sp2;
41         int i;
42
43         for(i = 0; i < 4; i++)
44         {
45                 a[i] = rand() % 10;
46                 b[i] = rand() % 10;
47                 d[i] = rand() % 10;
48         }
49
50
51
52         // find vload 2x
53         sp1 = a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
54
55         // find vmul
56         sp2 = b[0] * d[0] + b[1] * d[1] + b[2] * d[2] + b[3] * d[3];
57
58         // Usage to prevent optimizations other than SIMD opt
59         for(i = 0; i < 4; i++)
60                 printf("%d %d %d\n", a[i], b[i], c[i], d[i]);
61         printf("\n");
62         return(sp1 + sp2);
63 }