-
Notifications
You must be signed in to change notification settings - Fork 754
/
Copy pathadd-aspect-names.ll
75 lines (63 loc) · 2.11 KB
/
add-aspect-names.ll
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
; RUN: opt -passes=record-sycl-aspect-names -S < %s | FileCheck %s
;
; Basic add-aspect-names functionality test. Checks that
; the !sycl_used_apsects metadata is updated from just being
; integer values to aspect value/name pairs as determined
; by !sycl_aspects.
; e.g. !sycl_used_aspects = !{i32 1, i32 0}
; => !sycl_used_aspects = !{!{!"B", i32 1}, !{!"A", i32 0}}
; Additionally checks that when there is no association
; for a given aspect value, that metadata remains unchanged.
; e.g. !sycl_used_aspects = !{i32 4, i32 0}
; => !sycl_used_aspects = !{i32 4, !{!"A", i32 0}}
%A = type { i32 }
%B = type { i32 }
%C = type { i32 }
%D = type { i32 }
; CHECK: funcA() !sycl_used_aspects ![[fA:[0-9]+]]
define spir_func void @funcA() !sycl_used_aspects !5 {
%tmp = alloca %A, align 8
ret void
}
; CHECK: funcB() !sycl_used_aspects ![[fB:[0-9]+]]
define spir_func void @funcB() !sycl_used_aspects !6 {
%tmp = alloca %B, align 8
call spir_func void @funcA()
ret void
}
; CHECK: funcC() !sycl_used_aspects ![[fC:[0-9]+]]
define spir_func void @funcC() !sycl_used_aspects !7 {
%tmp = alloca %C, align 8
call spir_func void @funcB()
ret void
}
; CHECK: funcD() !sycl_used_aspects ![[fD:[0-9]+]]
define spir_func void @funcD() !sycl_used_aspects !8 {
%tmp = alloca %D, align 8
call spir_func void @funcC()
ret void
}
define spir_kernel void @kernel() !sycl_used_aspects !8 !sycl_fixed_targets !9 {
call spir_func void @funcD()
ret void
}
!sycl_types_that_use_aspects = !{!0, !1, !2, !3}
!sycl_aspects = !{!0, !1, !2, !3, !4}
; CHECK-DAG: ![[mA:[0-9]+]] = !{!"A", i32 0}
; CHECK-DAG: ![[mB:[0-9]+]] = !{!"B", i32 1}
; CHECK-DAG: ![[mC:[0-9]+]] = !{!"C", i32 2}
; CHECK-DAG: ![[mD:[0-9]+]] = !{!"D", i32 3}
; CHECK-DAG: ![[fA]] = !{![[mA]]}
; CHECK-DAG: ![[fB]] = !{![[mB]], ![[mA]]}
; CHECK-DAG: ![[fC]] = !{![[mC]], ![[mB]], ![[mA]]}
; CHECK-DAG: ![[fD]] = !{![[mA]], ![[mB]], ![[mC]], ![[mD]], i32 4}
!0 = !{!"A", i32 0}
!1 = !{!"B", i32 1}
!2 = !{!"C", i32 2}
!3 = !{!"D", i32 3}
!4 = !{!"fp64", i32 6}
!5 = !{i32 0}
!6 = !{i32 1, i32 0}
!7 = !{i32 2, i32 1, i32 0}
!8 = !{i32 0, i32 1, i32 2, i32 3, i32 4}
!9 = !{}