1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=i686-- -mcpu=corei7 | FileCheck %s
3
4define signext   i16 @t(i16* %qmatrix, i16* %dct, i16* %acBaseTable, i16* %acExtTable, i16 signext  %acBaseRes, i16 signext  %acMaskRes, i16 signext  %acExtRes, i32* %bitptr, i32* %source, i32 %markerPrefix, i8** %byteptr, i32 %scale, i32 %round, i32 %bits) {
5; CHECK-LABEL: t:
6; CHECK:       # %bb.0: # %entry
7; CHECK-NEXT:    movl {{[0-9]+}}(%esp), %eax
8; CHECK-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9; CHECK-NEXT:    .p2align 4, 0x90
10; CHECK-NEXT:  .LBB0_1: # %cond_next127
11; CHECK-NEXT:    # =>This Inner Loop Header: Depth=1
12; CHECK-NEXT:    movl %eax, %edx
13; CHECK-NEXT:    sarl %cl, %edx
14; CHECK-NEXT:    incl %edx
15; CHECK-NEXT:    cmpl $63, %edx
16; CHECK-NEXT:    jb .LBB0_1
17; CHECK-NEXT:  # %bb.2: # %UnifiedReturnBlock
18; CHECK-NEXT:    xorl %eax, %eax
19; CHECK-NEXT:    retl
20entry:
21	br label %cond_next127
22
23cond_next127:		; preds = %cond_next391, %entry
24	%tmp151 = add i32 0, %round		; <i32> [#uses=1]
25	%tmp153 = ashr i32 %tmp151, %scale		; <i32> [#uses=1]
26	%tmp158 = xor i32 0, %tmp153		; <i32> [#uses=1]
27	%tmp160 = or i32 %tmp158, 0		; <i32> [#uses=1]
28	%tmp180181 = sext i16 0 to i32		; <i32> [#uses=1]
29	%tmp183 = add i32 %tmp160, 1		; <i32> [#uses=1]
30	br i1 false, label %cond_true188, label %cond_next245
31
32cond_true188:		; preds = %cond_next127
33	ret i16 0
34
35cond_next245:		; preds = %cond_next127
36	%tmp253444 = lshr i32 %tmp180181, 4		; <i32> [#uses=1]
37	%tmp254 = and i32 %tmp253444, 15		; <i32> [#uses=1]
38	br i1 false, label %cond_true267, label %cond_next391
39
40cond_true267:		; preds = %cond_next245
41	%tmp269 = load i8*, i8** %byteptr, align 4		; <i8*> [#uses=3]
42	%tmp270 = load i8, i8* %tmp269, align 1		; <i8> [#uses=1]
43	%tmp270271 = zext i8 %tmp270 to i32		; <i32> [#uses=1]
44	%tmp272 = getelementptr i8, i8* %tmp269, i32 1		; <i8*> [#uses=2]
45	store i8* %tmp272, i8** %byteptr, align 4
46	%tmp276 = load i8, i8* %tmp272, align 1		; <i8> [#uses=1]
47	%tmp278 = getelementptr i8, i8* %tmp269, i32 2		; <i8*> [#uses=1]
48	store i8* %tmp278, i8** %byteptr, align 4
49	%tmp286 = icmp eq i32 %tmp270271, %markerPrefix		; <i1> [#uses=1]
50	%cond = icmp eq i8 %tmp276, 0		; <i1> [#uses=1]
51	%bothcond = and i1 %tmp286, %cond		; <i1> [#uses=1]
52	br i1 %bothcond, label %cond_true294, label %cond_next327
53
54cond_true294:		; preds = %cond_true267
55	ret i16 0
56
57cond_next327:		; preds = %cond_true267
58	br i1 false, label %cond_true343, label %cond_next391
59
60cond_true343:		; preds = %cond_next327
61	%tmp345 = load i8*, i8** %byteptr, align 4		; <i8*> [#uses=1]
62	store i8* null, i8** %byteptr, align 4
63	store i8* %tmp345, i8** %byteptr, align 4
64	br label %cond_next391
65
66cond_next391:		; preds = %cond_true343, %cond_next327, %cond_next245
67	%tmp422445 = add i32 %tmp254, %tmp183		; <i32> [#uses=1]
68	%tmp429448 = icmp ult i32 %tmp422445, 63		; <i1> [#uses=1]
69	br i1 %tmp429448, label %cond_next127, label %UnifiedReturnBlock
70
71UnifiedReturnBlock:		; preds = %cond_next391
72	ret i16 0
73}
74