Skip to content

Commit fb73ef5

Browse files
matborzyszkowskiigcbot
authored andcommitted
Add lit tests for si-to-dp and ui-to-dp conversions
Add lit tests for PreCompiledFuncImport for `si-to-dp` and `ui-to-dp` conversions.
1 parent 791736b commit fb73ef5

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

IGC/Compiler/tests/PreCompiledFuncImport/conversion.ll

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,73 @@ entry:
8686
store double %call1, double addrspace(1)* %arrayidx2, align 8
8787
ret void
8888
}
89+
90+
define spir_kernel void @sitofp_kernel(i32 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) #0 {
91+
; CHECK-LABEL: @sitofp_kernel(
92+
; CHECK: entry:
93+
; CHECK: [[TMP0:%.*]] = extractelement <8 x i32> %payloadHeader, i32 0
94+
; CHECK: [[TMP1:%.*]] = extractelement <3 x i32> %enqueuedLocalSize, i32 0
95+
; CHECK: [[TMP2:%.*]] = extractelement <8 x i32> %r0, i32 1
96+
; CHECK: [[MUL:%.*]] = mul i32 [[TMP1]], [[TMP2]]
97+
; CHECK: [[LOCAL_ID_X:%.*]] = zext i16 %localIdX to i32
98+
; CHECK: [[ADD0:%.*]] = add i32 [[MUL]], [[LOCAL_ID_X]]
99+
; CHECK: [[ADD1:%.*]] = add i32 [[ADD0]], [[TMP0]]
100+
; CHECK: [[CONV0:%.*]] = zext i32 [[ADD1]] to i64
101+
; CHECK: [[ARRAY_IDX0:%.*]] = getelementptr inbounds i32, i32 addrspace(1)* %inA, i64 [[CONV0]]
102+
; CHECK: [[TMP3:%.*]] = load i32, i32 addrspace(1)* [[ARRAY_IDX0]], align 4
103+
; CHECK: [[CALL_TMP:%.*]] = call double @__igcbuiltin_int32_to_dp(i32 [[TMP3]])
104+
; CHECK: [[ARRAY_IDX1:%.*]] = getelementptr inbounds double, double addrspace(1)* %out, i64 [[CONV0]]
105+
; CHECK: store double [[CALL_TMP]], double addrspace(1)* [[ARRAY_IDX1]], align 8
106+
; CHECK: ret void
107+
;
108+
entry:
109+
%payloadHeader.scalar = extractelement <8 x i32> %payloadHeader, i32 0
110+
%enqueuedLocalSize.scalar = extractelement <3 x i32> %enqueuedLocalSize, i32 0
111+
%r0.scalar18 = extractelement <8 x i32> %r0, i32 1
112+
%mul.i.i.i = mul i32 %enqueuedLocalSize.scalar, %r0.scalar18
113+
%localIdX3 = zext i16 %localIdX to i32
114+
%add.i.i.i = add i32 %mul.i.i.i, %localIdX3
115+
%add4.i.i.i = add i32 %add.i.i.i, %payloadHeader.scalar
116+
%conv.i.i.i = zext i32 %add4.i.i.i to i64
117+
%arrayidx = getelementptr inbounds i32, i32 addrspace(1)* %inA, i64 %conv.i.i.i
118+
%0 = load i32, i32 addrspace(1)* %arrayidx, align 4
119+
%call1 = sitofp i32 %0 to double
120+
%arrayidx2 = getelementptr inbounds double, double addrspace(1)* %out, i64 %conv.i.i.i
121+
store double %call1, double addrspace(1)* %arrayidx2, align 8
122+
ret void
123+
}
124+
125+
define spir_kernel void @uitofp_kernel(i32 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) #0 {
126+
; CHECK-LABEL: @uitofp_kernel(
127+
; CHECK: entry:
128+
; CHECK: [[TMP0:%.*]] = extractelement <8 x i32> %payloadHeader, i32 0
129+
; CHECK: [[TMP1:%.*]] = extractelement <3 x i32> %enqueuedLocalSize, i32 0
130+
; CHECK: [[TMP2:%.*]] = extractelement <8 x i32> %r0, i32 1
131+
; CHECK: [[MUL:%.*]] = mul i32 [[TMP1]], [[TMP2]]
132+
; CHECK: [[LOCAL_ID_X:%.*]] = zext i16 %localIdX to i32
133+
; CHECK: [[ADD0:%.*]] = add i32 [[MUL]], [[LOCAL_ID_X]]
134+
; CHECK: [[ADD1:%.*]] = add i32 [[ADD0]], [[TMP0]]
135+
; CHECK: [[CONV0:%.*]] = zext i32 [[ADD1]] to i64
136+
; CHECK: [[ARRAY_IDX0:%.*]] = getelementptr inbounds i32, i32 addrspace(1)* %inA, i64 [[CONV0]]
137+
; CHECK: [[TMP3:%.*]] = load i32, i32 addrspace(1)* [[ARRAY_IDX0]], align 4
138+
; CHECK: [[CALL_TMP:%.*]] = call double @__igcbuiltin_uint32_to_dp(i32 [[TMP3]])
139+
; CHECK: [[ARRAY_IDX1:%.*]] = getelementptr inbounds double, double addrspace(1)* %out, i64 [[CONV0]]
140+
; CHECK: store double [[CALL_TMP]], double addrspace(1)* [[ARRAY_IDX1]], align 8
141+
; CHECK: ret void
142+
;
143+
entry:
144+
%payloadHeader.scalar = extractelement <8 x i32> %payloadHeader, i32 0
145+
%enqueuedLocalSize.scalar = extractelement <3 x i32> %enqueuedLocalSize, i32 0
146+
%r0.scalar18 = extractelement <8 x i32> %r0, i32 1
147+
%mul.i.i.i = mul i32 %enqueuedLocalSize.scalar, %r0.scalar18
148+
%localIdX3 = zext i16 %localIdX to i32
149+
%add.i.i.i = add i32 %mul.i.i.i, %localIdX3
150+
%add4.i.i.i = add i32 %add.i.i.i, %payloadHeader.scalar
151+
%conv.i.i.i = zext i32 %add4.i.i.i to i64
152+
%arrayidx = getelementptr inbounds i32, i32 addrspace(1)* %inA, i64 %conv.i.i.i
153+
%0 = load i32, i32 addrspace(1)* %arrayidx, align 4
154+
%call1 = uitofp i32 %0 to double
155+
%arrayidx2 = getelementptr inbounds double, double addrspace(1)* %out, i64 %conv.i.i.i
156+
store double %call1, double addrspace(1)* %arrayidx2, align 8
157+
ret void
158+
}

0 commit comments

Comments
 (0)