From: Clifford Wolf Date: Sat, 15 Feb 2014 23:16:54 +0000 (+0100) Subject: Added != support for relational select pattern X-Git-Tag: yosys-0.2.0~1 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9a816b65a80a7a56b06ac5d0859be73b24008202;p=yosys.git Added != support for relational select pattern --- diff --git a/passes/cmds/select.cc b/passes/cmds/select.cc index a1a64f145..3a886b1c8 100644 --- a/passes/cmds/select.cc +++ b/passes/cmds/select.cc @@ -63,6 +63,8 @@ static bool match_attr_val(const RTLIL::Const &value, std::string pattern, char if (match_op == '=') return value == pattern_value; + if (match_op == '!') + return value != pattern_value; if (match_op == '<') return value.as_int() < pattern_value.as_int(); if (match_op == '>') @@ -82,6 +84,8 @@ static bool match_attr_val(const RTLIL::Const &value, std::string pattern, char if (match_op == '=') return value_str == pattern; + if (match_op == '!') + return value_str != pattern; if (match_op == '<') return value_str < pattern; if (match_op == '>') @@ -115,9 +119,11 @@ static bool match_attr(const std::map &attributes static bool match_attr(const std::map &attributes, std::string match_expr) { - size_t pos = match_expr.find_first_of("<=>"); + size_t pos = match_expr.find_first_of(""); if (pos != std::string::npos) { + if (match_expr.substr(pos, 2) == "!=") + return match_attr(attributes, match_expr.substr(0, pos), match_expr.substr(pos+2), '!'); if (match_expr.substr(pos, 2) == "<=") return match_attr(attributes, match_expr.substr(0, pos), match_expr.substr(pos+2), '['); if (match_expr.substr(pos, 2) == ">=")