mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-04-20 22:05:06 +00:00
SPU Analyzer: Add pure opcode tag
This commit is contained in:
parent
9a0a5a1735
commit
4ced11e533
1 changed files with 7 additions and 0 deletions
|
|
@ -13,6 +13,7 @@ struct spu_itype
|
||||||
static constexpr struct quadrop_tag{} _quadrop{}; // 4-op Instructions
|
static constexpr struct quadrop_tag{} _quadrop{}; // 4-op Instructions
|
||||||
static constexpr struct xfloat_tag{} xfloat{}; // Instructions producing xfloat values
|
static constexpr struct xfloat_tag{} xfloat{}; // Instructions producing xfloat values
|
||||||
static constexpr struct zregmod_tag{} zregmod{}; // Instructions not modifying any GPR
|
static constexpr struct zregmod_tag{} zregmod{}; // Instructions not modifying any GPR
|
||||||
|
static constexpr struct pure_tag{} pure{}; // Instructions that always produce the same values as long as arguments are equal
|
||||||
|
|
||||||
enum class type : unsigned char
|
enum class type : unsigned char
|
||||||
{
|
{
|
||||||
|
|
@ -301,6 +302,12 @@ struct spu_itype
|
||||||
{
|
{
|
||||||
return (value >= HEQ && value <= STQR) || (value >= BR && value <= BIHNZ);
|
return (value >= HEQ && value <= STQR) || (value >= BR && value <= BIHNZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test for instructions which always produce the same values as long as arguments and immediate values are equal
|
||||||
|
friend constexpr bool operator &(type value, pure_tag)
|
||||||
|
{
|
||||||
|
return (value >= ILH && value <= CLGTI);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
using spu_itype_t = spu_itype::type;
|
using spu_itype_t = spu_itype::type;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue