Open wangqinfan opened 9 months ago
源码
// RUN: clang -cl-std=CL2.0 -target riscv32 -mcpu=ventus-gpgpu -S %s int test3(int *a) { return *a + 1; }
命令
clang -cl-std=CL2.0 -target riscv32 -mcpu=ventus-gpgpu -S -mllvm -print-after-all test_generic_addr_2.cl &> ventus_t2.log
clang -target amdgcn test_generic_addr_2.cl -mllvm -print-after-all -S &> amd_t2.log
ventus与amd的差异
你编译AMDGPU target的时候下错了参数,clang -target amdgcn test_generic_addr_2.cl -mllvm -print-after-all -S &> amd_t2.log
, 忘记加-cl-std=CL2.0
了, @Jules-Kong
OpenCL 2.0支持generic address space,所以在定义一个函数的时候可以不指定指针的地址空间,那么在调用该函数的时候可以传入任何地址空间的指针,所以函数内部不知道怎么翻译有关该指针的访存指令。可以看下面这个例子:
这里test3和test2翻成了不同的访存指令。下面是汇编: