gnu / binutils-gdb / 1284c2264cca5c848e2f9622ea53e42c97e4e838 / . / gdb / testsuite / gdb.arch / altivec-regs.c

#include <altivec.h> | |

#include <stdio.h> | |

vector unsigned int | |

vector_fun (vector unsigned int a, vector unsigned int b) | |

{ | |

vector unsigned int c; | |

a = ((vector unsigned int) vec_splat_u8(2)); | |

b = ((vector unsigned int) vec_splat_u8(3)); | |

c = vec_add (a, b); | |

return c; | |

} | |

int | |

main () | |

{ | |

vector unsigned int y; | |

vector unsigned int x; | |

vector unsigned int z; | |

int a; | |

/* This line may look unnecessary but we do need it, because we want to | |

have a line to do a next over (so that gdb refetches the registers) | |

and we don't want the code to change any vector registers. | |

The splat operations below modify the VRs,i | |

so we don't want to execute them yet. */ | |

a = 9; | |

x = ((vector unsigned int) vec_splat_u8 (-2)); | |

y = ((vector unsigned int) vec_splat_u8 (1)); | |

z = vector_fun (x, y); | |

x = vec_sld (x,y,2); | |

x = vec_add (x, ((vector unsigned int){5,6,7,8})); | |

z = (vector unsigned int) vec_splat_u8 ( -2); | |

y = vec_add (x, z); | |

z = (vector unsigned int) vec_cmpeq (x,y); | |

return 0; | |

} |