Lines Matching full:linux

1 // RUN: %clang_cc1 -triple x86_64-linux-gnu -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,LINUX
2 // RUN: %clang_cc1 -triple x86_64-apple-macos -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,LINUX
12 // LINUX: @SingleVersion = weak_odr alias void (), ptr @SingleVersion.ifunc
13 // LINUX: @TwoVersions = weak_odr alias void (), ptr @TwoVersions.ifunc
14 // LINUX: @OrderDispatchUsageSpecific = weak_odr alias void (), ptr @OrderDispatchUsageSpecific.ifunc
15 // LINUX: @TwoVersionsSameAttr = weak_odr alias void (), ptr @TwoVersionsSameAttr.ifunc
16 // LINUX: @ThreeVersionsSameAttr = weak_odr alias void (), ptr @ThreeVersionsSameAttr.ifunc
17 // LINUX: @OrderSpecificUsageDispatch = weak_odr alias void (), ptr @OrderSpecificUsageDispatch.ifunc
18 // LINUX: @NoSpecifics = weak_odr alias void (), ptr @NoSpecifics.ifunc
19 // LINUX: @HasGeneric = weak_odr alias void (), ptr @HasGeneric.ifunc
20 // LINUX: @HasParams = weak_odr alias void (i32, double), ptr @HasParams.ifunc
21 // LINUX: @HasParamsAndReturn = weak_odr alias i32 (i32, double), ptr @HasParamsAndReturn.ifunc
22 // LINUX: @GenericAndPentium = weak_odr alias i32 (i32, double), ptr @GenericAndPentium.ifunc
23 // LINUX: @DispatchFirst = weak_odr alias i32 (), ptr @DispatchFirst.ifunc
25 // LINUX: @SingleVersion.ifunc = weak_odr ifunc void (), ptr @SingleVersion.resolver
26 // LINUX: @TwoVersions.ifunc = weak_odr ifunc void (), ptr @TwoVersions.resolver
27 // LINUX: @OrderDispatchUsageSpecific.ifunc = weak_odr ifunc void (), ptr @OrderDispatchUsageSpecific.resolver
28 // LINUX: @TwoVersionsSameAttr.ifunc = weak_odr ifunc void (), ptr @TwoVersionsSameAttr.resolver
29 // LINUX: @ThreeVersionsSameAttr.ifunc = weak_odr ifunc void (), ptr @ThreeVersionsSameAttr.resolver
30 // LINUX: @OrderSpecificUsageDispatch.ifunc = weak_odr ifunc void (), ptr @OrderSpecificUsageDispatch.resolver
31 // LINUX: @NoSpecifics.ifunc = weak_odr ifunc void (), ptr @NoSpecifics.resolver
32 // LINUX: @HasGeneric.ifunc = weak_odr ifunc void (), ptr @HasGeneric.resolver
33 // LINUX: @HasParams.ifunc = weak_odr ifunc void (i32, double), ptr @HasParams.resolver
34 // LINUX: @HasParamsAndReturn.ifunc = weak_odr ifunc i32 (i32, double), ptr @HasParamsAndReturn.resolver
35 // LINUX: @GenericAndPentium.ifunc = weak_odr ifunc i32 (i32, double), ptr @GenericAndPentium.resolver
36 // LINUX: @DispatchFirst.ifunc = weak_odr ifunc i32 (), ptr @DispatchFirst.resolver
40 // LINUX: define{{.*}} void @SingleVersion.S() #[[S:[0-9]+]]
45 // LINUX: define weak_odr ptr @SingleVersion.resolver()
46 // LINUX: call void @__cpu_indicator_init
47 // LINUX: %[[FEAT_INIT:.+]] = load i32, ptr getelementptr inbounds ({ i32, i32, i32, [1 x i32] }, ptr @__cpu_model, i32 0, i32 3, i32 0), align 4
48 // LINUX: %[[FEAT_JOIN:.+]] = and i32 %[[FEAT_INIT]], 525311
49 // LINUX: %[[FEAT_CHECK:.+]] = icmp eq i32 %[[FEAT_JOIN]], 525311
50 // LINUX: ret ptr @SingleVersion.S
51 // LINUX: call void @llvm.trap
52 // LINUX: unreachable
66 // LINUX: define{{.*}} void @NotCalled.S() #[[S]]
75 // LINUX: define weak_odr ptr @TwoVersions.resolver()
76 // LINUX: call void @__cpu_indicator_init
77 // LINUX: %[[FEAT_INIT:.+]] = load i32, ptr getelementptr inbounds ({ i32, i32, i32, [1 x i32] }, ptr @__cpu_model, i32 0, i32 3, i32 0), align 4
78 // LINUX: %[[FEAT_JOIN:.+]] = and i32 %[[FEAT_INIT]], 9422847
79 // LINUX: %[[FEAT_CHECK:.+]] = icmp eq i32 %[[FEAT_JOIN]], 9422847
80 // LINUX: ret ptr @TwoVersions.Z
81 // LINUX: ret ptr @TwoVersions.S
82 // LINUX: call void @llvm.trap
83 // LINUX: unreachable
122 // LINUX: define weak_odr ptr @OrderDispatchUsageSpecific.resolver()
123 // LINUX: call void @__cpu_indicator_init
124 // LINUX: ret ptr @OrderDispatchUsageSpecific.Z
125 // LINUX: call void @llvm.trap
126 // LINUX: unreachable
143 // LINUX: @SingleVersion.ifunc()
146 // LINUX: @TwoVersions.ifunc()
149 // LINUX: @TwoVersionsSameAttr.ifunc()
152 // LINUX: @ThreeVersionsSameAttr.ifunc()
155 // LINUX: @CpuSpecificNoDispatch.ifunc()
161 // LINUX: @CpuSpecificNoDispatch.ifunc()
164 // LINUX: @OrderDispatchUsageSpecific.ifunc()
167 // LINUX: @OrderSpecificUsageDispatch.ifunc()
171 // LINUX: declare void @CpuSpecificNoDispatch.ifunc()
176 // LINUX: define weak_odr ptr @TwoVersionsSameAttr.resolver()
177 // LINUX: ret ptr @TwoVersionsSameAttr.Z
178 // LINUX: ret ptr @TwoVersionsSameAttr.S
179 // LINUX: ret ptr @TwoVersionsSameAttr.O
180 // LINUX: call void @llvm.trap
181 // LINUX: unreachable
195 // LINUX: define weak_odr ptr @ThreeVersionsSameAttr.resolver()
196 // LINUX: call void @__cpu_indicator_init
197 // LINUX: ret ptr @ThreeVersionsSameAttr.Z
198 // LINUX: ret ptr @ThreeVersionsSameAttr.S
199 // LINUX: ret ptr @ThreeVersionsSameAttr.O
200 // LINUX: call void @llvm.trap
201 // LINUX: unreachable
216 // LINUX: define weak_odr ptr @OrderSpecificUsageDispatch.resolver()
217 // LINUX: ret ptr @OrderSpecificUsageDispatch.Z
227 // LINUX: define weak_odr ptr @NoSpecifics.resolver()
228 // LINUX: call void @__cpu_indicator_init
229 // LINUX: ret ptr @NoSpecifics.Z
230 // LINUX: ret ptr @NoSpecifics.S
231 // LINUX: ret ptr @NoSpecifics.O
232 // LINUX: call void @llvm.trap
233 // LINUX: unreachable
248 // LINUX: define weak_odr ptr @HasGeneric.resolver()
249 // LINUX: call void @__cpu_indicator_init
250 // LINUX: ret ptr @HasGeneric.Z
251 // LINUX: ret ptr @HasGeneric.S
252 // LINUX: ret ptr @HasGeneric.O
253 // LINUX: ret ptr @HasGeneric.A
254 // LINUX-NOT: call void @llvm.trap
270 // LINUX: define weak_odr ptr @HasParams.resolver()
271 // LINUX: call void @__cpu_indicator_init
272 // LINUX: ret ptr @HasParams.Z
273 // LINUX: ret ptr @HasParams.S
274 // LINUX: ret ptr @HasParams.O
275 // LINUX: ret ptr @HasParams.A
276 // LINUX-NOT: call void @llvm.trap
292 // LINUX: define weak_odr ptr @HasParamsAndReturn.resolver()
293 // LINUX: call void @__cpu_indicator_init
294 // LINUX: ret ptr @HasParamsAndReturn.Z
295 // LINUX: ret ptr @HasParamsAndReturn.S
296 // LINUX: ret ptr @HasParamsAndReturn.O
297 // LINUX: ret ptr @HasParamsAndReturn.A
298 // LINUX-NOT: call void @llvm.trap
314 // LINUX: define weak_odr ptr @GenericAndPentium.resolver()
315 // LINUX: call void @__cpu_indicator_init
316 // LINUX: ret ptr @GenericAndPentium.O
317 // LINUX: ret ptr @GenericAndPentium.B
318 // LINUX-NOT: ret ptr @GenericAndPentium.A
319 // LINUX-NOT: call void @llvm.trap
332 // LINUX: define weak_odr ptr @DispatchFirst.resolver
333 // LINUX: ret ptr @DispatchFirst.O
334 // LINUX: ret ptr @DispatchFirst.B
344 // LINUX: define{{.*}} i32 @DispatchFirst.O
345 // LINUX: ret i32 0
352 // LINUX: define{{.*}} i32 @DispatchFirst.B
353 // LINUX: ret i32 1