1 void
example2(float *out, const float *input1, const float *input2)
2 {
3 int i;
4
5 for(i = 0; i
<
100; i++)
6 {
7 out[i] = input1[i] * input2[i];
8 }
9 }
1 _example2:
2 ;** ---------------------------------------------------------------*
3 MVK .S2 0x64,B0
4
5 MVC .S2 CSR,B6
6 || MV .L1X B4,A3
7 || MV .L2X A6,B5
8
9 AND .L1X -2,B6,A0
10
11 MVC .S2X A0,CSR
12 || SUB .L2 B0,4,B0
13
14 ;**
--------------------------------------------------------------*
15 L8: ; PIPED LOOP PROLOG
16
17 LDW .D2 *B5++,B4 ;
18 || LDW .D1 *A3++,A0 ;
19
20 NOP 1
21
22 LDW .D2 *B5++,B4 ;@
23 || LDW .D1 *A3++,A0 ;@
24
25 [ B0] SUB .L2 B0,1,B0 ;
26
27 [ B0] B .S2 L9 ;
28 || LDW .D2 *B5++,B4 ;@@
29 || LDW .D1 *A3++,A0 ;@@
30
31 MPYSP .M1X B4,A0,A5 ;
32 || [
B0] SUB .L2 B0,1,B0 ;@
33
34 [ B0] B .S2 L9 ;@
35 || LDW .D2 *B5++,B4 ;@@@
36 || LDW .D1 *A3++,A0 ;@@@
37
38 MPYSP .M1X B4,A0,A5 ;@
39 || [ B0] SUB .L2 B0,1,B0 ;@@
40
41 ;** --------------------------------------------------------------*
42 L9: ; PIPED LOOP KERNEL
43
44 [ B0] B .S2 L9 ;@@
45 || LDW .D2 *B5++,B4 ;@@@@
46 || LDW .D1 *A3++,A0 ;@@@@
47
48
STW .D1 A5,*A4++ ;
49 || MPYSP .M1X B4,A0,A5 ;@@
50 || [ B0] SUB .L2 B0,1,B0 ;@@@
51
52 ;** --------------------------------------------------------------*
53 L10: ; PIPED LOOP EPILOG
54 NOP 1
55
56 STW .D1 A5,*A4++ ;@
57 || MPYSP .M1X B4,A0,A5 ;@@@
58
59 NOP 1
60
61 STW .D1 A5,*A4++ ;@@
62 || MPYSP .M1X B4,A0,A5 ;@@@@
64 NOP 1
65 STW
.D1 A5,*A4++ ;@@@
66 NOP 1
67 STW .D1 A5,*A4++ ;@@@@
68 ;** --------------------------------------------------------------*
69 MVC .S2 B6,CSR
70 B .S2 B3
71 NOP 5
72 ; BRANCH OCCURS
|