Bob Wilson | 6819dbb | 2011-01-06 19:24:41 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s -mtriple=armv7-apple-darwin | FileCheck %s |
| 2 | ; RUN: llc < %s -mtriple=armv4t-apple-darwin | FileCheck %s -check-prefix=V4T |
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 3 | |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 4 | @X = external global [0 x i32] ; <[0 x i32]*> [#uses=5] |
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 5 | |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 6 | define i32 @t1() { |
Bob Wilson | b935031 | 2009-10-27 06:16:45 +0000 | [diff] [blame] | 7 | ; CHECK: t1: |
Jim Grosbach | dd11988 | 2011-03-11 22:51:41 +0000 | [diff] [blame^] | 8 | ; CHECK: pop |
Bob Wilson | 6819dbb | 2011-01-06 19:24:41 +0000 | [diff] [blame] | 9 | ; V4T: t1: |
Jim Grosbach | dd11988 | 2011-03-11 22:51:41 +0000 | [diff] [blame^] | 10 | ; V4T: pop |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 11 | %tmp = load i32* getelementptr ([0 x i32]* @X, i32 0, i32 0) ; <i32> [#uses=1] |
| 12 | %tmp3 = load i32* getelementptr ([0 x i32]* @X, i32 0, i32 1) ; <i32> [#uses=1] |
| 13 | %tmp4 = tail call i32 @f1( i32 %tmp, i32 %tmp3 ) ; <i32> [#uses=1] |
| 14 | ret i32 %tmp4 |
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 15 | } |
| 16 | |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 17 | define i32 @t2() { |
Bob Wilson | b935031 | 2009-10-27 06:16:45 +0000 | [diff] [blame] | 18 | ; CHECK: t2: |
Jim Grosbach | dd11988 | 2011-03-11 22:51:41 +0000 | [diff] [blame^] | 19 | ; CHECK: pop |
Bob Wilson | 6819dbb | 2011-01-06 19:24:41 +0000 | [diff] [blame] | 20 | ; V4T: t2: |
Jim Grosbach | dd11988 | 2011-03-11 22:51:41 +0000 | [diff] [blame^] | 21 | ; V4T: pop |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 22 | %tmp = load i32* getelementptr ([0 x i32]* @X, i32 0, i32 2) ; <i32> [#uses=1] |
| 23 | %tmp3 = load i32* getelementptr ([0 x i32]* @X, i32 0, i32 3) ; <i32> [#uses=1] |
| 24 | %tmp5 = load i32* getelementptr ([0 x i32]* @X, i32 0, i32 4) ; <i32> [#uses=1] |
| 25 | %tmp6 = tail call i32 @f2( i32 %tmp, i32 %tmp3, i32 %tmp5 ) ; <i32> [#uses=1] |
| 26 | ret i32 %tmp6 |
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 27 | } |
| 28 | |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 29 | define i32 @t3() { |
Bob Wilson | b935031 | 2009-10-27 06:16:45 +0000 | [diff] [blame] | 30 | ; CHECK: t3: |
| 31 | ; CHECK: ldmib |
Jim Grosbach | dd11988 | 2011-03-11 22:51:41 +0000 | [diff] [blame^] | 32 | ; CHECK: pop |
Bob Wilson | 6819dbb | 2011-01-06 19:24:41 +0000 | [diff] [blame] | 33 | ; V4T: t3: |
| 34 | ; V4T: ldmib |
| 35 | ; V4T: pop |
| 36 | ; V4T-NEXT: bx lr |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 37 | %tmp = load i32* getelementptr ([0 x i32]* @X, i32 0, i32 1) ; <i32> [#uses=1] |
| 38 | %tmp3 = load i32* getelementptr ([0 x i32]* @X, i32 0, i32 2) ; <i32> [#uses=1] |
| 39 | %tmp5 = load i32* getelementptr ([0 x i32]* @X, i32 0, i32 3) ; <i32> [#uses=1] |
Dale Johannesen | 4314426 | 2010-06-04 01:01:24 +0000 | [diff] [blame] | 40 | %tmp6 = call i32 @f2( i32 %tmp, i32 %tmp3, i32 %tmp5 ) ; <i32> [#uses=1] |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 41 | ret i32 %tmp6 |
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 42 | } |
| 43 | |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 44 | declare i32 @f1(i32, i32) |
| 45 | |
| 46 | declare i32 @f2(i32, i32, i32) |