Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/superword.cpp @ 20311:b1bc1af04c6e
8052081: Optimize generated by C2 code for Intel's Atom processor
Summary: Allow to execute vectorization and crc32 optimization on Atom. Enable UseFPUForSpilling by default on x86.
Reviewed-by: roland
author | kvn |
---|---|
date | Tue, 05 Aug 2014 15:02:10 -0700 |
parents | 42274879e644 |
children | 7848fc12602b a1b5fe34c604 |
comparison
equal
deleted
inserted
replaced
20310:bfba6779654b | 20311:b1bc1af04c6e |
---|---|
1372 Node* first = executed_first(p); | 1372 Node* first = executed_first(p); |
1373 int opc = n->Opcode(); | 1373 int opc = n->Opcode(); |
1374 if (n->is_Load()) { | 1374 if (n->is_Load()) { |
1375 Node* ctl = n->in(MemNode::Control); | 1375 Node* ctl = n->in(MemNode::Control); |
1376 Node* mem = first->in(MemNode::Memory); | 1376 Node* mem = first->in(MemNode::Memory); |
1377 SWPointer p1(n->as_Mem(), this); | |
1378 // Identify the memory dependency for the new loadVector node by | |
1379 // walking up through memory chain. | |
1380 // This is done to give flexibility to the new loadVector node so that | |
1381 // it can move above independent storeVector nodes. | |
1382 while (mem->is_StoreVector()) { | |
1383 SWPointer p2(mem->as_Mem(), this); | |
1384 int cmp = p1.cmp(p2); | |
1385 if (SWPointer::not_equal(cmp) || !SWPointer::comparable(cmp)) { | |
1386 mem = mem->in(MemNode::Memory); | |
1387 } else { | |
1388 break; // dependent memory | |
1389 } | |
1390 } | |
1377 Node* adr = low_adr->in(MemNode::Address); | 1391 Node* adr = low_adr->in(MemNode::Address); |
1378 const TypePtr* atyp = n->adr_type(); | 1392 const TypePtr* atyp = n->adr_type(); |
1379 vn = LoadVectorNode::make(C, opc, ctl, mem, adr, atyp, vlen, velt_basic_type(n)); | 1393 vn = LoadVectorNode::make(C, opc, ctl, mem, adr, atyp, vlen, velt_basic_type(n)); |
1380 vlen_in_bytes = vn->as_LoadVector()->memory_size(); | 1394 vlen_in_bytes = vn->as_LoadVector()->memory_size(); |
1381 } else if (n->is_Store()) { | 1395 } else if (n->is_Store()) { |