{
rtx general = gen_reg_rtx (SImode);
rtx bp = gen_reg_rtx (PSImode);
-
- if (TARGET_BYTE_WRITES)
- emit_insn (gen_storehihww (XEXP (operands[0], 0),
- gen_lowpart (SImode, operands[1]),
- general, bp));
- else
- emit_insn (gen_storehinhww (XEXP (operands[0], 0),
- gen_lowpart (SImode, operands[1]),
- general, bp));
+ rtx (*fcn) ()
+ = TARGET_BYTE_WRITES ? gen_storehihww : gen_storehinhww;
+ rtx seq = (*fcn) (XEXP (operands[0], 0),
+ gen_lowpart (SImode, operands[1]),
+ general, bp);
+
+ a29k_set_memflags (seq, operands[0]);
+ emit_insn (seq);
DONE;
}
}
{
rtx general = gen_reg_rtx (SImode);
rtx bp = gen_reg_rtx (PSImode);
+ rtx seq = gen_loadqi (gen_lowpart (SImode, operands[0]),
+ XEXP (operands[1], 0), general, bp);
- emit_insn (gen_loadqi (gen_lowpart (SImode, operands[0]),
- XEXP (operands[1], 0), general, bp));
+ a29k_set_memflags (seq, operands[1]);
+ emit_insn (seq);
DONE;
}
}
(match_operand:PSI 2 "register_operand" "=b")])]
"! TARGET_DW_ENABLE"
"
-{ emit_insn (gen_loadhi (gen_lowpart (SImode, operands[0]),
- a29k_get_reloaded_address (operands[1]),
- gen_rtx (REG, SImode, R_TAV),
- operands[2]));
+{ rtx seq = gen_loadhi (gen_lowpart (SImode, operands[0]),
+ a29k_get_reloaded_address (operands[1]),
+ gen_rtx (REG, SImode, R_TAV),
+ operands[2]);
+
+ a29k_set_memflags (seq, operands[1]);
+ emit_insn (seq);
DONE;
}")
(match_operand:PSI 2 "register_operand" "=b")])]
"! TARGET_DW_ENABLE"
"
-{ if (TARGET_BYTE_WRITES)
- emit_insn (gen_storehihww (a29k_get_reloaded_address (operands[0]),
- gen_lowpart (SImode, operands[1]),
- gen_rtx (REG, SImode, R_TAV),
- operands[2]));
- else
- emit_insn (gen_storehinhww (a29k_get_reloaded_address (operands[0]),
- gen_lowpart (SImode, operands[1]),
- gen_rtx (REG, SImode, R_TAV),
- operands[2]));
+{ rtx (*fcn) () = TARGET_BYTE_WRITES ? gen_storehihww : gen_storehinhww;
+ rtx seq = (*fcn) (a29k_get_reloaded_address (operands[0]),
+ gen_lowpart (SImode, operands[1]),
+ gen_rtx (REG, SImode, R_TAV), operands[2]);
+
+ a29k_set_memflags (seq, operands[0]);
+ emit_insn (seq);
DONE;
}")
\f
{
rtx general = gen_reg_rtx (SImode);
rtx bp = gen_reg_rtx (PSImode);
-
- if (TARGET_BYTE_WRITES)
- emit_insn (gen_storeqihww (XEXP (operands[0], 0),
- gen_lowpart (SImode, operands[1]),
- general, bp));
- else
- emit_insn (gen_storeqinhww (XEXP (operands[0], 0),
- gen_lowpart (SImode, operands[1]),
- general, bp));
- DONE;
+ rtx (*fcn) ()
+ = TARGET_BYTE_WRITES ? gen_storeqihww : gen_storeqinhww;
+ rtx seq = (*fcn) (XEXP (operands[0], 0),
+ gen_lowpart (SImode, operands[1]),
+ general, bp);
+
+ a29k_set_memflags (seq, operands[0]);
+ emit_insn (seq);
}
}
else if (GET_CODE (operands[1]) == MEM)
{
rtx general = gen_reg_rtx (SImode);
rtx bp = gen_reg_rtx (PSImode);
+ rtx seq = gen_loadqi (gen_lowpart (SImode, operands[0]),
+ XEXP (operands[1], 0), general, bp);
- emit_insn (gen_loadqi (gen_lowpart (SImode, operands[0]),
- XEXP (operands[1], 0), general, bp));
+ a29k_set_memflags (seq, operands[1]);
+ emit_insn (seq);
DONE;
}
}
(match_operand:PSI 2 "register_operand" "=b")])]
"! TARGET_DW_ENABLE"
"
-{ emit_insn (gen_loadqi (gen_lowpart (SImode, operands[0]),
- a29k_get_reloaded_address (operands[1]),
- gen_rtx (REG, SImode, R_TAV),
- operands[2]));
+{ rtx seq = gen_loadqi (gen_lowpart (SImode, operands[0]),
+ a29k_get_reloaded_address (operands[1]),
+ gen_rtx (REG, SImode, R_TAV),
+ operands[2]);
+
+ a29k_set_memflags (seq, operands[1]);
+ emit_insn (seq);
DONE;
}")
(match_operand:PSI 2 "register_operand" "=b")])]
"! TARGET_DW_ENABLE"
"
-{ if (TARGET_BYTE_WRITES)
- emit_insn (gen_storeqihww (a29k_get_reloaded_address (operands[0]),
- gen_lowpart (SImode, operands[1]),
- gen_rtx (REG, SImode, R_TAV),
- operands[2]));
- else
- emit_insn (gen_storeqinhww (a29k_get_reloaded_address (operands[0]),
- gen_lowpart (SImode, operands[1]),
- gen_rtx (REG, SImode, R_TAV),
- operands[2]));
+{ rtx (*fcn) () = TARGET_BYTE_WRITES ? gen_storeqihww : gen_storeqinhww;
+ rtx seq = (*fcn) (a29k_get_reloaded_address (operands[0]),
+ gen_lowpart (SImode, operands[1]),
+ gen_rtx (REG, SImode, R_TAV), operands[2]);
+
+ a29k_set_memflags (seq, operands[0]);
+ emit_insn (seq);
DONE;
}")
\f