< prev index next >

src/cpu/aarch64/vm/aarch64.ad

Print this page
rev 10580 : fix
rev 10581 : more
rev 10582 : more
rev 10860 : 8154537: AArch64: some integer rotate instructions are never emitted
Summary: some integer rotate rules in ad file can't be matched
Reviewed-by:


12061 %}
12062 
12063 instruct rorL_rReg_Var_C_64(iRegLNoSp dst, iRegL src, iRegI shift, immI_64 c_64, rFlagsReg cr)
12064 %{
12065   match(Set dst (OrL (URShiftL src shift) (LShiftL src (SubI c_64 shift))));
12066 
12067   expand %{
12068     rorL_rReg(dst, src, shift, cr);
12069   %}
12070 %}
12071 
12072 instruct rorL_rReg_Var_C0(iRegLNoSp dst, iRegL src, iRegI shift, immI0 c0, rFlagsReg cr)
12073 %{
12074   match(Set dst (OrL (URShiftL src shift) (LShiftL src (SubI c0 shift))));
12075 
12076   expand %{
12077     rorL_rReg(dst, src, shift, cr);
12078   %}
12079 %}
12080 
12081 instruct rorI_rReg_Var_C_32(iRegLNoSp dst, iRegL src, iRegI shift, immI_32 c_32, rFlagsReg cr)
12082 %{
12083   match(Set dst (OrI (URShiftI src shift) (LShiftI src (SubI c_32 shift))));
12084 
12085   expand %{
12086     rorL_rReg(dst, src, shift, cr);
12087   %}
12088 %}
12089 
12090 instruct rorI_rReg_Var_C0(iRegLNoSp dst, iRegL src, iRegI shift, immI0 c0, rFlagsReg cr)
12091 %{
12092   match(Set dst (OrI (URShiftI src shift) (LShiftI src (SubI c0 shift))));
12093 
12094   expand %{
12095     rorL_rReg(dst, src, shift, cr);
12096   %}
12097 %}
12098 
12099 // Add/subtract (extended)
12100 
12101 instruct AddExtI(iRegLNoSp dst, iRegL src1, iRegIorL2I src2, rFlagsReg cr)
12102 %{
12103   match(Set dst (AddL src1 (ConvI2L src2)));
12104   ins_cost(INSN_COST);
12105   format %{ "add  $dst, $src1, sxtw $src2" %}
12106 
12107    ins_encode %{
12108      __ add(as_Register($dst$$reg), as_Register($src1$$reg),
12109             as_Register($src2$$reg), ext::sxtw);
12110    %}
12111   ins_pipe(ialu_reg_reg);
12112 %};
12113 
12114 instruct SubExtI(iRegLNoSp dst, iRegL src1, iRegIorL2I src2, rFlagsReg cr)
12115 %{




12061 %}
12062 
12063 instruct rorL_rReg_Var_C_64(iRegLNoSp dst, iRegL src, iRegI shift, immI_64 c_64, rFlagsReg cr)
12064 %{
12065   match(Set dst (OrL (URShiftL src shift) (LShiftL src (SubI c_64 shift))));
12066 
12067   expand %{
12068     rorL_rReg(dst, src, shift, cr);
12069   %}
12070 %}
12071 
12072 instruct rorL_rReg_Var_C0(iRegLNoSp dst, iRegL src, iRegI shift, immI0 c0, rFlagsReg cr)
12073 %{
12074   match(Set dst (OrL (URShiftL src shift) (LShiftL src (SubI c0 shift))));
12075 
12076   expand %{
12077     rorL_rReg(dst, src, shift, cr);
12078   %}
12079 %}
12080 
12081 instruct rorI_rReg_Var_C_32(iRegINoSp dst, iRegI src, iRegI shift, immI_32 c_32, rFlagsReg cr)
12082 %{
12083   match(Set dst (OrI (URShiftI src shift) (LShiftI src (SubI c_32 shift))));
12084 
12085   expand %{
12086     rorI_rReg(dst, src, shift, cr);
12087   %}
12088 %}
12089 
12090 instruct rorI_rReg_Var_C0(iRegINoSp dst, iRegI src, iRegI shift, immI0 c0, rFlagsReg cr)
12091 %{
12092   match(Set dst (OrI (URShiftI src shift) (LShiftI src (SubI c0 shift))));
12093 
12094   expand %{
12095     rorI_rReg(dst, src, shift, cr);
12096   %}
12097 %}
12098 
12099 // Add/subtract (extended)
12100 
12101 instruct AddExtI(iRegLNoSp dst, iRegL src1, iRegIorL2I src2, rFlagsReg cr)
12102 %{
12103   match(Set dst (AddL src1 (ConvI2L src2)));
12104   ins_cost(INSN_COST);
12105   format %{ "add  $dst, $src1, sxtw $src2" %}
12106 
12107    ins_encode %{
12108      __ add(as_Register($dst$$reg), as_Register($src1$$reg),
12109             as_Register($src2$$reg), ext::sxtw);
12110    %}
12111   ins_pipe(ialu_reg_reg);
12112 %};
12113 
12114 instruct SubExtI(iRegLNoSp dst, iRegL src1, iRegIorL2I src2, rFlagsReg cr)
12115 %{


< prev index next >