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 53d349ea9SJan Veselydeclare <4 x float> @llvm.R600.tex(<4 x float>, i32, i32, i32, i32, i32, i32, 63d349ea9SJan Vesely i32, i32, i32) readnone 73d349ea9SJan Veselydeclare i32 @llvm.OpenCL.image.get.resource.id.2d( 83d349ea9SJan Vesely %opencl.image2d_t addrspace(1)*) nounwind readnone 93d349ea9SJan Veselydeclare i32 @llvm.OpenCL.sampler.get.resource.id(i32) readnone 103d349ea9SJan Vesely 113d349ea9SJan Veselydefine <4 x float> @__clc_v4f_from_v2f(<2 x float> %v) alwaysinline { 123d349ea9SJan Vesely %e0 = extractelement <2 x float> %v, i32 0 133d349ea9SJan Vesely %e1 = extractelement <2 x float> %v, i32 1 143d349ea9SJan Vesely %res.0 = insertelement <4 x float> undef, float %e0, i32 0 153d349ea9SJan Vesely %res.1 = insertelement <4 x float> %res.0, float %e1, i32 1 163d349ea9SJan Vesely %res.2 = insertelement <4 x float> %res.1, float 0.0, i32 2 173d349ea9SJan Vesely %res.3 = insertelement <4 x float> %res.2, float 0.0, i32 3 183d349ea9SJan Vesely ret <4 x float> %res.3 193d349ea9SJan Vesely} 203d349ea9SJan Vesely 213d349ea9SJan Veselydefine <4 x float> @__clc_read_imagef_tex( 223d349ea9SJan Vesely %opencl.image2d_t addrspace(1)* nocapture %img, 233d349ea9SJan Vesely i32 %sampler, <2 x float> %coord) alwaysinline { 243d349ea9SJan Veselyentry: 253d349ea9SJan Vesely %coord_v4 = call <4 x float> @__clc_v4f_from_v2f(<2 x float> %coord) 263d349ea9SJan Vesely %smp_id = call i32 @llvm.OpenCL.sampler.get.resource.id(i32 %sampler) 273d349ea9SJan Vesely %img_id = call i32 @llvm.OpenCL.image.get.resource.id.2d( 283d349ea9SJan Vesely %opencl.image2d_t addrspace(1)* %img) 293d349ea9SJan Vesely %tex_id = add i32 %img_id, 2 ; First 2 IDs are reserved. 303d349ea9SJan Vesely 313d349ea9SJan Vesely %coord_norm = and i32 %sampler, 1 323d349ea9SJan Vesely %is_norm = icmp eq i32 %coord_norm, 1 333d349ea9SJan Vesely br i1 %is_norm, label %NormCoord, label %UnnormCoord 343d349ea9SJan VeselyNormCoord: 353d349ea9SJan Vesely %data.norm = call <4 x float> @llvm.R600.tex( 363d349ea9SJan Vesely <4 x float> %coord_v4, 373d349ea9SJan Vesely i32 0, i32 0, i32 0, ; Offset. 383d349ea9SJan Vesely i32 2, i32 %smp_id, 393d349ea9SJan Vesely i32 1, i32 1, i32 1, i32 1) ; Normalized coords. 403d349ea9SJan Vesely ret <4 x float> %data.norm 413d349ea9SJan VeselyUnnormCoord: 423d349ea9SJan Vesely %data.unnorm = call <4 x float> @llvm.R600.tex( 433d349ea9SJan Vesely <4 x float> %coord_v4, 443d349ea9SJan Vesely i32 0, i32 0, i32 0, ; Offset. 453d349ea9SJan Vesely i32 %tex_id, i32 %smp_id, 463d349ea9SJan Vesely i32 0, i32 0, i32 0, i32 0) ; Unnormalized coords. 473d349ea9SJan Vesely ret <4 x float> %data.unnorm 483d349ea9SJan Vesely} 49