mirror of
https://github.com/ARMSX2/ARMSX3.git
synced 2026-08-24 16:58:52 -07:00
SPU Analyzer: Add pure opcode tag
This commit is contained in:
@@ -13,6 +13,7 @@ struct spu_itype
|
||||
static constexpr struct quadrop_tag{} _quadrop{}; // 4-op Instructions
|
||||
static constexpr struct xfloat_tag{} xfloat{}; // Instructions producing xfloat values
|
||||
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
|
||||
{
|
||||
@@ -301,6 +302,12 @@ struct spu_itype
|
||||
{
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user