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

David Edelsohn <dje at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |segher at gcc dot gnu.org

--- Comment #2 from David Edelsohn <dje at gcc dot gnu.org> ---
So the rs6000.md extendqihi2_dot splitter isn't expecting this weird insn

(insn 34 32 35 5 (parallel [
            (set (reg:CC 75 7 [179])
                (compare:CC (sign_extend:HI (reg:QI 9 9 [177]))
                    (const_int 0 [0])))
            (clobber (reg:HI 7 7))
        ]) anton.c:19 32 {*extendqihi2_dot}
     (nil))

It isn't able to use cr0, so it tries to split it

(define_insn_and_split "*extendqi<mode>2_dot"
  [(set (match_operand:CC 2 "cc_reg_operand" "=x,?y")
        (compare:CC (sign_extend:EXTQI (match_operand:QI 1 "gpc_reg_operand"
"r,
r"))
                    (const_int 0)))
   (clobber (match_scratch:EXTQI 0 "=r,r"))]
  "rs6000_gen_cell_microcode"
  "@
   extsb. %0,%1
   #"
  "&& reload_completed && cc_reg_not_cr0_operand (operands[2], CCmode)"
  [(set (match_dup 0)
        (sign_extend:EXTQI (match_dup 1)))
   (set (match_dup 2)
        (compare:CC (match_dup 0)
                    (const_int 0)))]
  ""
  [(set_attr "type" "exts")
   (set_attr "dot" "yes")
   (set_attr "length" "4,8")])

where

(define_mode_iterator EXTQI [HI SI (DI "TARGET_POWERPC64")])

but PPC doesn't have a (compare:CC (HI) (...)) instruction.  The splitter has
to extend to at least SImode.

Is the EXTQI iterator is defined correctly?

Reply via email to