On Monday, 27 August 2018 at 12:47:45 UTC, Nicholas Wilson wrote:
On Monday, 27 August 2018 at 09:57:18 UTC, Sobaya wrote:
On Monday, 27 August 2018 at 09:41:34 UTC, 9il wrote:
On Monday, 27 August 2018 at 08:25:14 UTC, Sobaya wrote:
I'm using dcompute(https://github.com/libmir/dcompute).
In the development, I have got to use math functions such as
sqrt in @compute function.
But LDC says "can only call functions from other @compute
modules in @compute code", so can't I call any math
functions with dcompute?
Is there any way to use predefined math functions in
dcompute?
Thanks.
You may want to try ldc.intrinsics / mir.math.common
Do you mean llvm_sqrt in ldc.intrinsics?
These functions are also not @compute code, so they cause the
same error.
Thanks for bringing this to my attention, will fix soon. In the
meantime you may declare your own intrinsics in a @compute
module and it should work. as in
@compute module mymath;
pragma(LDC_intrinsic, "llvm.sqrt.f#")
T llvm_sqrt(T)(T val)
if (__traits(isFloating, T));
This will work if you are targeting CUDA, SPIRV may not like it
because the backend is less... mature.
Thank you for replaying.
Surely the definition you told me works for "sqrt".
But "cos" and "sin" does not work.
The error message is
LLVM ERROR: Cannot select: 0xd76ffd8: f32 = fcos
ConstantFP:f32<0.000000e+00>
0xd76ff70: f32 = ConstantFP<0.000000e+00>
What's wrong?