comparison src/cpu/x86/vm/x86_64.ad @ 17798:f040cf9fc9c0

Merge
author kvn
date Wed, 19 Feb 2014 20:12:43 -0800
parents 50fdb38839eb 984401824c5e
children 5292439ef895 a433eb716ce1
comparison
equal deleted inserted replaced
17797:2fcab8ba885a 17798:f040cf9fc9c0
3092 op_cost(10); 3092 op_cost(10);
3093 format %{ %} 3093 format %{ %}
3094 interface(CONST_INTER); 3094 interface(CONST_INTER);
3095 %} 3095 %}
3096 3096
3097 // Int Immediate non-negative
3098 operand immU31()
3099 %{
3100 predicate(n->get_int() >= 0);
3101 match(ConI);
3102
3103 op_cost(0);
3104 format %{ %}
3105 interface(CONST_INTER);
3106 %}
3107
3097 // Constant for long shifts 3108 // Constant for long shifts
3098 operand immI_32() 3109 operand immI_32()
3099 %{ 3110 %{
3100 predicate( n->get_int() == 32 ); 3111 predicate( n->get_int() == 32 );
3101 match(ConI); 3112 match(ConI);
5048 __ movzwq($dst$$Register, $mem$$Address); 5059 __ movzwq($dst$$Register, $mem$$Address);
5049 %} 5060 %}
5050 ins_pipe(ialu_reg_mem); 5061 ins_pipe(ialu_reg_mem);
5051 %} 5062 %}
5052 5063
5053 // Load Integer with a 32-bit mask into Long Register 5064 // Load Integer with a 31-bit mask into Long Register
5054 instruct loadI2L_immI(rRegL dst, memory mem, immI mask, rFlagsReg cr) %{ 5065 instruct loadI2L_immU31(rRegL dst, memory mem, immU31 mask, rFlagsReg cr) %{
5055 match(Set dst (ConvI2L (AndI (LoadI mem) mask))); 5066 match(Set dst (ConvI2L (AndI (LoadI mem) mask)));
5056 effect(KILL cr); 5067 effect(KILL cr);
5057 5068
5058 format %{ "movl $dst, $mem\t# int & 32-bit mask -> long\n\t" 5069 format %{ "movl $dst, $mem\t# int & 31-bit mask -> long\n\t"
5059 "andl $dst, $mask" %} 5070 "andl $dst, $mask" %}
5060 ins_encode %{ 5071 ins_encode %{
5061 Register Rdst = $dst$$Register; 5072 Register Rdst = $dst$$Register;
5062 __ movl(Rdst, $mem$$Address); 5073 __ movl(Rdst, $mem$$Address);
5063 __ andl(Rdst, $mask$$constant); 5074 __ andl(Rdst, $mask$$constant);