• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc -O2 -mtriple=i686-- < %s | FileCheck %s
2
3define i32* @fooOptnone(i32* %p, i32* %q, i32** %z) #0 {
4entry:
5  %r = load i32, i32* %p
6  %s = load i32, i32* %q
7  %y = load i32*, i32** %z
8
9  %t0 = add i32 %r, %s
10  %t1 = add i32 %t0, 1
11  %t2 = getelementptr i32, i32* %y, i32 1
12  %t3 = getelementptr i32, i32* %t2, i32 %t1
13
14  ret i32* %t3
15
16; 'optnone' should use fast-isel which will not produce 'lea'.
17; CHECK-LABEL: fooOptnone:
18; CHECK-NOT:   lea
19; CHECK:       ret
20}
21
22define i32* @fooNormal(i32* %p, i32* %q, i32** %z) #1 {
23entry:
24  %r = load i32, i32* %p
25  %s = load i32, i32* %q
26  %y = load i32*, i32** %z
27
28  %t0 = add i32 %r, %s
29  %t1 = add i32 %t0, 1
30  %t2 = getelementptr i32, i32* %y, i32 1
31  %t3 = getelementptr i32, i32* %t2, i32 %t1
32
33  ret i32* %t3
34
35; Normal ISel will produce 'lea'.
36; CHECK-LABEL: fooNormal:
37; CHECK:       lea
38; CHECK:       ret
39}
40
41attributes #0 = { nounwind optnone noinline }
42attributes #1 = { nounwind }
43