This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/36992] Very stange code for _mm_move_epi64



------- Comment #8 from ubizjak at gmail dot com  2008-08-01 19:32 -------
(In reply to comment #7)

> But it isn't necessary at all. We should use
> 
> movq %xmm0,%xmm0

It looks to me that we should add:

  [(set (match_operand:V2DI 0 "register_operand"     "=x")
        (vec_concat:V2DI
          (match_operand:DI 1 "nonimmediate_operand" "!x")
          (match_operand:DI 2 "vector_move_operand"  " C")))]

to the alternatives of all vec_concatv2di patterns.

Perhaps we need something like that also for all vec_concatv2si patterns, since
x can also hold SImode value, and movd fills upper part of target SSE reg with
zeroes.

"!" guarantees, that this alternative applies only when input value is already
in SSE reg.


-- 


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]