================
@@ -489,6 +542,9 @@ class OpLowerer {
case Intrinsic::dx_typedBufferStore:
HasErrors |= lowerTypedBufferStore(F);
break;
+ case Intrinsic::dx_splitdouble:
----------------
bogner wrote:
There will need to be some logic in DXILOpLowering, because we need to change
the return type. The DirectX intrinsic returns an anonymous struct, `{i32,
i32}`, whereas the DXIL op returns a named struct, `%dx.types.splitdouble`. So
we do need to update that when replacing uses, from:
```llvm
%hlsl.splitdouble = call { i32, i32 } @llvm.dx.splitdouble.i32(double %v)
%0 = extractvalue { i32, i32 } %hlsl.splitdouble, 0
%1 = extractvalue { i32, i32 } %hlsl.splitdouble, 1
```
to
```
%hlsl.splitdouble = call %dx.types.splitdouble @dx.op.splitDouble.f64(i32
102, double %v)
%0 = extractvalue %dx.types.splitdouble %hlsl.splitdouble, 0
%1 = extractvalue %dx.types.splitdouble %hlsl.splitdouble, 1
```
We don't currently have the ability to do that automatically in DXILOpLowering.
https://github.com/llvm/llvm-project/pull/109331
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits