[llvm-commits] [llvm] r162012 - /llvm/trunk/lib/Target/X86/X86.td

Anitha Boyapati anitha.boyapati at gmail.com
Wed Aug 22 01:48:39 PDT 2012


On 22 August 2012 12:14, Craig Topper <craig.topper at gmail.com> wrote:

>  ; CHECK: test_f32
>  ; CHECK-FMA-INST: vfmadd213ss
>  ; CHECK-FMA-CALL: _fmaf
> +; CHECK-FMA-CALL-BDVER2: fmaf
>
>  define float @test_f32(float %a, float %b, float %c) nounwind readnone
> ssp {
>  entry:
> @@ -16,6 +19,7 @@
>  ; CHECK: test_f64
>  ; CHECK-FMA-INST: vfmadd213sd
>  ; CHECK-FMA-CALL: _fma
> +; CHECK-FMA-CALL-BDVER2: fma
>
> What makes bdver require a different CHECK here?
>
>
>

bdver2 generates calls to fma() and fmaf() while -mtriple for darwin10
prefixes the calls with '_'. Test fails because of mismatch. Initially I
considered modifying CHECK-FMA-CALL patterns to remove '_' but  preferred
introducing another check.




>
> --- test/CodeGen/X86/fma3-intrinsics.ll    (revision 162188)
> +++ test/CodeGen/X86/fma3-intrinsics.ll    (working copy)
> @@ -1,7 +1,9 @@
>  ; RUN: llc < %s -mtriple=x86_64-pc-win32 -mcpu=core-avx2 -mattr=avx2,+fma
> | FileCheck %s
> +; RUN: llc < %s -mcpu=bdver2 -mattr=-fma4 | FileCheck
> --check-prefix=CHECK-BDVER2 %s
>
> Why the separate CHECK for bdver2. They all seem identical to the existing
> CHECK


Not really. The check-bdver2 differs for cases:@test_x86_fmadd_ps_y() and
@test_x86_fnmadd_ps_y().  Register form of FMA gets generated. Hence
different checks.

- Anitha




>


> On Mon, Aug 20, 2012 at 11:52 AM, Anitha Boyapati <
> anitha.boyapati at gmail.com> wrote:
>
>>
>>
>> On 20 August 2012 02:44, Craig Topper <craig.topper at gmail.com> wrote:
>>
>>> --- test/CodeGen/X86/fma.ll    (revision 162188)
>>> +++ test/CodeGen/X86/fma.ll    (working copy)
>>> @@ -2,6 +2,10 @@
>>>  ; RUN: llc < %s -mtriple=i386-apple-darwin10               | FileCheck
>>> %s --check-prefix=CHECK-FMA-CALL
>>>  ; RUN: llc < %s -mtriple=x86_64-apple-darwin10 -mattr=+fma | FileCheck
>>> %s --check-prefix=CHECK-FMA-INST
>>>  ; RUN: llc < %s -mtriple=x86_64-apple-darwin10             | FileCheck
>>> %s --check-prefix=CHECK-FMA-CALL
>>> +; RUN: llc < %s -mcpu=bdver2 -mattr=+fma  | FileCheck %s
>>> --check-prefix=CHECK-FMA-INST
>>> +; RUN: llc < %s -mcpu=bdver2 | FileCheck %s
>>> --check-prefix=CHECK-FMA-CALL
>>> +; RUN: llc < %s -mcpu=bdver2 -mattr=+fma | FileCheck %s
>>> --check-prefix=CHECK-FMA-INST
>>> +; RUN: llc < %s -mcpu=bdver2 | FileCheck %s
>>> --check-prefix=CHECK-FMA-CALL
>>>
>>> The last 2 lines are the same as the previous 2 lines. Did you intend to
>>> make one 64-bit and one 32-bit as was done for the original cases?
>>> Also you don't need +fma for the cases where you want fma instructions.
>>> cpu=bdver2 takes care of that and that's what you're trying to test. You
>>> should add "-fma4" for CHECK-FMA-INST. For the CHECK-FMA-CALL versions you
>>> need to disable fma and fma4.
>>>
>>> While you're in this test can you fix up the original versions to have
>>> -mattr=-fma,-fma4 on the FMA-CALL versions and -mattr=+fma,-fma4 on the
>>> FMA-INST versions. As they are right now they'll break if the machine that
>>> runs the test is a Haswell or Bulldozer since there is no explicit cpu
>>> selected.
>>>
>>> --- test/CodeGen/X86/fma_patterns.ll    (revision 162188)
>>> +++ test/CodeGen/X86/fma_patterns.ll    (working copy)
>>> @@ -1,4 +1,5 @@
>>>  ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=core-avx2
>>> -mattr=avx2,+fma -fp-contract=fast | FileCheck %s
>>> +; RUN: llc < %s -mcpu=bdver2 -mattr=fma -fp-contract=fast | FileCheck %s
>>>
>>> Again you don't want -mattr=fma, you're trying to test that bdver2
>>> implies fma. But explicitly disable fma4.
>>>
>>> --- test/CodeGen/X86/fma4-intrinsics-x86_64.ll    (revision 162188)
>>> +++ test/CodeGen/X86/fma4-intrinsics-x86_64.ll    (working copy)
>>> @@ -1,4 +1,5 @@
>>>  ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -march=x86-64
>>> -mattr=+avx,+fma4 | FileCheck %s
>>> +; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=bdver2
>>> -mattr=+avx,+fma4,-fma | FileCheck %s
>>>
>>> Just use -mattr=-fma for the bdver2.
>>
>>
>> Thanks Craig. Attached patch addresses all the comments. In addition I
>> made changes to fma3-intrinsics to test FMA3 intrinsics for bdver2 target.
>> All 4 Tests pass. For the previous patch, I think I was looking more
>> towards making testcases work with llvm-lit.
>>
>>
>> --
>> * Anitha*
>>
>>
>
>
> --
> ~Craig
>



-- 
* Anitha*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120822/2d84da32/attachment.html>


More information about the llvm-commits mailing list