| Reid Spencer | 6c38f0b | 2006-11-27 01:05:10 +0000 | [diff] [blame] | 1 | ; Tests to make sure elimination of casts is working correctly |
| Edward O'Callaghan | 484b6c2 | 2009-10-12 06:14:06 +0000 | [diff] [blame^] | 2 | ; RUN: opt < %s -instcombine -S | FileCheck %s |
| Reid Spencer | 6c38f0b | 2006-11-27 01:05:10 +0000 | [diff] [blame] | 3 | |
| Tanya Lattner | 5640bd1 | 2008-03-01 09:15:35 +0000 | [diff] [blame] | 4 | define i64 @test_sext_zext(i16 %A) { |
| 5 | %c1 = zext i16 %A to i32 ; <i32> [#uses=1] |
| 6 | %c2 = sext i32 %c1 to i64 ; <i64> [#uses=1] |
| 7 | ret i64 %c2 |
| Edward O'Callaghan | 484b6c2 | 2009-10-12 06:14:06 +0000 | [diff] [blame^] | 8 | CHECK-NOT: %c1 |
| 9 | CHECK: %c2 = zext i16 %A to i64 |
| 10 | CHECK: ret i64 %c2 |
| Reid Spencer | 6c38f0b | 2006-11-27 01:05:10 +0000 | [diff] [blame] | 11 | } |
| Tanya Lattner | 5640bd1 | 2008-03-01 09:15:35 +0000 | [diff] [blame] | 12 | |
| Chris Lattner | 24f31a0 | 2009-02-17 20:47:23 +0000 | [diff] [blame] | 13 | ; PR3599 |
| 14 | define i32 @test2(i64 %tmp) nounwind readnone { |
| 15 | entry: |
| 16 | %tmp5 = trunc i64 %tmp to i8 ; <i8> [#uses=1] |
| 17 | %tmp7 = lshr i64 %tmp, 8 ; <i64> [#uses=1] |
| 18 | %tmp8 = trunc i64 %tmp7 to i8 ; <i8> [#uses=1] |
| 19 | %tmp10 = lshr i64 %tmp, 16 ; <i64> [#uses=1] |
| 20 | %tmp11 = trunc i64 %tmp10 to i8 ; <i8> [#uses=1] |
| 21 | %tmp13 = lshr i64 %tmp, 24 ; <i64> [#uses=1] |
| 22 | %tmp14 = trunc i64 %tmp13 to i8 ; <i8> [#uses=1] |
| 23 | %tmp1 = zext i8 %tmp5 to i32 ; <i32> [#uses=1] |
| 24 | %tmp2 = zext i8 %tmp8 to i32 ; <i32> [#uses=1] |
| 25 | %tmp3 = shl i32 %tmp2, 8 ; <i32> [#uses=1] |
| 26 | %tmp4 = zext i8 %tmp11 to i32 ; <i32> [#uses=1] |
| 27 | %tmp6 = shl i32 %tmp4, 16 ; <i32> [#uses=1] |
| 28 | %tmp9 = zext i8 %tmp14 to i32 ; <i32> [#uses=1] |
| 29 | %tmp12 = shl i32 %tmp9, 24 ; <i32> [#uses=1] |
| 30 | %tmp15 = or i32 %tmp12, %tmp1 ; <i32> [#uses=1] |
| 31 | %tmp16 = or i32 %tmp15, %tmp6 ; <i32> [#uses=1] |
| 32 | %tmp17 = or i32 %tmp16, %tmp3 ; <i32> [#uses=1] |
| 33 | ret i32 %tmp17 |
| Edward O'Callaghan | 484b6c2 | 2009-10-12 06:14:06 +0000 | [diff] [blame^] | 34 | CHECK: ret i1 true |
| Chris Lattner | 24f31a0 | 2009-02-17 20:47:23 +0000 | [diff] [blame] | 35 | } |
| 36 | |