aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/2009-11-13-VirtRegRewriterBug.ll
blob: 5398eef3dd1733bb593140bcd8f7bc1bc95ccd81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
; RUN: llc < %s -mtriple=i386-apple-darwin -relocation-model=pic -disable-fp-elim
; rdar://7394770

%struct.JVTLib_100487 = type <{ i8 }>

define i32 @_Z13JVTLib_10335613JVTLib_10266513JVTLib_100579S_S_S_jPhj(i16* nocapture %ResidualX_Array.0, %struct.JVTLib_100487* nocapture byval align 4 %xqp, i16* nocapture %ResidualL_Array.0, i16* %ResidualDCZ_Array.0, i16* nocapture %ResidualACZ_FOArray.0, i32 %useFRextDequant, i8* nocapture %JVTLib_103357, i32 %use_field_scan) ssp {
bb.nph:
  %0 = shl i32 undef, 1                           ; <i32> [#uses=2]
  %mask133.masked.masked.masked.masked.masked.masked = or i640 undef, undef ; <i640> [#uses=1]
  br label %bb

bb:                                               ; preds = %_ZL13JVTLib_105204PKsPK13JVTLib_105184PsPhjS5_j.exit, %bb.nph
  br i1 undef, label %bb2, label %bb1

bb1:                                              ; preds = %bb
  br i1 undef, label %bb.i, label %bb1.i

bb2:                                              ; preds = %bb
  unreachable

bb.i:                                             ; preds = %bb1
  br label %_ZL13JVTLib_105204PKsPK13JVTLib_105184PsPhjS5_j.exit

bb1.i:                                            ; preds = %bb1
  br label %_ZL13JVTLib_105204PKsPK13JVTLib_105184PsPhjS5_j.exit

_ZL13JVTLib_105204PKsPK13JVTLib_105184PsPhjS5_j.exit: ; preds = %bb1.i, %bb.i
  br i1 undef, label %bb5, label %bb

bb5:                                              ; preds = %_ZL13JVTLib_105204PKsPK13JVTLib_105184PsPhjS5_j.exit
  %mask271.masked.masked.masked.masked.masked.masked.masked = or i256 0, undef ; <i256> [#uses=2]
  %mask266.masked.masked.masked.masked.masked.masked = or i256 %mask271.masked.masked.masked.masked.masked.masked.masked, undef ; <i256> [#uses=1]
  %mask241.masked = or i256 undef, undef          ; <i256> [#uses=1]
  %ins237 = or i256 undef, 0                      ; <i256> [#uses=1]
  br i1 undef, label %bb9, label %bb10

bb9:                                              ; preds = %bb5
  br i1 undef, label %bb12.i, label %_ZL13JVTLib_105255PKsPK13JVTLib_105184Psj.exit

bb12.i:                                           ; preds = %bb9
  br label %_ZL13JVTLib_105255PKsPK13JVTLib_105184Psj.exit

_ZL13JVTLib_105255PKsPK13JVTLib_105184Psj.exit:   ; preds = %bb12.i, %bb9
  ret i32 undef

bb10:                                             ; preds = %bb5
  %1 = sext i16 undef to i32                      ; <i32> [#uses=1]
  %2 = sext i16 undef to i32                      ; <i32> [#uses=1]
  %3 = sext i16 undef to i32                      ; <i32> [#uses=1]
  %4 = sext i16 undef to i32                      ; <i32> [#uses=1]
  %5 = sext i16 undef to i32                      ; <i32> [#uses=1]
  %6 = sext i16 undef to i32                      ; <i32> [#uses=1]
  %tmp211 = lshr i256 %mask271.masked.masked.masked.masked.masked.masked.masked, 112 ; <i256> [#uses=0]
  %7 = sext i16 undef to i32                      ; <i32> [#uses=1]
  %tmp208 = lshr i256 %mask266.masked.masked.masked.masked.masked.masked, 128 ; <i256> [#uses=1]
  %tmp209 = trunc i256 %tmp208 to i16             ; <i16> [#uses=1]
  %8 = sext i16 %tmp209 to i32                    ; <i32> [#uses=1]
  %9 = sext i16 undef to i32                      ; <i32> [#uses=1]
  %10 = sext i16 undef to i32                     ; <i32> [#uses=1]
  %tmp193 = lshr i256 %mask241.masked, 208        ; <i256> [#uses=1]
  %tmp194 = trunc i256 %tmp193 to i16             ; <i16> [#uses=1]
  %11 = sext i16 %tmp194 to i32                   ; <i32> [#uses=1]
  %tmp187 = lshr i256 %ins237, 240                ; <i256> [#uses=1]
  %tmp188 = trunc i256 %tmp187 to i16             ; <i16> [#uses=1]
  %12 = sext i16 %tmp188 to i32                   ; <i32> [#uses=1]
  %13 = add nsw i32 %4, %1                        ; <i32> [#uses=1]
  %14 = add nsw i32 %5, 0                         ; <i32> [#uses=1]
  %15 = add nsw i32 %6, %2                        ; <i32> [#uses=1]
  %16 = add nsw i32 %7, %3                        ; <i32> [#uses=1]
  %17 = add nsw i32 0, %8                         ; <i32> [#uses=1]
  %18 = add nsw i32 %11, %9                       ; <i32> [#uses=1]
  %19 = add nsw i32 0, %10                        ; <i32> [#uses=1]
  %20 = add nsw i32 %12, 0                        ; <i32> [#uses=1]
  %21 = add nsw i32 %17, %13                      ; <i32> [#uses=2]
  %22 = add nsw i32 %18, %14                      ; <i32> [#uses=2]
  %23 = add nsw i32 %19, %15                      ; <i32> [#uses=2]
  %24 = add nsw i32 %20, %16                      ; <i32> [#uses=2]
  %25 = add nsw i32 %22, %21                      ; <i32> [#uses=2]
  %26 = add nsw i32 %24, %23                      ; <i32> [#uses=2]
  %27 = sub i32 %21, %22                          ; <i32> [#uses=1]
  %28 = sub i32 %23, %24                          ; <i32> [#uses=1]
  %29 = add nsw i32 %26, %25                      ; <i32> [#uses=1]
  %30 = sub i32 %25, %26                          ; <i32> [#uses=1]
  %31 = sub i32 %27, %28                          ; <i32> [#uses=1]
  %32 = ashr i32 %29, 1                           ; <i32> [#uses=2]
  %33 = ashr i32 %30, 1                           ; <i32> [#uses=2]
  %34 = ashr i32 %31, 1                           ; <i32> [#uses=2]
  %35 = icmp sgt i32 %32, 32767                   ; <i1> [#uses=1]
  %o0_0.0.i = select i1 %35, i32 32767, i32 %32   ; <i32> [#uses=2]
  %36 = icmp slt i32 %o0_0.0.i, -32768            ; <i1> [#uses=1]
  %37 = icmp sgt i32 %33, 32767                   ; <i1> [#uses=1]
  %o1_0.0.i = select i1 %37, i32 32767, i32 %33   ; <i32> [#uses=2]
  %38 = icmp slt i32 %o1_0.0.i, -32768            ; <i1> [#uses=1]
  %39 = icmp sgt i32 %34, 32767                   ; <i1> [#uses=1]
  %o2_0.0.i = select i1 %39, i32 32767, i32 %34   ; <i32> [#uses=2]
  %40 = icmp slt i32 %o2_0.0.i, -32768            ; <i1> [#uses=1]
  %tmp101 = lshr i640 %mask133.masked.masked.masked.masked.masked.masked, 256 ; <i640> [#uses=1]
  %41 = trunc i32 %o0_0.0.i to i16                ; <i16> [#uses=1]
  %tmp358 = select i1 %36, i16 -32768, i16 %41    ; <i16> [#uses=2]
  %42 = trunc i32 %o1_0.0.i to i16                ; <i16> [#uses=1]
  %tmp347 = select i1 %38, i16 -32768, i16 %42    ; <i16> [#uses=1]
  %43 = trunc i32 %o2_0.0.i to i16                ; <i16> [#uses=1]
  %tmp335 = select i1 %40, i16 -32768, i16 %43    ; <i16> [#uses=1]
  %44 = icmp sgt i16 %tmp358, -1                  ; <i1> [#uses=2]
  %..i24 = select i1 %44, i16 %tmp358, i16 undef  ; <i16> [#uses=1]
  %45 = icmp sgt i16 %tmp347, -1                  ; <i1> [#uses=1]
  %46 = icmp sgt i16 %tmp335, -1                  ; <i1> [#uses=1]
  %47 = zext i16 %..i24 to i32                    ; <i32> [#uses=1]
  %tmp = trunc i640 %tmp101 to i32                ; <i32> [#uses=1]
  %48 = and i32 %tmp, 65535                       ; <i32> [#uses=2]
  %49 = mul i32 %47, %48                          ; <i32> [#uses=1]
  %50 = zext i16 undef to i32                     ; <i32> [#uses=1]
  %51 = mul i32 %50, %48                          ; <i32> [#uses=1]
  %52 = add i32 %49, %0                           ; <i32> [#uses=1]
  %53 = add i32 %51, %0                           ; <i32> [#uses=1]
  %54 = lshr i32 %52, undef                       ; <i32> [#uses=1]
  %55 = lshr i32 %53, undef                       ; <i32> [#uses=1]
  %56 = trunc i32 %54 to i16                      ; <i16> [#uses=1]
  %57 = trunc i32 %55 to i16                      ; <i16> [#uses=1]
  %vs16Out0_0.0.i = select i1 %44, i16 %56, i16 undef ; <i16> [#uses=1]
  %vs16Out0_4.0.i = select i1 %45, i16 0, i16 undef ; <i16> [#uses=1]
  %vs16Out1_0.0.i = select i1 %46, i16 %57, i16 undef ; <i16> [#uses=1]
  br i1 undef, label %bb129.i, label %_ZL13JVTLib_105207PKsPK13JVTLib_105184Psj.exit

bb129.i:                                          ; preds = %bb10
  br label %_ZL13JVTLib_105207PKsPK13JVTLib_105184Psj.exit

_ZL13JVTLib_105207PKsPK13JVTLib_105184Psj.exit:   ; preds = %bb129.i, %bb10
  %58 = phi i16 [ %vs16Out0_4.0.i, %bb129.i ], [ undef, %bb10 ] ; <i16> [#uses=0]
  %59 = phi i16 [ undef, %bb129.i ], [ %vs16Out1_0.0.i, %bb10 ] ; <i16> [#uses=0]
  store i16 %vs16Out0_0.0.i, i16* %ResidualDCZ_Array.0, align 2
  unreachable
}