Fixed some bugs in register stack pass.
[llvm/zpu.git] / test / CodeGen / X86 / ins_subreg_coalesce-1.ll
blob83674361a77355d0fed765b982e005fa2d77ccf9
1 ; RUN: llc < %s -march=x86 | FileCheck %s
3 define fastcc i32 @t() nounwind  {
4 entry:
5 ; CHECK: t:
6 ; CHECK: movzwl 0, %eax
7 ; CHECK: orl $2, %eax
8 ; CHECK: movw %ax, 0
9 ; CHECK: shrl $3, %eax
10 ; CHECK: andl $1, %eax
11         br i1 false, label %UnifiedReturnBlock, label %bb4
12 bb4:            ; preds = %entry
13         br i1 false, label %bb17, label %bb22
14 bb17:           ; preds = %bb4
15         ret i32 1
16 bb22:           ; preds = %bb4
17         br i1 true, label %walkExprTree.exit, label %bb4.i
18 bb4.i:          ; preds = %bb22
19         ret i32 0
20 walkExprTree.exit:              ; preds = %bb22
21         %tmp83 = load i16* null, align 4                ; <i16> [#uses=1]
22         %tmp84 = or i16 %tmp83, 2               ; <i16> [#uses=2]
23         store i16 %tmp84, i16* null, align 4
24         %tmp98993 = zext i16 %tmp84 to i32              ; <i32> [#uses=1]
25         %tmp1004 = lshr i32 %tmp98993, 3                ; <i32> [#uses=1]
26         %tmp100.lobit5 = and i32 %tmp1004, 1            ; <i32> [#uses=1]
27         ret i32 %tmp100.lobit5
28 UnifiedReturnBlock:             ; preds = %entry
29         ret i32 0