Add an IsEqual FieldPredicate.
Compare an immediate operand to a constant value.
This commit is contained in:
@@ -232,6 +232,21 @@ class FieldPredicate(object):
|
|||||||
return 'predicates::{}({})'.format(self.function, ', '.join(args))
|
return 'predicates::{}({})'.format(self.function, ', '.join(args))
|
||||||
|
|
||||||
|
|
||||||
|
class IsEqual(FieldPredicate):
|
||||||
|
"""
|
||||||
|
Instruction predicate that checks if an immediate instruction format field
|
||||||
|
is equal to a constant value.
|
||||||
|
|
||||||
|
:param field: `FormatField` to be checked.
|
||||||
|
:param value: The constant value to compare against.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, field, value):
|
||||||
|
# type: (FormatField, Any) -> None
|
||||||
|
super(IsEqual, self).__init__(field, 'is_equal', (value,))
|
||||||
|
self.value = value
|
||||||
|
|
||||||
|
|
||||||
class IsSignedInt(FieldPredicate):
|
class IsSignedInt(FieldPredicate):
|
||||||
"""
|
"""
|
||||||
Instruction predicate that checks if an immediate instruction format field
|
Instruction predicate that checks if an immediate instruction format field
|
||||||
|
|||||||
@@ -9,6 +9,12 @@
|
|||||||
//! Some of these predicates may be unused in certain ISA configurations, so we suppress the
|
//! Some of these predicates may be unused in certain ISA configurations, so we suppress the
|
||||||
//! dead_code warning.
|
//! dead_code warning.
|
||||||
|
|
||||||
|
/// Check that `x` is the same as `y`.
|
||||||
|
#[allow(dead_code)]
|
||||||
|
pub fn is_equal<T: Eq + Copy>(x: T, y: T) -> bool {
|
||||||
|
x == y
|
||||||
|
}
|
||||||
|
|
||||||
/// Check that `x` can be represented as a `wd`-bit signed integer with `sc` low zero bits.
|
/// Check that `x` can be represented as a `wd`-bit signed integer with `sc` low zero bits.
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
pub fn is_signed_int<T: Into<i64>>(x: T, wd: u8, sc: u8) -> bool {
|
pub fn is_signed_int<T: Into<i64>>(x: T, wd: u8, sc: u8) -> bool {
|
||||||
|
|||||||
Reference in New Issue
Block a user