comparison src/cpu/x86/vm/x86_32.ad @ 6849:f6badecb7ea7

7199654: Remove LoadUI2LNode Summary: Removed LoadUI2L node from Ideal nodes, use match rule in .ad files instead. Reviewed-by: kvn
author vlivanov
date Tue, 09 Oct 2012 12:40:05 -0700
parents 8e47bac5643a
children d804e148cff8
comparison
equal deleted inserted replaced
6848:8e47bac5643a 6849:f6badecb7ea7
1556 } 1556 }
1557 1557
1558 // Returns true if the high 32 bits of the value is known to be zero. 1558 // Returns true if the high 32 bits of the value is known to be zero.
1559 bool is_operand_hi32_zero(Node* n) { 1559 bool is_operand_hi32_zero(Node* n) {
1560 int opc = n->Opcode(); 1560 int opc = n->Opcode();
1561 if (opc == Op_LoadUI2L) {
1562 return true;
1563 }
1564 if (opc == Op_AndL) { 1561 if (opc == Op_AndL) {
1565 Node* o2 = n->in(2); 1562 Node* o2 = n->in(2);
1566 if (o2->is_Con() && (o2->get_long() & 0xFFFFFFFF00000000LL) == 0LL) { 1563 if (o2->is_Con() && (o2->get_long() & 0xFFFFFFFF00000000LL) == 0LL) {
1567 return true; 1564 return true;
1568 } 1565 }
6150 %} 6147 %}
6151 ins_pipe(ialu_reg_mem); 6148 ins_pipe(ialu_reg_mem);
6152 %} 6149 %}
6153 6150
6154 // Load Unsigned Integer into Long Register 6151 // Load Unsigned Integer into Long Register
6155 instruct loadUI2L(eRegL dst, memory mem, eFlagsReg cr) %{ 6152 instruct loadUI2L(eRegL dst, memory mem, immL_32bits mask, eFlagsReg cr) %{
6156 match(Set dst (LoadUI2L mem)); 6153 match(Set dst (AndL (ConvI2L (LoadI mem)) mask));
6157 effect(KILL cr); 6154 effect(KILL cr);
6158 6155
6159 ins_cost(250); 6156 ins_cost(250);
6160 format %{ "MOV $dst.lo,$mem\t# uint -> long\n\t" 6157 format %{ "MOV $dst.lo,$mem\t# uint -> long\n\t"
6161 "XOR $dst.hi,$dst.hi" %} 6158 "XOR $dst.hi,$dst.hi" %}