895 ~Component();
896
897
898 // Return 'true' if this use def info equals the parameter
899 bool is(int use_def_kill_enum) const;
900 // Return 'true' if this use def info is a superset of parameter
901 bool isa(int use_def_kill_enum) const;
902 int promote_use_def_info(int new_use_def);
903 const char *base_type(FormDict &globals);
904 // Form::DataType is_base_constant(FormDict &globals);
905
906 void dump(); // Debug printer
907 void output(FILE *fp); // Write to output files
908 const char* getUsedefName();
909
910 public:
911 // Implementation depends upon working bit intersection and union.
912 enum use_def_enum {
913 INVALID = 0x0,
914 USE = 0x1,
915 DEF = 0x2, USE_DEF = 0x3,
916 KILL = 0x4, USE_KILL = 0x5,
917 SYNTHETIC = 0x8,
918 TEMP = USE | SYNTHETIC,
919 CALL = 0x10
920 };
921 };
922
923
924 //------------------------------MatchNode--------------------------------------
925 class MatchNode : public Form {
926 private:
927
928 public:
929 // Public Data
930 const char *_result; // The name of the output of this node
931 const char *_name; // The name that appeared in the match rule
932 const char *_opType; // The Operation/Type matched
933 MatchNode *_lChild; // Left child in expression tree
934 MatchNode *_rChild; // Right child in expression tree
935 int _numleaves; // Sum of numleaves for all direct children
936 ArchDesc &_AD; // Reference to ArchDesc object
937 char *_internalop; // String representing internal operand
938 int _commutative_id; // id of commutative operation
|
895 ~Component();
896
897
898 // Return 'true' if this use def info equals the parameter
899 bool is(int use_def_kill_enum) const;
900 // Return 'true' if this use def info is a superset of parameter
901 bool isa(int use_def_kill_enum) const;
902 int promote_use_def_info(int new_use_def);
903 const char *base_type(FormDict &globals);
904 // Form::DataType is_base_constant(FormDict &globals);
905
906 void dump(); // Debug printer
907 void output(FILE *fp); // Write to output files
908 const char* getUsedefName();
909
910 public:
911 // Implementation depends upon working bit intersection and union.
912 enum use_def_enum {
913 INVALID = 0x0,
914 USE = 0x1,
915 DEF = 0x2,
916 USE_DEF = USE | DEF,
917 KILL = 0x4,
918 USE_KILL = USE | KILL,
919 SYNTHETIC = 0x8,
920 TEMP = USE | SYNTHETIC,
921 TEMP_DEF = TEMP | DEF,
922 CALL = 0x10
923 };
924 };
925
926
927 //------------------------------MatchNode--------------------------------------
928 class MatchNode : public Form {
929 private:
930
931 public:
932 // Public Data
933 const char *_result; // The name of the output of this node
934 const char *_name; // The name that appeared in the match rule
935 const char *_opType; // The Operation/Type matched
936 MatchNode *_lChild; // Left child in expression tree
937 MatchNode *_rChild; // Right child in expression tree
938 int _numleaves; // Sum of numleaves for all direct children
939 ArchDesc &_AD; // Reference to ArchDesc object
940 char *_internalop; // String representing internal operand
941 int _commutative_id; // id of commutative operation
|