3
3
;
4
4
; Tests the translation of "sycl-alignment" to alignment attributes on load/store
5
5
6
+ ; FIXME: Alignment properties not preserved after testcase was opaquified
7
+ ; REQUIRES: TEMPORARY_DISABLED
8
+
6
9
target triple = "spir64_fpga-unknown-unknown"
7
10
8
11
%struct.MyIP = type { %class.ann_ptr }
9
- %class.ann_ptr = type { i32 addrspace (4 )* }
12
+ %class.ann_ptr = type { ptr addrspace (4 ) }
10
13
11
14
$_ZN7ann_refIiEC2EPi = comdat any
12
15
$_ZN7ann_refIiEcvRiEv = comdat any
@@ -16,73 +19,65 @@ $_ZN7ann_refIiEC2EPi1= comdat any
16
19
@.str.1 = private unnamed_addr addrspace (1 ) constant [9 x i8 ] c "main.cpp\00 " , section "llvm.metadata"
17
20
@.str.2 = private unnamed_addr addrspace (1 ) constant [15 x i8 ] c "sycl-alignment\00 " , section "llvm.metadata"
18
21
@.str.3 = private unnamed_addr addrspace (1 ) constant [3 x i8 ] c "64\00 " , section "llvm.metadata"
19
- @.args = private unnamed_addr addrspace (1 ) constant { [ 15 x i8 ] addrspace (1 )*, [ 3 x i8 ] addrspace (1 )* } { [ 15 x i8 ] addrspace (1 )* @.str.2 , [ 3 x i8 ] addrspace (1 )* @.str.3 }, section "llvm.met
22
+ @.args = private unnamed_addr addrspace (1 ) constant { ptr addrspace (1 ), ptr addrspace (1 ) } { ptr addrspace (1 ) @.str.2 , ptr addrspace (1 ) @.str.3 }, section "llvm.met
20
23
adata"
21
24
22
25
; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite)
23
- declare i8 addrspace (4 )* @llvm.ptr.annotation.p4i8.p1i8 ( i8 addrspace (4 )*, i8 addrspace (1 )*, i8 addrspace (1 )* , i32 , i8 addrspace (1 )* ) #5
26
+ declare ptr addrspace (4 ) @llvm.ptr.annotation.p4.p1 ( ptr addrspace (4 ), ptr addrspace (1 ), ptr addrspace (1 ), i32 , ptr addrspace (1 )) #5
24
27
25
- define weak_odr dso_local spir_kernel void @_MyIP (i32 addrspace (1 )* noundef "sycl-alignment" ="64" %_arg_a ) {
28
+ define weak_odr dso_local spir_kernel void @_MyIP (ptr addrspace (1 ) noundef "sycl-alignment" ="64" %_arg_a ) {
26
29
; CHECK: define{{.*}}@_MyIP{{.*}}align 64{{.*}} {
27
30
ret void
28
31
}
29
32
30
33
; Function Attrs: convergent mustprogress norecurse nounwind
31
- define linkonce_odr dso_local spir_func noundef align 4 dereferenceable (4 ) i32 addrspace (4 )* @_ZN7ann_refIiEcvRiEv (%class.ann_ptr addrspace (4 )* noundef align 8 dereferenceable_or_null (8 ) %this ) #3 comdat align 2 {
34
+ define linkonce_odr dso_local spir_func noundef align 4 dereferenceable (4 ) ptr addrspace (4 ) @_ZN7ann_refIiEcvRiEv (ptr addrspace (4 ) noundef align 8 dereferenceable_or_null (8 ) %this ) #3 comdat align 2 {
32
35
entry:
33
- %retval = alloca i32 addrspace (4 )*, align 8
34
- %this.addr = alloca %class.ann_ptr addrspace (4 )*, align 8
35
- %retval.ascast = addrspacecast i32 addrspace (4 )** %retval to i32 addrspace (4 )* addrspace (4 )*
36
- %this.addr.ascast = addrspacecast %class.ann_ptr addrspace (4 )** %this.addr to %class.ann_ptr addrspace (4 )* addrspace (4 )*
37
- store %class.ann_ptr addrspace (4 )* %this , %class.ann_ptr addrspace (4 )* addrspace (4 )* %this.addr.ascast , align 8
38
- %this1 = load %class.ann_ptr addrspace (4 )*, %class.ann_ptr addrspace (4 )* addrspace (4 )* %this.addr.ascast , align 8
39
- %p = getelementptr inbounds %class.ann_ptr , %class.ann_ptr addrspace (4 )* %this1 , i32 0 , i32 0
40
- %0 = load i32 addrspace (4 )*, i32 addrspace (4 )* addrspace (4 )* %p , align 8
41
- %1 = bitcast i32 addrspace (4 )* %0 to i8 addrspace (4 )*
42
- %2 = call i8 addrspace (4 )* @llvm.ptr.annotation.p4i8.p1i8 (i8 addrspace (4 )* %1 , i8 addrspace (1 )* getelementptr inbounds ([16 x i8 ], [16 x i8 ] addrspace (1 )* @.str , i32 0 , i32 0 ), i8 addrspace (1 )* getelementptr inbounds ([9 x i8 ], [9 x i8 ] addrspace (1 )* @.str.1 , i32 0 , i32 0 ), i32 22 , i8 addrspace (1 )* bitcast ({ [15 x i8 ] addrspace (1 )*, [3 x i8 ] addrspace (1 )* } addrspace (1 )* @.args to i8 addrspace (1 )*))
43
- %3 = bitcast i8 addrspace (4 )* %2 to i32 addrspace (4 )*
44
- %4 = load i32 , i32 addrspace (4 )* %3 , align 8
36
+ %retval = alloca ptr addrspace (4 ), align 8
37
+ %this.addr = alloca ptr addrspace (4 ), align 8
38
+ %retval.ascast = addrspacecast ptr %retval to ptr addrspace (4 )
39
+ %this.addr.ascast = addrspacecast ptr %this.addr to ptr addrspace (4 )
40
+ store ptr addrspace (4 ) %this , ptr addrspace (4 ) %this.addr.ascast , align 8
41
+ %this1 = load ptr addrspace (4 ), ptr addrspace (4 ) %this.addr.ascast , align 8
42
+ %0 = load ptr addrspace (4 ), ptr addrspace (4 ) %this1 , align 8
43
+ %1 = call ptr addrspace (4 ) @llvm.ptr.annotation.p4.p1 (ptr addrspace (4 ) %0 , ptr addrspace (1 ) @.str , ptr addrspace (1 ) @.str.1 , i32 22 , ptr addrspace (1 ) @.args )
44
+ %2 = load i32 , ptr addrspace (4 ) %1 , align 8
45
45
; CHECK: load {{.*}}, align 64
46
- ret i32 addrspace (4 )* %3
46
+ ret ptr addrspace (4 ) %1
47
47
}
48
48
49
49
; Function Attrs: convergent norecurse nounwind
50
- define linkonce_odr dso_local spir_func void @_ZN7ann_refIiEC2EPi (%class.ann_ptr addrspace (4 )* noundef align 8 dereferenceable_or_null (8 ) %this , i32 addrspace (4 )* noundef %ptr ) unnamed_addr #2 comdat align 2 {
50
+ define linkonce_odr dso_local spir_func void @_ZN7ann_refIiEC2EPi (ptr addrspace (4 ) noundef align 8 dereferenceable_or_null (8 ) %this , ptr addrspace (4 ) noundef %ptr ) unnamed_addr #2 comdat align 2 {
51
51
entry:
52
- %this.addr = alloca %class.ann_ptr addrspace (4 )*, align 8
53
- %ptr.addr = alloca i32 addrspace (4 )*, align 8
54
- %this.addr.ascast = addrspacecast %class.ann_ptr addrspace (4 )** %this.addr to %class.ann_ptr addrspace (4 )* addrspace (4 )*
55
- %ptr.addr.ascast = addrspacecast i32 addrspace (4 )** %ptr.addr to i32 addrspace (4 )* addrspace (4 )*
56
- store %class.ann_ptr addrspace (4 )* %this , %class.ann_ptr addrspace (4 )* addrspace (4 )* %this.addr.ascast , align 8
57
- store i32 addrspace (4 )* %ptr , i32 addrspace (4 )* addrspace (4 )* %ptr.addr.ascast , align 8
58
- %this1 = load %class.ann_ptr addrspace (4 )*, %class.ann_ptr addrspace (4 )* addrspace (4 )* %this.addr.ascast , align 8
59
- %p = getelementptr inbounds %class.ann_ptr , %class.ann_ptr addrspace (4 )* %this1 , i32 0 , i32 0
60
- %0 = load i32 addrspace (4 )*, i32 addrspace (4 )* addrspace (4 )* %p , align 8
61
- %1 = bitcast i32 addrspace (4 )* %0 to i8 addrspace (4 )*
62
- %2 = call i8 addrspace (4 )* @llvm.ptr.annotation.p4i8.p1i8 (i8 addrspace (4 )* %1 , i8 addrspace (1 )* getelementptr inbounds ([16 x i8 ], [16 x i8 ] addrspace (1 )* @.str , i32 0 , i32 0 ), i8 addrspace (1 )* getelementptr inbounds ([9 x i8 ], [9 x i8 ] addrspace (1 )* @.str.1 , i32 0 , i32 0 ), i32 22 , i8 addrspace (1 )* bitcast ({ [15 x i8 ] addrspace (1 )*, [3 x i8 ] addrspace (1 )* } addrspace (1 )* @.args to i8 addrspace (1 )*))
63
- %3 = bitcast i8 addrspace (4 )* %2 to i32 addrspace (4 )*
64
- store i32 5 , i32 addrspace (4 )* %3 , align 8
52
+ %this.addr = alloca ptr addrspace (4 ), align 8
53
+ %ptr.addr = alloca ptr addrspace (4 ), align 8
54
+ %this.addr.ascast = addrspacecast ptr %this.addr to ptr addrspace (4 )
55
+ %ptr.addr.ascast = addrspacecast ptr %ptr.addr to ptr addrspace (4 )
56
+ store ptr addrspace (4 ) %this , ptr addrspace (4 ) %this.addr.ascast , align 8
57
+ store ptr addrspace (4 ) %ptr , ptr addrspace (4 ) %ptr.addr.ascast , align 8
58
+ %this1 = load ptr addrspace (4 ), ptr addrspace (4 ) %this.addr.ascast , align 8
59
+ %0 = load ptr addrspace (4 ), ptr addrspace (4 ) %this1 , align 8
60
+ %1 = call ptr addrspace (4 ) @llvm.ptr.annotation.p4.p1 (ptr addrspace (4 ) %0 , ptr addrspace (1 ) @.str , ptr addrspace (1 ) @.str.1 , i32 22 , ptr addrspace (1 ) @.args )
61
+ store i32 5 , ptr addrspace (4 ) %1 , align 8
65
62
; CHECK: store {{.*}}, align 64
66
63
ret void
67
64
}
68
65
69
66
; Function Attrs: convergent norecurse nounwind
70
- define linkonce_odr dso_local spir_func void @_ZN7ann_refIiEC2EPi1 (%class.ann_ptr addrspace (4 )* noundef align 8 dereferenceable_or_null (8 ) %this , i32 addrspace (4 )* noundef %ptr , i8 addrspace (4 )* %h ) comdat align 2 {
67
+ define linkonce_odr dso_local spir_func void @_ZN7ann_refIiEC2EPi1 (ptr addrspace (4 ) noundef align 8 dereferenceable_or_null (8 ) %this , ptr addrspace (4 ) noundef %ptr , ptr addrspace (4 ) %h ) comdat align 2 {
71
68
entry:
72
- %this.addr = alloca %class.ann_ptr addrspace (4 )*, align 8
73
- %ptr.addr = alloca i32 addrspace (4 )*, align 8
74
- %this.addr.ascast = addrspacecast %class.ann_ptr addrspace (4 )** %this.addr to %class.ann_ptr addrspace (4 )* addrspace (4 )*
75
- %ptr.addr.ascast = addrspacecast i32 addrspace (4 )** %ptr.addr to i32 addrspace (4 )* addrspace (4 )*
76
- store %class.ann_ptr addrspace (4 )* %this , %class.ann_ptr addrspace (4 )* addrspace (4 )* %this.addr.ascast , align 8
77
- store i32 addrspace (4 )* %ptr , i32 addrspace (4 )* addrspace (4 )* %ptr.addr.ascast , align 8
78
- %this1 = load %class.ann_ptr addrspace (4 )*, %class.ann_ptr addrspace (4 )* addrspace (4 )* %this.addr.ascast , align 8
79
- %p = getelementptr inbounds %class.ann_ptr , %class.ann_ptr addrspace (4 )* %this1 , i32 0 , i32 0
80
- %0 = load i32 addrspace (4 )*, i32 addrspace (4 )* addrspace (4 )* %p , align 8
81
- %1 = bitcast i32 addrspace (4 )* %0 to i8 addrspace (4 )*
82
- %2 = call i8 addrspace (4 )* @llvm.ptr.annotation.p4i8.p1i8 (i8 addrspace (4 )* %1 , i8 addrspace (1 )* getelementptr inbounds ([16 x i8 ], [16 x i8 ] addrspace (1 )* @.str , i32 0 , i32 0 ), i8 addrspace (1 )* getelementptr inbounds ([9 x i8 ], [9 x i8 ] addrspace (1 )* @.str.1 , i32 0 , i32 0 ), i32 22 , i8 addrspace (1 )* bitcast ({ [15 x i8 ] addrspace (1 )*, [3 x i8 ] addrspace (1 )* } addrspace (1 )* @.args to i8 addrspace (1 )*))
83
- call void @llvm.memcpy.p4i8.p4i8.i32 (i8 addrspace (4 )* %2 , i8 addrspace (4 )* %h , i32 1 , i1 false )
84
- ; CHECK: call void @llvm.memcpy.p4i8.p4i8.i32(i8 addrspace(4)* align 64 %1, i8 addrspace(4)* %h, i32 1, i1 false)
69
+ %this.addr = alloca ptr addrspace (4 ), align 8
70
+ %ptr.addr = alloca ptr addrspace (4 ), align 8
71
+ %this.addr.ascast = addrspacecast ptr %this.addr to ptr addrspace (4 )
72
+ %ptr.addr.ascast = addrspacecast ptr %ptr.addr to ptr addrspace (4 )
73
+ store ptr addrspace (4 ) %this , ptr addrspace (4 ) %this.addr.ascast , align 8
74
+ store ptr addrspace (4 ) %ptr , ptr addrspace (4 ) %ptr.addr.ascast , align 8
75
+ %this1 = load ptr addrspace (4 ), ptr addrspace (4 ) %this.addr.ascast , align 8
76
+ %0 = load ptr addrspace (4 ), ptr addrspace (4 ) %this1 , align 8
77
+ %1 = call ptr addrspace (4 ) @llvm.ptr.annotation.p4.p1 (ptr addrspace (4 ) %0 , ptr addrspace (1 ) @.str , ptr addrspace (1 ) @.str.1 , i32 22 , ptr addrspace (1 ) @.args )
78
+ call void @llvm.memcpy.p4.p4.i32 (ptr addrspace (4 ) %1 , ptr addrspace (4 ) %h , i32 1 , i1 false )
79
+ ; CHECK: call void @llvm.memcpy.p4.p4.i32(ptr addrspace(4) align 64 %0, ptr addrspace(4) %h, i32 1, i1 false)
85
80
ret void
86
81
}
87
82
88
- declare void @llvm.memcpy.p4i8.p4i8 .i32 (i8 addrspace (4 )*, i8 addrspace (4 )* , i32 , i1 )
83
+ declare void @llvm.memcpy.p4.p4 .i32 (ptr addrspace (4 ), ptr addrspace (4 ), i32 , i1 )
0 commit comments