647
|
1 #ifndef INLINE
|
|
2 #define INLINE
|
|
3 #endif
|
|
4
|
|
5 int printf(const char *,...);
|
|
6 void bzero(void *b, unsigned int len);
|
|
7
|
|
8
|
|
9
|
|
10 typedef float ps2_vu0_fmatrix[4][4] __attribute__((aligned (16)));
|
|
11 typedef ps2_vu0_fmatrix FMATRIX;
|
|
12
|
|
13 typedef float ps2_vu0_fmatrix1[4][4];
|
|
14 typedef ps2_vu0_fmatrix1 FMATRIX1;
|
|
15
|
|
16
|
|
17 void ps2_vu0_unit_matrix(ps2_vu0_fmatrix m)
|
|
18 {
|
|
19 printf("%g\n",m[1][1]);
|
|
20 m[1][1] = -0.5;
|
|
21 }
|
|
22
|
|
23
|
|
24 #define mod16(a) (((int)(&a))%16)
|
|
25
|
|
26 __code
|
|
27 align16(int i, FMATRIX a, FMATRIX b) {
|
|
28 FMATRIX m;
|
|
29 FMATRIX n;
|
|
30 int k = i;
|
|
31 FMATRIX o;
|
|
32 ps2_vu0_unit_matrix(a);
|
|
33 if (i==0) goto align16_1(2,a,b);
|
|
34 printf("offset %d\n",((char*)a) - ((char*)(&m)));
|
|
35 printf("%d %d %d\n",mod16(m),mod16(n),mod16(o));
|
|
36 goto align16(i-1,m,n);
|
|
37 }
|
|
38
|
|
39 __code (*exit0)(int);
|
|
40 void *env;
|
|
41
|
|
42 __code
|
|
43 align16_1(int i, FMATRIX1 a, FMATRIX1 b) {
|
|
44 FMATRIX1 m;
|
|
45 FMATRIX1 n;
|
|
46 int k = i;
|
|
47 FMATRIX1 o;
|
|
48 ps2_vu0_unit_matrix(a);
|
|
49 if (i==0) goto exit0(0),env;
|
|
50 printf("offset %d\n",((char*)a) - ((char*)(&m)));
|
|
51 printf("%d %d %d\n",mod16(m),mod16(n),mod16(o));
|
|
52 goto align16_1(i-1,m,n);
|
|
53 }
|
|
54
|
|
55
|
|
56 int
|
|
57 main(int ac, char *av[])
|
|
58 {
|
|
59 FMATRIX m;
|
|
60
|
|
61 m[1][1] = 0.5;
|
|
62 exit0 = return;
|
|
63 env = environment;
|
|
64 goto align16(2,m,m);
|
|
65 }
|
|
66
|
|
67
|
|
68 /* end */
|