1
+ ;=========================== begin_copyright_notice ============================
2
+ ;
3
+ ; Copyright (C) 2023 Intel Corporation
4
+ ;
5
+ ; SPDX-License-Identifier: MIT
6
+ ;
7
+ ;============================ end_copyright_notice =============================
8
+
9
+ ; RUN: opt %use_old_pass_manager% -GenXModule -GenXNumberingWrapper -GenXLiveRangesWrapper -GenXCategoryWrapper \
10
+ ; RUN: -march=genx64 -mtriple=spir64-unknown-unknown -mcpu=Gen9 -S < %s | FileCheck %s
11
+
12
+ ; Function Attrs: nofree nounwind readonly
13
+ declare <32 x i32 > @llvm.genx.oword.ld.unaligned.v32i32 (i32 , i32 , i32 ) #1
14
+
15
+ ; Function Attrs: nounwind
16
+ declare void @llvm.genx.oword.st.v32i32 (i32 , i32 , <32 x i32 >) #2
17
+
18
+ define dllexport void @kernel (i32 %offset , i64 %impl.arg.private.base ) #0 {
19
+ entry:
20
+ ; CHECK: call i32 @llvm.genx.convert.i32(i32 2)
21
+ %ld1 = tail call <32 x i32 > @llvm.genx.oword.ld.unaligned.v32i32 (i32 0 , i32 2 , i32 %offset )
22
+ ; CHECK: call i32 @llvm.genx.convert.i32(i32 3)
23
+ %ld3 = tail call <32 x i32 > @llvm.genx.oword.ld.unaligned.v32i32 (i32 0 , i32 3 , i32 %offset )
24
+ ; CHECK-NOT: call i32 @llvm.genx.convert.i32(i32 3)
25
+ call void @llvm.genx.oword.st.v32i32 (i32 3 , i32 0 , <32 x i32 > %ld1 )
26
+ ; CHECK-NOT: call i32 @llvm.genx.convert.i32(i32 2)
27
+ call void @llvm.genx.oword.st.v32i32 (i32 2 , i32 0 , <32 x i32 > %ld3 )
28
+ br label %BB
29
+ BB:
30
+ ; CHECK: BB
31
+ ; CHECK: call i32 @llvm.genx.convert.i32(i32 2)
32
+ %ld7 = tail call <32 x i32 > @llvm.genx.oword.ld.unaligned.v32i32 (i32 0 , i32 2 , i32 %offset )
33
+ ; CHECK: call i32 @llvm.genx.convert.i32(i32 3)
34
+ %ld9 = tail call <32 x i32 > @llvm.genx.oword.ld.unaligned.v32i32 (i32 0 , i32 3 , i32 %offset )
35
+ ; CHECK-NOT: call i32 @llvm.genx.convert.i32(i32 3)
36
+ call void @llvm.genx.oword.st.v32i32 (i32 3 , i32 128 , <32 x i32 > %ld7 )
37
+ ; CHECK-NOT: call i32 @llvm.genx.convert.i32(i32 2)
38
+ call void @llvm.genx.oword.st.v32i32 (i32 2 , i32 128 , <32 x i32 > %ld9 )
39
+ ret void
40
+ }
41
+
42
+ attributes #0 = { "CMGenxMain" }
43
+ attributes #1 = { nofree nounwind readonly }
44
+ attributes #2 = { nounwind }
45
+
46
+ !genx.kernels = !{!6 }
47
+ !genx.kernel.internal = !{!11 }
48
+
49
+ !0 = !{i32 2 , i32 2 }
50
+ !1 = !{i32 0 , i32 0 }
51
+ !2 = !{i32 1 , i32 2 }
52
+ !3 = !{i32 2 , i32 0 }
53
+ !4 = !{}
54
+ !5 = !{i16 6 , i16 14 }
55
+ !6 = !{void (i32 , i64 )* @kernel , !"kernel" , !7 , i32 0 , !8 , !9 , !10 , i32 0 }
56
+ !7 = !{i32 0 , i32 96 }
57
+ !8 = !{i32 72 , i32 64 }
58
+ !9 = !{i32 0 }
59
+ !10 = !{!"" }
60
+ !11 = !{void (i32 , i64 )* @kernel , !1 , !12 , !4 , !13 }
61
+ !12 = !{i32 0 , i32 1 }
62
+ !13 = !{i32 -1 , i32 1 }
0 commit comments