public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/45142]  New: split for *vec_set<mode>_0_sse2 incomplete
@ 2010-07-30 10:46 rguenth at gcc dot gnu dot org
  2010-07-30 14:17 ` [Bug target/45142] " rth at gcc dot gnu dot org
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-07-30 10:46 UTC (permalink / raw)
  To: gcc-bugs

t.c:24:1: error: could not split insn
(insn:TI 20 47 43 (set (mem/c:V4SI (reg/f:DI 7 sp) [3 %sfp+-64 S16 A128])
        (vec_merge:V4SI (vec_duplicate:V4SI (reg:SI 0 ax))
            (mem/c:V4SI (reg/f:DI 7 sp) [3 %sfp+-64 S16 A128])
            (const_int 1 [0x1]))) t.c:16 1424 {*vec_setv4si_0_sse2}
     (expr_list:REG_DEAD (reg:SI 0 ax)
        (expr_list:REG_EQUAL (vec_merge:V4SI (vec_duplicate:V4SI (mem/j/i:SI
(plus:DI (plus:DI (mult:DI (reg:DI 5 di [orig:68 argc ] [68])
                                    (const_int 4 [0x4]))
                                (reg/f:DI 7 sp))
                            (const_int 16 [0x10])) [2 vectmp.4 S4 A32]))
                (const_vector:V4SI [
                        (const_int 0 [0])
                        (const_int 3 [0x3])
                        (const_int 2 [0x2])
                        (const_int 1 [0x1])
                    ])
                (const_int 1 [0x1]))
            (nil))))
t.c:24:1: internal compiler error: in final_scan_insn, at final.c:2645

Which is because while the insn matches

(define_insn "*vec_set<mode>_0_sse2"
  [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand"  "=x, x,x,m")
        (vec_merge:SSEMODE4S
          (vec_duplicate:SSEMODE4S
            (match_operand:<ssescalarmode> 2
              "general_operand"                            " m,*r,x,x*rfF"))
          (match_operand:SSEMODE4S 1 "vector_move_operand" " C, C,0,0")
          (const_int 1)))]
  "TARGET_SSE2"
  "@
   mov<ssescalarmodesuffix>\t{%2, %0|%0, %2}
   movd\t{%2, %0|%0, %2}
   movss\t{%2, %0|%0, %2}
   #"
  [(set_attr "type" "ssemov")
   (set_attr "mode" "<ssescalarmode>,SI,SF,*")])

the only matching split is

(define_split
  [(set (match_operand:V4SF 0 "memory_operand" "")
        (vec_merge:V4SF
          (vec_duplicate:V4SF
            (match_operand:SF 1 "nonmemory_operand" ""))
          (match_dup 0)
          (const_int 1)))]
  "TARGET_SSE && reload_completed"
  [(const_int 0)]
{
  emit_move_insn (adjust_address (operands[0], SFmode, 0), operands[1]);
  DONE;
})

which only allows V4SF mode.  It probably should be macroized to use
SSEMODE4S.


-- 
           Summary: split for *vec_set<mode>_0_sse2 incomplete
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rguenth at gcc dot gnu dot org
GCC target triplet: x86-64-*-*, i?86-*-*


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45142


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2010-08-01 10:43 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-07-30 10:46 [Bug target/45142] New: split for *vec_set<mode>_0_sse2 incomplete rguenth at gcc dot gnu dot org
2010-07-30 14:17 ` [Bug target/45142] " rth at gcc dot gnu dot org
2010-07-30 14:25 ` rguenth at gcc dot gnu dot org
2010-07-31 10:55 ` ubizjak at gmail dot com
2010-07-31 11:03 ` ubizjak at gmail dot com
2010-07-31 11:18 ` rguenther at suse dot de
2010-07-31 12:06 ` rguenth at gcc dot gnu dot org
2010-08-01 10:01 ` ubizjak at gmail dot com
2010-08-01 10:42 ` uros at gcc dot gnu dot org
2010-08-01 10:43 ` ubizjak at gmail dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).