Skip to content

Commit c9d0fec

Browse files
matborzyszkowskiigcbot
authored andcommitted
Add lit test for conversion from ui64 to double
Add lit test for conversion from ui64 to double
1 parent 3a919a3 commit c9d0fec

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

IGC/Compiler/tests/PreCompiledFuncImport/conversion.ll

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,3 +298,38 @@ entry:
298298
store i64 %call1, i64 addrspace(1)* %arrayidx2, align 8
299299
ret void
300300
}
301+
302+
define spir_kernel void @ui64tofp_kernel(i64 addrspace(1)* %inA, double addrspace(1)* %out, <8 x i32> %r0, <8 x i32> %payloadHeader, <3 x i32> %enqueuedLocalSize, i16 %localIdX, i16 %localIdY, i16 %localIdZ, i8* %privateBase, i32 %bufferOffset, i32 %bufferOffset1, i32 %bindlessOffset, i32 %bindlessOffset2) #0 {
303+
; CHECK-LABEL: @ui64tofp_kernel(
304+
; CHECK: entry:
305+
; CHECK: [[DPEmuFlag:%.*]] = alloca i32
306+
; CHECK: [[TMP0:%.*]] = extractelement <8 x i32> %payloadHeader, i64 0
307+
; CHECK: [[TMP1:%.*]] = extractelement <3 x i32> %enqueuedLocalSize, i64 0
308+
; CHECK: [[TMP2:%.*]] = extractelement <8 x i32> %r0, i64 1
309+
; CHECK: [[MUL:%.*]] = mul i32 [[TMP1]], [[TMP2]]
310+
; CHECK: [[LOCAL_ID_X:%.*]] = zext i16 %localIdX to i32
311+
; CHECK: [[ADD0:%.*]] = add i32 [[MUL]], [[LOCAL_ID_X]]
312+
; CHECK: [[ADD1:%.*]] = add i32 [[ADD0]], [[TMP0]]
313+
; CHECK: [[CONV0:%.*]] = zext i32 [[ADD1]] to i64
314+
; CHECK: [[ARRAY_IDX0:%.*]] = getelementptr inbounds i64, i64 addrspace(1)* %inA, i64 [[CONV0]]
315+
; CHECK: [[TMP3:%.*]] = load i64, i64 addrspace(1)* [[ARRAY_IDX0]], align 8
316+
; CHECK: [[CALL_TMP:%.*]] = call double @__igcbuiltin_uint64_to_dp(i64 [[TMP3]], i32 0, i32* [[DPEmuFlag]])
317+
; CHECK: [[ARRAY_IDX1:%.*]] = getelementptr inbounds double, double addrspace(1)* %out, i64 [[CONV0]]
318+
; CHECK: store double [[CALL_TMP]], double addrspace(1)* [[ARRAY_IDX1]], align 8
319+
; CHECK: ret void
320+
entry:
321+
%payloadHeader.scalar = extractelement <8 x i32> %payloadHeader, i64 0
322+
%enqueuedLocalSize.scalar = extractelement <3 x i32> %enqueuedLocalSize, i64 0
323+
%r0.scalar19 = extractelement <8 x i32> %r0, i64 1
324+
%0 = mul i32 %enqueuedLocalSize.scalar, %r0.scalar19
325+
%localIdX4 = zext i16 %localIdX to i32
326+
%1 = add i32 %0, %localIdX4
327+
%2 = add i32 %1, %payloadHeader.scalar
328+
%3 = zext i32 %2 to i64
329+
%arrayidx = getelementptr inbounds i64, i64 addrspace(1)* %inA, i64 %3
330+
%4 = load i64, i64 addrspace(1)* %arrayidx, align 8
331+
%call1 = uitofp i64 %4 to double
332+
%arrayidx2 = getelementptr inbounds double, double addrspace(1)* %out, i64 %3
333+
store double %call1, double addrspace(1)* %arrayidx2, align 8
334+
ret void
335+
}

0 commit comments

Comments
 (0)