~ubuntu-branches/ubuntu/trusty/llvm-toolchain-snapshot/trusty-201310232150

« back to all changes in this revision

Viewing changes to test/CodeGen/SystemZ/alloca-01.ll

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-27 15:01:57 UTC
  • mfrom: (0.10.1) (0.9.1) (0.8.1) (0.7.1) (0.6.1) (0.5.2)
  • Revision ID: package-import@ubuntu.com-20130527150157-tdkrsjpuvht7v0qx
Tags: 1:3.4~svn182733-1~exp1
* New snapshot release (3.4 release)
* Add a symlink of libLLVM-3.4.so.1 to usr/lib/llvm-3.4/lib/libLLVM-3.4.so
    to fix make the llvm-config-3.4 --libdir work (Closes: #708677)
  * Various packages rename to allow co installations:
    * libclang1 => libclang1-3.4
    * libclang1-dbg => libclang1-3.4-dbg
    * libclang-dev => libclang-3.4-dev
    * libclang-common-dev => libclang-common-3.4-dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; Test variable-sized allocas and addresses based on them in cases where
 
2
; stack arguments are needed.
 
3
;
 
4
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s -check-prefix=CHECK1
 
5
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s -check-prefix=CHECK2
 
6
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s -check-prefix=CHECK-A
 
7
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s -check-prefix=CHECK-B
 
8
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s -check-prefix=CHECK-C
 
9
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s -check-prefix=CHECK-D
 
10
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s -check-prefix=CHECK-FP
 
11
 
 
12
declare i64 @bar(i8 *%a, i8 *%b, i8 *%c, i8 *%d, i8 *%e, i64 %f, i64 %g)
 
13
 
 
14
; Allocate %length bytes and take addresses based on the result.
 
15
; There are two stack arguments, so an offset of 160 + 2 * 8 == 176
 
16
; is added to the copy of %r15.
 
17
define i64 @f1(i64 %length, i64 %index) {
 
18
; The full allocation sequence is:
 
19
;
 
20
;    la %r0, 7(%r2)      1
 
21
;    nill %r0, 0xfff8    1
 
22
;    lgr %r1, %r15         2
 
23
;    sgr %r1, %r0        1 2
 
24
;    lgr %r15, %r1         2
 
25
;
 
26
; The third instruction does not depend on the first two, so check for
 
27
; two fully-ordered sequences.
 
28
;
 
29
; FIXME: a better sequence would be:
 
30
;
 
31
;    lgr %r1, %r15
 
32
;    sgr %r1, %r2
 
33
;    nill %r1, 0xfff8
 
34
;    lgr %r15, %r1
 
35
;
 
36
; CHECK1: f1:
 
37
; CHECK1: la %r0, 7(%r2)
 
38
; CHECK1: nill %r0, 65528
 
39
; CHECK1: sgr %r1, %r0
 
40
; CHECK1: lgr %r15, %r1
 
41
;
 
42
; CHECK2: f1:
 
43
; CHECK2: lgr %r1, %r15
 
44
; CHECK2: sgr %r1, %r0
 
45
; CHECK2: lgr %r15, %r1
 
46
;
 
47
; CHECK-A: f1:
 
48
; CHECK-A: lgr %r15, %r1
 
49
; CHECK-A: la %r2, 176(%r1)
 
50
;
 
51
; CHECK-B: f1:
 
52
; CHECK-B: lgr %r15, %r1
 
53
; CHECK-B: la %r3, 177(%r1)
 
54
;
 
55
; CHECK-C: f1:
 
56
; CHECK-C: lgr %r15, %r1
 
57
; CHECK-C: la %r4, 4095({{%r3,%r1|%r1,%r3}})
 
58
;
 
59
; CHECK-D: f1:
 
60
; CHECK-D: lgr %r15, %r1
 
61
; CHECK-D: lay %r5, 4096({{%r3,%r1|%r1,%r3}})
 
62
;
 
63
; CHECK-E: f1:
 
64
; CHECK-E: lgr %r15, %r1
 
65
; CHECK-E: lay %r6, 4271({{%r3,%r1|%r1,%r3}})
 
66
;
 
67
; CHECK-FP: f1:
 
68
; CHECK-FP: lgr %r11, %r15
 
69
; CHECK-FP: lmg %r6, %r15, 224(%r11)
 
70
  %a = alloca i8, i64 %length
 
71
  %b = getelementptr i8 *%a, i64 1
 
72
  %cindex = add i64 %index, 3919
 
73
  %c = getelementptr i8 *%a, i64 %cindex
 
74
  %dindex = add i64 %index, 3920
 
75
  %d = getelementptr i8 *%a, i64 %dindex
 
76
  %eindex = add i64 %index, 4095
 
77
  %e = getelementptr i8 *%a, i64 %eindex
 
78
  %count = call i64 @bar(i8 *%a, i8 *%b, i8 *%c, i8 *%d, i8 *%e, i64 0, i64 0)
 
79
  %res = add i64 %count, 1
 
80
  ret i64 %res
 
81
}