]> git.ipfire.org Git - thirdparty/gcc.git/commit
s390: Stay scalar for TOINTVEC/tointvec
authorStefan Schulze Frielinghaus <stefansf@gcc.gnu.org>
Mon, 20 Jan 2025 09:01:08 +0000 (10:01 +0100)
committerStefan Schulze Frielinghaus <stefansf@gcc.gnu.org>
Mon, 20 Jan 2025 09:01:08 +0000 (10:01 +0100)
commit0c6fdb9befa611135f6f94f15d97664e8f02e41f
treea743d73016872bccb35203bfc06880c8d55963b6
parent43a6001ff58d1e0da791b5f7f4c51aa2ed1e4493
s390: Stay scalar for TOINTVEC/tointvec

Currently TOINTVEC maps scalar mode TI/TF to vector mode V1TI/V1TF,
respectively.  As a consequence we may end up with patterns with a
mixture of scalar and vector modes as e.g. for

(define_insn "vec_sel0<mode>"
  [(set (match_operand:VT 0 "register_operand" "=v")
        (if_then_else:VT
         (eq (match_operand:<TOINTVEC> 3 "register_operand" "v")
             (match_operand:<TOINTVEC> 4 "const0_operand" ""))
         (match_operand:VT 1 "register_operand" "v")
         (match_operand:VT 2 "register_operand" "v")))]

This is cumbersome since gen_vec_sel0ti() and gen_vec_sel0tf() require
that operands 3 and 4 are of vector mode whereas the remainder of
operands must be of scalar mode.  Likewise for tointvec.

Fixed by staying scalar.

gcc/ChangeLog:

* config/s390/vector.md: Stay scalar for TOINTVEC/tointvec.
gcc/config/s390/vector.md