1846 } |
1846 } |
1847 // Special hack for ideal CMoveP; ideal type depends on inputs |
1847 // Special hack for ideal CMoveP; ideal type depends on inputs |
1848 fprintf(fp," const Type *bottom_type() const { const Type *t = in(oper_input_base()+%d)->bottom_type(); return (req() <= oper_input_base()+%d) ? t : t->meet(in(oper_input_base()+%d)->bottom_type()); } // CMoveP\n", |
1848 fprintf(fp," const Type *bottom_type() const { const Type *t = in(oper_input_base()+%d)->bottom_type(); return (req() <= oper_input_base()+%d) ? t : t->meet(in(oper_input_base()+%d)->bottom_type()); } // CMoveP\n", |
1849 offset, offset+1, offset+1); |
1849 offset, offset+1, offset+1); |
1850 } |
1850 } |
|
1851 else if( instr->_matrule && instr->_matrule->_rChild && !strcmp(instr->_matrule->_rChild->_opType,"CMoveN") ) { |
|
1852 int offset = 1; |
|
1853 // Special special hack to see if the Cmp? has been incorporated in the conditional move |
|
1854 MatchNode *rl = instr->_matrule->_rChild->_lChild; |
|
1855 if( rl && !strcmp(rl->_opType, "Binary") ) { |
|
1856 MatchNode *rlr = rl->_rChild; |
|
1857 if (rlr && strncmp(rlr->_opType, "Cmp", 3) == 0) |
|
1858 offset = 2; |
|
1859 } |
|
1860 // Special hack for ideal CMoveN; ideal type depends on inputs |
|
1861 fprintf(fp," const Type *bottom_type() const { const Type *t = in(oper_input_base()+%d)->bottom_type(); return (req() <= oper_input_base()+%d) ? t : t->meet(in(oper_input_base()+%d)->bottom_type()); } // CMoveN\n", |
|
1862 offset, offset+1, offset+1); |
|
1863 } |
1851 else if( instr->needs_base_oop_edge(_globalNames) ) { |
1864 else if( instr->needs_base_oop_edge(_globalNames) ) { |
1852 // Special hack for ideal AddP. Bottom type is an oop IFF it has a |
1865 // Special hack for ideal AddP. Bottom type is an oop IFF it has a |
1853 // legal base-pointer input. Otherwise it is NOT an oop. |
1866 // legal base-pointer input. Otherwise it is NOT an oop. |
1854 fprintf(fp," const Type *bottom_type() const { return AddPNode::mach_bottom_type(this); } // AddP\n"); |
1867 fprintf(fp," const Type *bottom_type() const { return AddPNode::mach_bottom_type(this); } // AddP\n"); |
1855 } |
1868 } |