arch-vega: Implement non-carry-out VEGA add, sub, and subrev
In GCN3, the v_add_u32, v_sub_u32, and v_subrev_u32 instructions write the carry-out value to VCC. VEGA introduces explicit carry-out versions of these instructions (v_add_co_u32, v_sub_co_u32, and v_subrev_co_u32), and modifies the behavior of the baseline, non-carry-out versions to not write to VCC. Previously both the carry-out and non-carry-out versions shared a single implementation that wrote to VCC. This patch correctly implements the non-carry-out versions to avoid the VCC write. This patch also makes the following substitutions for GCN3 instructions that no longer exist in VEGA (this renaming has no functional impact): v_addc_u32 -> v_addc_co_u32 v_subb_u32 -> v_subb_co_u32 v_subbrev_u32 -> v_subbrev_co_u32 Change-Id: I002fa6e9316d38fd4cc3554daff047523cfc12c9 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/47240 Reviewed-by: Matt Sinclair <mattdsinclair@gmail.com> Maintainer: Matt Sinclair <mattdsinclair@gmail.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
@@ -296,12 +296,12 @@ namespace VegaISA
|
||||
GPUStaticInst* decode_OPU_VOP3__V_OR_B32(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_XOR_B32(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_MAC_F32(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_ADD_U32(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_SUB_U32(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_SUBREV_U32(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_ADDC_U32(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_SUBB_U32(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_SUBBREV_U32(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_ADD_CO_U32(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_SUB_CO_U32(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_SUBREV_CO_U32(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_ADDC_CO_U32(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_SUBB_CO_U32(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_SUBBREV_CO_U32(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_ADD_F16(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_SUB_F16(MachInst);
|
||||
GPUStaticInst* decode_OPU_VOP3__V_SUBREV_F16(MachInst);
|
||||
|
||||
Reference in New Issue
Block a user