Jim Grosbach | 84c93d4 | 2011-07-26 20:49:44 +0000 | [diff] [blame^] | 1 | ; RUN: llc < %s -march=arm -mattr=+v6 | FileCheck %s |
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 2 | |
Evan Cheng | d27c9fc | 2009-07-03 01:43:10 +0000 | [diff] [blame] | 3 | define i32 @test0(i8 %A) { |
Jim Grosbach | 84c93d4 | 2011-07-26 20:49:44 +0000 | [diff] [blame^] | 4 | ; CHECK: test0 |
| 5 | ; CHECK: sxtb r0, r0 |
| 6 | %B = sext i8 %A to i32 |
| 7 | ret i32 %B |
Evan Cheng | d27c9fc | 2009-07-03 01:43:10 +0000 | [diff] [blame] | 8 | } |
| 9 | |
Chris Lattner | 26b0000 | 2011-06-17 03:14:27 +0000 | [diff] [blame] | 10 | define signext i8 @test1(i32 %A) { |
Jim Grosbach | 84c93d4 | 2011-07-26 20:49:44 +0000 | [diff] [blame^] | 11 | ; CHECK: test1 |
| 12 | ; CHECK: sxtb r0, r0, ror #8 |
| 13 | %B = lshr i32 %A, 8 |
| 14 | %C = shl i32 %A, 24 |
| 15 | %D = or i32 %B, %C |
| 16 | %E = trunc i32 %D to i8 |
| 17 | ret i8 %E |
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 18 | } |
| 19 | |
Chris Lattner | 26b0000 | 2011-06-17 03:14:27 +0000 | [diff] [blame] | 20 | define signext i32 @test2(i32 %A, i32 %X) { |
Jim Grosbach | 84c93d4 | 2011-07-26 20:49:44 +0000 | [diff] [blame^] | 21 | ; CHECK: test2 |
| 22 | ; CHECK: sxtab r0, r1, r0 |
| 23 | %B = lshr i32 %A, 8 |
| 24 | %C = shl i32 %A, 24 |
| 25 | %D = or i32 %B, %C |
| 26 | %E = trunc i32 %D to i8 |
| 27 | %F = sext i8 %E to i32 |
| 28 | %G = add i32 %F, %X |
| 29 | ret i32 %G |
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 30 | } |