Added a couple simple tests in r168681.<br><br><div class="gmail_quote">On Mon, Nov 26, 2012 at 11:14 AM, Jakob Stoklund Olesen <span dir="ltr"><<a href="mailto:stoklund@2pi.dk" target="_blank">stoklund@2pi.dk</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
On Nov 21, 2012, at 6:00 AM, Rafael Espíndola <<a href="mailto:rafael.espindola@gmail.com">rafael.espindola@gmail.com</a>> wrote:<br>
<br>
> is this testable?<br>
<br>
Yes, see test/CodeGen/X86/sse-domains.ll<br>
<span class="HOEnZb"><font color="#888888"><br>
/jakob<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
><br>
> On 21 November 2012 03:08, Craig Topper <<a href="mailto:craig.topper@gmail.com">craig.topper@gmail.com</a>> wrote:<br>
>> Author: ctopper<br>
>> Date: Wed Nov 21 02:08:21 2012<br>
>> New Revision: 168417<br>
>><br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=168417&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=168417&view=rev</a><br>
>> Log:<br>
>> Fix execution domain for packed FMA4 instructions.<br>
>><br>
>> Modified:<br>
>>    llvm/trunk/lib/Target/X86/X86InstrFMA.td<br>
>>    llvm/trunk/lib/Target/X86/X86InstrFormats.td<br>
>><br>
>> Modified: llvm/trunk/lib/Target/X86/X86InstrFMA.td<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrFMA.td?rev=168417&r1=168416&r2=168417&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrFMA.td?rev=168417&r1=168416&r2=168417&view=diff</a><br>

>> ==============================================================================<br>
>> --- llvm/trunk/lib/Target/X86/X86InstrFMA.td (original)<br>
>> +++ llvm/trunk/lib/Target/X86/X86InstrFMA.td Wed Nov 21 02:08:21 2012<br>
>> @@ -307,8 +307,6 @@<br>
>> } // isCodeGenOnly = 1<br>
>> }<br>
>><br>
>> -let Predicates = [HasFMA4] in {<br>
>> -<br>
>> defm VFMADDSS4  : fma4s<0x6A, "vfmaddss", FR32, f32mem, f32, X86Fmadd, loadf32>,<br>
>>                   fma4s_int<0x6A, "vfmaddss", ssmem, sse_load_f32,<br>
>>                             int_x86_fma_vfmadd_ss>;<br>
>> @@ -338,29 +336,33 @@<br>
>>                   fma4s_int<0x7F, "vfnmsubsd", sdmem, sse_load_f64,<br>
>>                             int_x86_fma_vfnmsub_sd>;<br>
>><br>
>> -defm VFMADDPS4    : fma4p<0x68, "vfmaddps", X86Fmadd, v4f32, v8f32,<br>
>> -                          memopv4f32, memopv8f32>;<br>
>> -defm VFMADDPD4    : fma4p<0x69, "vfmaddpd", X86Fmadd, v2f64, v4f64,<br>
>> -                          memopv2f64, memopv4f64>;<br>
>> -defm VFMSUBPS4    : fma4p<0x6C, "vfmsubps", X86Fmsub, v4f32, v8f32,<br>
>> -                          memopv4f32, memopv8f32>;<br>
>> -defm VFMSUBPD4    : fma4p<0x6D, "vfmsubpd", X86Fmsub, v2f64, v4f64,<br>
>> -                          memopv2f64, memopv4f64>;<br>
>> -defm VFNMADDPS4   : fma4p<0x78, "vfnmaddps", X86Fnmadd, v4f32, v8f32,<br>
>> -                          memopv4f32, memopv8f32>;<br>
>> -defm VFNMADDPD4   : fma4p<0x79, "vfnmaddpd", X86Fnmadd, v2f64, v4f64,<br>
>> -                          memopv2f64, memopv4f64>;<br>
>> -defm VFNMSUBPS4   : fma4p<0x7C, "vfnmsubps", X86Fnmsub, v4f32, v8f32,<br>
>> -                          memopv4f32, memopv8f32>;<br>
>> -defm VFNMSUBPD4   : fma4p<0x7D, "vfnmsubpd", X86Fnmsub, v2f64, v4f64,<br>
>> -                          memopv2f64, memopv4f64>;<br>
>> -defm VFMADDSUBPS4 : fma4p<0x5C, "vfmaddsubps", X86Fmaddsub, v4f32, v8f32,<br>
>> -                          memopv4f32, memopv8f32>;<br>
>> -defm VFMADDSUBPD4 : fma4p<0x5D, "vfmaddsubpd", X86Fmaddsub, v2f64, v4f64,<br>
>> -                          memopv2f64, memopv4f64>;<br>
>> -defm VFMSUBADDPS4 : fma4p<0x5E, "vfmsubaddps", X86Fmsubadd, v4f32, v8f32,<br>
>> -                          memopv4f32, memopv8f32>;<br>
>> -defm VFMSUBADDPD4 : fma4p<0x5F, "vfmsubaddpd", X86Fmsubadd, v2f64, v4f64,<br>
>> -                          memopv2f64, memopv4f64>;<br>
>> -} // HasFMA4<br>
>> +let ExeDomain = SSEPackedSingle in {<br>
>> +  defm VFMADDPS4    : fma4p<0x68, "vfmaddps", X86Fmadd, v4f32, v8f32,<br>
>> +                            memopv4f32, memopv8f32>;<br>
>> +  defm VFMSUBPS4    : fma4p<0x6C, "vfmsubps", X86Fmsub, v4f32, v8f32,<br>
>> +                            memopv4f32, memopv8f32>;<br>
>> +  defm VFNMADDPS4   : fma4p<0x78, "vfnmaddps", X86Fnmadd, v4f32, v8f32,<br>
>> +                            memopv4f32, memopv8f32>;<br>
>> +  defm VFNMSUBPS4   : fma4p<0x7C, "vfnmsubps", X86Fnmsub, v4f32, v8f32,<br>
>> +                            memopv4f32, memopv8f32>;<br>
>> +  defm VFMADDSUBPS4 : fma4p<0x5C, "vfmaddsubps", X86Fmaddsub, v4f32, v8f32,<br>
>> +                            memopv4f32, memopv8f32>;<br>
>> +  defm VFMSUBADDPS4 : fma4p<0x5E, "vfmsubaddps", X86Fmsubadd, v4f32, v8f32,<br>
>> +                            memopv4f32, memopv8f32>;<br>
>> +}<br>
>> +<br>
>> +let ExeDomain = SSEPackedDouble in {<br>
>> +  defm VFMADDPD4    : fma4p<0x69, "vfmaddpd", X86Fmadd, v2f64, v4f64,<br>
>> +                            memopv2f64, memopv4f64>;<br>
>> +  defm VFMSUBPD4    : fma4p<0x6D, "vfmsubpd", X86Fmsub, v2f64, v4f64,<br>
>> +                            memopv2f64, memopv4f64>;<br>
>> +  defm VFNMADDPD4   : fma4p<0x79, "vfnmaddpd", X86Fnmadd, v2f64, v4f64,<br>
>> +                            memopv2f64, memopv4f64>;<br>
>> +  defm VFNMSUBPD4   : fma4p<0x7D, "vfnmsubpd", X86Fnmsub, v2f64, v4f64,<br>
>> +                            memopv2f64, memopv4f64>;<br>
>> +  defm VFMADDSUBPD4 : fma4p<0x5D, "vfmaddsubpd", X86Fmaddsub, v2f64, v4f64,<br>
>> +                            memopv2f64, memopv4f64>;<br>
>> +  defm VFMSUBADDPD4 : fma4p<0x5F, "vfmsubaddpd", X86Fmsubadd, v2f64, v4f64,<br>
>> +                            memopv2f64, memopv4f64>;<br>
>> +}<br>
>><br>
>><br>
>> Modified: llvm/trunk/lib/Target/X86/X86InstrFormats.td<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrFormats.td?rev=168417&r1=168416&r2=168417&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrFormats.td?rev=168417&r1=168416&r2=168417&view=diff</a><br>

>> ==============================================================================<br>
>> --- llvm/trunk/lib/Target/X86/X86InstrFormats.td (original)<br>
>> +++ llvm/trunk/lib/Target/X86/X86InstrFormats.td Wed Nov 21 02:08:21 2012<br>
>> @@ -570,7 +570,7 @@<br>
>> // FMA4 Instruction Templates<br>
>> class FMA4<bits<8> o, Format F, dag outs, dag ins, string asm,<br>
>>            list<dag>pattern, InstrItinClass itin = IIC_DEFAULT><br>
>> -      : I<o, F, outs, ins, asm, pattern, itin, SSEPackedInt>, TA,<br>
>> +      : I<o, F, outs, ins, asm, pattern, itin>, TA,<br>
>>         OpSize, VEX_4V, VEX_I8IMM, Requires<[HasFMA4]>;<br>
>><br>
>> // XOP 2, 3 and 4 Operand Instruction Template<br>
>><br>
>><br>
>> _______________________________________________<br>
>> llvm-commits mailing list<br>
>> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>~Craig<br>