https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116896

--- Comment #12 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Jakub Jelinek from comment #11)

> That way targets can emit whatever is beneficial.
x86 already has an implementation of tri-state integer from conditional codes:

--cut here--
;; Produce a tri-state integer (-1, 0, 1) from condition codes.

(define_expand "cmpintqi"
  [(set (match_dup 1)
        (gtu:QI (reg:CC FLAGS_REG) (const_int 0)))
   (set (match_dup 2)
        (ltu:QI (reg:CC FLAGS_REG) (const_int 0)))
   (parallel [(set (match_operand:QI 0 "register_operand")
                   (minus:QI (match_dup 1)
                             (match_dup 2)))
              (clobber (reg:CC FLAGS_REG))])]
  ""
{
  operands[1] = gen_reg_rtx (QImode);
  operands[2] = gen_reg_rtx (QImode);
})
--cut here--

The above could be generalized to also handle integer .SPACESHIP operator.

Reply via email to