Mercurial > hg > graal-compiler
comparison src/share/vm/opto/superword.cpp @ 3842:c7b60b601eb4
7069452: Cleanup NodeFlags
Summary: Remove flags which duplicate information in Node::NodeClasses.
Reviewed-by: never
author | kvn |
---|---|
date | Wed, 27 Jul 2011 17:28:36 -0700 |
parents | 08eb13460b3a |
children | 6987871cfb9b |
comparison
equal
deleted
inserted
replaced
3841:0f34fdee809e | 3842:c7b60b601eb4 |
---|---|
1165 const TypePtr* atyp = n->adr_type(); | 1165 const TypePtr* atyp = n->adr_type(); |
1166 vn = VectorLoadNode::make(_phase->C, opc, ctl, mem, adr, atyp, vlen); | 1166 vn = VectorLoadNode::make(_phase->C, opc, ctl, mem, adr, atyp, vlen); |
1167 | 1167 |
1168 } else if (n->is_Store()) { | 1168 } else if (n->is_Store()) { |
1169 // Promote value to be stored to vector | 1169 // Promote value to be stored to vector |
1170 VectorNode* val = vector_opd(p, MemNode::ValueIn); | 1170 Node* val = vector_opd(p, MemNode::ValueIn); |
1171 | 1171 |
1172 int opc = n->Opcode(); | 1172 int opc = n->Opcode(); |
1173 Node* ctl = n->in(MemNode::Control); | 1173 Node* ctl = n->in(MemNode::Control); |
1174 Node* mem = first->in(MemNode::Memory); | 1174 Node* mem = first->in(MemNode::Memory); |
1175 Node* adr = low_adr->in(MemNode::Address); | 1175 Node* adr = low_adr->in(MemNode::Address); |
1197 } | 1197 } |
1198 } | 1198 } |
1199 | 1199 |
1200 //------------------------------vector_opd--------------------------- | 1200 //------------------------------vector_opd--------------------------- |
1201 // Create a vector operand for the nodes in pack p for operand: in(opd_idx) | 1201 // Create a vector operand for the nodes in pack p for operand: in(opd_idx) |
1202 VectorNode* SuperWord::vector_opd(Node_List* p, int opd_idx) { | 1202 Node* SuperWord::vector_opd(Node_List* p, int opd_idx) { |
1203 Node* p0 = p->at(0); | 1203 Node* p0 = p->at(0); |
1204 uint vlen = p->size(); | 1204 uint vlen = p->size(); |
1205 Node* opd = p0->in(opd_idx); | 1205 Node* opd = p0->in(opd_idx); |
1206 | 1206 |
1207 bool same_opd = true; | 1207 bool same_opd = true; |
1213 break; | 1213 break; |
1214 } | 1214 } |
1215 } | 1215 } |
1216 | 1216 |
1217 if (same_opd) { | 1217 if (same_opd) { |
1218 if (opd->is_Vector()) { | 1218 if (opd->is_Vector() || opd->is_VectorLoad()) { |
1219 return (VectorNode*)opd; // input is matching vector | 1219 return opd; // input is matching vector |
1220 } | 1220 } |
1221 assert(!opd->is_VectorStore(), "such vector is not expected here"); | |
1221 // Convert scalar input to vector. Use p0's type because it's container | 1222 // Convert scalar input to vector. Use p0's type because it's container |
1222 // maybe smaller than the operand's container. | 1223 // maybe smaller than the operand's container. |
1223 const Type* opd_t = velt_type(!in_bb(opd) ? p0 : opd); | 1224 const Type* opd_t = velt_type(!in_bb(opd) ? p0 : opd); |
1224 const Type* p0_t = velt_type(p0); | 1225 const Type* p0_t = velt_type(p0); |
1225 if (p0_t->higher_equal(opd_t)) opd_t = p0_t; | 1226 if (p0_t->higher_equal(opd_t)) opd_t = p0_t; |