1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=hexagon -mcpu=hexagonv5 < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; Check that store is post-incremented. 4*9880d681SAndroid Build Coastguard Worker; CHECK: r{{[0-9]+:[0-9]+}} = vasrw(r{{[0-9]+:[0-9]+}}, r{{[0-9]+}}) 5*9880d681SAndroid Build Coastguard Worker; CHECK: r{{[0-9]+:[0-9]+}} = vaslw(r{{[0-9]+:[0-9]+}}, r{{[0-9]+}}) 6*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:32:32:32-i64:64:64-i32:32:32-i16:16:16-i1:32:32-f64:64:64-f32:32:32-v64:64:64-v32:32:32-a0:0-n16:32" 7*9880d681SAndroid Build Coastguard Workertarget triple = "hexagon" 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workerdefine void @foo(i32* nocapture %buf, i32* nocapture %dest, i32 %offset, i32 %oddBlock, i32 %gb) #0 { 10*9880d681SAndroid Build Coastguard Workerentry: 11*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %buf, align 4, !tbaa !0 12*9880d681SAndroid Build Coastguard Worker %shr = ashr i32 %0, %gb 13*9880d681SAndroid Build Coastguard Worker store i32 %shr, i32* %buf, align 4, !tbaa !0 14*9880d681SAndroid Build Coastguard Worker %not.tobool = icmp eq i32 %oddBlock, 0 15*9880d681SAndroid Build Coastguard Worker %1 = sub i32 %offset, %oddBlock 16*9880d681SAndroid Build Coastguard Worker %2 = zext i1 %not.tobool to i32 17*9880d681SAndroid Build Coastguard Worker %3 = and i32 %1, 7 18*9880d681SAndroid Build Coastguard Worker %4 = add i32 %2, %3 19*9880d681SAndroid Build Coastguard Worker %5 = add i32 %4, 8 20*9880d681SAndroid Build Coastguard Worker %p_sub8 = sub nsw i32 31, %gb 21*9880d681SAndroid Build Coastguard Worker %6 = insertelement <2 x i32> undef, i32 %p_sub8, i32 0 22*9880d681SAndroid Build Coastguard Worker %7 = insertelement <2 x i32> %6, i32 %p_sub8, i32 1 23*9880d681SAndroid Build Coastguard Worker %8 = bitcast <2 x i32> %7 to i64 24*9880d681SAndroid Build Coastguard Worker %9 = tail call i64 @llvm.hexagon.S2.asl.i.vw(i64 %8, i32 1) 25*9880d681SAndroid Build Coastguard Worker %10 = bitcast i64 %9 to <2 x i32> 26*9880d681SAndroid Build Coastguard Worker %11 = tail call i64 @llvm.hexagon.A2.combinew(i32 -1, i32 -1) 27*9880d681SAndroid Build Coastguard Worker %12 = bitcast i64 %11 to <2 x i32> 28*9880d681SAndroid Build Coastguard Worker %sub12p_vec = add <2 x i32> %10, %12 29*9880d681SAndroid Build Coastguard Worker %p_22 = add i32 %4, 64 30*9880d681SAndroid Build Coastguard Worker %p_d.018 = getelementptr i32, i32* %dest, i32 %4 31*9880d681SAndroid Build Coastguard Worker %p_d.01823 = getelementptr i32, i32* %dest, i32 %p_22 32*9880d681SAndroid Build Coastguard Worker %p_25 = add i32 %4, 72 33*9880d681SAndroid Build Coastguard Worker %p_arrayidx14 = getelementptr i32, i32* %dest, i32 %5 34*9880d681SAndroid Build Coastguard Worker %p_arrayidx1426 = getelementptr i32, i32* %dest, i32 %p_25 35*9880d681SAndroid Build Coastguard Worker %_p_scalar_ = load i32, i32* %p_d.018, align 4 36*9880d681SAndroid Build Coastguard Worker %_p_vec_ = insertelement <2 x i32> undef, i32 %_p_scalar_, i32 0 37*9880d681SAndroid Build Coastguard Worker %_p_scalar_27 = load i32, i32* %p_d.01823, align 4 38*9880d681SAndroid Build Coastguard Worker %_p_vec_28 = insertelement <2 x i32> %_p_vec_, i32 %_p_scalar_27, i32 1 39*9880d681SAndroid Build Coastguard Worker %13 = bitcast <2 x i32> %_p_vec_28 to i64 40*9880d681SAndroid Build Coastguard Worker %14 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %13, i32 31) 41*9880d681SAndroid Build Coastguard Worker %15 = bitcast i64 %14 to <2 x i32> 42*9880d681SAndroid Build Coastguard Worker %shr9p_vec = ashr <2 x i32> %_p_vec_28, %7 43*9880d681SAndroid Build Coastguard Worker %xorp_vec = xor <2 x i32> %15, %sub12p_vec 44*9880d681SAndroid Build Coastguard Worker %16 = bitcast <2 x i32> %shr9p_vec to i64 45*9880d681SAndroid Build Coastguard Worker %17 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %14, i64 %16) 46*9880d681SAndroid Build Coastguard Worker %18 = bitcast <2 x i32> %xorp_vec to i64 47*9880d681SAndroid Build Coastguard Worker %19 = tail call i64 @llvm.hexagon.C2.vmux(i32 %17, i64 %13, i64 %18) 48*9880d681SAndroid Build Coastguard Worker %20 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %19, i32 %gb) 49*9880d681SAndroid Build Coastguard Worker %21 = bitcast i64 %20 to <2 x i32> 50*9880d681SAndroid Build Coastguard Worker %22 = extractelement <2 x i32> %21, i32 0 51*9880d681SAndroid Build Coastguard Worker store i32 %22, i32* %p_arrayidx14, align 4 52*9880d681SAndroid Build Coastguard Worker %23 = extractelement <2 x i32> %21, i32 1 53*9880d681SAndroid Build Coastguard Worker store i32 %23, i32* %p_arrayidx1426, align 4 54*9880d681SAndroid Build Coastguard Worker store i32 %22, i32* %p_d.018, align 4 55*9880d681SAndroid Build Coastguard Worker store i32 %23, i32* %p_d.01823, align 4 56*9880d681SAndroid Build Coastguard Worker %p_21.1 = add i32 %4, 128 57*9880d681SAndroid Build Coastguard Worker %p_22.1 = add i32 %4, 192 58*9880d681SAndroid Build Coastguard Worker %p_d.018.1 = getelementptr i32, i32* %dest, i32 %p_21.1 59*9880d681SAndroid Build Coastguard Worker %p_d.01823.1 = getelementptr i32, i32* %dest, i32 %p_22.1 60*9880d681SAndroid Build Coastguard Worker %p_24.1 = add i32 %4, 136 61*9880d681SAndroid Build Coastguard Worker %p_25.1 = add i32 %4, 200 62*9880d681SAndroid Build Coastguard Worker %p_arrayidx14.1 = getelementptr i32, i32* %dest, i32 %p_24.1 63*9880d681SAndroid Build Coastguard Worker %p_arrayidx1426.1 = getelementptr i32, i32* %dest, i32 %p_25.1 64*9880d681SAndroid Build Coastguard Worker %_p_scalar_.1 = load i32, i32* %p_d.018.1, align 4 65*9880d681SAndroid Build Coastguard Worker %_p_vec_.1 = insertelement <2 x i32> undef, i32 %_p_scalar_.1, i32 0 66*9880d681SAndroid Build Coastguard Worker %_p_scalar_27.1 = load i32, i32* %p_d.01823.1, align 4 67*9880d681SAndroid Build Coastguard Worker %_p_vec_28.1 = insertelement <2 x i32> %_p_vec_.1, i32 %_p_scalar_27.1, i32 1 68*9880d681SAndroid Build Coastguard Worker %24 = bitcast <2 x i32> %_p_vec_28.1 to i64 69*9880d681SAndroid Build Coastguard Worker %25 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %24, i32 31) 70*9880d681SAndroid Build Coastguard Worker %26 = bitcast i64 %25 to <2 x i32> 71*9880d681SAndroid Build Coastguard Worker %shr9p_vec.1 = ashr <2 x i32> %_p_vec_28.1, %7 72*9880d681SAndroid Build Coastguard Worker %xorp_vec.1 = xor <2 x i32> %26, %sub12p_vec 73*9880d681SAndroid Build Coastguard Worker %27 = bitcast <2 x i32> %shr9p_vec.1 to i64 74*9880d681SAndroid Build Coastguard Worker %28 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %25, i64 %27) 75*9880d681SAndroid Build Coastguard Worker %29 = bitcast <2 x i32> %xorp_vec.1 to i64 76*9880d681SAndroid Build Coastguard Worker %30 = tail call i64 @llvm.hexagon.C2.vmux(i32 %28, i64 %24, i64 %29) 77*9880d681SAndroid Build Coastguard Worker %31 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %30, i32 %gb) 78*9880d681SAndroid Build Coastguard Worker %32 = bitcast i64 %31 to <2 x i32> 79*9880d681SAndroid Build Coastguard Worker %33 = extractelement <2 x i32> %32, i32 0 80*9880d681SAndroid Build Coastguard Worker store i32 %33, i32* %p_arrayidx14.1, align 4 81*9880d681SAndroid Build Coastguard Worker %34 = extractelement <2 x i32> %32, i32 1 82*9880d681SAndroid Build Coastguard Worker store i32 %34, i32* %p_arrayidx1426.1, align 4 83*9880d681SAndroid Build Coastguard Worker store i32 %33, i32* %p_d.018.1, align 4 84*9880d681SAndroid Build Coastguard Worker store i32 %34, i32* %p_d.01823.1, align 4 85*9880d681SAndroid Build Coastguard Worker %p_21.2 = add i32 %4, 256 86*9880d681SAndroid Build Coastguard Worker %p_22.2 = add i32 %4, 320 87*9880d681SAndroid Build Coastguard Worker %p_d.018.2 = getelementptr i32, i32* %dest, i32 %p_21.2 88*9880d681SAndroid Build Coastguard Worker %p_d.01823.2 = getelementptr i32, i32* %dest, i32 %p_22.2 89*9880d681SAndroid Build Coastguard Worker %p_24.2 = add i32 %4, 264 90*9880d681SAndroid Build Coastguard Worker %p_25.2 = add i32 %4, 328 91*9880d681SAndroid Build Coastguard Worker %p_arrayidx14.2 = getelementptr i32, i32* %dest, i32 %p_24.2 92*9880d681SAndroid Build Coastguard Worker %p_arrayidx1426.2 = getelementptr i32, i32* %dest, i32 %p_25.2 93*9880d681SAndroid Build Coastguard Worker %_p_scalar_.2 = load i32, i32* %p_d.018.2, align 4 94*9880d681SAndroid Build Coastguard Worker %_p_vec_.2 = insertelement <2 x i32> undef, i32 %_p_scalar_.2, i32 0 95*9880d681SAndroid Build Coastguard Worker %_p_scalar_27.2 = load i32, i32* %p_d.01823.2, align 4 96*9880d681SAndroid Build Coastguard Worker %_p_vec_28.2 = insertelement <2 x i32> %_p_vec_.2, i32 %_p_scalar_27.2, i32 1 97*9880d681SAndroid Build Coastguard Worker %35 = bitcast <2 x i32> %_p_vec_28.2 to i64 98*9880d681SAndroid Build Coastguard Worker %36 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %35, i32 31) 99*9880d681SAndroid Build Coastguard Worker %37 = bitcast i64 %36 to <2 x i32> 100*9880d681SAndroid Build Coastguard Worker %shr9p_vec.2 = ashr <2 x i32> %_p_vec_28.2, %7 101*9880d681SAndroid Build Coastguard Worker %xorp_vec.2 = xor <2 x i32> %37, %sub12p_vec 102*9880d681SAndroid Build Coastguard Worker %38 = bitcast <2 x i32> %shr9p_vec.2 to i64 103*9880d681SAndroid Build Coastguard Worker %39 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %36, i64 %38) 104*9880d681SAndroid Build Coastguard Worker %40 = bitcast <2 x i32> %xorp_vec.2 to i64 105*9880d681SAndroid Build Coastguard Worker %41 = tail call i64 @llvm.hexagon.C2.vmux(i32 %39, i64 %35, i64 %40) 106*9880d681SAndroid Build Coastguard Worker %42 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %41, i32 %gb) 107*9880d681SAndroid Build Coastguard Worker %43 = bitcast i64 %42 to <2 x i32> 108*9880d681SAndroid Build Coastguard Worker %44 = extractelement <2 x i32> %43, i32 0 109*9880d681SAndroid Build Coastguard Worker store i32 %44, i32* %p_arrayidx14.2, align 4 110*9880d681SAndroid Build Coastguard Worker %45 = extractelement <2 x i32> %43, i32 1 111*9880d681SAndroid Build Coastguard Worker store i32 %45, i32* %p_arrayidx1426.2, align 4 112*9880d681SAndroid Build Coastguard Worker store i32 %44, i32* %p_d.018.2, align 4 113*9880d681SAndroid Build Coastguard Worker store i32 %45, i32* %p_d.01823.2, align 4 114*9880d681SAndroid Build Coastguard Worker %p_21.3 = add i32 %4, 384 115*9880d681SAndroid Build Coastguard Worker %p_22.3 = add i32 %4, 448 116*9880d681SAndroid Build Coastguard Worker %p_d.018.3 = getelementptr i32, i32* %dest, i32 %p_21.3 117*9880d681SAndroid Build Coastguard Worker %p_d.01823.3 = getelementptr i32, i32* %dest, i32 %p_22.3 118*9880d681SAndroid Build Coastguard Worker %p_24.3 = add i32 %4, 392 119*9880d681SAndroid Build Coastguard Worker %p_25.3 = add i32 %4, 456 120*9880d681SAndroid Build Coastguard Worker %p_arrayidx14.3 = getelementptr i32, i32* %dest, i32 %p_24.3 121*9880d681SAndroid Build Coastguard Worker %p_arrayidx1426.3 = getelementptr i32, i32* %dest, i32 %p_25.3 122*9880d681SAndroid Build Coastguard Worker %_p_scalar_.3 = load i32, i32* %p_d.018.3, align 4 123*9880d681SAndroid Build Coastguard Worker %_p_vec_.3 = insertelement <2 x i32> undef, i32 %_p_scalar_.3, i32 0 124*9880d681SAndroid Build Coastguard Worker %_p_scalar_27.3 = load i32, i32* %p_d.01823.3, align 4 125*9880d681SAndroid Build Coastguard Worker %_p_vec_28.3 = insertelement <2 x i32> %_p_vec_.3, i32 %_p_scalar_27.3, i32 1 126*9880d681SAndroid Build Coastguard Worker %46 = bitcast <2 x i32> %_p_vec_28.3 to i64 127*9880d681SAndroid Build Coastguard Worker %47 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %46, i32 31) 128*9880d681SAndroid Build Coastguard Worker %48 = bitcast i64 %47 to <2 x i32> 129*9880d681SAndroid Build Coastguard Worker %shr9p_vec.3 = ashr <2 x i32> %_p_vec_28.3, %7 130*9880d681SAndroid Build Coastguard Worker %xorp_vec.3 = xor <2 x i32> %48, %sub12p_vec 131*9880d681SAndroid Build Coastguard Worker %49 = bitcast <2 x i32> %shr9p_vec.3 to i64 132*9880d681SAndroid Build Coastguard Worker %50 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %47, i64 %49) 133*9880d681SAndroid Build Coastguard Worker %51 = bitcast <2 x i32> %xorp_vec.3 to i64 134*9880d681SAndroid Build Coastguard Worker %52 = tail call i64 @llvm.hexagon.C2.vmux(i32 %50, i64 %46, i64 %51) 135*9880d681SAndroid Build Coastguard Worker %53 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %52, i32 %gb) 136*9880d681SAndroid Build Coastguard Worker %54 = bitcast i64 %53 to <2 x i32> 137*9880d681SAndroid Build Coastguard Worker %55 = extractelement <2 x i32> %54, i32 0 138*9880d681SAndroid Build Coastguard Worker store i32 %55, i32* %p_arrayidx14.3, align 4 139*9880d681SAndroid Build Coastguard Worker %56 = extractelement <2 x i32> %54, i32 1 140*9880d681SAndroid Build Coastguard Worker store i32 %56, i32* %p_arrayidx1426.3, align 4 141*9880d681SAndroid Build Coastguard Worker store i32 %55, i32* %p_d.018.3, align 4 142*9880d681SAndroid Build Coastguard Worker store i32 %56, i32* %p_d.01823.3, align 4 143*9880d681SAndroid Build Coastguard Worker %p_21.4 = add i32 %4, 512 144*9880d681SAndroid Build Coastguard Worker %p_22.4 = add i32 %4, 576 145*9880d681SAndroid Build Coastguard Worker %p_d.018.4 = getelementptr i32, i32* %dest, i32 %p_21.4 146*9880d681SAndroid Build Coastguard Worker %p_d.01823.4 = getelementptr i32, i32* %dest, i32 %p_22.4 147*9880d681SAndroid Build Coastguard Worker %p_24.4 = add i32 %4, 520 148*9880d681SAndroid Build Coastguard Worker %p_25.4 = add i32 %4, 584 149*9880d681SAndroid Build Coastguard Worker %p_arrayidx14.4 = getelementptr i32, i32* %dest, i32 %p_24.4 150*9880d681SAndroid Build Coastguard Worker %p_arrayidx1426.4 = getelementptr i32, i32* %dest, i32 %p_25.4 151*9880d681SAndroid Build Coastguard Worker %_p_scalar_.4 = load i32, i32* %p_d.018.4, align 4 152*9880d681SAndroid Build Coastguard Worker %_p_vec_.4 = insertelement <2 x i32> undef, i32 %_p_scalar_.4, i32 0 153*9880d681SAndroid Build Coastguard Worker %_p_scalar_27.4 = load i32, i32* %p_d.01823.4, align 4 154*9880d681SAndroid Build Coastguard Worker %_p_vec_28.4 = insertelement <2 x i32> %_p_vec_.4, i32 %_p_scalar_27.4, i32 1 155*9880d681SAndroid Build Coastguard Worker %57 = bitcast <2 x i32> %_p_vec_28.4 to i64 156*9880d681SAndroid Build Coastguard Worker %58 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %57, i32 31) 157*9880d681SAndroid Build Coastguard Worker %59 = bitcast i64 %58 to <2 x i32> 158*9880d681SAndroid Build Coastguard Worker %shr9p_vec.4 = ashr <2 x i32> %_p_vec_28.4, %7 159*9880d681SAndroid Build Coastguard Worker %xorp_vec.4 = xor <2 x i32> %59, %sub12p_vec 160*9880d681SAndroid Build Coastguard Worker %60 = bitcast <2 x i32> %shr9p_vec.4 to i64 161*9880d681SAndroid Build Coastguard Worker %61 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %58, i64 %60) 162*9880d681SAndroid Build Coastguard Worker %62 = bitcast <2 x i32> %xorp_vec.4 to i64 163*9880d681SAndroid Build Coastguard Worker %63 = tail call i64 @llvm.hexagon.C2.vmux(i32 %61, i64 %57, i64 %62) 164*9880d681SAndroid Build Coastguard Worker %64 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %63, i32 %gb) 165*9880d681SAndroid Build Coastguard Worker %65 = bitcast i64 %64 to <2 x i32> 166*9880d681SAndroid Build Coastguard Worker %66 = extractelement <2 x i32> %65, i32 0 167*9880d681SAndroid Build Coastguard Worker store i32 %66, i32* %p_arrayidx14.4, align 4 168*9880d681SAndroid Build Coastguard Worker %67 = extractelement <2 x i32> %65, i32 1 169*9880d681SAndroid Build Coastguard Worker store i32 %67, i32* %p_arrayidx1426.4, align 4 170*9880d681SAndroid Build Coastguard Worker store i32 %66, i32* %p_d.018.4, align 4 171*9880d681SAndroid Build Coastguard Worker store i32 %67, i32* %p_d.01823.4, align 4 172*9880d681SAndroid Build Coastguard Worker %p_21.5 = add i32 %4, 640 173*9880d681SAndroid Build Coastguard Worker %p_22.5 = add i32 %4, 704 174*9880d681SAndroid Build Coastguard Worker %p_d.018.5 = getelementptr i32, i32* %dest, i32 %p_21.5 175*9880d681SAndroid Build Coastguard Worker %p_d.01823.5 = getelementptr i32, i32* %dest, i32 %p_22.5 176*9880d681SAndroid Build Coastguard Worker %p_24.5 = add i32 %4, 648 177*9880d681SAndroid Build Coastguard Worker %p_25.5 = add i32 %4, 712 178*9880d681SAndroid Build Coastguard Worker %p_arrayidx14.5 = getelementptr i32, i32* %dest, i32 %p_24.5 179*9880d681SAndroid Build Coastguard Worker %p_arrayidx1426.5 = getelementptr i32, i32* %dest, i32 %p_25.5 180*9880d681SAndroid Build Coastguard Worker %_p_scalar_.5 = load i32, i32* %p_d.018.5, align 4 181*9880d681SAndroid Build Coastguard Worker %_p_vec_.5 = insertelement <2 x i32> undef, i32 %_p_scalar_.5, i32 0 182*9880d681SAndroid Build Coastguard Worker %_p_scalar_27.5 = load i32, i32* %p_d.01823.5, align 4 183*9880d681SAndroid Build Coastguard Worker %_p_vec_28.5 = insertelement <2 x i32> %_p_vec_.5, i32 %_p_scalar_27.5, i32 1 184*9880d681SAndroid Build Coastguard Worker %68 = bitcast <2 x i32> %_p_vec_28.5 to i64 185*9880d681SAndroid Build Coastguard Worker %69 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %68, i32 31) 186*9880d681SAndroid Build Coastguard Worker %70 = bitcast i64 %69 to <2 x i32> 187*9880d681SAndroid Build Coastguard Worker %shr9p_vec.5 = ashr <2 x i32> %_p_vec_28.5, %7 188*9880d681SAndroid Build Coastguard Worker %xorp_vec.5 = xor <2 x i32> %70, %sub12p_vec 189*9880d681SAndroid Build Coastguard Worker %71 = bitcast <2 x i32> %shr9p_vec.5 to i64 190*9880d681SAndroid Build Coastguard Worker %72 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %69, i64 %71) 191*9880d681SAndroid Build Coastguard Worker %73 = bitcast <2 x i32> %xorp_vec.5 to i64 192*9880d681SAndroid Build Coastguard Worker %74 = tail call i64 @llvm.hexagon.C2.vmux(i32 %72, i64 %68, i64 %73) 193*9880d681SAndroid Build Coastguard Worker %75 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %74, i32 %gb) 194*9880d681SAndroid Build Coastguard Worker %76 = bitcast i64 %75 to <2 x i32> 195*9880d681SAndroid Build Coastguard Worker %77 = extractelement <2 x i32> %76, i32 0 196*9880d681SAndroid Build Coastguard Worker store i32 %77, i32* %p_arrayidx14.5, align 4 197*9880d681SAndroid Build Coastguard Worker %78 = extractelement <2 x i32> %76, i32 1 198*9880d681SAndroid Build Coastguard Worker store i32 %78, i32* %p_arrayidx1426.5, align 4 199*9880d681SAndroid Build Coastguard Worker store i32 %77, i32* %p_d.018.5, align 4 200*9880d681SAndroid Build Coastguard Worker store i32 %78, i32* %p_d.01823.5, align 4 201*9880d681SAndroid Build Coastguard Worker %p_21.6 = add i32 %4, 768 202*9880d681SAndroid Build Coastguard Worker %p_22.6 = add i32 %4, 832 203*9880d681SAndroid Build Coastguard Worker %p_d.018.6 = getelementptr i32, i32* %dest, i32 %p_21.6 204*9880d681SAndroid Build Coastguard Worker %p_d.01823.6 = getelementptr i32, i32* %dest, i32 %p_22.6 205*9880d681SAndroid Build Coastguard Worker %p_24.6 = add i32 %4, 776 206*9880d681SAndroid Build Coastguard Worker %p_25.6 = add i32 %4, 840 207*9880d681SAndroid Build Coastguard Worker %p_arrayidx14.6 = getelementptr i32, i32* %dest, i32 %p_24.6 208*9880d681SAndroid Build Coastguard Worker %p_arrayidx1426.6 = getelementptr i32, i32* %dest, i32 %p_25.6 209*9880d681SAndroid Build Coastguard Worker %_p_scalar_.6 = load i32, i32* %p_d.018.6, align 4 210*9880d681SAndroid Build Coastguard Worker %_p_vec_.6 = insertelement <2 x i32> undef, i32 %_p_scalar_.6, i32 0 211*9880d681SAndroid Build Coastguard Worker %_p_scalar_27.6 = load i32, i32* %p_d.01823.6, align 4 212*9880d681SAndroid Build Coastguard Worker %_p_vec_28.6 = insertelement <2 x i32> %_p_vec_.6, i32 %_p_scalar_27.6, i32 1 213*9880d681SAndroid Build Coastguard Worker %79 = bitcast <2 x i32> %_p_vec_28.6 to i64 214*9880d681SAndroid Build Coastguard Worker %80 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %79, i32 31) 215*9880d681SAndroid Build Coastguard Worker %81 = bitcast i64 %80 to <2 x i32> 216*9880d681SAndroid Build Coastguard Worker %shr9p_vec.6 = ashr <2 x i32> %_p_vec_28.6, %7 217*9880d681SAndroid Build Coastguard Worker %xorp_vec.6 = xor <2 x i32> %81, %sub12p_vec 218*9880d681SAndroid Build Coastguard Worker %82 = bitcast <2 x i32> %shr9p_vec.6 to i64 219*9880d681SAndroid Build Coastguard Worker %83 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %80, i64 %82) 220*9880d681SAndroid Build Coastguard Worker %84 = bitcast <2 x i32> %xorp_vec.6 to i64 221*9880d681SAndroid Build Coastguard Worker %85 = tail call i64 @llvm.hexagon.C2.vmux(i32 %83, i64 %79, i64 %84) 222*9880d681SAndroid Build Coastguard Worker %86 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %85, i32 %gb) 223*9880d681SAndroid Build Coastguard Worker %87 = bitcast i64 %86 to <2 x i32> 224*9880d681SAndroid Build Coastguard Worker %88 = extractelement <2 x i32> %87, i32 0 225*9880d681SAndroid Build Coastguard Worker store i32 %88, i32* %p_arrayidx14.6, align 4 226*9880d681SAndroid Build Coastguard Worker %89 = extractelement <2 x i32> %87, i32 1 227*9880d681SAndroid Build Coastguard Worker store i32 %89, i32* %p_arrayidx1426.6, align 4 228*9880d681SAndroid Build Coastguard Worker store i32 %88, i32* %p_d.018.6, align 4 229*9880d681SAndroid Build Coastguard Worker store i32 %89, i32* %p_d.01823.6, align 4 230*9880d681SAndroid Build Coastguard Worker %p_21.7 = add i32 %4, 896 231*9880d681SAndroid Build Coastguard Worker %p_22.7 = add i32 %4, 960 232*9880d681SAndroid Build Coastguard Worker %p_d.018.7 = getelementptr i32, i32* %dest, i32 %p_21.7 233*9880d681SAndroid Build Coastguard Worker %p_d.01823.7 = getelementptr i32, i32* %dest, i32 %p_22.7 234*9880d681SAndroid Build Coastguard Worker %p_24.7 = add i32 %4, 904 235*9880d681SAndroid Build Coastguard Worker %p_25.7 = add i32 %4, 968 236*9880d681SAndroid Build Coastguard Worker %p_arrayidx14.7 = getelementptr i32, i32* %dest, i32 %p_24.7 237*9880d681SAndroid Build Coastguard Worker %p_arrayidx1426.7 = getelementptr i32, i32* %dest, i32 %p_25.7 238*9880d681SAndroid Build Coastguard Worker %_p_scalar_.7 = load i32, i32* %p_d.018.7, align 4 239*9880d681SAndroid Build Coastguard Worker %_p_vec_.7 = insertelement <2 x i32> undef, i32 %_p_scalar_.7, i32 0 240*9880d681SAndroid Build Coastguard Worker %_p_scalar_27.7 = load i32, i32* %p_d.01823.7, align 4 241*9880d681SAndroid Build Coastguard Worker %_p_vec_28.7 = insertelement <2 x i32> %_p_vec_.7, i32 %_p_scalar_27.7, i32 1 242*9880d681SAndroid Build Coastguard Worker %90 = bitcast <2 x i32> %_p_vec_28.7 to i64 243*9880d681SAndroid Build Coastguard Worker %91 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %90, i32 31) 244*9880d681SAndroid Build Coastguard Worker %92 = bitcast i64 %91 to <2 x i32> 245*9880d681SAndroid Build Coastguard Worker %shr9p_vec.7 = ashr <2 x i32> %_p_vec_28.7, %7 246*9880d681SAndroid Build Coastguard Worker %xorp_vec.7 = xor <2 x i32> %92, %sub12p_vec 247*9880d681SAndroid Build Coastguard Worker %93 = bitcast <2 x i32> %shr9p_vec.7 to i64 248*9880d681SAndroid Build Coastguard Worker %94 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %91, i64 %93) 249*9880d681SAndroid Build Coastguard Worker %95 = bitcast <2 x i32> %xorp_vec.7 to i64 250*9880d681SAndroid Build Coastguard Worker %96 = tail call i64 @llvm.hexagon.C2.vmux(i32 %94, i64 %90, i64 %95) 251*9880d681SAndroid Build Coastguard Worker %97 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %96, i32 %gb) 252*9880d681SAndroid Build Coastguard Worker %98 = bitcast i64 %97 to <2 x i32> 253*9880d681SAndroid Build Coastguard Worker %99 = extractelement <2 x i32> %98, i32 0 254*9880d681SAndroid Build Coastguard Worker store i32 %99, i32* %p_arrayidx14.7, align 4 255*9880d681SAndroid Build Coastguard Worker %100 = extractelement <2 x i32> %98, i32 1 256*9880d681SAndroid Build Coastguard Worker store i32 %100, i32* %p_arrayidx1426.7, align 4 257*9880d681SAndroid Build Coastguard Worker store i32 %99, i32* %p_d.018.7, align 4 258*9880d681SAndroid Build Coastguard Worker store i32 %100, i32* %p_d.01823.7, align 4 259*9880d681SAndroid Build Coastguard Worker ret void 260*9880d681SAndroid Build Coastguard Worker} 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.hexagon.S2.asr.i.vw(i64, i32) #1 263*9880d681SAndroid Build Coastguard Worker 264*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.hexagon.S2.asl.i.vw(i64, i32) #1 265*9880d681SAndroid Build Coastguard Worker 266*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.hexagon.A2.combinew(i32, i32) #1 267*9880d681SAndroid Build Coastguard Worker 268*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.hexagon.A2.vcmpweq(i64, i64) #1 269*9880d681SAndroid Build Coastguard Worker 270*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.hexagon.C2.vmux(i32, i64, i64) #1 271*9880d681SAndroid Build Coastguard Worker 272*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.hexagon.S2.asl.r.vw(i64, i32) #1 273*9880d681SAndroid Build Coastguard Worker 274*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" } 275*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind readnone } 276*9880d681SAndroid Build Coastguard Worker 277*9880d681SAndroid Build Coastguard Worker!0 = !{!"int", !1} 278*9880d681SAndroid Build Coastguard Worker!1 = !{!"omnipotent char", !2} 279*9880d681SAndroid Build Coastguard Worker!2 = !{!"Simple C/C++ TBAA"} 280