comparison ppc/dsputil_ppc.c @ 1340:09b8fe0f0139 libavcodec

PPC fixes & clean-up patch by (Romain Dolbeau <dolbeau at irisa dot fr>)
author michaelni
date Fri, 04 Jul 2003 09:39:05 +0000
parents 80c46c310a91
children e8ff4783f188
comparison
equal deleted inserted replaced
1339:338a2f6e6402 1340:09b8fe0f0139
59 "put_no_rnd_pixels16_xy2_altivec", 59 "put_no_rnd_pixels16_xy2_altivec",
60 "clear_blocks_dcbz32_ppc", 60 "clear_blocks_dcbz32_ppc",
61 "clear_blocks_dcbz128_ppc" 61 "clear_blocks_dcbz128_ppc"
62 }; 62 };
63 #ifdef POWERPC_PERF_USE_PMC 63 #ifdef POWERPC_PERF_USE_PMC
64 unsigned long long perfdata_miss[powerpc_perf_total][powerpc_data_total]; 64 unsigned long long perfdata_pmc2[powerpc_perf_total][powerpc_data_total];
65 unsigned long long perfdata_pmc3[powerpc_perf_total][powerpc_data_total];
65 #endif 66 #endif
66 #include <stdio.h> 67 #include <stdio.h>
67 #endif 68 #endif
68 69
69 #ifdef POWERPC_TBL_PERFORMANCE_REPORT 70 #ifdef POWERPC_TBL_PERFORMANCE_REPORT
84 perfdata[i][powerpc_data_max], 85 perfdata[i][powerpc_data_max],
85 (double)perfdata[i][powerpc_data_sum] / 86 (double)perfdata[i][powerpc_data_sum] /
86 (double)perfdata[i][powerpc_data_num], 87 (double)perfdata[i][powerpc_data_num],
87 perfdata[i][powerpc_data_num]); 88 perfdata[i][powerpc_data_num]);
88 #ifdef POWERPC_PERF_USE_PMC 89 #ifdef POWERPC_PERF_USE_PMC
89 if (perfdata_miss[i][powerpc_data_num] != (unsigned long long)0) 90 if (perfdata_pmc2[i][powerpc_data_num] != (unsigned long long)0)
90 fprintf(stderr, " Function \"%s\" (pmc2):\n\tmin: %llu\n\tmax: %llu\n\tavg: %1.2lf (%llu)\n", 91 fprintf(stderr, " Function \"%s\" (pmc2):\n\tmin: %llu\n\tmax: %llu\n\tavg: %1.2lf (%llu)\n",
91 perfname[i], 92 perfname[i],
92 perfdata_miss[i][powerpc_data_min], 93 perfdata_pmc2[i][powerpc_data_min],
93 perfdata_miss[i][powerpc_data_max], 94 perfdata_pmc2[i][powerpc_data_max],
94 (double)perfdata_miss[i][powerpc_data_sum] / 95 (double)perfdata_pmc2[i][powerpc_data_sum] /
95 (double)perfdata_miss[i][powerpc_data_num], 96 (double)perfdata_pmc2[i][powerpc_data_num],
96 perfdata_miss[i][powerpc_data_num]); 97 perfdata_pmc2[i][powerpc_data_num]);
98 if (perfdata_pmc3[i][powerpc_data_num] != (unsigned long long)0)
99 fprintf(stderr, " Function \"%s\" (pmc3):\n\tmin: %llu\n\tmax: %llu\n\tavg: %1.2lf (%llu)\n",
100 perfname[i],
101 perfdata_pmc3[i][powerpc_data_min],
102 perfdata_pmc3[i][powerpc_data_max],
103 (double)perfdata_pmc3[i][powerpc_data_sum] /
104 (double)perfdata_pmc3[i][powerpc_data_num],
105 perfdata_pmc3[i][powerpc_data_num]);
97 #endif 106 #endif
98 } 107 }
99 } 108 }
100 #endif /* POWERPC_TBL_PERFORMANCE_REPORT */ 109 #endif /* POWERPC_TBL_PERFORMANCE_REPORT */
101 110
137 ((unsigned long*)blocks)[2] = 0L; 146 ((unsigned long*)blocks)[2] = 0L;
138 ((unsigned long*)blocks)[3] = 0L; 147 ((unsigned long*)blocks)[3] = 0L;
139 i += 16; 148 i += 16;
140 } 149 }
141 for ( ; i < sizeof(DCTELEM)*6*64 ; i += 32) { 150 for ( ; i < sizeof(DCTELEM)*6*64 ; i += 32) {
142 asm volatile("dcbz %0,%1" : : "r" (i), "r" (blocks) : "memory"); 151 asm volatile("dcbz %0,%1" : : "b" (blocks), "r" (i) : "memory");
143 } 152 }
144 if (misal) { 153 if (misal) {
145 ((unsigned long*)blocks)[188] = 0L; 154 ((unsigned long*)blocks)[188] = 0L;
146 ((unsigned long*)blocks)[189] = 0L; 155 ((unsigned long*)blocks)[189] = 0L;
147 ((unsigned long*)blocks)[190] = 0L; 156 ((unsigned long*)blocks)[190] = 0L;
170 // aren't available yet (2003-06-26) 179 // aren't available yet (2003-06-26)
171 memset(blocks, 0, sizeof(DCTELEM)*6*64); 180 memset(blocks, 0, sizeof(DCTELEM)*6*64);
172 } 181 }
173 else 182 else
174 for ( ; i < sizeof(DCTELEM)*6*64 ; i += 128) { 183 for ( ; i < sizeof(DCTELEM)*6*64 ; i += 128) {
175 asm volatile("dcbzl %0,%1" : : "r" (i), "r" (blocks) : "memory"); 184 asm volatile("dcbzl %0,%1" : : "b" (blocks), "r" (i) : "memory");
176 } 185 }
177 #else 186 #else
178 memset(blocks, 0, sizeof(DCTELEM)*6*64); 187 memset(blocks, 0, sizeof(DCTELEM)*6*64);
179 #endif 188 #endif
180 POWERPC_TBL_STOP_COUNT(powerpc_clear_blocks_dcbz128, 1); 189 POWERPC_TBL_STOP_COUNT(powerpc_clear_blocks_dcbz128, 1);
207 216
208 fakedata_middle = (fakedata + 512); 217 fakedata_middle = (fakedata + 512);
209 218
210 memset(fakedata, 0xFF, 1024); 219 memset(fakedata, 0xFF, 1024);
211 220
212 asm volatile("dcbzl %0, %1" : : "r" (fakedata_middle), "r" (zero)); 221 /* below the constraint "b" seems to mean "Address base register"
222 in gcc-3.3 / RS/6000 speaks. seems to avoid using r0, so.... */
223 asm volatile("dcbzl %0, %1" : : "b" (fakedata_middle), "r" (zero));
213 224
214 for (i = 0; i < 1024 ; i ++) 225 for (i = 0; i < 1024 ; i ++)
215 { 226 {
216 if (fakedata[i] == (char)0) 227 if (fakedata[i] == (char)0)
217 count++; 228 count++;
298 perfdata[i][powerpc_data_min] = 0xFFFFFFFFFFFFFFFF; 309 perfdata[i][powerpc_data_min] = 0xFFFFFFFFFFFFFFFF;
299 perfdata[i][powerpc_data_max] = 0x0000000000000000; 310 perfdata[i][powerpc_data_max] = 0x0000000000000000;
300 perfdata[i][powerpc_data_sum] = 0x0000000000000000; 311 perfdata[i][powerpc_data_sum] = 0x0000000000000000;
301 perfdata[i][powerpc_data_num] = 0x0000000000000000; 312 perfdata[i][powerpc_data_num] = 0x0000000000000000;
302 #ifdef POWERPC_PERF_USE_PMC 313 #ifdef POWERPC_PERF_USE_PMC
303 perfdata_miss[i][powerpc_data_min] = 0xFFFFFFFFFFFFFFFF; 314 perfdata_pmc2[i][powerpc_data_min] = 0xFFFFFFFFFFFFFFFF;
304 perfdata_miss[i][powerpc_data_max] = 0x0000000000000000; 315 perfdata_pmc2[i][powerpc_data_max] = 0x0000000000000000;
305 perfdata_miss[i][powerpc_data_sum] = 0x0000000000000000; 316 perfdata_pmc2[i][powerpc_data_sum] = 0x0000000000000000;
306 perfdata_miss[i][powerpc_data_num] = 0x0000000000000000; 317 perfdata_pmc2[i][powerpc_data_num] = 0x0000000000000000;
318 perfdata_pmc3[i][powerpc_data_min] = 0xFFFFFFFFFFFFFFFF;
319 perfdata_pmc3[i][powerpc_data_max] = 0x0000000000000000;
320 perfdata_pmc3[i][powerpc_data_sum] = 0x0000000000000000;
321 perfdata_pmc3[i][powerpc_data_num] = 0x0000000000000000;
307 #endif /* POWERPC_PERF_USE_PMC */ 322 #endif /* POWERPC_PERF_USE_PMC */
308 } 323 }
309 } 324 }
310 #endif /* POWERPC_TBL_PERFORMANCE_REPORT */ 325 #endif /* POWERPC_TBL_PERFORMANCE_REPORT */
311 } else 326 } else