Mercurial > libavcodec.hg
comparison ppc/dsputil_ppc.c @ 1033:b4172ff70d27 libavcodec
Altivec on non darwin systems patch by Romain Dolbeau
author | bellard |
---|---|
date | Sun, 26 Jan 2003 22:29:47 +0000 |
parents | 9cc1031e1864 |
children | f59c3f66363b |
comparison
equal
deleted
inserted
replaced
1032:8f440ca8e0b0 | 1033:b4172ff70d27 |
---|---|
118 if (misal) { | 118 if (misal) { |
119 ((unsigned long*)blocks)[0] = 0L; | 119 ((unsigned long*)blocks)[0] = 0L; |
120 ((unsigned long*)blocks)[1] = 0L; | 120 ((unsigned long*)blocks)[1] = 0L; |
121 ((unsigned long*)blocks)[2] = 0L; | 121 ((unsigned long*)blocks)[2] = 0L; |
122 ((unsigned long*)blocks)[3] = 0L; | 122 ((unsigned long*)blocks)[3] = 0L; |
123 vec_st((vector short)(0), 0, blocks); | |
124 i += 16; | 123 i += 16; |
125 } | 124 } |
126 for ( ; i < sizeof(DCTELEM)*6*64 ; i += 32) { | 125 for ( ; i < sizeof(DCTELEM)*6*64 ; i += 32) { |
127 asm volatile("dcbz %0,%1" : : "r" (blocks), "r" (i) : "memory"); | 126 asm volatile("dcbz %0,%1" : : "r" (blocks), "r" (i) : "memory"); |
128 } | 127 } |
140 } | 139 } |
141 | 140 |
142 /* check dcbz report how many bytes are set to 0 by dcbz */ | 141 /* check dcbz report how many bytes are set to 0 by dcbz */ |
143 long check_dcbz_effect(void) | 142 long check_dcbz_effect(void) |
144 { | 143 { |
145 register char *fakedata = (char*)malloc(1024); | 144 register char *fakedata = (char*)av_malloc(1024); |
146 register char *fakedata_middle; | 145 register char *fakedata_middle; |
147 register long zero = 0; | 146 register long zero = 0; |
148 register long i = 0; | 147 register long i = 0; |
149 long count = 0; | 148 long count = 0; |
150 | 149 |
151 if (fakedata == NULL) | 150 if (!fakedata) |
152 { | 151 { |
153 return 0L; | 152 return 0L; |
154 } | 153 } |
155 | |
156 | 154 |
157 fakedata_middle = (fakedata + 512); | 155 fakedata_middle = (fakedata + 512); |
158 | 156 |
159 memset(fakedata, 0xFF, 1024); | 157 memset(fakedata, 0xFF, 1024); |
160 | 158 |
164 { | 162 { |
165 if (fakedata[i] == (char)0) | 163 if (fakedata[i] == (char)0) |
166 count++; | 164 count++; |
167 } | 165 } |
168 | 166 |
169 free(fakedata); | 167 av_free(fakedata); |
170 | 168 |
171 return count; | 169 return count; |
172 } | 170 } |
173 | 171 |
174 void dsputil_init_ppc(DSPContext* c, unsigned mask) | 172 void dsputil_init_ppc(DSPContext* c, unsigned mask) |