================ @@ -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 cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits