Evan Cheng | 99b653c | 2009-12-15 00:41:36 +0000 | [diff] [blame^] | 1 | ; RUN: llc < %s -march=x86 | FileCheck %s |
2 | |||||
3 | define i32 @t1(i8 zeroext %x) nounwind readnone ssp { | ||||
4 | entry: | ||||
5 | ; CHECK: t1: | ||||
6 | ; CHECK: shll | ||||
7 | ; CHECK-NOT: movzwl | ||||
8 | ; CHECK: ret | ||||
9 | %0 = zext i8 %x to i16 | ||||
10 | %1 = shl i16 %0, 5 | ||||
11 | %2 = zext i16 %1 to i32 | ||||
12 | ret i32 %2 | ||||
13 | } | ||||
14 | |||||
15 | define i32 @t2(i8 zeroext %x) nounwind readnone ssp { | ||||
16 | entry: | ||||
17 | ; CHECK: t2: | ||||
18 | ; CHECK: shrl | ||||
19 | ; CHECK-NOT: movzwl | ||||
20 | ; CHECK: ret | ||||
21 | %0 = zext i8 %x to i16 | ||||
22 | %1 = lshr i16 %0, 3 | ||||
23 | %2 = zext i16 %1 to i32 | ||||
24 | ret i32 %2 | ||||
25 | } | ||||
26 | |||||
27 | define i32 @t3(i8 zeroext %x, i8 zeroext %y) nounwind readnone ssp { | ||||
28 | entry: | ||||
29 | ; CHECK: t3: | ||||
30 | ; CHECK: shll | ||||
31 | ; CHECK-NOT: movzwl | ||||
32 | ; CHECK: ret | ||||
33 | %0 = zext i8 %x to i16 | ||||
34 | %1 = zext i8 %y to i16 | ||||
35 | %2 = shl i16 %0, %1 | ||||
36 | %3 = zext i16 %2 to i32 | ||||
37 | ret i32 %3 | ||||
38 | } |