]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/Transforms/CodeGenPrepare/X86/sink-addrspacecast.ll
Vendor import of llvm RELEASE_350/final tag r216957 (effectively, 3.5.0 release):
[FreeBSD/FreeBSD.git] / test / Transforms / CodeGenPrepare / X86 / sink-addrspacecast.ll
1 ; RUN: opt -S -codegenprepare < %s | FileCheck %s
2
3 target datalayout =
4 "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
5 target triple = "x86_64-unknown-linux-gnu"
6
7 ; CHECK-LABEL: @load_cast_gep
8 ; CHECK: add i64 %sunkaddr, 40
9 define void @load_cast_gep(i1 %cond, i64* %base) {
10 entry:
11   %addr = getelementptr inbounds i64* %base, i64 5
12   %casted = addrspacecast i64* %addr to i32 addrspace(1)*
13   br i1 %cond, label %if.then, label %fallthrough
14
15 if.then:
16   %v = load i32 addrspace(1)* %casted, align 4
17   br label %fallthrough
18
19 fallthrough:
20   ret void
21 }
22
23 ; CHECK-LABEL: @store_gep_cast
24 ; CHECK: add i64 %sunkaddr, 20
25 define void @store_gep_cast(i1 %cond, i64* %base) {
26 entry:
27   %casted = addrspacecast i64* %base to i32 addrspace(1)*
28   %addr = getelementptr inbounds i32 addrspace(1)* %casted, i64 5
29   br i1 %cond, label %if.then, label %fallthrough
30
31 if.then:
32   store i32 0, i32 addrspace(1)* %addr, align 4
33   br label %fallthrough
34
35 fallthrough:
36   ret void
37 }