1*3889c36dSJan Veselytarget datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64"
2*3889c36dSJan Vesely
33d349ea9SJan Vesely%opencl.image2d_t = type opaque
43d349ea9SJan Vesely%opencl.image3d_t = type opaque
53d349ea9SJan Vesely
63d349ea9SJan Veselydeclare i32 @llvm.OpenCL.image.get.resource.id.2d(
73d349ea9SJan Vesely  %opencl.image2d_t addrspace(1)*) nounwind readnone
83d349ea9SJan Veselydeclare i32 @llvm.OpenCL.image.get.resource.id.3d(
93d349ea9SJan Vesely  %opencl.image3d_t addrspace(1)*) nounwind readnone
103d349ea9SJan Vesely
113d349ea9SJan Veselydeclare void @llvm.r600.rat.store.typed(<4 x i32> %color, <4 x i32> %coord, i32 %rat_id)
123d349ea9SJan Vesely
133d349ea9SJan Veselydefine void @__clc_write_imageui_2d(
143d349ea9SJan Vesely    %opencl.image2d_t addrspace(1)* nocapture %img,
153d349ea9SJan Vesely    <2 x i32> %coord, <4 x i32> %color) #0 {
163d349ea9SJan Vesely
173d349ea9SJan Vesely  ; Coordinate int2 -> int4.
183d349ea9SJan Vesely  %e0 = extractelement <2 x i32> %coord, i32 0
193d349ea9SJan Vesely  %e1 = extractelement <2 x i32> %coord, i32 1
203d349ea9SJan Vesely  %coord.0 = insertelement <4 x i32> undef,    i32 %e0, i32 0
213d349ea9SJan Vesely  %coord.1 = insertelement <4 x i32> %coord.0, i32 %e1, i32 1
223d349ea9SJan Vesely  %coord.2 = insertelement <4 x i32> %coord.1, i32 0,  i32 2
233d349ea9SJan Vesely  %coord.3 = insertelement <4 x i32> %coord.2, i32 0,  i32 3
243d349ea9SJan Vesely
253d349ea9SJan Vesely  ; Get RAT ID.
263d349ea9SJan Vesely  %img_id = call i32 @llvm.OpenCL.image.get.resource.id.2d(
273d349ea9SJan Vesely      %opencl.image2d_t addrspace(1)* %img)
283d349ea9SJan Vesely  %rat_id = add i32 %img_id, 1
293d349ea9SJan Vesely
303d349ea9SJan Vesely  ; Call store intrinsic.
313d349ea9SJan Vesely  call void @llvm.r600.rat.store.typed(<4 x i32> %color, <4 x i32> %coord.3, i32 %rat_id)
323d349ea9SJan Vesely  ret void
333d349ea9SJan Vesely}
343d349ea9SJan Vesely
353d349ea9SJan Veselydefine void @__clc_write_imagei_2d(
363d349ea9SJan Vesely    %opencl.image2d_t addrspace(1)* nocapture %img,
373d349ea9SJan Vesely    <2 x i32> %coord, <4 x i32> %color) #0 {
383d349ea9SJan Vesely  call void @__clc_write_imageui_2d(
393d349ea9SJan Vesely      %opencl.image2d_t addrspace(1)* nocapture %img,
403d349ea9SJan Vesely      <2 x i32> %coord, <4 x i32> %color)
413d349ea9SJan Vesely  ret void
423d349ea9SJan Vesely}
433d349ea9SJan Vesely
443d349ea9SJan Veselydefine void @__clc_write_imagef_2d(
453d349ea9SJan Vesely    %opencl.image2d_t addrspace(1)* nocapture %img,
463d349ea9SJan Vesely    <2 x i32> %coord, <4 x float> %color) #0 {
473d349ea9SJan Vesely  %color.i32 = bitcast <4 x float> %color to <4 x i32>
483d349ea9SJan Vesely  call void @__clc_write_imageui_2d(
493d349ea9SJan Vesely      %opencl.image2d_t addrspace(1)* nocapture %img,
503d349ea9SJan Vesely      <2 x i32> %coord, <4 x i32> %color.i32)
513d349ea9SJan Vesely  ret void
523d349ea9SJan Vesely}
533d349ea9SJan Vesely
543d349ea9SJan Veselyattributes #0 = { alwaysinline }
55