[Libclc-dev] [PATCH] Add vstore_half helpers for ptx

Jeroen Ketema via Libclc-dev libclc-dev at lists.llvm.org
Tue Oct 3 11:26:49 PDT 2017


Index: ptx/lib/SOURCES_4.0
===================================================================
--- ptx/lib/SOURCES_4.0	(nonexistent)
+++ ptx/lib/SOURCES_4.0	(working copy)
@@ -0,0 +1 @@
+shared/vstore_half_helpers.ll
Index: ptx/lib/SOURCES_5.0
===================================================================
--- ptx/lib/SOURCES_5.0	(nonexistent)
+++ ptx/lib/SOURCES_5.0	(working copy)
@@ -0,0 +1 @@
+shared/vstore_half_helpers.ll
Index: ptx/lib/shared/vstore_half_helpers.ll
===================================================================
--- ptx/lib/shared/vstore_half_helpers.ll	(nonexistent)
+++ ptx/lib/shared/vstore_half_helpers.ll	(working copy)
@@ -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
+}



More information about the Libclc-dev mailing list