diff --git a/renderdoc/driver/shaders/dxil/dxil_debug.cpp b/renderdoc/driver/shaders/dxil/dxil_debug.cpp index e34db95fb..b8dbf7b27 100644 --- a/renderdoc/driver/shaders/dxil/dxil_debug.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_debug.cpp @@ -3468,13 +3468,43 @@ bool ThreadState::ExecuteInstruction(DebugAPIWrapper *apiWrapper, result.value.u32v[1] = (uint32_t)(a.value.u64v[0] >> 32); break; } - // Likely to implement when required case DXOp::BitcastI16toF16: case DXOp::BitcastF16toI16: + { + // BitcastI16toF16(value) + // BitcastF16toI16(value) + RDCASSERTEQUAL(inst.args[1]->type->type, Type::TypeKind::Scalar); + RDCASSERTEQUAL(inst.args[1]->type->bitWidth, 16); + ShaderVariable a; + RDCASSERT(GetShaderVariable(inst.args[1], opCode, dxOpCode, a)); + result.value.u16v[0] = a.value.u16v[0]; + break; + } case DXOp::BitcastI32toF32: case DXOp::BitcastF32toI32: + { + // BitcastI32toF32(value) + // BitcastF32toI32(value) + RDCASSERTEQUAL(inst.args[1]->type->type, Type::TypeKind::Scalar); + RDCASSERTEQUAL(inst.args[1]->type->bitWidth, 32); + ShaderVariable a; + RDCASSERT(GetShaderVariable(inst.args[1], opCode, dxOpCode, a)); + result.value.u32v[0] = a.value.u32v[0]; + break; + } case DXOp::BitcastI64toF64: case DXOp::BitcastF64toI64: + { + // BitcastI64toF64(value) + // BitcastF64toI64(value) + RDCASSERTEQUAL(inst.args[1]->type->type, Type::TypeKind::Scalar); + RDCASSERTEQUAL(inst.args[1]->type->bitWidth, 64); + ShaderVariable a; + RDCASSERT(GetShaderVariable(inst.args[1], opCode, dxOpCode, a)); + result.value.u64v[0] = a.value.u64v[0]; + break; + } + // Likely to implement when required case DXOp::LegacyDoubleToFloat: case DXOp::LegacyDoubleToSInt32: case DXOp::LegacyDoubleToUInt32: diff --git a/renderdoc/driver/shaders/dxil/dxil_reflect.cpp b/renderdoc/driver/shaders/dxil/dxil_reflect.cpp index 37590b8b2..ada7a79f4 100644 --- a/renderdoc/driver/shaders/dxil/dxil_reflect.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_reflect.cpp @@ -1846,12 +1846,6 @@ rdcstr Program::GetDebugStatus() case DXOp::WavePrefixOp: case DXOp::QuadReadLaneAt: case DXOp::QuadOp: - case DXOp::BitcastI16toF16: - case DXOp::BitcastF16toI16: - case DXOp::BitcastI32toF32: - case DXOp::BitcastF32toI32: - case DXOp::BitcastI64toF64: - case DXOp::BitcastF64toI64: case DXOp::LegacyDoubleToFloat: case DXOp::LegacyDoubleToSInt32: case DXOp::LegacyDoubleToUInt32: