Commit c28ddd7f authored by Christoph Gerum's avatar Christoph Gerum

Fix verbatim example

parent 95a7cd98
......@@ -84,34 +84,33 @@ von Farbbildern in Graustufen einmal wie im folgenden in reinem C implementiert
```
Und einmal mit neon intrinsics implementiert.
Und einmal mit neon intrinsics implementiert.
void neon_convert (uint8_t * __restrict dest, uint8_t * __restrict src, int n){
int i;
uint8x8_t rfac = vdup_n_u8 (77);
uint8x8_t gfac = vdup_n_u8 (151);
uint8x8_t bfac = vdup_n_u8 (28);
n/= 8;
for (i=0; i<n; i++) {
uint16x8_t temp;
uint8x8x3_t rgb = vld3_u8 (src);
uint8x8_t result;
temp = vmull_u8 (rgb.val[0], rfac);
temp = vmlal_u8 (temp,rgb.val[1], gfac);
temp = vmlal_u8 (temp,rgb.val[2], bfac);
result = vshrn_n_u16 (temp, 8);
vst1_u8 (dest, result);
src += 8*3;
dest += 8;
}
}
```c
void neon_convert (uint8_t * __restrict dest, uint8_t * __restrict src, int n){
int i;
uint8x8_t rfac = vdup_n_u8 (77);
uint8x8_t gfac = vdup_n_u8 (151);
uint8x8_t bfac = vdup_n_u8 (28);
n/= 8;
for (i=0; i<n; i++) {
uint16x8_t temp;
uint8x8x3_t rgb = vld3_u8 (src);
uint8x8_t result;
temp = vmull_u8 (rgb.val[0], rfac);
temp = vmlal_u8 (temp,rgb.val[1], gfac);
temp = vmlal_u8 (temp,rgb.val[2], bfac);
result = vshrn_n_u16 (temp, 8);
vst1_u8 (dest, result);
src += 8*3;
dest += 8;
}
}
```
Ihre Aufgabe ist es nun die beiden implementierungen miteinander zu vergleichen und den Effekt von Pipelinebreiten und Compileroptimierungen auf
die Performance der implementierungen zu untersuchen. Übersetzen sie das Programm für den Simulator verwenden sie dazu die folgende Kommandozeile:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment