diff options
Diffstat (limited to 'gcc/config/s390')
-rw-r--r-- | gcc/config/s390/s390.md | 69 |
1 files changed, 25 insertions, 44 deletions
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 23484098f79..03bec777bd7 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -4545,12 +4545,10 @@ emit_insn (gen_divmodtidi3 (operands[4], operands[1], operands[2])); insn = emit_move_insn (operands[0], gen_lowpart (DImode, operands[4])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, div_equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, div_equal); insn = emit_move_insn (operands[3], gen_highpart (DImode, operands[4])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, mod_equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, mod_equal); DONE; }) @@ -4616,17 +4614,15 @@ emit_insn (gen_rtx_CLOBBER (VOIDmode, operands[4])); emit_move_insn (gen_lowpart (DImode, operands[4]), operands[1]); emit_move_insn (gen_highpart (DImode, operands[4]), const0_rtx); + insn = emit_insn (gen_udivmodtidi3 (operands[4], operands[4], operands[2])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, equal); insn = emit_move_insn (operands[0], gen_lowpart (DImode, operands[4])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, div_equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, div_equal); insn = emit_move_insn (operands[3], gen_highpart (DImode, operands[4])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, mod_equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, mod_equal); DONE; }) @@ -4676,17 +4672,15 @@ operands[4] = gen_reg_rtx(DImode); emit_insn (gen_extendsidi2 (operands[4], operands[1])); + insn = emit_insn (gen_divmoddisi3 (operands[4], operands[4], operands[2])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, equal); insn = emit_move_insn (operands[0], gen_lowpart (SImode, operands[4])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, div_equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, div_equal); insn = emit_move_insn (operands[3], gen_highpart (SImode, operands[4])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, mod_equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, mod_equal); DONE; }) @@ -4738,17 +4732,15 @@ emit_insn (gen_rtx_CLOBBER (VOIDmode, operands[4])); emit_move_insn (gen_lowpart (SImode, operands[4]), operands[1]); emit_move_insn (gen_highpart (SImode, operands[4]), const0_rtx); + insn = emit_insn (gen_udivmoddisi3 (operands[4], operands[4], operands[2])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, equal); insn = emit_move_insn (operands[0], gen_lowpart (SImode, operands[4])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, div_equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, div_equal); insn = emit_move_insn (operands[3], gen_highpart (SImode, operands[4])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, mod_equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, mod_equal); DONE; }) @@ -4813,14 +4805,11 @@ emit_insn (gen_zero_extendsidi2 (operands[3], operands[1])); insn = emit_insn (gen_divmoddisi3 (operands[3], operands[3], operands[2])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, equal); insn = emit_move_insn (operands[0], gen_lowpart (SImode, operands[3])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, - udiv_equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, udiv_equal); } } else @@ -4844,14 +4833,12 @@ emit_insn (gen_zero_extendsidi2 (operands[3], operands[1])); insn = emit_insn (gen_divmoddisi3 (operands[3], operands[3], operands[2])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, equal); insn = emit_move_insn (operands[0], gen_lowpart (SImode, operands[3])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, - udiv_equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, udiv_equal); + emit_jump (label3); emit_label (label1); emit_move_insn (operands[0], operands[1]); @@ -4905,14 +4892,11 @@ emit_insn (gen_zero_extendsidi2 (operands[3], operands[1])); insn = emit_insn (gen_divmoddisi3 (operands[3], operands[3], operands[2])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, equal); insn = emit_move_insn (operands[0], gen_highpart (SImode, operands[3])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, - umod_equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, umod_equal); } } else @@ -4936,14 +4920,12 @@ emit_insn (gen_zero_extendsidi2 (operands[3], operands[1])); insn = emit_insn (gen_divmoddisi3 (operands[3], operands[3], operands[2])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, equal); insn = emit_move_insn (operands[0], gen_highpart (SImode, operands[3])); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, - umod_equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, umod_equal); + emit_jump (label3); emit_label (label1); emit_move_insn (operands[0], const0_rtx); @@ -6275,8 +6257,7 @@ emit_insn (gen_clztidi2 (wide_reg, operands[1], msb)); insn = emit_move_insn (operands[0], gen_highpart (DImode, wide_reg)); - REG_NOTES (insn) = - gen_rtx_EXPR_LIST (REG_EQUAL, clz_equal, REG_NOTES (insn)); + set_unique_reg_note (insn, REG_EQUAL, clz_equal); DONE; }) |