Add vstore_half helpers for ptx
authorJeroen Ketema <j.ketema@imperial.ac.uk>
Wed, 4 Oct 2017 19:07:48 +0000 (19:07 +0000)
committerJeroen Ketema <j.ketema@imperial.ac.uk>
Wed, 4 Oct 2017 19:07:48 +0000 (19:07 +0000)
Reviewed-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 314925

libclc/ptx/lib/SOURCES_3.9 [new file with mode: 0644]
libclc/ptx/lib/SOURCES_4.0 [new file with mode: 0644]
libclc/ptx/lib/SOURCES_5.0 [new file with mode: 0644]
libclc/ptx/lib/shared/vstore_half_helpers.ll [new file with mode: 0644]

diff --git a/libclc/ptx/lib/SOURCES_3.9 b/libclc/ptx/lib/SOURCES_3.9
new file mode 100644 (file)
index 0000000..5851798
--- /dev/null
@@ -0,0 +1 @@
+shared/vstore_half_helpers.ll
diff --git a/libclc/ptx/lib/SOURCES_4.0 b/libclc/ptx/lib/SOURCES_4.0
new file mode 100644 (file)
index 0000000..5851798
--- /dev/null
@@ -0,0 +1 @@
+shared/vstore_half_helpers.ll
diff --git a/libclc/ptx/lib/SOURCES_5.0 b/libclc/ptx/lib/SOURCES_5.0
new file mode 100644 (file)
index 0000000..5851798
--- /dev/null
@@ -0,0 +1 @@
+shared/vstore_half_helpers.ll
diff --git a/libclc/ptx/lib/shared/vstore_half_helpers.ll b/libclc/ptx/lib/shared/vstore_half_helpers.ll
new file mode 100644 (file)
index 0000000..e958664
--- /dev/null
@@ -0,0 +1,35 @@
+define void @__clc_vstore_half_float_helper__private(float %data, half addrspace(0)* nocapture %ptr) nounwind alwaysinline {
+  %res = fptrunc float %data to half
+  store half %res, half addrspace(0)* %ptr
+  ret void
+}
+
+define void @__clc_vstore_half_float_helper__global(float %data, half addrspace(1)* nocapture %ptr) nounwind alwaysinline {
+  %res = fptrunc float %data to half
+  store half %res, half addrspace(1)* %ptr
+  ret void
+}
+
+define void @__clc_vstore_half_float_helper__local(float %data, half addrspace(3)* nocapture %ptr) nounwind alwaysinline {
+  %res = fptrunc float %data to half
+  store half %res, half addrspace(3)* %ptr
+  ret void
+}
+
+define void @__clc_vstore_half_double_helper__private(double %data, half addrspace(0)* nocapture %ptr) nounwind alwaysinline {
+  %res = fptrunc double %data to half
+  store half %res, half addrspace(0)* %ptr
+  ret void
+}
+
+define void @__clc_vstore_half_double_helper__global(double %data, half addrspace(1)* nocapture %ptr) nounwind alwaysinline {
+  %res = fptrunc double %data to half
+  store half %res, half addrspace(1)* %ptr
+  ret void
+}
+
+define void @__clc_vstore_half_double_helper__local(double %data, half addrspace(3)* nocapture %ptr) nounwind alwaysinline {
+  %res = fptrunc double %data to half
+  store half %res, half addrspace(3)* %ptr
+  ret void
+}