Mercurial > hg > graal-compiler
changeset 6140:d5dded5d1e0d
Merge
author | kvn |
---|---|
date | Mon, 11 Jun 2012 22:38:28 -0700 |
parents | ccaa67adfe5b (diff) 0919b2e7895d (current diff) |
children | e7715c222897 |
files | |
diffstat | 2 files changed, 20 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/x86/vm/x86_32.ad Mon Jun 11 14:58:51 2012 -0700 +++ b/src/cpu/x86/vm/x86_32.ad Mon Jun 11 22:38:28 2012 -0700 @@ -5555,8 +5555,9 @@ ins_pipe( ialu_reg_reg); %} -instruct bytes_reverse_unsigned_short(eRegI dst) %{ +instruct bytes_reverse_unsigned_short(eRegI dst, eFlagsReg cr) %{ match(Set dst (ReverseBytesUS dst)); + effect(KILL cr); format %{ "BSWAP $dst\n\t" "SHR $dst,16\n\t" %} @@ -5567,8 +5568,9 @@ ins_pipe( ialu_reg ); %} -instruct bytes_reverse_short(eRegI dst) %{ +instruct bytes_reverse_short(eRegI dst, eFlagsReg cr) %{ match(Set dst (ReverseBytesS dst)); + effect(KILL cr); format %{ "BSWAP $dst\n\t" "SAR $dst,16\n\t" %} @@ -5729,9 +5731,10 @@ //---------- Population Count Instructions ------------------------------------- -instruct popCountI(eRegI dst, eRegI src) %{ +instruct popCountI(eRegI dst, eRegI src, eFlagsReg cr) %{ predicate(UsePopCountInstruction); match(Set dst (PopCountI src)); + effect(KILL cr); format %{ "POPCNT $dst, $src" %} ins_encode %{ @@ -5740,9 +5743,10 @@ ins_pipe(ialu_reg); %} -instruct popCountI_mem(eRegI dst, memory mem) %{ +instruct popCountI_mem(eRegI dst, memory mem, eFlagsReg cr) %{ predicate(UsePopCountInstruction); match(Set dst (PopCountI (LoadI mem))); + effect(KILL cr); format %{ "POPCNT $dst, $mem" %} ins_encode %{
--- a/src/cpu/x86/vm/x86_64.ad Mon Jun 11 14:58:51 2012 -0700 +++ b/src/cpu/x86/vm/x86_64.ad Mon Jun 11 22:38:28 2012 -0700 @@ -6417,14 +6417,14 @@ match(Set dst (ReverseBytesL dst)); format %{ "bswapq $dst" %} - opcode(0x0F, 0xC8); /* Opcode 0F /C8 */ ins_encode( REX_reg_wide(dst), OpcP, opc2_reg(dst) ); ins_pipe( ialu_reg); %} -instruct bytes_reverse_unsigned_short(rRegI dst) %{ +instruct bytes_reverse_unsigned_short(rRegI dst, rFlagsReg cr) %{ match(Set dst (ReverseBytesUS dst)); + effect(KILL cr); format %{ "bswapl $dst\n\t" "shrl $dst,16\n\t" %} @@ -6435,8 +6435,9 @@ ins_pipe( ialu_reg ); %} -instruct bytes_reverse_short(rRegI dst) %{ +instruct bytes_reverse_short(rRegI dst, rFlagsReg cr) %{ match(Set dst (ReverseBytesS dst)); + effect(KILL cr); format %{ "bswapl $dst\n\t" "sar $dst,16\n\t" %} @@ -6564,9 +6565,10 @@ //---------- Population Count Instructions ------------------------------------- -instruct popCountI(rRegI dst, rRegI src) %{ +instruct popCountI(rRegI dst, rRegI src, rFlagsReg cr) %{ predicate(UsePopCountInstruction); match(Set dst (PopCountI src)); + effect(KILL cr); format %{ "popcnt $dst, $src" %} ins_encode %{ @@ -6575,9 +6577,10 @@ ins_pipe(ialu_reg); %} -instruct popCountI_mem(rRegI dst, memory mem) %{ +instruct popCountI_mem(rRegI dst, memory mem, rFlagsReg cr) %{ predicate(UsePopCountInstruction); match(Set dst (PopCountI (LoadI mem))); + effect(KILL cr); format %{ "popcnt $dst, $mem" %} ins_encode %{ @@ -6587,9 +6590,10 @@ %} // Note: Long.bitCount(long) returns an int. -instruct popCountL(rRegI dst, rRegL src) %{ +instruct popCountL(rRegI dst, rRegL src, rFlagsReg cr) %{ predicate(UsePopCountInstruction); match(Set dst (PopCountL src)); + effect(KILL cr); format %{ "popcnt $dst, $src" %} ins_encode %{ @@ -6599,9 +6603,10 @@ %} // Note: Long.bitCount(long) returns an int. -instruct popCountL_mem(rRegI dst, memory mem) %{ +instruct popCountL_mem(rRegI dst, memory mem, rFlagsReg cr) %{ predicate(UsePopCountInstruction); match(Set dst (PopCountL (LoadL mem))); + effect(KILL cr); format %{ "popcnt $dst, $mem" %} ins_encode %{