Mercurial > hg > graal-jvmci-8
diff src/cpu/x86/vm/x86_32.ad @ 14457:45467c53f178
Merge
author | kvn |
---|---|
date | Tue, 28 Jan 2014 12:28:17 -0800 |
parents | 50fdb38839eb 7e8bd81ce93e |
children | 5292439ef895 a433eb716ce1 |
line wrap: on
line diff
--- a/src/cpu/x86/vm/x86_32.ad Tue Jan 28 12:25:34 2014 -0800 +++ b/src/cpu/x86/vm/x86_32.ad Tue Jan 28 12:28:17 2014 -0800 @@ -3897,6 +3897,17 @@ interface(CONST_INTER); %} +// Int Immediate non-negative +operand immU31() +%{ + predicate(n->get_int() >= 0); + match(ConI); + + op_cost(0); + format %{ %} + interface(CONST_INTER); +%} + // Constant for long shifts operand immI_32() %{ predicate( n->get_int() == 32 ); @@ -6127,12 +6138,12 @@ ins_pipe(ialu_reg_mem); %} -// Load Integer with 32-bit mask into Long Register -instruct loadI2L_immI(eRegL dst, memory mem, immI mask, eFlagsReg cr) %{ +// Load Integer with 31-bit mask into Long Register +instruct loadI2L_immU31(eRegL dst, memory mem, immU31 mask, eFlagsReg cr) %{ match(Set dst (ConvI2L (AndI (LoadI mem) mask))); effect(KILL cr); - format %{ "MOV $dst.lo,$mem\t# int & 32-bit mask -> long\n\t" + format %{ "MOV $dst.lo,$mem\t# int & 31-bit mask -> long\n\t" "XOR $dst.hi,$dst.hi\n\t" "AND $dst.lo,$mask" %} ins_encode %{