Skip to content

Commit 1076f30

Browse files
matborzyszkowskiigcbot
authored andcommitted
Add lit test for conversion from double to i64
Add lit test for conversion from `double` to `i64`
1 parent 0eaa63c commit 1076f30

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
@@ -228,3 +228,38 @@ entry:
228228
store i32 %call1, i32 addrspace(1)* %arrayidx2, align 4
229229
ret void
230230
}
231+
232+
define spir_kernel void @fptosi64_kernel(double addrspace(1)* %inA, i64 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 {
233+
; CHECK-LABEL: @fptosi64_kernel(
234+
; CHECK: entry:
235+
; CHECK: [[DPEmuFlag:%.*]] = alloca i32
236+
; CHECK: [[TMP0:%.*]] = extractelement <8 x i32> %payloadHeader, i64 0
237+
; CHECK: [[TMP1:%.*]] = extractelement <3 x i32> %enqueuedLocalSize, i64 0
238+
; CHECK: [[TMP2:%.*]] = extractelement <8 x i32> %r0, i64 1
239+
; CHECK: [[MUL:%.*]] = mul i32 [[TMP1]], [[TMP2]]
240+
; CHECK: [[LOCAL_ID_X:%.*]] = zext i16 %localIdX to i32
241+
; CHECK: [[ADD0:%.*]] = add i32 [[MUL]], [[LOCAL_ID_X]]
242+
; CHECK: [[ADD1:%.*]] = add i32 [[ADD0]], [[TMP0]]
243+
; CHECK: [[CONV0:%.*]] = zext i32 [[ADD1]] to i64
244+
; CHECK: [[ARRAY_IDX0:%.*]] = getelementptr inbounds double, double addrspace(1)* %inA, i64 [[CONV0]]
245+
; CHECK: [[TMP3:%.*]] = load double, double addrspace(1)* [[ARRAY_IDX0]], align 8
246+
; CHECK: [[CALL_TMP:%.*]] = call i64 @__igcbuiltin_dp_to_int64(double [[TMP3]], i32 3, i32 0, i32* [[DPEmuFlag]])
247+
; CHECK: [[ARRAY_IDX1:%.*]] = getelementptr inbounds i64, i64 addrspace(1)* %out, i64 [[CONV0]]
248+
; CHECK: store i64 [[CALL_TMP]], i64 addrspace(1)* [[ARRAY_IDX1]], align 8
249+
; CHECK: ret void
250+
entry:
251+
%payloadHeader.scalar = extractelement <8 x i32> %payloadHeader, i64 0
252+
%enqueuedLocalSize.scalar = extractelement <3 x i32> %enqueuedLocalSize, i64 0
253+
%r0.scalar19 = extractelement <8 x i32> %r0, i64 1
254+
%0 = mul i32 %enqueuedLocalSize.scalar, %r0.scalar19
255+
%localIdX4 = zext i16 %localIdX to i32
256+
%1 = add i32 %0, %localIdX4
257+
%2 = add i32 %1, %payloadHeader.scalar
258+
%3 = zext i32 %2 to i64
259+
%arrayidx = getelementptr inbounds double, double addrspace(1)* %inA, i64 %3
260+
%4 = load double, double addrspace(1)* %arrayidx, align 8
261+
%call1 = fptosi double %4 to i64
262+
%arrayidx2 = getelementptr inbounds i64, i64 addrspace(1)* %out, i64 %3
263+
store i64 %call1, i64 addrspace(1)* %arrayidx2, align 8
264+
ret void
265+
}

0 commit comments

Comments
 (0)