1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mips < %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mips -mattr=+msa,+fp64 < %s 3*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel < %s 4*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel -mattr=+msa,+fp64 < %s 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; This test originally failed to select instructions for extract_vector_elt for 7*9880d681SAndroid Build Coastguard Worker; v2f64 on MSA. 8*9880d681SAndroid Build Coastguard Worker; It should at least successfully build. 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workerdefine void @autogen_SD997348632(i8*, i32*, i64*, i32, i64, i8) { 11*9880d681SAndroid Build Coastguard WorkerBB: 12*9880d681SAndroid Build Coastguard Worker %A4 = alloca <2 x i32> 13*9880d681SAndroid Build Coastguard Worker %A3 = alloca <16 x i16> 14*9880d681SAndroid Build Coastguard Worker %A2 = alloca <4 x i1> 15*9880d681SAndroid Build Coastguard Worker %A1 = alloca <4 x i16> 16*9880d681SAndroid Build Coastguard Worker %A = alloca <2 x i32> 17*9880d681SAndroid Build Coastguard Worker %L = load i8, i8* %0 18*9880d681SAndroid Build Coastguard Worker store i8 %L, i8* %0 19*9880d681SAndroid Build Coastguard Worker %E = extractelement <4 x i32> zeroinitializer, i32 0 20*9880d681SAndroid Build Coastguard Worker %Shuff = shufflevector <4 x i64> zeroinitializer, <4 x i64> zeroinitializer, <4 x i32> <i32 undef, i32 1, i32 3, i32 5> 21*9880d681SAndroid Build Coastguard Worker %I = insertelement <2 x i1> zeroinitializer, i1 false, i32 1 22*9880d681SAndroid Build Coastguard Worker %FC = sitofp <4 x i32> zeroinitializer to <4 x double> 23*9880d681SAndroid Build Coastguard Worker %Sl = select i1 false, <4 x i64> %Shuff, <4 x i64> %Shuff 24*9880d681SAndroid Build Coastguard Worker %L5 = load i8, i8* %0 25*9880d681SAndroid Build Coastguard Worker store i8 %5, i8* %0 26*9880d681SAndroid Build Coastguard Worker %E6 = extractelement <1 x i16> zeroinitializer, i32 0 27*9880d681SAndroid Build Coastguard Worker %Shuff7 = shufflevector <2 x i1> %I, <2 x i1> %I, <2 x i32> <i32 1, i32 undef> 28*9880d681SAndroid Build Coastguard Worker %I8 = insertelement <1 x i16> zeroinitializer, i16 0, i32 0 29*9880d681SAndroid Build Coastguard Worker %B = xor i32 376034, %3 30*9880d681SAndroid Build Coastguard Worker %FC9 = fptoui float 0x406DB70180000000 to i64 31*9880d681SAndroid Build Coastguard Worker %Sl10 = select i1 false, <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1> 32*9880d681SAndroid Build Coastguard Worker %Cmp = icmp ult <4 x i64> zeroinitializer, zeroinitializer 33*9880d681SAndroid Build Coastguard Worker %L11 = load i8, i8* %0 34*9880d681SAndroid Build Coastguard Worker store i8 %L, i8* %0 35*9880d681SAndroid Build Coastguard Worker %E12 = extractelement <4 x i64> zeroinitializer, i32 2 36*9880d681SAndroid Build Coastguard Worker %Shuff13 = shufflevector <4 x i32> zeroinitializer, <4 x i32> zeroinitializer, <4 x i32> <i32 5, i32 7, i32 undef, i32 3> 37*9880d681SAndroid Build Coastguard Worker %I14 = insertelement <8 x i32> zeroinitializer, i32 -1, i32 7 38*9880d681SAndroid Build Coastguard Worker %B15 = fdiv <4 x double> %FC, %FC 39*9880d681SAndroid Build Coastguard Worker %Tr = trunc i32 376034 to i16 40*9880d681SAndroid Build Coastguard Worker %Sl16 = select i1 false, <8 x i32> %Sl10, <8 x i32> zeroinitializer 41*9880d681SAndroid Build Coastguard Worker %Cmp17 = icmp uge i32 233658, %E 42*9880d681SAndroid Build Coastguard Worker br label %CF 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard WorkerCF: ; preds = %CF, %CF79, %CF84, %BB 45*9880d681SAndroid Build Coastguard Worker %L18 = load i8, i8* %0 46*9880d681SAndroid Build Coastguard Worker store i8 %L, i8* %0 47*9880d681SAndroid Build Coastguard Worker %E19 = extractelement <4 x i64> %Sl, i32 3 48*9880d681SAndroid Build Coastguard Worker %Shuff20 = shufflevector <2 x i1> %Shuff7, <2 x i1> %I, <2 x i32> <i32 2, i32 0> 49*9880d681SAndroid Build Coastguard Worker %I21 = insertelement <4 x i64> zeroinitializer, i64 %FC9, i32 0 50*9880d681SAndroid Build Coastguard Worker %B22 = xor <8 x i32> %I14, %I14 51*9880d681SAndroid Build Coastguard Worker %Tr23 = trunc i16 0 to i8 52*9880d681SAndroid Build Coastguard Worker %Sl24 = select i1 false, <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, <8 x i32> zeroinitializer 53*9880d681SAndroid Build Coastguard Worker %Cmp25 = icmp eq i1 false, false 54*9880d681SAndroid Build Coastguard Worker br i1 %Cmp25, label %CF, label %CF79 55*9880d681SAndroid Build Coastguard Worker 56*9880d681SAndroid Build Coastguard WorkerCF79: ; preds = %CF 57*9880d681SAndroid Build Coastguard Worker %L26 = load i8, i8* %0 58*9880d681SAndroid Build Coastguard Worker store i8 %L26, i8* %0 59*9880d681SAndroid Build Coastguard Worker %E27 = extractelement <1 x i16> zeroinitializer, i32 0 60*9880d681SAndroid Build Coastguard Worker %Shuff28 = shufflevector <16 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, <16 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, <16 x i32> <i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31, i32 1, i32 3, i32 5, i32 7, i32 9, i32 11> 61*9880d681SAndroid Build Coastguard Worker %I29 = insertelement <16 x i32> %Shuff28, i32 %B, i32 15 62*9880d681SAndroid Build Coastguard Worker %B30 = fdiv float 0.000000e+00, -6.749110e+06 63*9880d681SAndroid Build Coastguard Worker %Sl31 = select i1 false, i32 %3, i32 %3 64*9880d681SAndroid Build Coastguard Worker %Cmp32 = fcmp uno float 0.000000e+00, 0x406DB70180000000 65*9880d681SAndroid Build Coastguard Worker br i1 %Cmp32, label %CF, label %CF78 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard WorkerCF78: ; preds = %CF78, %CF79 68*9880d681SAndroid Build Coastguard Worker %L33 = load i8, i8* %0 69*9880d681SAndroid Build Coastguard Worker store i8 %L, i8* %0 70*9880d681SAndroid Build Coastguard Worker %E34 = extractelement <16 x i32> %Shuff28, i32 1 71*9880d681SAndroid Build Coastguard Worker %Shuff35 = shufflevector <4 x i64> zeroinitializer, <4 x i64> %I21, <4 x i32> <i32 undef, i32 6, i32 0, i32 2> 72*9880d681SAndroid Build Coastguard Worker %I36 = insertelement <4 x double> %FC, double 0xA4A57F449CA36CC2, i32 2 73*9880d681SAndroid Build Coastguard Worker %Se = sext <4 x i1> %Cmp to <4 x i32> 74*9880d681SAndroid Build Coastguard Worker %Sl37 = select i1 %Cmp17, i32 0, i32 0 75*9880d681SAndroid Build Coastguard Worker %Cmp38 = icmp ne i32 440284, 376034 76*9880d681SAndroid Build Coastguard Worker br i1 %Cmp38, label %CF78, label %CF80 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard WorkerCF80: ; preds = %CF80, %CF82, %CF78 79*9880d681SAndroid Build Coastguard Worker %L39 = load i8, i8* %0 80*9880d681SAndroid Build Coastguard Worker store i8 %L, i8* %0 81*9880d681SAndroid Build Coastguard Worker %E40 = extractelement <2 x i1> %Shuff20, i32 1 82*9880d681SAndroid Build Coastguard Worker br i1 %E40, label %CF80, label %CF82 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard WorkerCF82: ; preds = %CF80 85*9880d681SAndroid Build Coastguard Worker %Shuff41 = shufflevector <2 x i1> zeroinitializer, <2 x i1> %Shuff20, <2 x i32> <i32 2, i32 0> 86*9880d681SAndroid Build Coastguard Worker %I42 = insertelement <2 x i1> %Shuff41, i1 false, i32 0 87*9880d681SAndroid Build Coastguard Worker %B43 = sub i32 %E, 0 88*9880d681SAndroid Build Coastguard Worker %Sl44 = select i1 %Cmp32, <16 x i32> %Shuff28, <16 x i32> %Shuff28 89*9880d681SAndroid Build Coastguard Worker %Cmp45 = icmp sgt <4 x i64> zeroinitializer, %I21 90*9880d681SAndroid Build Coastguard Worker %L46 = load i8, i8* %0 91*9880d681SAndroid Build Coastguard Worker store i8 %L11, i8* %0 92*9880d681SAndroid Build Coastguard Worker %E47 = extractelement <8 x i32> %Sl16, i32 4 93*9880d681SAndroid Build Coastguard Worker %Shuff48 = shufflevector <2 x i1> zeroinitializer, <2 x i1> %Shuff7, <2 x i32> <i32 undef, i32 1> 94*9880d681SAndroid Build Coastguard Worker %I49 = insertelement <2 x i1> %Shuff48, i1 %Cmp17, i32 1 95*9880d681SAndroid Build Coastguard Worker %B50 = and <8 x i32> %I14, %Sl10 96*9880d681SAndroid Build Coastguard Worker %FC51 = fptoui float -6.749110e+06 to i1 97*9880d681SAndroid Build Coastguard Worker br i1 %FC51, label %CF80, label %CF81 98*9880d681SAndroid Build Coastguard Worker 99*9880d681SAndroid Build Coastguard WorkerCF81: ; preds = %CF81, %CF82 100*9880d681SAndroid Build Coastguard Worker %Sl52 = select i1 false, float -6.749110e+06, float 0x406DB70180000000 101*9880d681SAndroid Build Coastguard Worker %Cmp53 = icmp uge <2 x i32> <i32 -1, i32 -1>, <i32 -1, i32 -1> 102*9880d681SAndroid Build Coastguard Worker %L54 = load i8, i8* %0 103*9880d681SAndroid Build Coastguard Worker store i8 %L5, i8* %0 104*9880d681SAndroid Build Coastguard Worker %E55 = extractelement <8 x i32> zeroinitializer, i32 7 105*9880d681SAndroid Build Coastguard Worker %Shuff56 = shufflevector <4 x i64> zeroinitializer, <4 x i64> zeroinitializer, <4 x i32> <i32 undef, i32 4, i32 6, i32 0> 106*9880d681SAndroid Build Coastguard Worker %I57 = insertelement <2 x i1> %Shuff7, i1 false, i32 0 107*9880d681SAndroid Build Coastguard Worker %B58 = fmul <4 x double> %FC, %FC 108*9880d681SAndroid Build Coastguard Worker %FC59 = fptoui <4 x double> %I36 to <4 x i16> 109*9880d681SAndroid Build Coastguard Worker %Sl60 = select i1 %Cmp17, <2 x i1> %I, <2 x i1> %I57 110*9880d681SAndroid Build Coastguard Worker %Cmp61 = icmp ule <8 x i32> %B50, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1> 111*9880d681SAndroid Build Coastguard Worker %L62 = load i8, i8* %0 112*9880d681SAndroid Build Coastguard Worker store i8 %L33, i8* %0 113*9880d681SAndroid Build Coastguard Worker %E63 = extractelement <4 x i64> %Shuff, i32 2 114*9880d681SAndroid Build Coastguard Worker %Shuff64 = shufflevector <4 x i64> %Shuff56, <4 x i64> %Shuff56, <4 x i32> <i32 5, i32 7, i32 1, i32 undef> 115*9880d681SAndroid Build Coastguard Worker %I65 = insertelement <2 x i1> zeroinitializer, i1 false, i32 1 116*9880d681SAndroid Build Coastguard Worker %B66 = sdiv i32 %B, %E55 117*9880d681SAndroid Build Coastguard Worker %Tr67 = trunc i8 %L54 to i1 118*9880d681SAndroid Build Coastguard Worker br i1 %Tr67, label %CF81, label %CF83 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard WorkerCF83: ; preds = %CF83, %CF81 121*9880d681SAndroid Build Coastguard Worker %Sl68 = select i1 %Cmp17, i1 %Cmp25, i1 %Tr67 122*9880d681SAndroid Build Coastguard Worker br i1 %Sl68, label %CF83, label %CF84 123*9880d681SAndroid Build Coastguard Worker 124*9880d681SAndroid Build Coastguard WorkerCF84: ; preds = %CF83 125*9880d681SAndroid Build Coastguard Worker %Cmp69 = icmp uge i32 %E, %E34 126*9880d681SAndroid Build Coastguard Worker br i1 %Cmp69, label %CF, label %CF77 127*9880d681SAndroid Build Coastguard Worker 128*9880d681SAndroid Build Coastguard WorkerCF77: ; preds = %CF84 129*9880d681SAndroid Build Coastguard Worker %L70 = load i8, i8* %0 130*9880d681SAndroid Build Coastguard Worker store i8 %L, i8* %0 131*9880d681SAndroid Build Coastguard Worker %E71 = extractelement <4 x i64> %Shuff, i32 0 132*9880d681SAndroid Build Coastguard Worker %Shuff72 = shufflevector <2 x i1> zeroinitializer, <2 x i1> %I, <2 x i32> <i32 3, i32 1> 133*9880d681SAndroid Build Coastguard Worker %I73 = insertelement <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, i32 %B66, i32 1 134*9880d681SAndroid Build Coastguard Worker %FC74 = uitofp i1 %Cmp32 to double 135*9880d681SAndroid Build Coastguard Worker %Sl75 = select i1 %FC51, i16 9704, i16 0 136*9880d681SAndroid Build Coastguard Worker %Cmp76 = icmp ugt <1 x i16> %I8, %I8 137*9880d681SAndroid Build Coastguard Worker store i8 %L39, i8* %0 138*9880d681SAndroid Build Coastguard Worker store i8 %5, i8* %0 139*9880d681SAndroid Build Coastguard Worker store i8 %Tr23, i8* %0 140*9880d681SAndroid Build Coastguard Worker store i8 %L, i8* %0 141*9880d681SAndroid Build Coastguard Worker store i8 %5, i8* %0 142*9880d681SAndroid Build Coastguard Worker ret void 143*9880d681SAndroid Build Coastguard Worker} 144