<ping><br><br><div class="gmail_quote">On 7 November 2012 21:54, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br><blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid" class="gmail_quote">


Adding Lang Hames who implemented fpcontract in LLVM and Clang & might<br>
know what's going on here.<br>
<div><div><br>
On Wed, Nov 7, 2012 at 12:08 AM, Anitha Boyapati<br>
<<a href="mailto:anitha.boyapati@gmail.com" target="_blank">anitha.boyapati@gmail.com</a>> wrote:<br>
> Hi,<br>
><br>
> I am trying to generate FMA for X86 target ("bdver2") through<br>
> -ffp-contract=fast. [Sanity checks: bdver2 supports fma]<br>
><br>
> While I am able to generate FMA for  "C" input, I could not when LLVM IR is<br>
> input. Example illustrated below:<br>
><br>
> #input - C file<br>
> float test(float a, float b, float c) {<br>
>         return a*b+c;<br>
> }<br>
> The below arguments work fine -<br>
><br>
> $clang -march=bdver2 -mfma -ffp-contract=fast -S test.c<br>
><br>
> However, when I input the below llvm assembly(pasted at the end), clang (not<br>
> llc) fails to generate FMA. Any idea why and how I will be able to do that<br>
> through clang?<br>
><br>
> $ clang -march=bdver2 -ffp-contract=fast -mfma -S test.ll -O3<br>
> $ more test.s<br>
><br>
> test:                                   # @test<br>
>         .cfi_startproc<br>
> # BB#0:                                 # %entry<br>
>         vmulss  %xmm1, %xmm0, %xmm0<br>
>         vaddss  %xmm2, %xmm0, %xmm0<br>
>         ret<br>
> .Ltmp0:<br>
>         .size   test, .Ltmp0-test<br>
>         .cfi_endproc<br>
><br>
><br>
><br>
> ; ModuleID = 'test.c'<br>
> target datalayout =<br>
> "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"<br>
> target triple = "x86_64-unknown-linux-gnu"<br>
> module asm "\09.ident\09\22GCC: (GNU) 4.7.2 LLVM: 3.2svn\22"<br>
> define float @test(float %a, float %b, float %c) nounwind uwtable readnone {<br>
> entry:<br>
>   %0 = fmul float %a, %b<br>
>   %1 = fadd float %0, %c<br>
>   ret float %1<br>
> }<br>
><br>
> --<br>
>  Anitha<br>
><br>
><br>
</div></div>> _______________________________________________<br>
> cfe-dev mailing list<br>
> <a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
><br>
</blockquote></div><br><br clear="all"><br>-- <br><i style="font-family:times new roman,serif"><b> Anitha</b></i><br><br>