1985 // Special hack for tlsLoadP 1986 fprintf(fp," const Type *bottom_type() const { return TypeRawPtr::BOTTOM; } // tlsLoadP\n"); 1987 } 1988 else if ( instr->is_ideal_if() ) { 1989 fprintf(fp," const Type *bottom_type() const { return TypeTuple::IFBOTH; } // matched IfNode\n"); 1990 } 1991 else if ( instr->is_ideal_membar() ) { 1992 fprintf(fp," const Type *bottom_type() const { return TypeTuple::MEMBAR; } // matched MemBar\n"); 1993 } 1994 1995 // Check where 'ideal_type' must be customized 1996 /* 1997 if ( instr->_matrule && instr->_matrule->_rChild && 1998 ( strcmp("ConvF2I",instr->_matrule->_rChild->_opType)==0 1999 || strcmp("ConvD2I",instr->_matrule->_rChild->_opType)==0 ) ) { 2000 fprintf(fp," virtual uint ideal_reg() const { return Compile::current()->matcher()->base2reg[Type::Int]; }\n"); 2001 }*/ 2002 2003 // Analyze machine instructions that either USE or DEF memory. 2004 int memory_operand = instr->memory_operand(_globalNames); 2005 // Some guys kill all of memory 2006 if ( instr->is_wide_memory_kill(_globalNames) ) { 2007 memory_operand = InstructForm::MANY_MEMORY_OPERANDS; 2008 } 2009 if ( memory_operand != InstructForm::NO_MEMORY_OPERAND ) { 2010 if( memory_operand == InstructForm::MANY_MEMORY_OPERANDS ) { 2011 fprintf(fp," virtual const TypePtr *adr_type() const;\n"); 2012 } 2013 fprintf(fp," virtual const MachOper *memory_operand() const;\n"); 2014 } 2015 2016 fprintf(fp, "#ifndef PRODUCT\n"); 2017 2018 // virtual function for generating the user's assembler output 2019 gen_inst_format(fp, _globalNames,*instr); 2020 2021 // Machine independent print functionality for debugging 2022 fprintf(fp," virtual const char *Name() const { return \"%s\";}\n", 2023 instr->_ident); 2024 2025 fprintf(fp, "#endif\n"); 2026 2027 // Close definition of this XxxMachNode 2028 fprintf(fp,"};\n"); | 1985 // Special hack for tlsLoadP 1986 fprintf(fp," const Type *bottom_type() const { return TypeRawPtr::BOTTOM; } // tlsLoadP\n"); 1987 } 1988 else if ( instr->is_ideal_if() ) { 1989 fprintf(fp," const Type *bottom_type() const { return TypeTuple::IFBOTH; } // matched IfNode\n"); 1990 } 1991 else if ( instr->is_ideal_membar() ) { 1992 fprintf(fp," const Type *bottom_type() const { return TypeTuple::MEMBAR; } // matched MemBar\n"); 1993 } 1994 1995 // Check where 'ideal_type' must be customized 1996 /* 1997 if ( instr->_matrule && instr->_matrule->_rChild && 1998 ( strcmp("ConvF2I",instr->_matrule->_rChild->_opType)==0 1999 || strcmp("ConvD2I",instr->_matrule->_rChild->_opType)==0 ) ) { 2000 fprintf(fp," virtual uint ideal_reg() const { return Compile::current()->matcher()->base2reg[Type::Int]; }\n"); 2001 }*/ 2002 2003 // Analyze machine instructions that either USE or DEF memory. 2004 int memory_operand = instr->memory_operand(_globalNames); 2005 if ( memory_operand != InstructForm::NO_MEMORY_OPERAND ) { 2006 if( memory_operand == InstructForm::MANY_MEMORY_OPERANDS ) { 2007 fprintf(fp," virtual const TypePtr *adr_type() const;\n"); 2008 } 2009 fprintf(fp," virtual const MachOper *memory_operand() const;\n"); 2010 } 2011 2012 fprintf(fp, "#ifndef PRODUCT\n"); 2013 2014 // virtual function for generating the user's assembler output 2015 gen_inst_format(fp, _globalNames,*instr); 2016 2017 // Machine independent print functionality for debugging 2018 fprintf(fp," virtual const char *Name() const { return \"%s\";}\n", 2019 instr->_ident); 2020 2021 fprintf(fp, "#endif\n"); 2022 2023 // Close definition of this XxxMachNode 2024 fprintf(fp,"};\n"); |