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 %{
|