Reid Spencer | ea8b07e | 2007-03-23 20:48:34 +0000 | [diff] [blame] | 1 | ; Tests to make sure elimination of casts is working correctly |
Edward O'Callaghan | cbf75a5 | 2009-10-12 07:18:14 +0000 | [diff] [blame] | 2 | ; RUN: opt < %s -instcombine -S | FileCheck %s |
Reid Spencer | ea8b07e | 2007-03-23 20:48:34 +0000 | [diff] [blame] | 3 | |
Chris Lattner | c77d24b | 2009-11-07 19:11:46 +0000 | [diff] [blame] | 4 | target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128" |
| 5 | |
Reid Spencer | ea8b07e | 2007-03-23 20:48:34 +0000 | [diff] [blame] | 6 | define i17 @test1(i17 %a) { |
| 7 | %tmp = zext i17 %a to i37 ; <i37> [#uses=2] |
| 8 | %tmp21 = lshr i37 %tmp, 8 ; <i37> [#uses=1] |
Edward O'Callaghan | cbf75a5 | 2009-10-12 07:18:14 +0000 | [diff] [blame] | 9 | ; CHECK: %tmp21 = lshr i17 %a, 8 |
Reid Spencer | ea8b07e | 2007-03-23 20:48:34 +0000 | [diff] [blame] | 10 | %tmp5 = shl i37 %tmp, 8 ; <i37> [#uses=1] |
Edward O'Callaghan | cbf75a5 | 2009-10-12 07:18:14 +0000 | [diff] [blame] | 11 | ; CHECK: %tmp5 = shl i17 %a, 8 |
Reid Spencer | ea8b07e | 2007-03-23 20:48:34 +0000 | [diff] [blame] | 12 | %tmp.upgrd.32 = or i37 %tmp21, %tmp5 ; <i37> [#uses=1] |
Edward O'Callaghan | cbf75a5 | 2009-10-12 07:18:14 +0000 | [diff] [blame] | 13 | ; CHECK: %tmp.upgrd.32 = or i17 %tmp21, %tmp5 |
Reid Spencer | ea8b07e | 2007-03-23 20:48:34 +0000 | [diff] [blame] | 14 | %tmp.upgrd.3 = trunc i37 %tmp.upgrd.32 to i17 ; <i17> [#uses=1] |
| 15 | ret i17 %tmp.upgrd.3 |
Edward O'Callaghan | cbf75a5 | 2009-10-12 07:18:14 +0000 | [diff] [blame] | 16 | ; CHECK: ret i17 %tmp.upgrd.32 |
Reid Spencer | ea8b07e | 2007-03-23 20:48:34 +0000 | [diff] [blame] | 17 | } |
| 18 | |
| 19 | define i167 @test2(i167 %a) { |
| 20 | %tmp = zext i167 %a to i577 ; <i577> [#uses=2] |
| 21 | %tmp21 = lshr i577 %tmp, 9 ; <i577> [#uses=1] |
Edward O'Callaghan | cbf75a5 | 2009-10-12 07:18:14 +0000 | [diff] [blame] | 22 | ; CHECK: %tmp21 = lshr i167 %a, 9 |
Reid Spencer | ea8b07e | 2007-03-23 20:48:34 +0000 | [diff] [blame] | 23 | %tmp5 = shl i577 %tmp, 8 ; <i577> [#uses=1] |
Edward O'Callaghan | cbf75a5 | 2009-10-12 07:18:14 +0000 | [diff] [blame] | 24 | ; CHECK: %tmp5 = shl i167 %a, 8 |
Reid Spencer | ea8b07e | 2007-03-23 20:48:34 +0000 | [diff] [blame] | 25 | %tmp.upgrd.32 = or i577 %tmp21, %tmp5 ; <i577> [#uses=1] |
Edward O'Callaghan | cbf75a5 | 2009-10-12 07:18:14 +0000 | [diff] [blame] | 26 | ; CHECK: %tmp.upgrd.32 = or i167 %tmp21, %tmp5 |
Reid Spencer | ea8b07e | 2007-03-23 20:48:34 +0000 | [diff] [blame] | 27 | %tmp.upgrd.3 = trunc i577 %tmp.upgrd.32 to i167 ; <i167> [#uses=1] |
| 28 | ret i167 %tmp.upgrd.3 |
Edward O'Callaghan | cbf75a5 | 2009-10-12 07:18:14 +0000 | [diff] [blame] | 29 | ; CHECK: ret i167 %tmp.upgrd.32 |
Reid Spencer | ea8b07e | 2007-03-23 20:48:34 +0000 | [diff] [blame] | 30 | } |