void VectorizerVisitorExpression::visit(const Nodecl::Neg& n) { Nodecl::NodeclBase rhs = n.get_rhs(); if (rhs.is<Nodecl::IntegerLiteral>() || // -1 rhs.is<Nodecl::FloatingLiteral>()) { const Nodecl::VectorPromotion vector_prom = Nodecl::VectorPromotion::make( n.shallow_copy(), get_qualified_vector_to(n.get_type(), _vector_length), n.get_locus()); n.replace(vector_prom); } else // -a { walk(rhs); const Nodecl::VectorNeg vector_neg = Nodecl::VectorNeg::make( n.get_rhs().shallow_copy(), get_qualified_vector_to(n.get_type(), _vector_length), n.get_locus()); n.replace(vector_neg); } }
bool ArrayAccessInfoVisitor::visit( const Nodecl::Neg& n ) { return walk( n.get_rhs( ) ); }