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

Craig Topper craig.topper at gmail.com
Tue Aug 21 23:44:07 PDT 2012


 ; 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?

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

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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120821/65e049b0/attachment.html>


More information about the llvm-commits mailing list