shader: pack 16-bit lane pairs with one bit-field insert

This commit is contained in:
nmzik
2026-10-21 22:46:04 +02:00
parent 4a1440197f
commit 10a852c2ac
3 changed files with 9 additions and 15 deletions
@@ -211,10 +211,9 @@ uint32_t EmitCompositeExtractU32x2(EmitterState& state, uint32_t arg0, IR::Value
}
uint32_t EmitPackFloat2x16Rtz(EmitterState& state, uint32_t arg0, uint32_t arg1) {
const auto low = EmitF32ToF16RtzBits(state, arg0);
const auto high = Binary(state, spv::OpShiftLeftLogical, TypeU32(state),
EmitF32ToF16RtzBits(state, arg1), ConstantU32(state, 16));
return EmitOrU32(state, low, high);
return EmitNative<spv::OpBitFieldInsert, IR::Type::U32>(
state, EmitF32ToF16RtzBits(state, arg0), EmitF32ToF16RtzBits(state, arg1),
ConstantU32(state, 16), ConstantU32(state, 16));
}
uint32_t EmitFPSaturate32(EmitterState& state, uint32_t arg0) {