aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/mips/mips.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/mips/mips.cc')
-rw-r--r--gcc/config/mips/mips.cc18
1 files changed, 12 insertions, 6 deletions
diff --git a/gcc/config/mips/mips.cc b/gcc/config/mips/mips.cc
index 24addfa89aa..7d4791157d1 100644
--- a/gcc/config/mips/mips.cc
+++ b/gcc/config/mips/mips.cc
@@ -22801,14 +22801,20 @@ mips_expand_vec_cmp_expr (rtx *operands)
void
mips_expand_vec_cond_expr (machine_mode mode, machine_mode vimode,
- rtx *operands)
+ rtx *operands, bool mask)
{
- rtx cond = operands[3];
- rtx cmp_op0 = operands[4];
- rtx cmp_op1 = operands[5];
- rtx cmp_res = gen_reg_rtx (vimode);
+ rtx cmp_res;
+ if (mask)
+ cmp_res = operands[3];
+ else
+ {
+ rtx cond = operands[3];
+ rtx cmp_op0 = operands[4];
+ rtx cmp_op1 = operands[5];
+ cmp_res = gen_reg_rtx (vimode);
- mips_expand_msa_cmp (cmp_res, GET_CODE (cond), cmp_op0, cmp_op1);
+ mips_expand_msa_cmp (cmp_res, GET_CODE (cond), cmp_op0, cmp_op1);
+ }
/* We handle the following cases:
1) r = a CMP b ? -1 : 0