本文整理汇总了C++中nodecl::NodeclBase::prettyprint方法的典型用法代码示例。如果您正苦于以下问题:C++ NodeclBase::prettyprint方法的具体用法?C++ NodeclBase::prettyprint怎么用?C++ NodeclBase::prettyprint使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类nodecl::NodeclBase
的用法示例。
在下文中一共展示了NodeclBase::prettyprint方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: visit
void KNCVectorLegalization::visit(const Nodecl::VectorLoad& n)
{
const Nodecl::NodeclBase rhs = n.get_rhs();
const Nodecl::NodeclBase mask = n.get_mask();
const Nodecl::List flags = n.get_flags().as<Nodecl::List>();
walk(rhs);
walk(mask);
walk(flags);
bool explicitly_aligned = !flags.find_first<Nodecl::AlignedFlag>().is_null();
// Turn unaligned load into gather
if (!explicitly_aligned
&& (_prefer_gather_scatter ||
(_prefer_mask_gather_scatter && !mask.is_null())))
{
VECTORIZATION_DEBUG()
{
fprintf(stderr, "KNC Legalization: Turn unaligned load '%s' into "\
"adjacent gather\n", rhs.prettyprint().c_str());
}
示例2: is_simd_aligned_access
bool NodeclStaticInfo::is_simd_aligned_access( const Nodecl::NodeclBase& n,
const TL::ObjectList<Nodecl::NodeclBase>* suitable_expressions,
int unroll_factor, int alignment ) const
{
if( !n.is<Nodecl::ArraySubscript>( ) )
{
std::cerr << "warning: returning false for is_simd_aligned_access when asking for nodecl '"
<< n.prettyprint( ) << "' which is not an array subscript" << std::endl;
return false;
}
bool result = false;
Nodecl::NodeclBase subscripted = n.as<Nodecl::ArraySubscript>( ).get_subscripted( );
int type_size = subscripted.get_type().basic_type().get_size();
SuitableAlignmentVisitor sa_v( _induction_variables, suitable_expressions, unroll_factor, type_size, alignment );
int subscript_alignment = sa_v.walk( n );
if( (subscript_alignment % alignment) == 0 )
result = true;
return result;
}
示例3: if
ObjectList<Nodecl::NodeclBase> ExtendedSymbol::get_nodecls_base( const Nodecl::NodeclBase& n )
{
if (n.is<Nodecl::Symbol>() || n.is<Nodecl::PointerToMember>() || n.is<Nodecl::ObjectInit>() || n.is<Nodecl::FunctionCall>())
{
return ObjectList<Nodecl::NodeclBase>(1, n);
}
else if (n.is<Nodecl::IntegerLiteral>() || n.is<Nodecl::FloatingLiteral>() || n.is<Nodecl::ComplexLiteral>()
|| n.is<Nodecl::StringLiteral>() || n.is<Nodecl::BooleanLiteral>())
{
return ObjectList<Nodecl::NodeclBase>();
}
else if (n.is<Nodecl::ClassMemberAccess>())
{
Nodecl::ClassMemberAccess aux = n.as<Nodecl::ClassMemberAccess>();
return get_nodecls_base(aux.get_lhs());
}
else if (n.is<Nodecl::ArraySubscript>())
{
Nodecl::ArraySubscript aux = n.as<Nodecl::ArraySubscript>();
return get_nodecls_base(aux.get_subscripted());
}
else if (n.is<Nodecl::Reference>())
{
Nodecl::Reference aux = n.as<Nodecl::Reference>();
return get_nodecls_base(aux.get_rhs());
}
else if (n.is<Nodecl::Dereference>())
{
Nodecl::Dereference aux = n.as<Nodecl::Dereference>();
return get_nodecls_base(aux.get_rhs());
}
else if (n.is<Nodecl::Conversion>())
{
Nodecl::Conversion aux = n.as<Nodecl::Conversion>();
return get_nodecls_base(aux.get_nest());
}
else if (n.is<Nodecl::Cast>())
{
Nodecl::Cast aux = n.as<Nodecl::Cast>();
return get_nodecls_base(aux.get_rhs());
}
/*!
* We can have (pre- post-) in- de-crements and other arithmetic operations
* Example:
* T *curr_high = ...;
* *curr_high-- = l;
* "*curr_high--" is a _KILLED_VAR
*/
else if (n.is<Nodecl::Predecrement>())
{
Nodecl::Predecrement aux = n.as<Nodecl::Predecrement>();
return get_nodecls_base(aux.get_rhs());
}
else if (n.is<Nodecl::Postdecrement>())
{
Nodecl::Postdecrement aux = n.as<Nodecl::Postdecrement>();
return get_nodecls_base(aux.get_rhs());
}
else if (n.is<Nodecl::Preincrement>())
{
Nodecl::Preincrement aux = n.as<Nodecl::Preincrement>();
return get_nodecls_base(aux.get_rhs());
}
else if (n.is<Nodecl::Postincrement>())
{
Nodecl::Postincrement aux = n.as<Nodecl::Postincrement>();
return get_nodecls_base(aux.get_rhs());
}
else if (n.is<Nodecl::Add>())
{
Nodecl::Add aux = n.as<Nodecl::Add>();
ObjectList<Nodecl::NodeclBase> rhs = get_nodecls_base(aux.get_rhs());
ObjectList<Nodecl::NodeclBase> lhs = get_nodecls_base(aux.get_lhs());
return rhs.append(lhs);
}
else
{
internal_error("Unexpected type of nodecl '%s' contained in an ExtendedSymbol '%s'",
ast_print_node_type(n.get_kind()), n.prettyprint().c_str());
}
}