[PATCH 1/1] R600: Add EG to FMA test

Jan Vesely jan.vesely at rutgers.edu
Thu Oct 16 12:10:18 PDT 2014


On Thu, 2014-10-16 at 14:52 -0400, Tom Stellard wrote:
> On Thu, Oct 16, 2014 at 02:49:57PM -0400, Jan Vesely wrote:
> > 
> > Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
> > ---
> >  test/CodeGen/R600/fma.ll | 15 ++++++++++++++-
> >  1 file changed, 14 insertions(+), 1 deletion(-)
> > 
> > diff --git a/test/CodeGen/R600/fma.ll b/test/CodeGen/R600/fma.ll
> > index 58ecf6a..0f81903 100644
> > --- a/test/CodeGen/R600/fma.ll
> > +++ b/test/CodeGen/R600/fma.ll
> > @@ -1,5 +1,5 @@
> >  ; RUN: llc -march=r600 -mcpu=SI -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s
> > -; RUN: llc -march=r600 -mcpu=redwood -verify-machineinstrs < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s
> 
> I think you should keep the redwood RUN line and add a separate CHECK
> prefix for it, since it would be good to have a test for something that
> doesn't support FMA.

I considered it. But I'm still not sure what the best way to add fma
support for those devices would be.
If we add it in the backend, then we can just add CHECK-NOT: FMA,
but I was thinking about implementing it in libclc, in which case 
@llvm.fma fails on unsupported call for that hw. we'd need separate file
for that since XFAIL would hide possible failures on cypress/SI.
I did not find a way to limit XFAIL to specifci runs based on cpu
argument or mattr.

jan

> 
> -Tom
> 
> > +; RUN: llc -march=r600 -mcpu=cypress -verify-machineinstrs < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s
> >  
> >  declare float @llvm.fma.f32(float, float, float) nounwind readnone
> >  declare <2 x float> @llvm.fma.v2f32(<2 x float>, <2 x float>, <2 x float>) nounwind readnone
> > @@ -7,6 +7,9 @@ declare <4 x float> @llvm.fma.v4f32(<4 x float>, <4 x float>, <4 x float>) nounw
> >  
> >  ; FUNC-LABEL: {{^}}fma_f32:
> >  ; SI: V_FMA_F32 {{v[0-9]+, v[0-9]+, v[0-9]+, v[0-9]+}}
> > +
> > +; EG: MEM_RAT_{{.*}} STORE_{{.*}} [[RES:T[0-9]\.[XYZW]]], {{T[0-9]\.[XYZW]}},
> > +; EG: FMA {{\*? *}}[[RES]]
> >  define void @fma_f32(float addrspace(1)* %out, float addrspace(1)* %in1,
> >                       float addrspace(1)* %in2, float addrspace(1)* %in3) {
> >     %r0 = load float addrspace(1)* %in1
> > @@ -20,6 +23,10 @@ define void @fma_f32(float addrspace(1)* %out, float addrspace(1)* %in1,
> >  ; FUNC-LABEL: {{^}}fma_v2f32:
> >  ; SI: V_FMA_F32
> >  ; SI: V_FMA_F32
> > +
> > +; EG: MEM_RAT_{{.*}} STORE_{{.*}} [[RES:T[0-9]]].[[CHLO:[XYZW]]][[CHHI:[XYZW]]], {{T[0-9]\.[XYZW]}},
> > +; EG-DAG: FMA {{\*? *}}[[RES]].[[CHLO]]
> > +; EG-DAG: FMA {{\*? *}}[[RES]].[[CHHI]]
> >  define void @fma_v2f32(<2 x float> addrspace(1)* %out, <2 x float> addrspace(1)* %in1,
> >                         <2 x float> addrspace(1)* %in2, <2 x float> addrspace(1)* %in3) {
> >     %r0 = load <2 x float> addrspace(1)* %in1
> > @@ -35,6 +42,12 @@ define void @fma_v2f32(<2 x float> addrspace(1)* %out, <2 x float> addrspace(1)*
> >  ; SI: V_FMA_F32
> >  ; SI: V_FMA_F32
> >  ; SI: V_FMA_F32
> > +
> > +; EG: MEM_RAT_{{.*}} STORE_{{.*}} [[RES:T[0-9]]].{{[XYZW][XYZW][XYZW][XYZW]}}, {{T[0-9]\.[XYZW]}},
> > +; EG-DAG: FMA {{\*? *}}[[RES]].X
> > +; EG-DAG: FMA {{\*? *}}[[RES]].Y
> > +; EG-DAG: FMA {{\*? *}}[[RES]].Z
> > +; EG-DAG: FMA {{\*? *}}[[RES]].W
> >  define void @fma_v4f32(<4 x float> addrspace(1)* %out, <4 x float> addrspace(1)* %in1,
> >                         <4 x float> addrspace(1)* %in2, <4 x float> addrspace(1)* %in3) {
> >     %r0 = load <4 x float> addrspace(1)* %in1
> > -- 
> > 1.9.3
> > 

-- 
Jan Vesely <jan.vesely at rutgers.edu>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141016/fb7715b2/attachment.sig>


More information about the llvm-commits mailing list