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 =