@@ -6721,6 +6721,50 @@ instruct countTrailingZerosL_bsf(rRegI dst, rRegL src, rFlagsReg cr) %{
67216721 ins_pipe(ialu_reg);
67226722%}
67236723
6724+ //--------------- Reverse Operation Instructions ----------------
6725+ instruct bytes_reversebit_int(rRegI dst, rRegI src, rRegI rtmp, rFlagsReg cr) %{
6726+ predicate(!VM_Version::supports_gfni());
6727+ match(Set dst (ReverseI src));
6728+ effect(TEMP dst, TEMP rtmp, KILL cr);
6729+ format %{ "reverse_int $dst $src\t! using $rtmp as TEMP" %}
6730+ ins_encode %{
6731+ __ reverseI($dst$$Register, $src$$Register, xnoreg, xnoreg, $rtmp$$Register);
6732+ %}
6733+ ins_pipe( ialu_reg );
6734+ %}
6735+
6736+ instruct bytes_reversebit_int_gfni(rRegI dst, rRegI src, regF xtmp1, regF xtmp2, rRegL rtmp, rFlagsReg cr) %{
6737+ predicate(VM_Version::supports_gfni());
6738+ match(Set dst (ReverseI src));
6739+ effect(TEMP dst, TEMP xtmp1, TEMP xtmp2, TEMP rtmp, KILL cr);
6740+ format %{ "reverse_int $dst $src\t! using $rtmp, $xtmp1 and $xtmp2 as TEMP" %}
6741+ ins_encode %{
6742+ __ reverseI($dst$$Register, $src$$Register, $xtmp1$$XMMRegister, $xtmp2$$XMMRegister, $rtmp$$Register);
6743+ %}
6744+ ins_pipe( ialu_reg );
6745+ %}
6746+
6747+ instruct bytes_reversebit_long(rRegL dst, rRegL src, rRegL rtmp1, rRegL rtmp2, rFlagsReg cr) %{
6748+ predicate(!VM_Version::supports_gfni());
6749+ match(Set dst (ReverseL src));
6750+ effect(TEMP dst, TEMP rtmp1, TEMP rtmp2, KILL cr);
6751+ format %{ "reverse_long $dst $src\t! using $rtmp1 and $rtmp2 as TEMP" %}
6752+ ins_encode %{
6753+ __ reverseL($dst$$Register, $src$$Register, xnoreg, xnoreg, $rtmp1$$Register, $rtmp2$$Register);
6754+ %}
6755+ ins_pipe( ialu_reg );
6756+ %}
6757+
6758+ instruct bytes_reversebit_long_gfni(rRegL dst, rRegL src, regD xtmp1, regD xtmp2, rRegL rtmp, rFlagsReg cr) %{
6759+ predicate(VM_Version::supports_gfni());
6760+ match(Set dst (ReverseL src));
6761+ effect(TEMP dst, TEMP xtmp1, TEMP xtmp2, TEMP rtmp, KILL cr);
6762+ format %{ "reverse_long $dst $src\t! using $rtmp, $xtmp1 and $xtmp2 as TEMP" %}
6763+ ins_encode %{
6764+ __ reverseL($dst$$Register, $src$$Register, $xtmp1$$XMMRegister, $xtmp2$$XMMRegister, $rtmp$$Register, noreg);
6765+ %}
6766+ ins_pipe( ialu_reg );
6767+ %}
67246768
67256769//---------- Population Count Instructions -------------------------------------
67266770
0 commit comments