我正在编写一个测试程序来习惯 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 的适当内在函数来完成。但是该代码会导致程序崩溃,尽管它可以编译。