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?