128-bit PXOR requires SSE2

Hi all,

I think I found a bug in LLVM 3.0: When compiling for a target without SSE2 support, there were some 128-bit PXOR instructions in the generated code.

I traced it down to the following definition in X86InstrSSE.td:

   def FsFLD0SS : I<0xEF, MRMInitReg, (outs FR32:$dst), (ins), "",
                    [(set FR32:$dst, fp32imm0)]>,
                    Requires<[HasSSE1]>, TB, OpSize;

I tried replacing the HasSSE1 with a HasSSE2 but that didn't do the trick. I noticed that TOT has a different definition and I tried substituting that as well but again no luck. Is there a simple way to make it work with LLVM 3.0 or should I consider updating to a later version?


That particular issue doesn't look familiar; if you can reproduce with
trunk, please file a bug report.


I suspect this would have been fixed by r143996. Though that wasn’t the intention of that commit based on the commit comments.