OpenADFortTk (basic)
IntrinsicInfo Class Reference

#include <IntrinsicInfo.h>

Collaboration diagram for IntrinsicInfo:

List of all members.

Classes

struct  Info
struct  Key
struct  KeyLT

Public Types

enum  IntrinsicType_E {
  FLOAT_INTR, INTEGER_INTR, STRING_INTR, BOOL_INTR,
  IO_INTR, ARRAY_INTR, COMPILER_INTERNAL_INTR, UNDEFINED_INTR_TYPE
}
typedef std::map< Key, Info,
KeyLT
IntrinsicMap

Static Public Member Functions

static bool isIntrinsic (const WN *aWN_p)
static const char * intrinsicBaseName (INTRINSIC opcode)
static const InfogetIntrinsicInfo (WN *aWN_p)
static const IntrinsicMapgetMap ()

Private Member Functions

 IntrinsicInfo ()
 ~IntrinsicInfo ()

Static Private Member Functions

static bool lookupIntrinsicPrefix (const char *str)
static bool lookupIntrinsicInfo (const WN *aWN_p, const Info *anInfo)

Static Private Attributes

static IntrinsicMap ourIntrinsicInfoMap
static bool ourInitFlag = false

Detailed Description

Definition at line 8 of file IntrinsicInfo.h.


Member Typedef Documentation

Definition at line 70 of file IntrinsicInfo.h.


Member Enumeration Documentation

type of intrinsic

Enumerator:
FLOAT_INTR 
INTEGER_INTR 
STRING_INTR 
BOOL_INTR 
IO_INTR 
ARRAY_INTR 
COMPILER_INTERNAL_INTR 
UNDEFINED_INTR_TYPE 

Definition at line 42 of file IntrinsicInfo.h.


Constructor & Destructor Documentation

no def

no def


Member Function Documentation

const IntrinsicInfo::Info & IntrinsicInfo::getIntrinsicInfo ( WN *  aWN_p) [static]

if this is an intrinsic returns the info

Definition at line 197 of file IntrinsicInfo.cpp.

References DIE, and lookupIntrinsicInfo().

Here is the call graph for this function:

const char * IntrinsicInfo::intrinsicBaseName ( INTRINSIC  opcode) [static]
bool IntrinsicInfo::isIntrinsic ( const WN *  aWN_p) [static]

is this an intrinsic?

Definition at line 192 of file IntrinsicInfo.cpp.

References lookupIntrinsicInfo().

Referenced by Open64IRCallsiteIterator::build_func_call_list(), Open64IRInterface::createExprTree(), Open64IRInterface::findAllMemRefsAndMapToMemRefExprs(), and WN_Call_Return_Type().

Here is the call graph for this function:

bool IntrinsicInfo::lookupIntrinsicInfo ( const WN *  aWN_p,
const Info anInfo 
) [static, private]

internal lookup

PLM : I see Intrinsic Call apperas only for CASSIGNSTMT at this point. As CASSIGNSTMT is removed from the list of Intrinsics. I am commenting out OPR_INTRINSIC_CALL test case, otherwise it gives and error message on encountering OPR_INTRINSIC_CALL for CASSIGNSTMT.

if (opr==OPR_INTRINSIC_CALL) { get the name and strip machine type information const char* inm = intrinsicBaseName(WN_intrinsic(aWN_p)); finder=getMap().find(Key(opr,inm)); if (finder==getMap().end()) { DIE("IntrinsicInfo::isIntrinsic: no entry for OPR_INTRINSIC_CALL %s ",inm); } }

Definition at line 144 of file IntrinsicInfo.cpp.

References DIE, getMap(), intrinsicBaseName(), and SexpTags::ST.

Referenced by getIntrinsicInfo(), and isIntrinsic().

Here is the call graph for this function:

bool IntrinsicInfo::lookupIntrinsicPrefix ( const char *  str) [static, private]

return true if 'str' is a valid prefix for an intrinsic name; false otherwise. These prefixes are the machine types the front end attaches to the intrinsic names.

Definition at line 252 of file IntrinsicInfo.cpp.

References prefixTableCmp().

Referenced by intrinsicBaseName().

Here is the call graph for this function:


Member Data Documentation

bool IntrinsicInfo::ourInitFlag = false [static, private]

Definition at line 87 of file IntrinsicInfo.h.

Referenced by getMap().

Definition at line 86 of file IntrinsicInfo.h.

Referenced by getMap().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines