intel/fs: Add builder helpers for F32TO16/F16TO32 that work on Gfx7.x
These take care of emitting the F32TO16/F16TO32 instructions on Gfx7.x but otherwise just emit a type converting MOV on Gfx8+. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21783>
This commit is contained in:

committed by
Marge Bot

parent
3864049184
commit
966995d911
@@ -627,8 +627,6 @@ namespace brw {
|
||||
ALU2(DP3)
|
||||
ALU2(DP4)
|
||||
ALU2(DPH)
|
||||
ALU1(F16TO32)
|
||||
ALU1(F32TO16)
|
||||
ALU1(FBH)
|
||||
ALU1(FBL)
|
||||
ALU1(FRC)
|
||||
@@ -661,6 +659,36 @@ namespace brw {
|
||||
#undef ALU2_ACC
|
||||
#undef ALU2
|
||||
#undef ALU1
|
||||
|
||||
instruction *
|
||||
F32TO16(const dst_reg &dst, const src_reg &src) const
|
||||
{
|
||||
assert(dst.type == BRW_REGISTER_TYPE_HF);
|
||||
assert(src.type == BRW_REGISTER_TYPE_F);
|
||||
|
||||
if (shader->devinfo->ver >= 8) {
|
||||
return MOV(dst, src);
|
||||
} else {
|
||||
assert(shader->devinfo->ver == 7);
|
||||
return emit(BRW_OPCODE_F32TO16,
|
||||
retype(dst, BRW_REGISTER_TYPE_W), src);
|
||||
}
|
||||
}
|
||||
|
||||
instruction *
|
||||
F16TO32(const dst_reg &dst, const src_reg &src) const
|
||||
{
|
||||
assert(dst.type == BRW_REGISTER_TYPE_F);
|
||||
assert(src.type == BRW_REGISTER_TYPE_HF);
|
||||
|
||||
if (shader->devinfo->ver >= 8) {
|
||||
return MOV(dst, src);
|
||||
} else {
|
||||
assert(shader->devinfo->ver == 7);
|
||||
return emit(BRW_OPCODE_F32TO16,
|
||||
dst, retype(src, BRW_REGISTER_TYPE_W));
|
||||
}
|
||||
}
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user