7
7
8
8
; CHECK-SPIRV-NOT: llvm.memmove
9
9
10
+ ; CHECK-SPIRV: TypeInt [[#TYPEINT:]] 32
11
+ ; CHECK-SPIRV: Constant [[#TYPEINT]] [[#ARRSIZE:]] 128
12
+
10
13
; CHECK-SPIRV: Variable {{[0-9]+}} [[mem:[0-9]+]] 7
11
14
; CHECK-SPIRV: Bitcast [[i8Ty:[0-9]+]] [[tmp0:[0-9]+]] [[mem]]
12
15
; CHECK-SPIRV: LifetimeStart [[tmp0]] [[size:[0-9]+]]
28
31
; CHECK-SPIRV: Bitcast [[i8Ty]] [[tmp3:[0-9]+]] [[mem]]
29
32
; CHECK-SPIRV: LifetimeStop [[tmp3]] [[size]]
30
33
34
+ ; CHECK-SPIRV: Variable [[#]] [[#VAR:]]
35
+ ; CHECK-SPIRV: Bitcast [[i8Ty:[0-9]+]] [[#TMP0:]] [[#VAR]]
36
+ ; CHECK-SPIRV: LifetimeStart [[#TMP0]]
37
+ ; CHECK-SPIRV: Bitcast [[i8Ty]] [[#TMP1:]] [[#VAR]]
38
+ ; CHECK-SPIRV: CopyMemorySized [[#TMP1]] [[#]] [[#ARRSIZE]]
39
+ ; CHECK-SPIRV: Bitcast [[i8Ty]] [[#TMP2:]] [[#VAR]]
40
+ ; CHECK-SPIRV: CopyMemorySized [[#]] [[#TMP2]] [[#ARRSIZE]]
41
+ ; CHECK-SPIRV: Bitcast [[i8Ty]] [[#TMP3:]] [[#VAR]]
42
+ ; CHECK-SPIRV: LifetimeStop [[#TMP3]]
43
+
31
44
; CHECK-LLVM-NOT: llvm.memmove
32
45
33
46
; CHECK-LLVM-LABEL: @test_struct
60
73
; CHECK-LLVM: [[tmp4:%[0-9]+]] = bitcast %struct.SomeStruct* [[local]] to [[type]]
61
74
; CHECK-LLVM: call void @llvm.lifetime.end.p0i8({{i[0-9]+}} {{-?[0-9]+}}, [[type]] [[tmp4]])
62
75
76
+ ; CHECK-LLVM-LABEL: @test_array
77
+ ; CHECK-LLVM: %[[#ALLOCA:]] = alloca [16 x i8], align 1
78
+ ; CHECK-LLVM: %[[#TMP0:]] = bitcast [16 x i8]* %[[#ALLOCA]] to i8*
79
+ ; CHECK-LLVM: call void @llvm.lifetime.start.p0i8(i64 -1, i8* %[[#TMP0]])
80
+ ; CHECK-LLVM: %[[#TMP1:]] = bitcast [16 x i8]* %[[#ALLOCA]] to i8*
81
+ ; CHECK-LLVM: call void @llvm.memcpy.p0i8.p1i8.i32(i8* %[[#TMP1]], i8 addrspace(1)* %out, i32 128, i1 false)
82
+ ; CHECK-LLVM: %[[#TMP2:]] = bitcast [16 x i8]* %[[#ALLOCA]] to i8*
83
+ ; CHECK-LLVM: call void @llvm.memcpy.p1i8.p0i8.i32(i8 addrspace(1)* %in, i8* %[[#TMP2]], i32 128, i1 false)
84
+ ; CHECK-LLVM: %[[#TMP3:]] = bitcast [16 x i8]* %[[#ALLOCA]] to i8*
85
+ ; CHECK-LLVM: call void @llvm.lifetime.end.p0i8(i64 -1, i8* %[[#TMP3]])
86
+
87
+
63
88
target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64"
64
89
target triple = "spir-unknown-unknown"
65
90
@@ -81,6 +106,12 @@ define spir_func void @copy_struct(%struct.SomeStruct addrspace(1)* nocapture re
81
106
ret void
82
107
}
83
108
109
+ ; Function Attrs: nounwind
110
+ define spir_kernel void @test_array (i8 addrspace (1 )* %in , i8 addrspace (1 )* %out ) {
111
+ call void @llvm.memmove.p1i8.p1i8.i32 (i8 addrspace (1 )* %in , i8 addrspace (1 )* %out , i32 128 , i1 false )
112
+ ret void
113
+ }
114
+
84
115
; Function Attrs: nounwind
85
116
declare void @llvm.memmove.p1i8.p1i8.i32 (i8 addrspace (1 )* nocapture , i8 addrspace (1 )* nocapture readonly , i32 , i1 ) #1
86
117
0 commit comments