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

Craig Topper craig.topper at gmail.com
Wed Aug 22 09:18:33 PDT 2012


On Wed, Aug 22, 2012 at 1:48 AM, Anitha Boyapati
<anitha.boyapati at gmail.com>wrote:

>
>
> 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.
>

I suspect what what ends up getting generated may depend on the triple of
the host since the bdver2 test doesn't have a triple. May be best to force
to darwin too so its not floating.


>
>
>
>
>>
>> --- 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.
>

Missed that due to the multiple test cases. Any idea why bdver2 generates
something different? Does it still mismatch if you put
-mtriple=x86_64-pc-win32 on the bdver2 test?


>
> - 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*
>
>


-- 
~Craig
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120822/6c5f4d31/attachment.html>


More information about the llvm-commits mailing list