#include #include #include static void print16x1(uint8_t *p) { int i; for(i = 0; i < 16; i++) printf(" %02X ", p[i]); printf("\n"); } int main(void) { __vector uint8_t vrt8; uint8_t rb8[16]; unsigned long hi = 0x0001020310111213; unsigned long lo = 0x2021222330313233; asm volatile("mtvsrdd %x0, %2, %3;" "stxvw4x %x0, 0, %1;" : "=ws"(vrt8): "r"(&rb8), "r"(hi), "r"(lo)); print16x1(rb8); asm volatile("mtvsrdd %x0, %2, %3;" "stxvh8x %x0, 0, %1;" : "=ws"(vrt8) : "r"(&rb8), "r"(hi), "r"(lo)); print16x1(rb8); asm volatile("mtvsrdd %x0, %2, %3;" "stxvb16x %x0, 0, %1;" : "=ws"(vrt8) : "r"(&rb8), "r"(hi), "r"(lo)); print16x1(rb8); return EXIT_SUCCESS; }