Re: [Mesa-dev] [PATCH 2/2] R600/SI: add tests for gather4

2014-06-16 Thread Tom Stellard
On Thu, Jun 12, 2014 at 02:11:11AM +0200, Marek Olšák wrote:
 From: Marek Olšák marek.ol...@amd.com


LGTM.
 
 ---
  test/CodeGen/R600/llvm.SI.gather4.ll | 508 
 +++
  1 file changed, 508 insertions(+)
  create mode 100644 test/CodeGen/R600/llvm.SI.gather4.ll
 
 diff --git a/test/CodeGen/R600/llvm.SI.gather4.ll 
 b/test/CodeGen/R600/llvm.SI.gather4.ll
 new file mode 100644
 index 000..8402faa
 --- /dev/null
 +++ b/test/CodeGen/R600/llvm.SI.gather4.ll
 @@ -0,0 +1,508 @@
 +;RUN: llc  %s -march=r600 -mcpu=verde -verify-machineinstrs | FileCheck %s
 +
 +;CHECK-LABEL: @gather4_v2
 +;CHECK: IMAGE_GATHER4 {{v\[[0-9]+:[0-9]+\]}}, 1, 0, 0, -1, 0, 0, 0, 0, 
 {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
 +define void @gather4_v2() #0 {
 +main_body:
 +  %r = call 4 x float @llvm.SI.gather4.v2i32(2 x i32 undef, 32 x i8 
 undef, 16 x i8 undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 
 0)
 +  %r0 = extractelement 4 x float %r, i32 0
 +  %r1 = extractelement 4 x float %r, i32 1
 +  %r2 = extractelement 4 x float %r, i32 2
 +  %r3 = extractelement 4 x float %r, i32 3
 +  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, 
 float %r1, float %r2, float %r3)
 +  ret void
 +}
 +
 +;CHECK-LABEL: @gather4
 +;CHECK: IMAGE_GATHER4 {{v\[[0-9]+:[0-9]+\]}}, 1, 0, 0, -1, 0, 0, 0, 0, 
 {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
 +define void @gather4() #0 {
 +main_body:
 +  %r = call 4 x float @llvm.SI.gather4.v4i32(4 x i32 undef, 32 x i8 
 undef, 16 x i8 undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 
 0)
 +  %r0 = extractelement 4 x float %r, i32 0
 +  %r1 = extractelement 4 x float %r, i32 1
 +  %r2 = extractelement 4 x float %r, i32 2
 +  %r3 = extractelement 4 x float %r, i32 3
 +  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, 
 float %r1, float %r2, float %r3)
 +  ret void
 +}
 +
 +;CHECK-LABEL: @gather4_cl
 +;CHECK: IMAGE_GATHER4_CL {{v\[[0-9]+:[0-9]+\]}}, 1, 0, 0, -1, 0, 0, 0, 0, 
 {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
 +define void @gather4_cl() #0 {
 +main_body:
 +  %r = call 4 x float @llvm.SI.gather4.cl.v4i32(4 x i32 undef, 32 x i8 
 undef, 16 x i8 undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 
 0)
 +  %r0 = extractelement 4 x float %r, i32 0
 +  %r1 = extractelement 4 x float %r, i32 1
 +  %r2 = extractelement 4 x float %r, i32 2
 +  %r3 = extractelement 4 x float %r, i32 3
 +  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, 
 float %r1, float %r2, float %r3)
 +  ret void
 +}
 +
 +;CHECK-LABEL: @gather4_l
 +;CHECK: IMAGE_GATHER4_L {{v\[[0-9]+:[0-9]+\]}}, 1, 0, 0, -1, 0, 0, 0, 0, 
 {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
 +define void @gather4_l() #0 {
 +main_body:
 +  %r = call 4 x float @llvm.SI.gather4.l.v4i32(4 x i32 undef, 32 x i8 
 undef, 16 x i8 undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 
 0)
 +  %r0 = extractelement 4 x float %r, i32 0
 +  %r1 = extractelement 4 x float %r, i32 1
 +  %r2 = extractelement 4 x float %r, i32 2
 +  %r3 = extractelement 4 x float %r, i32 3
 +  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, 
 float %r1, float %r2, float %r3)
 +  ret void
 +}
 +
 +;CHECK-LABEL: @gather4_b
 +;CHECK: IMAGE_GATHER4_B {{v\[[0-9]+:[0-9]+\]}}, 1, 0, 0, -1, 0, 0, 0, 0, 
 {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
 +define void @gather4_b() #0 {
 +main_body:
 +  %r = call 4 x float @llvm.SI.gather4.b.v4i32(4 x i32 undef, 32 x i8 
 undef, 16 x i8 undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 
 0)
 +  %r0 = extractelement 4 x float %r, i32 0
 +  %r1 = extractelement 4 x float %r, i32 1
 +  %r2 = extractelement 4 x float %r, i32 2
 +  %r3 = extractelement 4 x float %r, i32 3
 +  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, 
 float %r1, float %r2, float %r3)
 +  ret void
 +}
 +
 +;CHECK-LABEL: @gather4_b_cl
 +;CHECK: IMAGE_GATHER4_B_CL {{v\[[0-9]+:[0-9]+\]}}, 1, 0, 0, -1, 0, 0, 0, 0, 
 {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
 +define void @gather4_b_cl() #0 {
 +main_body:
 +  %r = call 4 x float @llvm.SI.gather4.b.cl.v4i32(4 x i32 undef, 32 x 
 i8 undef, 16 x i8 undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, 
 i32 0)
 +  %r0 = extractelement 4 x float %r, i32 0
 +  %r1 = extractelement 4 x float %r, i32 1
 +  %r2 = extractelement 4 x float %r, i32 2
 +  %r3 = extractelement 4 x float %r, i32 3
 +  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, 
 float %r1, float %r2, float %r3)
 +  ret void
 +}
 +
 +;CHECK-LABEL: @gather4_b_cl_v8
 +;CHECK: IMAGE_GATHER4_B_CL {{v\[[0-9]+:[0-9]+\]}}, 1, 0, 0, -1, 0, 0, 0, 0, 
 {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
 +define void @gather4_b_cl_v8() #0 {
 +main_body:
 +  %r = call 4 x float 

[Mesa-dev] [PATCH 2/2] R600/SI: add tests for gather4

2014-06-11 Thread Marek Olšák
From: Marek Olšák marek.ol...@amd.com

---
 test/CodeGen/R600/llvm.SI.gather4.ll | 508 +++
 1 file changed, 508 insertions(+)
 create mode 100644 test/CodeGen/R600/llvm.SI.gather4.ll

diff --git a/test/CodeGen/R600/llvm.SI.gather4.ll 
b/test/CodeGen/R600/llvm.SI.gather4.ll
new file mode 100644
index 000..8402faa
--- /dev/null
+++ b/test/CodeGen/R600/llvm.SI.gather4.ll
@@ -0,0 +1,508 @@
+;RUN: llc  %s -march=r600 -mcpu=verde -verify-machineinstrs | FileCheck %s
+
+;CHECK-LABEL: @gather4_v2
+;CHECK: IMAGE_GATHER4 {{v\[[0-9]+:[0-9]+\]}}, 1, 0, 0, -1, 0, 0, 0, 0, 
{{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
+define void @gather4_v2() #0 {
+main_body:
+  %r = call 4 x float @llvm.SI.gather4.v2i32(2 x i32 undef, 32 x i8 
undef, 16 x i8 undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
+  %r0 = extractelement 4 x float %r, i32 0
+  %r1 = extractelement 4 x float %r, i32 1
+  %r2 = extractelement 4 x float %r, i32 2
+  %r3 = extractelement 4 x float %r, i32 3
+  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, 
float %r1, float %r2, float %r3)
+  ret void
+}
+
+;CHECK-LABEL: @gather4
+;CHECK: IMAGE_GATHER4 {{v\[[0-9]+:[0-9]+\]}}, 1, 0, 0, -1, 0, 0, 0, 0, 
{{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
+define void @gather4() #0 {
+main_body:
+  %r = call 4 x float @llvm.SI.gather4.v4i32(4 x i32 undef, 32 x i8 
undef, 16 x i8 undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
+  %r0 = extractelement 4 x float %r, i32 0
+  %r1 = extractelement 4 x float %r, i32 1
+  %r2 = extractelement 4 x float %r, i32 2
+  %r3 = extractelement 4 x float %r, i32 3
+  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, 
float %r1, float %r2, float %r3)
+  ret void
+}
+
+;CHECK-LABEL: @gather4_cl
+;CHECK: IMAGE_GATHER4_CL {{v\[[0-9]+:[0-9]+\]}}, 1, 0, 0, -1, 0, 0, 0, 0, 
{{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
+define void @gather4_cl() #0 {
+main_body:
+  %r = call 4 x float @llvm.SI.gather4.cl.v4i32(4 x i32 undef, 32 x i8 
undef, 16 x i8 undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
+  %r0 = extractelement 4 x float %r, i32 0
+  %r1 = extractelement 4 x float %r, i32 1
+  %r2 = extractelement 4 x float %r, i32 2
+  %r3 = extractelement 4 x float %r, i32 3
+  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, 
float %r1, float %r2, float %r3)
+  ret void
+}
+
+;CHECK-LABEL: @gather4_l
+;CHECK: IMAGE_GATHER4_L {{v\[[0-9]+:[0-9]+\]}}, 1, 0, 0, -1, 0, 0, 0, 0, 
{{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
+define void @gather4_l() #0 {
+main_body:
+  %r = call 4 x float @llvm.SI.gather4.l.v4i32(4 x i32 undef, 32 x i8 
undef, 16 x i8 undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
+  %r0 = extractelement 4 x float %r, i32 0
+  %r1 = extractelement 4 x float %r, i32 1
+  %r2 = extractelement 4 x float %r, i32 2
+  %r3 = extractelement 4 x float %r, i32 3
+  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, 
float %r1, float %r2, float %r3)
+  ret void
+}
+
+;CHECK-LABEL: @gather4_b
+;CHECK: IMAGE_GATHER4_B {{v\[[0-9]+:[0-9]+\]}}, 1, 0, 0, -1, 0, 0, 0, 0, 
{{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
+define void @gather4_b() #0 {
+main_body:
+  %r = call 4 x float @llvm.SI.gather4.b.v4i32(4 x i32 undef, 32 x i8 
undef, 16 x i8 undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
+  %r0 = extractelement 4 x float %r, i32 0
+  %r1 = extractelement 4 x float %r, i32 1
+  %r2 = extractelement 4 x float %r, i32 2
+  %r3 = extractelement 4 x float %r, i32 3
+  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, 
float %r1, float %r2, float %r3)
+  ret void
+}
+
+;CHECK-LABEL: @gather4_b_cl
+;CHECK: IMAGE_GATHER4_B_CL {{v\[[0-9]+:[0-9]+\]}}, 1, 0, 0, -1, 0, 0, 0, 0, 
{{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
+define void @gather4_b_cl() #0 {
+main_body:
+  %r = call 4 x float @llvm.SI.gather4.b.cl.v4i32(4 x i32 undef, 32 x i8 
undef, 16 x i8 undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
+  %r0 = extractelement 4 x float %r, i32 0
+  %r1 = extractelement 4 x float %r, i32 1
+  %r2 = extractelement 4 x float %r, i32 2
+  %r3 = extractelement 4 x float %r, i32 3
+  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, 
float %r1, float %r2, float %r3)
+  ret void
+}
+
+;CHECK-LABEL: @gather4_b_cl_v8
+;CHECK: IMAGE_GATHER4_B_CL {{v\[[0-9]+:[0-9]+\]}}, 1, 0, 0, -1, 0, 0, 0, 0, 
{{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
+define void @gather4_b_cl_v8() #0 {
+main_body:
+  %r = call 4 x float @llvm.SI.gather4.b.cl.v8i32(8 x i32 undef, 32 x i8 
undef, 16 x i8 undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
+  %r0 = extractelement 4 x float %r, i32 0
+  %r1 = extractelement 4 x float %r, i32 1
+  %r2 =