1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86 -x86-asm-syntax=intel | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; CHECK: inc 4*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: PTR 5*9880d681SAndroid Build Coastguard Worker; CHECK: {{$}} 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine signext i16 @t(i32* %bitptr, i32* %source, i8** %byteptr, i32 %scale, i32 %round) { 8*9880d681SAndroid Build Coastguard Workerentry: 9*9880d681SAndroid Build Coastguard Worker br label %bb 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerbb: ; preds = %cond_next391, %entry 12*9880d681SAndroid Build Coastguard Worker %cnt.0 = phi i32 [ 0, %entry ], [ %tmp422445, %cond_next391 ] ; <i32> [#uses=1] 13*9880d681SAndroid Build Coastguard Worker %v.1 = phi i32 [ undef, %entry ], [ %tmp411, %cond_next391 ] ; <i32> [#uses=0] 14*9880d681SAndroid Build Coastguard Worker br i1 false, label %cond_true, label %cond_next127 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workercond_true: ; preds = %bb 17*9880d681SAndroid Build Coastguard Worker store i8* null, i8** %byteptr, align 4 18*9880d681SAndroid Build Coastguard Worker store i8* null, i8** %byteptr, align 4 19*9880d681SAndroid Build Coastguard Worker br label %cond_next127 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workercond_next127: ; preds = %cond_true, %bb 22*9880d681SAndroid Build Coastguard Worker %tmp151 = add i32 0, %round ; <i32> [#uses=1] 23*9880d681SAndroid Build Coastguard Worker %tmp153 = ashr i32 %tmp151, %scale ; <i32> [#uses=2] 24*9880d681SAndroid Build Coastguard Worker %tmp154155 = trunc i32 %tmp153 to i16 ; <i16> [#uses=1] 25*9880d681SAndroid Build Coastguard Worker %tmp154155156 = sext i16 %tmp154155 to i32 ; <i32> [#uses=1] 26*9880d681SAndroid Build Coastguard Worker %tmp158 = xor i32 %tmp154155156, %tmp153 ; <i32> [#uses=1] 27*9880d681SAndroid Build Coastguard Worker %tmp160 = or i32 %tmp158, %cnt.0 ; <i32> [#uses=1] 28*9880d681SAndroid Build Coastguard Worker %tmp171 = load i32, i32* %bitptr, align 4 ; <i32> [#uses=1] 29*9880d681SAndroid Build Coastguard Worker %tmp180181 = sext i16 0 to i32 ; <i32> [#uses=3] 30*9880d681SAndroid Build Coastguard Worker %tmp183 = add i32 %tmp160, 1 ; <i32> [#uses=1] 31*9880d681SAndroid Build Coastguard Worker br i1 false, label %cond_true188, label %cond_next245 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workercond_true188: ; preds = %cond_next127 34*9880d681SAndroid Build Coastguard Worker ret i16 0 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workercond_next245: ; preds = %cond_next127 37*9880d681SAndroid Build Coastguard Worker %tmp249 = ashr i32 %tmp180181, 8 ; <i32> [#uses=1] 38*9880d681SAndroid Build Coastguard Worker %tmp250 = add i32 %tmp171, %tmp249 ; <i32> [#uses=1] 39*9880d681SAndroid Build Coastguard Worker %tmp253444 = lshr i32 %tmp180181, 4 ; <i32> [#uses=1] 40*9880d681SAndroid Build Coastguard Worker %tmp254 = and i32 %tmp253444, 15 ; <i32> [#uses=1] 41*9880d681SAndroid Build Coastguard Worker %tmp256 = and i32 %tmp180181, 15 ; <i32> [#uses=2] 42*9880d681SAndroid Build Coastguard Worker %tmp264 = icmp ugt i32 %tmp250, 15 ; <i1> [#uses=1] 43*9880d681SAndroid Build Coastguard Worker br i1 %tmp264, label %cond_true267, label %cond_next391 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workercond_true267: ; preds = %cond_next245 46*9880d681SAndroid Build Coastguard Worker store i8* null, i8** %byteptr, align 4 47*9880d681SAndroid Build Coastguard Worker store i8* null, i8** %byteptr, align 4 48*9880d681SAndroid Build Coastguard Worker br i1 false, label %cond_true289, label %cond_next327 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workercond_true289: ; preds = %cond_true267 51*9880d681SAndroid Build Coastguard Worker ret i16 0 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workercond_next327: ; preds = %cond_true267 54*9880d681SAndroid Build Coastguard Worker br i1 false, label %cond_true343, label %cond_next385 55*9880d681SAndroid Build Coastguard Worker 56*9880d681SAndroid Build Coastguard Workercond_true343: ; preds = %cond_next327 57*9880d681SAndroid Build Coastguard Worker %tmp345 = load i8*, i8** %byteptr, align 4 ; <i8*> [#uses=1] 58*9880d681SAndroid Build Coastguard Worker store i8* null, i8** %byteptr, align 4 59*9880d681SAndroid Build Coastguard Worker br i1 false, label %cond_next385, label %cond_true352 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Workercond_true352: ; preds = %cond_true343 62*9880d681SAndroid Build Coastguard Worker store i8* %tmp345, i8** %byteptr, align 4 63*9880d681SAndroid Build Coastguard Worker br i1 false, label %cond_true364, label %cond_next385 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Workercond_true364: ; preds = %cond_true352 66*9880d681SAndroid Build Coastguard Worker ret i16 0 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Workercond_next385: ; preds = %cond_true352, %cond_true343, %cond_next327 69*9880d681SAndroid Build Coastguard Worker br label %cond_next391 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Workercond_next391: ; preds = %cond_next385, %cond_next245 72*9880d681SAndroid Build Coastguard Worker %tmp393 = load i32, i32* %source, align 4 ; <i32> [#uses=1] 73*9880d681SAndroid Build Coastguard Worker %tmp395 = load i32, i32* %bitptr, align 4 ; <i32> [#uses=2] 74*9880d681SAndroid Build Coastguard Worker %tmp396 = shl i32 %tmp393, %tmp395 ; <i32> [#uses=1] 75*9880d681SAndroid Build Coastguard Worker %tmp398 = sub i32 32, %tmp256 ; <i32> [#uses=1] 76*9880d681SAndroid Build Coastguard Worker %tmp405 = lshr i32 %tmp396, 31 ; <i32> [#uses=1] 77*9880d681SAndroid Build Coastguard Worker %tmp406 = add i32 %tmp405, -1 ; <i32> [#uses=1] 78*9880d681SAndroid Build Coastguard Worker %tmp409 = lshr i32 %tmp406, %tmp398 ; <i32> [#uses=1] 79*9880d681SAndroid Build Coastguard Worker %tmp411 = sub i32 0, %tmp409 ; <i32> [#uses=1] 80*9880d681SAndroid Build Coastguard Worker %tmp422445 = add i32 %tmp254, %tmp183 ; <i32> [#uses=2] 81*9880d681SAndroid Build Coastguard Worker %tmp426447 = add i32 %tmp395, %tmp256 ; <i32> [#uses=1] 82*9880d681SAndroid Build Coastguard Worker store i32 %tmp426447, i32* %bitptr, align 4 83*9880d681SAndroid Build Coastguard Worker %tmp429448 = icmp ult i32 %tmp422445, 63 ; <i1> [#uses=1] 84*9880d681SAndroid Build Coastguard Worker br i1 %tmp429448, label %bb, label %UnifiedReturnBlock 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard WorkerUnifiedReturnBlock: ; preds = %cond_next391 87*9880d681SAndroid Build Coastguard Worker ret i16 0 88*9880d681SAndroid Build Coastguard Worker} 89