src/cpu/x86/vm/x86_32.ad

changeset 4164
d804e148cff8
parent 4142
d8ce2825b193
parent 4160
f6badecb7ea7
child 4410
00af3a3a8df4
     1.1 --- a/src/cpu/x86/vm/x86_32.ad	Tue Oct 09 10:09:34 2012 -0700
     1.2 +++ b/src/cpu/x86/vm/x86_32.ad	Fri Oct 12 09:22:52 2012 -0700
     1.3 @@ -1424,6 +1424,11 @@
     1.4    return true;
     1.5  }
     1.6  
     1.7 +bool Matcher::narrow_klass_use_complex_address() {
     1.8 +  ShouldNotCallThis();
     1.9 +  return true;
    1.10 +}
    1.11 +
    1.12  
    1.13  // Is it better to copy float constants, or load them directly from memory?
    1.14  // Intel can load a float constant from a direct address, requiring no
    1.15 @@ -1553,9 +1558,6 @@
    1.16  // Returns true if the high 32 bits of the value is known to be zero.
    1.17  bool is_operand_hi32_zero(Node* n) {
    1.18    int opc = n->Opcode();
    1.19 -  if (opc == Op_LoadUI2L) {
    1.20 -    return true;
    1.21 -  }
    1.22    if (opc == Op_AndL) {
    1.23      Node* o2 = n->in(2);
    1.24      if (o2->is_Con() && (o2->get_long() & 0xFFFFFFFF00000000LL) == 0LL) {
    1.25 @@ -6147,8 +6149,8 @@
    1.26  %}
    1.27  
    1.28  // Load Unsigned Integer into Long Register
    1.29 -instruct loadUI2L(eRegL dst, memory mem, eFlagsReg cr) %{
    1.30 -  match(Set dst (LoadUI2L mem));
    1.31 +instruct loadUI2L(eRegL dst, memory mem, immL_32bits mask, eFlagsReg cr) %{
    1.32 +  match(Set dst (AndL (ConvI2L (LoadI mem)) mask));
    1.33    effect(KILL cr);
    1.34  
    1.35    ins_cost(250);

mercurial