1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin | not grep "movb %ah, %r" 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker %struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, [4 x i8], i64 } 4*9880d681SAndroid Build Coastguard Worker %struct.PyBoolScalarObject = type { i64, %struct._typeobject*, i8 } 5*9880d681SAndroid Build Coastguard Worker %struct.PyBufferProcs = type { i64 (%struct.PyObject*, i64, i8**)*, i64 (%struct.PyObject*, i64, i8**)*, i64 (%struct.PyObject*, i64*)*, i64 (%struct.PyObject*, i64, i8**)* } 6*9880d681SAndroid Build Coastguard Worker %struct.PyGetSetDef = type { i8*, %struct.PyObject* (%struct.PyObject*, i8*)*, i32 (%struct.PyObject*, %struct.PyObject*, i8*)*, i8*, i8* } 7*9880d681SAndroid Build Coastguard Worker %struct.PyMappingMethods = type { i64 (%struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, i32 (%struct.PyObject*, %struct.PyObject*, %struct.PyObject*)* } 8*9880d681SAndroid Build Coastguard Worker %struct.PyMemberDef = type opaque 9*9880d681SAndroid Build Coastguard Worker %struct.PyMethodDef = type { i8*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, i32, i8* } 10*9880d681SAndroid Build Coastguard Worker %struct.PyNumberMethods = type { %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*)*, i32 (%struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, i32 (%struct.PyObject**, %struct.PyObject**)*, %struct.PyObject* (%struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*)* } 11*9880d681SAndroid Build Coastguard Worker %struct.PyObject = type { i64, %struct._typeobject* } 12*9880d681SAndroid Build Coastguard Worker %struct.PySequenceMethods = type { i64 (%struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, i64)*, %struct.PyObject* (%struct.PyObject*, i64)*, %struct.PyObject* (%struct.PyObject*, i64, i64)*, i32 (%struct.PyObject*, i64, %struct.PyObject*)*, i32 (%struct.PyObject*, i64, i64, %struct.PyObject*)*, i32 (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, i64)* } 13*9880d681SAndroid Build Coastguard Worker %struct.PyTupleObject = type { i64, %struct._typeobject*, i64, [1 x %struct.PyObject*] } 14*9880d681SAndroid Build Coastguard Worker %struct.__sFILEX = type opaque 15*9880d681SAndroid Build Coastguard Worker %struct.__sbuf = type { i8*, i32 } 16*9880d681SAndroid Build Coastguard Worker %struct._typeobject = type { i64, %struct._typeobject*, i64, i8*, i64, i64, void (%struct.PyObject*)*, i32 (%struct.PyObject*, %struct.FILE*, i32)*, %struct.PyObject* (%struct.PyObject*, i8*)*, i32 (%struct.PyObject*, i8*, %struct.PyObject*)*, i32 (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i64 (%struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, i32 (%struct.PyObject*, %struct.PyObject*, %struct.PyObject*)*, %struct.PyBufferProcs*, i64, i8*, i32 (%struct.PyObject*, i32 (%struct.PyObject*, i8*)*, i8*)*, i32 (%struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*, i32)*, i64, %struct.PyObject* (%struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*)*, %struct.PyMethodDef*, %struct.PyMemberDef*, %struct.PyGetSetDef*, %struct._typeobject*, %struct.PyObject*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*, %struct.PyObject*)*, i32 (%struct.PyObject*, %struct.PyObject*, %struct.PyObject*)*, i64, i32 (%struct.PyObject*, %struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct._typeobject*, i64)*, %struct.PyObject* (%struct._typeobject*, %struct.PyObject*, %struct.PyObject*)*, void (i8*)*, i32 (%struct.PyObject*)*, %struct.PyObject*, %struct.PyObject*, %struct.PyObject*, %struct.PyObject*, %struct.PyObject*, void (%struct.PyObject*)* } 17*9880d681SAndroid Build Coastguard Worker@PyArray_API = external global i8** ; <i8***> [#uses=4] 18*9880d681SAndroid Build Coastguard Worker@PyUFunc_API = external global i8** ; <i8***> [#uses=4] 19*9880d681SAndroid Build Coastguard Worker@.str5 = external constant [14 x i8] ; <[14 x i8]*> [#uses=1] 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerdefine %struct.PyObject* @ubyte_divmod(%struct.PyObject* %a, %struct.PyObject* %b) { 22*9880d681SAndroid Build Coastguard Workerentry: 23*9880d681SAndroid Build Coastguard Worker %arg1 = alloca i8, align 1 ; <i8*> [#uses=3] 24*9880d681SAndroid Build Coastguard Worker %arg2 = alloca i8, align 1 ; <i8*> [#uses=3] 25*9880d681SAndroid Build Coastguard Worker %first = alloca i32, align 4 ; <i32*> [#uses=2] 26*9880d681SAndroid Build Coastguard Worker %bufsize = alloca i32, align 4 ; <i32*> [#uses=1] 27*9880d681SAndroid Build Coastguard Worker %errmask = alloca i32, align 4 ; <i32*> [#uses=2] 28*9880d681SAndroid Build Coastguard Worker %errobj = alloca %struct.PyObject*, align 8 ; <%struct.PyObject**> [#uses=2] 29*9880d681SAndroid Build Coastguard Worker %tmp3.i = call fastcc i32 @_ubyte_convert_to_ctype( %struct.PyObject* %a, i8* %arg1 ) ; <i32> [#uses=2] 30*9880d681SAndroid Build Coastguard Worker %tmp5.i = icmp slt i32 %tmp3.i, 0 ; <i1> [#uses=1] 31*9880d681SAndroid Build Coastguard Worker br i1 %tmp5.i, label %_ubyte_convert2_to_ctypes.exit, label %cond_next.i 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workercond_next.i: ; preds = %entry 34*9880d681SAndroid Build Coastguard Worker %tmp11.i = call fastcc i32 @_ubyte_convert_to_ctype( %struct.PyObject* %b, i8* %arg2 ) ; <i32> [#uses=2] 35*9880d681SAndroid Build Coastguard Worker %tmp13.i = icmp slt i32 %tmp11.i, 0 ; <i1> [#uses=1] 36*9880d681SAndroid Build Coastguard Worker %retval.i = select i1 %tmp13.i, i32 %tmp11.i, i32 0 ; <i32> [#uses=1] 37*9880d681SAndroid Build Coastguard Worker switch i32 %retval.i, label %bb35 [ 38*9880d681SAndroid Build Coastguard Worker i32 -2, label %bb17 39*9880d681SAndroid Build Coastguard Worker i32 -1, label %bb4 40*9880d681SAndroid Build Coastguard Worker ] 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker_ubyte_convert2_to_ctypes.exit: ; preds = %entry 43*9880d681SAndroid Build Coastguard Worker switch i32 %tmp3.i, label %bb35 [ 44*9880d681SAndroid Build Coastguard Worker i32 -2, label %bb17 45*9880d681SAndroid Build Coastguard Worker i32 -1, label %bb4 46*9880d681SAndroid Build Coastguard Worker ] 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Workerbb4: ; preds = %_ubyte_convert2_to_ctypes.exit, %cond_next.i 49*9880d681SAndroid Build Coastguard Worker %tmp5 = load i8**, i8*** @PyArray_API, align 8 ; <i8**> [#uses=1] 50*9880d681SAndroid Build Coastguard Worker %tmp6 = getelementptr i8*, i8** %tmp5, i64 2 ; <i8**> [#uses=1] 51*9880d681SAndroid Build Coastguard Worker %tmp7 = load i8*, i8** %tmp6 ; <i8*> [#uses=1] 52*9880d681SAndroid Build Coastguard Worker %tmp78 = bitcast i8* %tmp7 to %struct._typeobject* ; <%struct._typeobject*> [#uses=1] 53*9880d681SAndroid Build Coastguard Worker %tmp9 = getelementptr %struct._typeobject, %struct._typeobject* %tmp78, i32 0, i32 12 ; <%struct.PyNumberMethods**> [#uses=1] 54*9880d681SAndroid Build Coastguard Worker %tmp10 = load %struct.PyNumberMethods*, %struct.PyNumberMethods** %tmp9 ; <%struct.PyNumberMethods*> [#uses=1] 55*9880d681SAndroid Build Coastguard Worker %tmp11 = getelementptr %struct.PyNumberMethods, %struct.PyNumberMethods* %tmp10, i32 0, i32 5 ; <%struct.PyObject* (%struct.PyObject*, %struct.PyObject*)**> [#uses=1] 56*9880d681SAndroid Build Coastguard Worker %tmp12 = load %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)** %tmp11 ; <%struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*> [#uses=1] 57*9880d681SAndroid Build Coastguard Worker %tmp15 = call %struct.PyObject* %tmp12( %struct.PyObject* %a, %struct.PyObject* %b ) ; <%struct.PyObject*> [#uses=1] 58*9880d681SAndroid Build Coastguard Worker ret %struct.PyObject* %tmp15 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Workerbb17: ; preds = %_ubyte_convert2_to_ctypes.exit, %cond_next.i 61*9880d681SAndroid Build Coastguard Worker %tmp18 = call %struct.PyObject* @PyErr_Occurred( ) ; <%struct.PyObject*> [#uses=1] 62*9880d681SAndroid Build Coastguard Worker %tmp19 = icmp eq %struct.PyObject* %tmp18, null ; <i1> [#uses=1] 63*9880d681SAndroid Build Coastguard Worker br i1 %tmp19, label %cond_next, label %UnifiedReturnBlock 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Workercond_next: ; preds = %bb17 66*9880d681SAndroid Build Coastguard Worker %tmp22 = load i8**, i8*** @PyArray_API, align 8 ; <i8**> [#uses=1] 67*9880d681SAndroid Build Coastguard Worker %tmp23 = getelementptr i8*, i8** %tmp22, i64 10 ; <i8**> [#uses=1] 68*9880d681SAndroid Build Coastguard Worker %tmp24 = load i8*, i8** %tmp23 ; <i8*> [#uses=1] 69*9880d681SAndroid Build Coastguard Worker %tmp2425 = bitcast i8* %tmp24 to %struct._typeobject* ; <%struct._typeobject*> [#uses=1] 70*9880d681SAndroid Build Coastguard Worker %tmp26 = getelementptr %struct._typeobject, %struct._typeobject* %tmp2425, i32 0, i32 12 ; <%struct.PyNumberMethods**> [#uses=1] 71*9880d681SAndroid Build Coastguard Worker %tmp27 = load %struct.PyNumberMethods*, %struct.PyNumberMethods** %tmp26 ; <%struct.PyNumberMethods*> [#uses=1] 72*9880d681SAndroid Build Coastguard Worker %tmp28 = getelementptr %struct.PyNumberMethods, %struct.PyNumberMethods* %tmp27, i32 0, i32 5 ; <%struct.PyObject* (%struct.PyObject*, %struct.PyObject*)**> [#uses=1] 73*9880d681SAndroid Build Coastguard Worker %tmp29 = load %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*, %struct.PyObject* (%struct.PyObject*, %struct.PyObject*)** %tmp28 ; <%struct.PyObject* (%struct.PyObject*, %struct.PyObject*)*> [#uses=1] 74*9880d681SAndroid Build Coastguard Worker %tmp32 = call %struct.PyObject* %tmp29( %struct.PyObject* %a, %struct.PyObject* %b ) ; <%struct.PyObject*> [#uses=1] 75*9880d681SAndroid Build Coastguard Worker ret %struct.PyObject* %tmp32 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Workerbb35: ; preds = %_ubyte_convert2_to_ctypes.exit, %cond_next.i 78*9880d681SAndroid Build Coastguard Worker %tmp36 = load i8**, i8*** @PyUFunc_API, align 8 ; <i8**> [#uses=1] 79*9880d681SAndroid Build Coastguard Worker %tmp37 = getelementptr i8*, i8** %tmp36, i64 27 ; <i8**> [#uses=1] 80*9880d681SAndroid Build Coastguard Worker %tmp38 = load i8*, i8** %tmp37 ; <i8*> [#uses=1] 81*9880d681SAndroid Build Coastguard Worker %tmp3839 = bitcast i8* %tmp38 to void ()* ; <void ()*> [#uses=1] 82*9880d681SAndroid Build Coastguard Worker call void %tmp3839( ) 83*9880d681SAndroid Build Coastguard Worker %tmp40 = load i8, i8* %arg2, align 1 ; <i8> [#uses=4] 84*9880d681SAndroid Build Coastguard Worker %tmp1.i = icmp eq i8 %tmp40, 0 ; <i1> [#uses=2] 85*9880d681SAndroid Build Coastguard Worker br i1 %tmp1.i, label %cond_true.i, label %cond_false.i 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Workercond_true.i: ; preds = %bb35 88*9880d681SAndroid Build Coastguard Worker %tmp3.i196 = call i32 @feraiseexcept( i32 4 ) ; <i32> [#uses=0] 89*9880d681SAndroid Build Coastguard Worker %tmp46207 = load i8, i8* %arg2, align 1 ; <i8> [#uses=3] 90*9880d681SAndroid Build Coastguard Worker %tmp48208 = load i8, i8* %arg1, align 1 ; <i8> [#uses=2] 91*9880d681SAndroid Build Coastguard Worker %tmp1.i197210 = icmp eq i8 %tmp48208, 0 ; <i1> [#uses=1] 92*9880d681SAndroid Build Coastguard Worker %tmp4.i212 = icmp eq i8 %tmp46207, 0 ; <i1> [#uses=1] 93*9880d681SAndroid Build Coastguard Worker %tmp7.i198213 = or i1 %tmp1.i197210, %tmp4.i212 ; <i1> [#uses=1] 94*9880d681SAndroid Build Coastguard Worker br i1 %tmp7.i198213, label %cond_true.i200, label %cond_next17.i 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard Workercond_false.i: ; preds = %bb35 97*9880d681SAndroid Build Coastguard Worker %tmp42 = load i8, i8* %arg1, align 1 ; <i8> [#uses=3] 98*9880d681SAndroid Build Coastguard Worker %tmp7.i = udiv i8 %tmp42, %tmp40 ; <i8> [#uses=2] 99*9880d681SAndroid Build Coastguard Worker %tmp1.i197 = icmp eq i8 %tmp42, 0 ; <i1> [#uses=1] 100*9880d681SAndroid Build Coastguard Worker %tmp7.i198 = or i1 %tmp1.i197, %tmp1.i ; <i1> [#uses=1] 101*9880d681SAndroid Build Coastguard Worker br i1 %tmp7.i198, label %cond_true.i200, label %cond_next17.i 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Workercond_true.i200: ; preds = %cond_false.i, %cond_true.i 104*9880d681SAndroid Build Coastguard Worker %out.0 = phi i8 [ 0, %cond_true.i ], [ %tmp7.i, %cond_false.i ] ; <i8> [#uses=2] 105*9880d681SAndroid Build Coastguard Worker %tmp46202.0 = phi i8 [ %tmp46207, %cond_true.i ], [ %tmp40, %cond_false.i ] ; <i8> [#uses=1] 106*9880d681SAndroid Build Coastguard Worker %tmp11.i199 = icmp eq i8 %tmp46202.0, 0 ; <i1> [#uses=1] 107*9880d681SAndroid Build Coastguard Worker br i1 %tmp11.i199, label %cond_true14.i, label %ubyte_ctype_remainder.exit 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Workercond_true14.i: ; preds = %cond_true.i200 110*9880d681SAndroid Build Coastguard Worker %tmp15.i = call i32 @feraiseexcept( i32 4 ) ; <i32> [#uses=0] 111*9880d681SAndroid Build Coastguard Worker br label %ubyte_ctype_remainder.exit 112*9880d681SAndroid Build Coastguard Worker 113*9880d681SAndroid Build Coastguard Workercond_next17.i: ; preds = %cond_false.i, %cond_true.i 114*9880d681SAndroid Build Coastguard Worker %out.1 = phi i8 [ 0, %cond_true.i ], [ %tmp7.i, %cond_false.i ] ; <i8> [#uses=1] 115*9880d681SAndroid Build Coastguard Worker %tmp46202.1 = phi i8 [ %tmp46207, %cond_true.i ], [ %tmp40, %cond_false.i ] ; <i8> [#uses=1] 116*9880d681SAndroid Build Coastguard Worker %tmp48205.1 = phi i8 [ %tmp48208, %cond_true.i ], [ %tmp42, %cond_false.i ] ; <i8> [#uses=1] 117*9880d681SAndroid Build Coastguard Worker %tmp20.i = urem i8 %tmp48205.1, %tmp46202.1 ; <i8> [#uses=1] 118*9880d681SAndroid Build Coastguard Worker br label %ubyte_ctype_remainder.exit 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Workerubyte_ctype_remainder.exit: ; preds = %cond_next17.i, %cond_true14.i, %cond_true.i200 121*9880d681SAndroid Build Coastguard Worker %out2.0 = phi i8 [ %tmp20.i, %cond_next17.i ], [ 0, %cond_true14.i ], [ 0, %cond_true.i200 ] ; <i8> [#uses=1] 122*9880d681SAndroid Build Coastguard Worker %out.2 = phi i8 [ %out.1, %cond_next17.i ], [ %out.0, %cond_true14.i ], [ %out.0, %cond_true.i200 ] ; <i8> [#uses=1] 123*9880d681SAndroid Build Coastguard Worker %tmp52 = load i8**, i8*** @PyUFunc_API, align 8 ; <i8**> [#uses=1] 124*9880d681SAndroid Build Coastguard Worker %tmp53 = getelementptr i8*, i8** %tmp52, i64 28 ; <i8**> [#uses=1] 125*9880d681SAndroid Build Coastguard Worker %tmp54 = load i8*, i8** %tmp53 ; <i8*> [#uses=1] 126*9880d681SAndroid Build Coastguard Worker %tmp5455 = bitcast i8* %tmp54 to i32 ()* ; <i32 ()*> [#uses=1] 127*9880d681SAndroid Build Coastguard Worker %tmp56 = call i32 %tmp5455( ) ; <i32> [#uses=2] 128*9880d681SAndroid Build Coastguard Worker %tmp58 = icmp eq i32 %tmp56, 0 ; <i1> [#uses=1] 129*9880d681SAndroid Build Coastguard Worker br i1 %tmp58, label %cond_next89, label %cond_true61 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Workercond_true61: ; preds = %ubyte_ctype_remainder.exit 132*9880d681SAndroid Build Coastguard Worker %tmp62 = load i8**, i8*** @PyUFunc_API, align 8 ; <i8**> [#uses=1] 133*9880d681SAndroid Build Coastguard Worker %tmp63 = getelementptr i8*, i8** %tmp62, i64 25 ; <i8**> [#uses=1] 134*9880d681SAndroid Build Coastguard Worker %tmp64 = load i8*, i8** %tmp63 ; <i8*> [#uses=1] 135*9880d681SAndroid Build Coastguard Worker %tmp6465 = bitcast i8* %tmp64 to i32 (i8*, i32*, i32*, %struct.PyObject**)* ; <i32 (i8*, i32*, i32*, %struct.PyObject**)*> [#uses=1] 136*9880d681SAndroid Build Coastguard Worker %tmp67 = call i32 %tmp6465( i8* getelementptr ([14 x i8], [14 x i8]* @.str5, i32 0, i64 0), i32* %bufsize, i32* %errmask, %struct.PyObject** %errobj ) ; <i32> [#uses=1] 137*9880d681SAndroid Build Coastguard Worker %tmp68 = icmp slt i32 %tmp67, 0 ; <i1> [#uses=1] 138*9880d681SAndroid Build Coastguard Worker br i1 %tmp68, label %UnifiedReturnBlock, label %cond_next73 139*9880d681SAndroid Build Coastguard Worker 140*9880d681SAndroid Build Coastguard Workercond_next73: ; preds = %cond_true61 141*9880d681SAndroid Build Coastguard Worker store i32 1, i32* %first, align 4 142*9880d681SAndroid Build Coastguard Worker %tmp74 = load i8**, i8*** @PyUFunc_API, align 8 ; <i8**> [#uses=1] 143*9880d681SAndroid Build Coastguard Worker %tmp75 = getelementptr i8*, i8** %tmp74, i64 29 ; <i8**> [#uses=1] 144*9880d681SAndroid Build Coastguard Worker %tmp76 = load i8*, i8** %tmp75 ; <i8*> [#uses=1] 145*9880d681SAndroid Build Coastguard Worker %tmp7677 = bitcast i8* %tmp76 to i32 (i32, %struct.PyObject*, i32, i32*)* ; <i32 (i32, %struct.PyObject*, i32, i32*)*> [#uses=1] 146*9880d681SAndroid Build Coastguard Worker %tmp79 = load %struct.PyObject*, %struct.PyObject** %errobj, align 8 ; <%struct.PyObject*> [#uses=1] 147*9880d681SAndroid Build Coastguard Worker %tmp80 = load i32, i32* %errmask, align 4 ; <i32> [#uses=1] 148*9880d681SAndroid Build Coastguard Worker %tmp82 = call i32 %tmp7677( i32 %tmp80, %struct.PyObject* %tmp79, i32 %tmp56, i32* %first ) ; <i32> [#uses=1] 149*9880d681SAndroid Build Coastguard Worker %tmp83 = icmp eq i32 %tmp82, 0 ; <i1> [#uses=1] 150*9880d681SAndroid Build Coastguard Worker br i1 %tmp83, label %cond_next89, label %UnifiedReturnBlock 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Workercond_next89: ; preds = %cond_next73, %ubyte_ctype_remainder.exit 153*9880d681SAndroid Build Coastguard Worker %tmp90 = call %struct.PyObject* @PyTuple_New( i64 2 ) ; <%struct.PyObject*> [#uses=9] 154*9880d681SAndroid Build Coastguard Worker %tmp92 = icmp eq %struct.PyObject* %tmp90, null ; <i1> [#uses=1] 155*9880d681SAndroid Build Coastguard Worker br i1 %tmp92, label %UnifiedReturnBlock, label %cond_next97 156*9880d681SAndroid Build Coastguard Worker 157*9880d681SAndroid Build Coastguard Workercond_next97: ; preds = %cond_next89 158*9880d681SAndroid Build Coastguard Worker %tmp98 = load i8**, i8*** @PyArray_API, align 8 ; <i8**> [#uses=1] 159*9880d681SAndroid Build Coastguard Worker %tmp99 = getelementptr i8*, i8** %tmp98, i64 25 ; <i8**> [#uses=1] 160*9880d681SAndroid Build Coastguard Worker %tmp100 = load i8*, i8** %tmp99 ; <i8*> [#uses=1] 161*9880d681SAndroid Build Coastguard Worker %tmp100101 = bitcast i8* %tmp100 to %struct._typeobject* ; <%struct._typeobject*> [#uses=2] 162*9880d681SAndroid Build Coastguard Worker %tmp102 = getelementptr %struct._typeobject, %struct._typeobject* %tmp100101, i32 0, i32 38 ; <%struct.PyObject* (%struct._typeobject*, i64)**> [#uses=1] 163*9880d681SAndroid Build Coastguard Worker %tmp103 = load %struct.PyObject* (%struct._typeobject*, i64)*, %struct.PyObject* (%struct._typeobject*, i64)** %tmp102 ; <%struct.PyObject* (%struct._typeobject*, i64)*> [#uses=1] 164*9880d681SAndroid Build Coastguard Worker %tmp108 = call %struct.PyObject* %tmp103( %struct._typeobject* %tmp100101, i64 0 ) ; <%struct.PyObject*> [#uses=3] 165*9880d681SAndroid Build Coastguard Worker %tmp110 = icmp eq %struct.PyObject* %tmp108, null ; <i1> [#uses=1] 166*9880d681SAndroid Build Coastguard Worker br i1 %tmp110, label %cond_true113, label %cond_next135 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Workercond_true113: ; preds = %cond_next97 169*9880d681SAndroid Build Coastguard Worker %tmp115 = getelementptr %struct.PyObject, %struct.PyObject* %tmp90, i32 0, i32 0 ; <i64*> [#uses=2] 170*9880d681SAndroid Build Coastguard Worker %tmp116 = load i64, i64* %tmp115 ; <i64> [#uses=1] 171*9880d681SAndroid Build Coastguard Worker %tmp117 = add i64 %tmp116, -1 ; <i64> [#uses=2] 172*9880d681SAndroid Build Coastguard Worker store i64 %tmp117, i64* %tmp115 173*9880d681SAndroid Build Coastguard Worker %tmp123 = icmp eq i64 %tmp117, 0 ; <i1> [#uses=1] 174*9880d681SAndroid Build Coastguard Worker br i1 %tmp123, label %cond_true126, label %UnifiedReturnBlock 175*9880d681SAndroid Build Coastguard Worker 176*9880d681SAndroid Build Coastguard Workercond_true126: ; preds = %cond_true113 177*9880d681SAndroid Build Coastguard Worker %tmp128 = getelementptr %struct.PyObject, %struct.PyObject* %tmp90, i32 0, i32 1 ; <%struct._typeobject**> [#uses=1] 178*9880d681SAndroid Build Coastguard Worker %tmp129 = load %struct._typeobject*, %struct._typeobject** %tmp128 ; <%struct._typeobject*> [#uses=1] 179*9880d681SAndroid Build Coastguard Worker %tmp130 = getelementptr %struct._typeobject, %struct._typeobject* %tmp129, i32 0, i32 6 ; <void (%struct.PyObject*)**> [#uses=1] 180*9880d681SAndroid Build Coastguard Worker %tmp131 = load void (%struct.PyObject*)*, void (%struct.PyObject*)** %tmp130 ; <void (%struct.PyObject*)*> [#uses=1] 181*9880d681SAndroid Build Coastguard Worker call void %tmp131( %struct.PyObject* %tmp90 ) 182*9880d681SAndroid Build Coastguard Worker ret %struct.PyObject* null 183*9880d681SAndroid Build Coastguard Worker 184*9880d681SAndroid Build Coastguard Workercond_next135: ; preds = %cond_next97 185*9880d681SAndroid Build Coastguard Worker %tmp136137 = bitcast %struct.PyObject* %tmp108 to %struct.PyBoolScalarObject* ; <%struct.PyBoolScalarObject*> [#uses=1] 186*9880d681SAndroid Build Coastguard Worker %tmp139 = getelementptr %struct.PyBoolScalarObject, %struct.PyBoolScalarObject* %tmp136137, i32 0, i32 2 ; <i8*> [#uses=1] 187*9880d681SAndroid Build Coastguard Worker store i8 %out.2, i8* %tmp139 188*9880d681SAndroid Build Coastguard Worker %tmp140141 = bitcast %struct.PyObject* %tmp90 to %struct.PyTupleObject* ; <%struct.PyTupleObject*> [#uses=2] 189*9880d681SAndroid Build Coastguard Worker %tmp143 = getelementptr %struct.PyTupleObject, %struct.PyTupleObject* %tmp140141, i32 0, i32 3, i64 0 ; <%struct.PyObject**> [#uses=1] 190*9880d681SAndroid Build Coastguard Worker store %struct.PyObject* %tmp108, %struct.PyObject** %tmp143 191*9880d681SAndroid Build Coastguard Worker %tmp145 = load i8**, i8*** @PyArray_API, align 8 ; <i8**> [#uses=1] 192*9880d681SAndroid Build Coastguard Worker %tmp146 = getelementptr i8*, i8** %tmp145, i64 25 ; <i8**> [#uses=1] 193*9880d681SAndroid Build Coastguard Worker %tmp147 = load i8*, i8** %tmp146 ; <i8*> [#uses=1] 194*9880d681SAndroid Build Coastguard Worker %tmp147148 = bitcast i8* %tmp147 to %struct._typeobject* ; <%struct._typeobject*> [#uses=2] 195*9880d681SAndroid Build Coastguard Worker %tmp149 = getelementptr %struct._typeobject, %struct._typeobject* %tmp147148, i32 0, i32 38 ; <%struct.PyObject* (%struct._typeobject*, i64)**> [#uses=1] 196*9880d681SAndroid Build Coastguard Worker %tmp150 = load %struct.PyObject* (%struct._typeobject*, i64)*, %struct.PyObject* (%struct._typeobject*, i64)** %tmp149 ; <%struct.PyObject* (%struct._typeobject*, i64)*> [#uses=1] 197*9880d681SAndroid Build Coastguard Worker %tmp155 = call %struct.PyObject* %tmp150( %struct._typeobject* %tmp147148, i64 0 ) ; <%struct.PyObject*> [#uses=3] 198*9880d681SAndroid Build Coastguard Worker %tmp157 = icmp eq %struct.PyObject* %tmp155, null ; <i1> [#uses=1] 199*9880d681SAndroid Build Coastguard Worker br i1 %tmp157, label %cond_true160, label %cond_next182 200*9880d681SAndroid Build Coastguard Worker 201*9880d681SAndroid Build Coastguard Workercond_true160: ; preds = %cond_next135 202*9880d681SAndroid Build Coastguard Worker %tmp162 = getelementptr %struct.PyObject, %struct.PyObject* %tmp90, i32 0, i32 0 ; <i64*> [#uses=2] 203*9880d681SAndroid Build Coastguard Worker %tmp163 = load i64, i64* %tmp162 ; <i64> [#uses=1] 204*9880d681SAndroid Build Coastguard Worker %tmp164 = add i64 %tmp163, -1 ; <i64> [#uses=2] 205*9880d681SAndroid Build Coastguard Worker store i64 %tmp164, i64* %tmp162 206*9880d681SAndroid Build Coastguard Worker %tmp170 = icmp eq i64 %tmp164, 0 ; <i1> [#uses=1] 207*9880d681SAndroid Build Coastguard Worker br i1 %tmp170, label %cond_true173, label %UnifiedReturnBlock 208*9880d681SAndroid Build Coastguard Worker 209*9880d681SAndroid Build Coastguard Workercond_true173: ; preds = %cond_true160 210*9880d681SAndroid Build Coastguard Worker %tmp175 = getelementptr %struct.PyObject, %struct.PyObject* %tmp90, i32 0, i32 1 ; <%struct._typeobject**> [#uses=1] 211*9880d681SAndroid Build Coastguard Worker %tmp176 = load %struct._typeobject*, %struct._typeobject** %tmp175 ; <%struct._typeobject*> [#uses=1] 212*9880d681SAndroid Build Coastguard Worker %tmp177 = getelementptr %struct._typeobject, %struct._typeobject* %tmp176, i32 0, i32 6 ; <void (%struct.PyObject*)**> [#uses=1] 213*9880d681SAndroid Build Coastguard Worker %tmp178 = load void (%struct.PyObject*)*, void (%struct.PyObject*)** %tmp177 ; <void (%struct.PyObject*)*> [#uses=1] 214*9880d681SAndroid Build Coastguard Worker call void %tmp178( %struct.PyObject* %tmp90 ) 215*9880d681SAndroid Build Coastguard Worker ret %struct.PyObject* null 216*9880d681SAndroid Build Coastguard Worker 217*9880d681SAndroid Build Coastguard Workercond_next182: ; preds = %cond_next135 218*9880d681SAndroid Build Coastguard Worker %tmp183184 = bitcast %struct.PyObject* %tmp155 to %struct.PyBoolScalarObject* ; <%struct.PyBoolScalarObject*> [#uses=1] 219*9880d681SAndroid Build Coastguard Worker %tmp186 = getelementptr %struct.PyBoolScalarObject, %struct.PyBoolScalarObject* %tmp183184, i32 0, i32 2 ; <i8*> [#uses=1] 220*9880d681SAndroid Build Coastguard Worker store i8 %out2.0, i8* %tmp186 221*9880d681SAndroid Build Coastguard Worker %tmp190 = getelementptr %struct.PyTupleObject, %struct.PyTupleObject* %tmp140141, i32 0, i32 3, i64 1 ; <%struct.PyObject**> [#uses=1] 222*9880d681SAndroid Build Coastguard Worker store %struct.PyObject* %tmp155, %struct.PyObject** %tmp190 223*9880d681SAndroid Build Coastguard Worker ret %struct.PyObject* %tmp90 224*9880d681SAndroid Build Coastguard Worker 225*9880d681SAndroid Build Coastguard WorkerUnifiedReturnBlock: ; preds = %cond_true160, %cond_true113, %cond_next89, %cond_next73, %cond_true61, %bb17 226*9880d681SAndroid Build Coastguard Worker ret %struct.PyObject* null 227*9880d681SAndroid Build Coastguard Worker} 228*9880d681SAndroid Build Coastguard Worker 229*9880d681SAndroid Build Coastguard Workerdeclare i32 @feraiseexcept(i32) 230*9880d681SAndroid Build Coastguard Worker 231*9880d681SAndroid Build Coastguard Workerdeclare fastcc i32 @_ubyte_convert_to_ctype(%struct.PyObject*, i8*) 232*9880d681SAndroid Build Coastguard Worker 233*9880d681SAndroid Build Coastguard Workerdeclare %struct.PyObject* @PyErr_Occurred() 234*9880d681SAndroid Build Coastguard Worker 235*9880d681SAndroid Build Coastguard Workerdeclare %struct.PyObject* @PyTuple_New(i64) 236