< prev index next >
src/cpu/aarch64/vm/aarch64.ad
Print this page
rev 10235 : 8150229: aarch64: pipeline class for several instructions is not set correctly
Summary: aarch64: c2 fix pipeline class for several instructions.
Reviewed-by: duke
Contributed-by: felix.yang@linaro.org
*** 13407,13417 ****
ins_encode %{
__ fmovs($dst$$Register, as_FloatRegister($src$$reg));
%}
! ins_pipe(pipe_class_memory);
%}
instruct MoveI2F_reg_reg(vRegF dst, iRegI src) %{
--- 13407,13417 ----
ins_encode %{
__ fmovs($dst$$Register, as_FloatRegister($src$$reg));
%}
! ins_pipe(fp_f2i);
%}
instruct MoveI2F_reg_reg(vRegF dst, iRegI src) %{
*** 13425,13435 ****
ins_encode %{
__ fmovs(as_FloatRegister($dst$$reg), $src$$Register);
%}
! ins_pipe(pipe_class_memory);
%}
instruct MoveD2L_reg_reg(iRegLNoSp dst, vRegD src) %{
--- 13425,13435 ----
ins_encode %{
__ fmovs(as_FloatRegister($dst$$reg), $src$$Register);
%}
! ins_pipe(fp_i2f);
%}
instruct MoveD2L_reg_reg(iRegLNoSp dst, vRegD src) %{
*** 13443,13453 ****
ins_encode %{
__ fmovd($dst$$Register, as_FloatRegister($src$$reg));
%}
! ins_pipe(pipe_class_memory);
%}
instruct MoveL2D_reg_reg(vRegD dst, iRegL src) %{
--- 13443,13453 ----
ins_encode %{
__ fmovd($dst$$Register, as_FloatRegister($src$$reg));
%}
! ins_pipe(fp_d2l);
%}
instruct MoveL2D_reg_reg(vRegD dst, iRegL src) %{
*** 13461,13471 ****
ins_encode %{
__ fmovd(as_FloatRegister($dst$$reg), $src$$Register);
%}
! ins_pipe(pipe_class_memory);
%}
// ============================================================================
// clearing of an array
--- 13461,13471 ----
ins_encode %{
__ fmovd(as_FloatRegister($dst$$reg), $src$$Register);
%}
! ins_pipe(fp_l2d);
%}
// ============================================================================
// clearing of an array
*** 16606,16616 ****
ins_encode %{
__ sshl(as_FloatRegister($dst$$reg), __ T2S,
as_FloatRegister($src$$reg),
as_FloatRegister($shift$$reg));
%}
! ins_pipe(vshift64_imm);
%}
instruct vsll4I(vecX dst, vecX src, vecX shift) %{
predicate(n->as_Vector()->length() == 4);
match(Set dst (LShiftVI src shift));
--- 16606,16616 ----
ins_encode %{
__ sshl(as_FloatRegister($dst$$reg), __ T2S,
as_FloatRegister($src$$reg),
as_FloatRegister($shift$$reg));
%}
! ins_pipe(vshift64);
%}
instruct vsll4I(vecX dst, vecX src, vecX shift) %{
predicate(n->as_Vector()->length() == 4);
match(Set dst (LShiftVI src shift));
*** 16620,16630 ****
ins_encode %{
__ sshl(as_FloatRegister($dst$$reg), __ T4S,
as_FloatRegister($src$$reg),
as_FloatRegister($shift$$reg));
%}
! ins_pipe(vshift128_imm);
%}
instruct vsrl2I(vecD dst, vecD src, vecX shift) %{
predicate(n->as_Vector()->length() == 2);
match(Set dst (URShiftVI src shift));
--- 16620,16630 ----
ins_encode %{
__ sshl(as_FloatRegister($dst$$reg), __ T4S,
as_FloatRegister($src$$reg),
as_FloatRegister($shift$$reg));
%}
! ins_pipe(vshift128);
%}
instruct vsrl2I(vecD dst, vecD src, vecX shift) %{
predicate(n->as_Vector()->length() == 2);
match(Set dst (URShiftVI src shift));
*** 16633,16643 ****
ins_encode %{
__ ushl(as_FloatRegister($dst$$reg), __ T2S,
as_FloatRegister($src$$reg),
as_FloatRegister($shift$$reg));
%}
! ins_pipe(vshift64_imm);
%}
instruct vsrl4I(vecX dst, vecX src, vecX shift) %{
predicate(n->as_Vector()->length() == 4);
match(Set dst (URShiftVI src shift));
--- 16633,16643 ----
ins_encode %{
__ ushl(as_FloatRegister($dst$$reg), __ T2S,
as_FloatRegister($src$$reg),
as_FloatRegister($shift$$reg));
%}
! ins_pipe(vshift64);
%}
instruct vsrl4I(vecX dst, vecX src, vecX shift) %{
predicate(n->as_Vector()->length() == 4);
match(Set dst (URShiftVI src shift));
*** 16646,16656 ****
ins_encode %{
__ ushl(as_FloatRegister($dst$$reg), __ T4S,
as_FloatRegister($src$$reg),
as_FloatRegister($shift$$reg));
%}
! ins_pipe(vshift128_imm);
%}
instruct vsll2I_imm(vecD dst, vecD src, immI shift) %{
predicate(n->as_Vector()->length() == 2);
match(Set dst (LShiftVI src shift));
--- 16646,16656 ----
ins_encode %{
__ ushl(as_FloatRegister($dst$$reg), __ T4S,
as_FloatRegister($src$$reg),
as_FloatRegister($shift$$reg));
%}
! ins_pipe(vshift128);
%}
instruct vsll2I_imm(vecD dst, vecD src, immI shift) %{
predicate(n->as_Vector()->length() == 2);
match(Set dst (LShiftVI src shift));
*** 16764,16774 ****
ins_encode %{
__ shl(as_FloatRegister($dst$$reg), __ T2D,
as_FloatRegister($src$$reg),
(int)$shift$$constant & 63);
%}
! ins_pipe(vshift128);
%}
instruct vsra2L_imm(vecX dst, vecX src, immI shift) %{
predicate(n->as_Vector()->length() == 2);
match(Set dst (RShiftVL src shift));
--- 16764,16774 ----
ins_encode %{
__ shl(as_FloatRegister($dst$$reg), __ T2D,
as_FloatRegister($src$$reg),
(int)$shift$$constant & 63);
%}
! ins_pipe(vshift128_imm);
%}
instruct vsra2L_imm(vecX dst, vecX src, immI shift) %{
predicate(n->as_Vector()->length() == 2);
match(Set dst (RShiftVL src shift));
< prev index next >