Monday, 12 August 2013

Better way to load vectors from memory. (clang)

Better way to load vectors from memory. (clang)

I'm writing a test program to get used to Clang's language extensions for
OpenCL style vectors. I can get the code to work but I'm having issues
getting one aspect of it down. I can't seem to figure out how to get clang
to just load in a vector from a scalar array nicely.
At the moment I have to do something like:
byte16 va = (byte16){ argv[1][start], argv[1][start + 1], argv[1][start + 2],
argv[1][start + 3], argv[1][start + 4],
argv[1][start + 5],
argv[1][start + 6], argv[1][start + 7],
argv[1][start + 8],
argv[1][start + 9], argv[1][start + 10],
argv[1][start + 11],
argv[1][start + 12], argv[1][start + 13],
argv[1][start + 14],
argv[1][start + 15]};
I would ideally like something like this:
byte16 va = *(byte16 *)(&(argv[1][start]));
Which I can easily do using the proper intrinsics for ARM or x86. But that
code causes the program to crash although it compiles.

No comments:

Post a Comment