disas: nanoMIPS: Reorder declarations and definitions of gpr decoders
Reorder declarations and definitions of gpr decoders by number of input bits of corresponding encoding type. Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
This commit is contained in:
parent
dffcf177dc
commit
eabf76a0d4
@ -291,6 +291,77 @@ uint64 NMD::renumber_registers(uint64 index, uint64 *register_list,
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* NMD::decode_gpr_gpr4() - decoder for 'gpr4' gpr encoding type
|
||||
*
|
||||
* Map a 4-bit code to the 5-bit register space according to this pattern:
|
||||
*
|
||||
* 1 0
|
||||
* 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | └---------------┐
|
||||
* | | | | | | | | | | └---------------┐ |
|
||||
* | | | | | | | | | └---------------┐ | |
|
||||
* | | | | | | | | └---------------┐ | | |
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
||||
* 3 2 1 0
|
||||
*
|
||||
* Used in handling following instructions:
|
||||
*
|
||||
* - ADDU[4X4]
|
||||
* - LW[4X4]
|
||||
* - MOVEP[REV]
|
||||
* - MUL[4X4]
|
||||
* - SW[4X4]
|
||||
*/
|
||||
uint64 NMD::decode_gpr_gpr4(uint64 d)
|
||||
{
|
||||
static uint64 register_list[] = { 8, 9, 10, 11, 4, 5, 6, 7,
|
||||
16, 17, 18, 19, 20, 21, 22, 23 };
|
||||
return renumber_registers(d, register_list,
|
||||
sizeof(register_list) / sizeof(register_list[0]));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* NMD::decode_gpr_gpr4_zero() - decoder for 'gpr4.zero' gpr encoding type
|
||||
*
|
||||
* Map a 4-bit code to the 5-bit register space according to this pattern:
|
||||
*
|
||||
* 1 0
|
||||
* 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | | └---------------------┐
|
||||
* | | | | | | | | | | | └---------------┐ |
|
||||
* | | | | | | | | | | └---------------┐ | |
|
||||
* | | | | | | | | | └---------------┐ | | |
|
||||
* | | | | | | | | └---------------┐ | | | |
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
||||
* 3 2 1 0
|
||||
*
|
||||
* This pattern is the same one used for 'gpr4' gpr encoding type, except for
|
||||
* the input value 3, that is mapped to the output value 0 instead of 11.
|
||||
*
|
||||
* Used in handling following instructions:
|
||||
*
|
||||
* - MOVE.BALC
|
||||
* - MOVEP
|
||||
* - SW[4X4]
|
||||
*/
|
||||
uint64 NMD::decode_gpr_gpr4_zero(uint64 d)
|
||||
{
|
||||
static uint64 register_list[] = { 8, 9, 10, 0, 4, 5, 6, 7,
|
||||
16, 17, 18, 19, 20, 21, 22, 23 };
|
||||
return renumber_registers(d, register_list,
|
||||
sizeof(register_list) / sizeof(register_list[0]));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* NMD::decode_gpr_gpr3() - decoder for 'gpr3' gpr encoding type
|
||||
*
|
||||
@ -389,106 +460,6 @@ uint64 NMD::decode_gpr_gpr3_src_store(uint64 d)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* NMD::decode_gpr_gpr1() - decoder for 'gpr1' gpr encoding type
|
||||
*
|
||||
* Map a 1-bit code to the 5-bit register space according to this pattern:
|
||||
*
|
||||
* 1 0
|
||||
* | |
|
||||
* | |
|
||||
* | └---------------------┐
|
||||
* └---------------------┐ |
|
||||
* | |
|
||||
* | |
|
||||
* | |
|
||||
* | |
|
||||
* 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
||||
* 3 2 1 0
|
||||
*
|
||||
* Used in handling following instruction:
|
||||
*
|
||||
* - MOVE.BALC
|
||||
*/
|
||||
uint64 NMD::decode_gpr_gpr1(uint64 d)
|
||||
{
|
||||
static uint64 register_list[] = { 4, 5 };
|
||||
return renumber_registers(d, register_list,
|
||||
sizeof(register_list) / sizeof(register_list[0]));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* NMD::decode_gpr_gpr4_zero() - decoder for 'gpr4.zero' gpr encoding type
|
||||
*
|
||||
* Map a 4-bit code to the 5-bit register space according to this pattern:
|
||||
*
|
||||
* 1 0
|
||||
* 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | | └---------------------┐
|
||||
* | | | | | | | | | | | └---------------┐ |
|
||||
* | | | | | | | | | | └---------------┐ | |
|
||||
* | | | | | | | | | └---------------┐ | | |
|
||||
* | | | | | | | | └---------------┐ | | | |
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
||||
* 3 2 1 0
|
||||
*
|
||||
* This pattern is the same one used for 'gpr4' gpr encoding type, except for
|
||||
* the input value 3, that is mapped to the output value 0 instead of 11.
|
||||
*
|
||||
* Used in handling following instructions:
|
||||
*
|
||||
* - MOVE.BALC
|
||||
* - MOVEP
|
||||
* - SW[4X4]
|
||||
*/
|
||||
uint64 NMD::decode_gpr_gpr4_zero(uint64 d)
|
||||
{
|
||||
static uint64 register_list[] = { 8, 9, 10, 0, 4, 5, 6, 7,
|
||||
16, 17, 18, 19, 20, 21, 22, 23 };
|
||||
return renumber_registers(d, register_list,
|
||||
sizeof(register_list) / sizeof(register_list[0]));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* NMD::decode_gpr_gpr4() - decoder for 'gpr4' gpr encoding type
|
||||
*
|
||||
* Map a 4-bit code to the 5-bit register space according to this pattern:
|
||||
*
|
||||
* 1 0
|
||||
* 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | └---------------┐
|
||||
* | | | | | | | | | | └---------------┐ |
|
||||
* | | | | | | | | | └---------------┐ | |
|
||||
* | | | | | | | | └---------------┐ | | |
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
||||
* 3 2 1 0
|
||||
*
|
||||
* Used in handling following instructions:
|
||||
*
|
||||
* - ADDU[4X4]
|
||||
* - LW[4X4]
|
||||
* - MOVEP[REV]
|
||||
* - MUL[4X4]
|
||||
* - SW[4X4]
|
||||
*/
|
||||
uint64 NMD::decode_gpr_gpr4(uint64 d)
|
||||
{
|
||||
static uint64 register_list[] = { 8, 9, 10, 11, 4, 5, 6, 7,
|
||||
16, 17, 18, 19, 20, 21, 22, 23 };
|
||||
return renumber_registers(d, register_list,
|
||||
sizeof(register_list) / sizeof(register_list[0]));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* NMD::decode_gpr_gpr2_reg1() - decoder for 'gpr2.reg1' gpr encoding type
|
||||
*
|
||||
@ -549,6 +520,35 @@ uint64 NMD::decode_gpr_gpr2_reg2(uint64 d)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* NMD::decode_gpr_gpr1() - decoder for 'gpr1' gpr encoding type
|
||||
*
|
||||
* Map a 1-bit code to the 5-bit register space according to this pattern:
|
||||
*
|
||||
* 1 0
|
||||
* | |
|
||||
* | |
|
||||
* | └---------------------┐
|
||||
* └---------------------┐ |
|
||||
* | |
|
||||
* | |
|
||||
* | |
|
||||
* | |
|
||||
* 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
||||
* 3 2 1 0
|
||||
*
|
||||
* Used in handling following instruction:
|
||||
*
|
||||
* - MOVE.BALC
|
||||
*/
|
||||
uint64 NMD::decode_gpr_gpr1(uint64 d)
|
||||
{
|
||||
static uint64 register_list[] = { 4, 5 };
|
||||
return renumber_registers(d, register_list,
|
||||
sizeof(register_list) / sizeof(register_list[0]));
|
||||
}
|
||||
|
||||
|
||||
uint64 NMD::copy(uint64 d)
|
||||
{
|
||||
return d;
|
||||
|
@ -105,13 +105,14 @@ private:
|
||||
|
||||
uint64 renumber_registers(uint64 index, uint64 *register_list,
|
||||
size_t register_list_size);
|
||||
|
||||
uint64 decode_gpr_gpr4(uint64 d);
|
||||
uint64 decode_gpr_gpr4_zero(uint64 d);
|
||||
uint64 decode_gpr_gpr3(uint64 d);
|
||||
uint64 decode_gpr_gpr3_src_store(uint64 d);
|
||||
uint64 decode_gpr_gpr1(uint64 d);
|
||||
uint64 decode_gpr_gpr4_zero(uint64 d);
|
||||
uint64 decode_gpr_gpr4(uint64 d);
|
||||
uint64 decode_gpr_gpr2_reg1(uint64 d);
|
||||
uint64 decode_gpr_gpr2_reg2(uint64 d);
|
||||
uint64 decode_gpr_gpr1(uint64 d);
|
||||
|
||||
uint64 copy(uint64 d);
|
||||
int64 copy(int64 d);
|
||||
|
Loading…
Reference in New Issue
Block a user