Mercurial > hg > graal-compiler
comparison src/share/vm/adlc/output_h.cpp @ 3851:95134e034042
7063629: use cbcond in C2 generated code on T4
Summary: Use new short branch instruction in C2 generated code.
Reviewed-by: never
author | kvn |
---|---|
date | Thu, 11 Aug 2011 12:08:11 -0700 |
parents | c7b60b601eb4 |
children | 11211f7cb5a0 |
comparison
equal
deleted
inserted
replaced
3850:6987871cfb9b | 3851:95134e034042 |
---|---|
1534 // virtual functions for attributes | 1534 // virtual functions for attributes |
1535 // | 1535 // |
1536 // Each instruction attribute results in a virtual call of same name. | 1536 // Each instruction attribute results in a virtual call of same name. |
1537 // The ins_cost is not handled here. | 1537 // The ins_cost is not handled here. |
1538 Attribute *attr = instr->_attribs; | 1538 Attribute *attr = instr->_attribs; |
1539 bool avoid_back_to_back = false; | |
1539 while (attr != NULL) { | 1540 while (attr != NULL) { |
1540 if (strcmp(attr->_ident,"ins_cost") && | 1541 if (strcmp(attr->_ident,"ins_cost") && |
1541 strcmp(attr->_ident,"ins_short_branch")) { | 1542 strcmp(attr->_ident,"ins_short_branch")) { |
1542 fprintf(fp," int %s() const { return %s; }\n", | 1543 fprintf(fp," int %s() const { return %s; }\n", |
1543 attr->_ident, attr->_val); | 1544 attr->_ident, attr->_val); |
1544 } | 1545 } |
1546 // Check value for ins_avoid_back_to_back, and if it is true (1), set the flag | |
1547 if (!strcmp(attr->_ident,"ins_avoid_back_to_back") && attr->int_val(*this) != 0) | |
1548 avoid_back_to_back = true; | |
1545 attr = (Attribute *)attr->_next; | 1549 attr = (Attribute *)attr->_next; |
1546 } | 1550 } |
1547 | 1551 |
1548 // virtual functions for encode and format | 1552 // virtual functions for encode and format |
1549 | 1553 |
1698 if ( instr->has_short_branch_form() ) { | 1702 if ( instr->has_short_branch_form() ) { |
1699 if ( node_flags_set ) { | 1703 if ( node_flags_set ) { |
1700 fprintf(fp," | Flag_may_be_short_branch"); | 1704 fprintf(fp," | Flag_may_be_short_branch"); |
1701 } else { | 1705 } else { |
1702 fprintf(fp,"init_flags(Flag_may_be_short_branch"); | 1706 fprintf(fp,"init_flags(Flag_may_be_short_branch"); |
1707 node_flags_set = true; | |
1708 } | |
1709 } | |
1710 | |
1711 // flag: if this instruction should not be generated back to back. | |
1712 if ( avoid_back_to_back ) { | |
1713 if ( node_flags_set ) { | |
1714 fprintf(fp," | Flag_avoid_back_to_back"); | |
1715 } else { | |
1716 fprintf(fp,"init_flags(Flag_avoid_back_to_back"); | |
1703 node_flags_set = true; | 1717 node_flags_set = true; |
1704 } | 1718 } |
1705 } | 1719 } |
1706 | 1720 |
1707 // Check if machine instructions that USE memory, but do not DEF memory, | 1721 // Check if machine instructions that USE memory, but do not DEF memory, |