Я пишу тестовую программу, чтобы привыкнуть к языковым расширениям Clang для векторов стиля OpenCL. Я могу заставить код работать, но у меня возникают проблемы с одним аспектом. Я не могу понять, как заставить clang просто загружать вектор из скалярного массива.
На данный момент мне нужно сделать что-то вроде:
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]};
В идеале мне бы хотелось что-то вроде этого:
byte16 va = *(byte16 *)(&(argv[1][start]));
Что я могу легко сделать, используя правильные возможности для ARM или x86. Но этот код приводит к сбою программы, хотя она компилируется.