1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=hexagon -O2 -mcpu=hexagonv60 < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; CHECK: vasr(v{{[0-9]+}}.h,v{{[0-9]+}}.h,r{{[0-7]+}}):sat 4*9880d681SAndroid Build Coastguard Worker 5*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-a:0-n16:32" 6*9880d681SAndroid Build Coastguard Workertarget triple = "hexagon-unknown--elf" 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker%struct.buffer_t = type { i64, i8*, [4 x i32], [4 x i32], [4 x i32], i32, i8, i8, [6 x i8] } 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker; Function Attrs: norecurse nounwind 11*9880d681SAndroid Build Coastguard Workerdefine i32 @__test_vasr(%struct.buffer_t* noalias nocapture %f.buffer, %struct.buffer_t* noalias nocapture %g.buffer, %struct.buffer_t* noalias nocapture %res.buffer) #0 { 12*9880d681SAndroid Build Coastguard Workerentry: 13*9880d681SAndroid Build Coastguard Worker %buf_host = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %f.buffer, i32 0, i32 1 14*9880d681SAndroid Build Coastguard Worker %f.host = load i8*, i8** %buf_host, align 4 15*9880d681SAndroid Build Coastguard Worker %buf_dev = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %f.buffer, i32 0, i32 0 16*9880d681SAndroid Build Coastguard Worker %f.dev = load i64, i64* %buf_dev, align 8 17*9880d681SAndroid Build Coastguard Worker %0 = icmp eq i8* %f.host, null 18*9880d681SAndroid Build Coastguard Worker %1 = icmp eq i64 %f.dev, 0 19*9880d681SAndroid Build Coastguard Worker %f.host_and_dev_are_null = and i1 %0, %1 20*9880d681SAndroid Build Coastguard Worker %buf_min = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %f.buffer, i32 0, i32 4, i32 0 21*9880d681SAndroid Build Coastguard Worker %f.min.0 = load i32, i32* %buf_min, align 4 22*9880d681SAndroid Build Coastguard Worker %buf_host10 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %g.buffer, i32 0, i32 1 23*9880d681SAndroid Build Coastguard Worker %g.host = load i8*, i8** %buf_host10, align 4 24*9880d681SAndroid Build Coastguard Worker %buf_dev11 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %g.buffer, i32 0, i32 0 25*9880d681SAndroid Build Coastguard Worker %g.dev = load i64, i64* %buf_dev11, align 8 26*9880d681SAndroid Build Coastguard Worker %2 = icmp eq i8* %g.host, null 27*9880d681SAndroid Build Coastguard Worker %3 = icmp eq i64 %g.dev, 0 28*9880d681SAndroid Build Coastguard Worker %g.host_and_dev_are_null = and i1 %2, %3 29*9880d681SAndroid Build Coastguard Worker %buf_min22 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %g.buffer, i32 0, i32 4, i32 0 30*9880d681SAndroid Build Coastguard Worker %g.min.0 = load i32, i32* %buf_min22, align 4 31*9880d681SAndroid Build Coastguard Worker %buf_host27 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %res.buffer, i32 0, i32 1 32*9880d681SAndroid Build Coastguard Worker %res.host = load i8*, i8** %buf_host27, align 4 33*9880d681SAndroid Build Coastguard Worker %buf_dev28 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %res.buffer, i32 0, i32 0 34*9880d681SAndroid Build Coastguard Worker %res.dev = load i64, i64* %buf_dev28, align 8 35*9880d681SAndroid Build Coastguard Worker %4 = icmp eq i8* %res.host, null 36*9880d681SAndroid Build Coastguard Worker %5 = icmp eq i64 %res.dev, 0 37*9880d681SAndroid Build Coastguard Worker %res.host_and_dev_are_null = and i1 %4, %5 38*9880d681SAndroid Build Coastguard Worker %buf_extent31 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %res.buffer, i32 0, i32 2, i32 0 39*9880d681SAndroid Build Coastguard Worker %res.extent.0 = load i32, i32* %buf_extent31, align 4 40*9880d681SAndroid Build Coastguard Worker %buf_min39 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %res.buffer, i32 0, i32 4, i32 0 41*9880d681SAndroid Build Coastguard Worker %res.min.0 = load i32, i32* %buf_min39, align 4 42*9880d681SAndroid Build Coastguard Worker %6 = add nsw i32 %res.extent.0, -1 43*9880d681SAndroid Build Coastguard Worker %7 = and i32 %6, -64 44*9880d681SAndroid Build Coastguard Worker %8 = add i32 %res.min.0, 63 45*9880d681SAndroid Build Coastguard Worker %9 = add i32 %8, %7 46*9880d681SAndroid Build Coastguard Worker %10 = add nsw i32 %res.min.0, %res.extent.0 47*9880d681SAndroid Build Coastguard Worker %11 = add nsw i32 %10, -1 48*9880d681SAndroid Build Coastguard Worker %12 = icmp slt i32 %9, %11 49*9880d681SAndroid Build Coastguard Worker %13 = select i1 %12, i32 %9, i32 %11 50*9880d681SAndroid Build Coastguard Worker %14 = add nsw i32 %10, -64 51*9880d681SAndroid Build Coastguard Worker %15 = icmp slt i32 %res.min.0, %14 52*9880d681SAndroid Build Coastguard Worker %16 = select i1 %15, i32 %res.min.0, i32 %14 53*9880d681SAndroid Build Coastguard Worker %f.extent.0.required.s = sub nsw i32 %13, %16 54*9880d681SAndroid Build Coastguard Worker br i1 %f.host_and_dev_are_null, label %true_bb, label %after_bb 55*9880d681SAndroid Build Coastguard Worker 56*9880d681SAndroid Build Coastguard Workertrue_bb: ; preds = %entry 57*9880d681SAndroid Build Coastguard Worker %buf_elem_size44 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %f.buffer, i32 0, i32 5 58*9880d681SAndroid Build Coastguard Worker store i32 1, i32* %buf_elem_size44, align 4 59*9880d681SAndroid Build Coastguard Worker store i32 %16, i32* %buf_min, align 4 60*9880d681SAndroid Build Coastguard Worker %17 = add nsw i32 %f.extent.0.required.s, 1 61*9880d681SAndroid Build Coastguard Worker %buf_extent46 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %f.buffer, i32 0, i32 2, i32 0 62*9880d681SAndroid Build Coastguard Worker store i32 %17, i32* %buf_extent46, align 4 63*9880d681SAndroid Build Coastguard Worker %buf_stride47 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %f.buffer, i32 0, i32 3, i32 0 64*9880d681SAndroid Build Coastguard Worker store i32 1, i32* %buf_stride47, align 4 65*9880d681SAndroid Build Coastguard Worker %buf_min48 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %f.buffer, i32 0, i32 4, i32 1 66*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_min48, align 4 67*9880d681SAndroid Build Coastguard Worker %buf_extent49 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %f.buffer, i32 0, i32 2, i32 1 68*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_extent49, align 4 69*9880d681SAndroid Build Coastguard Worker %buf_stride50 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %f.buffer, i32 0, i32 3, i32 1 70*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_stride50, align 4 71*9880d681SAndroid Build Coastguard Worker %buf_min51 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %f.buffer, i32 0, i32 4, i32 2 72*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_min51, align 4 73*9880d681SAndroid Build Coastguard Worker %buf_extent52 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %f.buffer, i32 0, i32 2, i32 2 74*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_extent52, align 4 75*9880d681SAndroid Build Coastguard Worker %buf_stride53 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %f.buffer, i32 0, i32 3, i32 2 76*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_stride53, align 4 77*9880d681SAndroid Build Coastguard Worker %buf_min54 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %f.buffer, i32 0, i32 4, i32 3 78*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_min54, align 4 79*9880d681SAndroid Build Coastguard Worker %buf_extent55 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %f.buffer, i32 0, i32 2, i32 3 80*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_extent55, align 4 81*9880d681SAndroid Build Coastguard Worker %buf_stride56 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %f.buffer, i32 0, i32 3, i32 3 82*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_stride56, align 4 83*9880d681SAndroid Build Coastguard Worker br label %after_bb 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Workerafter_bb: ; preds = %true_bb, %entry 86*9880d681SAndroid Build Coastguard Worker br i1 %g.host_and_dev_are_null, label %true_bb57, label %after_bb59 87*9880d681SAndroid Build Coastguard Worker 88*9880d681SAndroid Build Coastguard Workertrue_bb57: ; preds = %after_bb 89*9880d681SAndroid Build Coastguard Worker %buf_elem_size60 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %g.buffer, i32 0, i32 5 90*9880d681SAndroid Build Coastguard Worker store i32 1, i32* %buf_elem_size60, align 4 91*9880d681SAndroid Build Coastguard Worker store i32 %16, i32* %buf_min22, align 4 92*9880d681SAndroid Build Coastguard Worker %18 = add nsw i32 %f.extent.0.required.s, 1 93*9880d681SAndroid Build Coastguard Worker %buf_extent62 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %g.buffer, i32 0, i32 2, i32 0 94*9880d681SAndroid Build Coastguard Worker store i32 %18, i32* %buf_extent62, align 4 95*9880d681SAndroid Build Coastguard Worker %buf_stride63 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %g.buffer, i32 0, i32 3, i32 0 96*9880d681SAndroid Build Coastguard Worker store i32 1, i32* %buf_stride63, align 4 97*9880d681SAndroid Build Coastguard Worker %buf_min64 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %g.buffer, i32 0, i32 4, i32 1 98*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_min64, align 4 99*9880d681SAndroid Build Coastguard Worker %buf_extent65 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %g.buffer, i32 0, i32 2, i32 1 100*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_extent65, align 4 101*9880d681SAndroid Build Coastguard Worker %buf_stride66 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %g.buffer, i32 0, i32 3, i32 1 102*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_stride66, align 4 103*9880d681SAndroid Build Coastguard Worker %buf_min67 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %g.buffer, i32 0, i32 4, i32 2 104*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_min67, align 4 105*9880d681SAndroid Build Coastguard Worker %buf_extent68 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %g.buffer, i32 0, i32 2, i32 2 106*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_extent68, align 4 107*9880d681SAndroid Build Coastguard Worker %buf_stride69 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %g.buffer, i32 0, i32 3, i32 2 108*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_stride69, align 4 109*9880d681SAndroid Build Coastguard Worker %buf_min70 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %g.buffer, i32 0, i32 4, i32 3 110*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_min70, align 4 111*9880d681SAndroid Build Coastguard Worker %buf_extent71 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %g.buffer, i32 0, i32 2, i32 3 112*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_extent71, align 4 113*9880d681SAndroid Build Coastguard Worker %buf_stride72 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %g.buffer, i32 0, i32 3, i32 3 114*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_stride72, align 4 115*9880d681SAndroid Build Coastguard Worker br label %after_bb59 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Workerafter_bb59: ; preds = %true_bb57, %after_bb 118*9880d681SAndroid Build Coastguard Worker br i1 %res.host_and_dev_are_null, label %after_bb75.thread, label %after_bb75 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Workerafter_bb75.thread: ; preds = %after_bb59 121*9880d681SAndroid Build Coastguard Worker %buf_elem_size76 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %res.buffer, i32 0, i32 5 122*9880d681SAndroid Build Coastguard Worker store i32 1, i32* %buf_elem_size76, align 4 123*9880d681SAndroid Build Coastguard Worker store i32 %16, i32* %buf_min39, align 4 124*9880d681SAndroid Build Coastguard Worker %19 = add nsw i32 %f.extent.0.required.s, 1 125*9880d681SAndroid Build Coastguard Worker store i32 %19, i32* %buf_extent31, align 4 126*9880d681SAndroid Build Coastguard Worker %buf_stride79 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %res.buffer, i32 0, i32 3, i32 0 127*9880d681SAndroid Build Coastguard Worker store i32 1, i32* %buf_stride79, align 4 128*9880d681SAndroid Build Coastguard Worker %buf_min80 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %res.buffer, i32 0, i32 4, i32 1 129*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_min80, align 4 130*9880d681SAndroid Build Coastguard Worker %buf_extent81 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %res.buffer, i32 0, i32 2, i32 1 131*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_extent81, align 4 132*9880d681SAndroid Build Coastguard Worker %buf_stride82 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %res.buffer, i32 0, i32 3, i32 1 133*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_stride82, align 4 134*9880d681SAndroid Build Coastguard Worker %buf_min83 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %res.buffer, i32 0, i32 4, i32 2 135*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_min83, align 4 136*9880d681SAndroid Build Coastguard Worker %buf_extent84 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %res.buffer, i32 0, i32 2, i32 2 137*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_extent84, align 4 138*9880d681SAndroid Build Coastguard Worker %buf_stride85 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %res.buffer, i32 0, i32 3, i32 2 139*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_stride85, align 4 140*9880d681SAndroid Build Coastguard Worker %buf_min86 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %res.buffer, i32 0, i32 4, i32 3 141*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_min86, align 4 142*9880d681SAndroid Build Coastguard Worker %buf_extent87 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %res.buffer, i32 0, i32 2, i32 3 143*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_extent87, align 4 144*9880d681SAndroid Build Coastguard Worker %buf_stride88 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %res.buffer, i32 0, i32 3, i32 3 145*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %buf_stride88, align 4 146*9880d681SAndroid Build Coastguard Worker br label %destructor_block 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Workerafter_bb75: ; preds = %after_bb59 149*9880d681SAndroid Build Coastguard Worker %20 = or i1 %f.host_and_dev_are_null, %g.host_and_dev_are_null 150*9880d681SAndroid Build Coastguard Worker br i1 %20, label %destructor_block, label %"produce res" 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Worker"produce res": ; preds = %after_bb75 153*9880d681SAndroid Build Coastguard Worker %21 = ashr i32 %res.extent.0, 6 154*9880d681SAndroid Build Coastguard Worker %22 = icmp sgt i32 %21, 0 155*9880d681SAndroid Build Coastguard Worker br i1 %22, label %"for res.s0.x.x", label %"end for res.s0.x.x", !prof !4 156*9880d681SAndroid Build Coastguard Worker 157*9880d681SAndroid Build Coastguard Worker"for res.s0.x.x": ; preds = %"for res.s0.x.x", %"produce res" 158*9880d681SAndroid Build Coastguard Worker %res.s0.x.x = phi i32 [ %41, %"for res.s0.x.x" ], [ 0, %"produce res" ] 159*9880d681SAndroid Build Coastguard Worker %23 = shl nsw i32 %res.s0.x.x, 6 160*9880d681SAndroid Build Coastguard Worker %24 = add nsw i32 %23, %res.min.0 161*9880d681SAndroid Build Coastguard Worker %25 = sub nsw i32 %24, %f.min.0 162*9880d681SAndroid Build Coastguard Worker %26 = getelementptr inbounds i8, i8* %f.host, i32 %25 163*9880d681SAndroid Build Coastguard Worker %27 = bitcast i8* %26 to <16 x i32>* 164*9880d681SAndroid Build Coastguard Worker %28 = load <16 x i32>, <16 x i32>* %27, align 1, !tbaa !5 165*9880d681SAndroid Build Coastguard Worker %29 = tail call <32 x i32> @llvm.hexagon.V6.vzb(<16 x i32> %28) 166*9880d681SAndroid Build Coastguard Worker %30 = sub nsw i32 %24, %g.min.0 167*9880d681SAndroid Build Coastguard Worker %31 = getelementptr inbounds i8, i8* %g.host, i32 %30 168*9880d681SAndroid Build Coastguard Worker %32 = bitcast i8* %31 to <16 x i32>* 169*9880d681SAndroid Build Coastguard Worker %33 = load <16 x i32>, <16 x i32>* %32, align 1, !tbaa !8 170*9880d681SAndroid Build Coastguard Worker %34 = tail call <32 x i32> @llvm.hexagon.V6.vzb(<16 x i32> %33) 171*9880d681SAndroid Build Coastguard Worker %35 = tail call <32 x i32> @llvm.hexagon.V6.vaddh.dv(<32 x i32> %29, <32 x i32> %34) 172*9880d681SAndroid Build Coastguard Worker %36 = tail call <16 x i32> @llvm.hexagon.V6.hi(<32 x i32> %35) 173*9880d681SAndroid Build Coastguard Worker %37 = tail call <16 x i32> @llvm.hexagon.V6.lo(<32 x i32> %35) 174*9880d681SAndroid Build Coastguard Worker %38 = tail call <16 x i32> @llvm.hexagon.V6.vasrhubsat(<16 x i32> %36, <16 x i32> %37, i32 4) 175*9880d681SAndroid Build Coastguard Worker %39 = getelementptr inbounds i8, i8* %res.host, i32 %23 176*9880d681SAndroid Build Coastguard Worker %40 = bitcast i8* %39 to <16 x i32>* 177*9880d681SAndroid Build Coastguard Worker store <16 x i32> %38, <16 x i32>* %40, align 1, !tbaa !10 178*9880d681SAndroid Build Coastguard Worker %41 = add nuw nsw i32 %res.s0.x.x, 1 179*9880d681SAndroid Build Coastguard Worker %42 = icmp eq i32 %41, %21 180*9880d681SAndroid Build Coastguard Worker br i1 %42, label %"end for res.s0.x.x", label %"for res.s0.x.x" 181*9880d681SAndroid Build Coastguard Worker 182*9880d681SAndroid Build Coastguard Worker"end for res.s0.x.x": ; preds = %"for res.s0.x.x", %"produce res" 183*9880d681SAndroid Build Coastguard Worker %43 = add nsw i32 %res.extent.0, 63 184*9880d681SAndroid Build Coastguard Worker %44 = ashr i32 %43, 6 185*9880d681SAndroid Build Coastguard Worker %45 = icmp sgt i32 %44, %21 186*9880d681SAndroid Build Coastguard Worker br i1 %45, label %"for res.s0.x.x92.preheader", label %destructor_block, !prof !4 187*9880d681SAndroid Build Coastguard Worker 188*9880d681SAndroid Build Coastguard Worker"for res.s0.x.x92.preheader": ; preds = %"end for res.s0.x.x" 189*9880d681SAndroid Build Coastguard Worker %46 = sub i32 -64, %f.min.0 190*9880d681SAndroid Build Coastguard Worker %47 = add i32 %46, %10 191*9880d681SAndroid Build Coastguard Worker %48 = getelementptr inbounds i8, i8* %f.host, i32 %47 192*9880d681SAndroid Build Coastguard Worker %49 = bitcast i8* %48 to <16 x i32>* 193*9880d681SAndroid Build Coastguard Worker %50 = load <16 x i32>, <16 x i32>* %49, align 1 194*9880d681SAndroid Build Coastguard Worker %51 = tail call <32 x i32> @llvm.hexagon.V6.vzb(<16 x i32> %50) 195*9880d681SAndroid Build Coastguard Worker %52 = sub i32 -64, %g.min.0 196*9880d681SAndroid Build Coastguard Worker %53 = add i32 %52, %10 197*9880d681SAndroid Build Coastguard Worker %54 = getelementptr inbounds i8, i8* %g.host, i32 %53 198*9880d681SAndroid Build Coastguard Worker %55 = bitcast i8* %54 to <16 x i32>* 199*9880d681SAndroid Build Coastguard Worker %56 = load <16 x i32>, <16 x i32>* %55, align 1 200*9880d681SAndroid Build Coastguard Worker %57 = tail call <32 x i32> @llvm.hexagon.V6.vzb(<16 x i32> %56) 201*9880d681SAndroid Build Coastguard Worker %58 = tail call <32 x i32> @llvm.hexagon.V6.vaddh.dv(<32 x i32> %51, <32 x i32> %57) 202*9880d681SAndroid Build Coastguard Worker %59 = tail call <16 x i32> @llvm.hexagon.V6.lo(<32 x i32> %58) 203*9880d681SAndroid Build Coastguard Worker %60 = add nsw i32 %res.extent.0, -64 204*9880d681SAndroid Build Coastguard Worker %61 = getelementptr inbounds i8, i8* %res.host, i32 %60 205*9880d681SAndroid Build Coastguard Worker %62 = tail call <16 x i32> @llvm.hexagon.V6.hi(<32 x i32> %58) 206*9880d681SAndroid Build Coastguard Worker %63 = tail call <16 x i32> @llvm.hexagon.V6.vasrhubsat(<16 x i32> %62, <16 x i32> %59, i32 4) 207*9880d681SAndroid Build Coastguard Worker %64 = bitcast i8* %61 to <16 x i32>* 208*9880d681SAndroid Build Coastguard Worker store <16 x i32> %63, <16 x i32>* %64, align 1, !tbaa !10 209*9880d681SAndroid Build Coastguard Worker br label %destructor_block 210*9880d681SAndroid Build Coastguard Worker 211*9880d681SAndroid Build Coastguard Workerdestructor_block: ; preds = %"for res.s0.x.x92.preheader", %"end for res.s0.x.x", %after_bb75, %after_bb75.thread 212*9880d681SAndroid Build Coastguard Worker ret i32 0 213*9880d681SAndroid Build Coastguard Worker} 214*9880d681SAndroid Build Coastguard Worker 215*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 216*9880d681SAndroid Build Coastguard Workerdeclare <32 x i32> @llvm.hexagon.V6.vaddh.dv(<32 x i32>, <32 x i32>) #1 217*9880d681SAndroid Build Coastguard Worker 218*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 219*9880d681SAndroid Build Coastguard Workerdeclare <32 x i32> @llvm.hexagon.V6.vzb(<16 x i32>) #1 220*9880d681SAndroid Build Coastguard Worker 221*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 222*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.hexagon.V6.hi(<32 x i32>) #1 223*9880d681SAndroid Build Coastguard Worker 224*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 225*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.hexagon.V6.lo(<32 x i32>) #1 226*9880d681SAndroid Build Coastguard Worker 227*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 228*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.hexagon.V6.vasrhubsat(<16 x i32>, <16 x i32>, i32) #1 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Workerattributes #0 = { norecurse nounwind } 231*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind readnone } 232*9880d681SAndroid Build Coastguard Worker 233*9880d681SAndroid Build Coastguard Worker!llvm.ident = !{!0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0} 234*9880d681SAndroid Build Coastguard Worker!llvm.module.flags = !{!1, !2, !3} 235*9880d681SAndroid Build Coastguard Worker 236*9880d681SAndroid Build Coastguard Worker!0 = !{!"Clang $LLVM_VERSION_MAJOR.$LLVM_VERSION_MINOR (based on LLVM 3.8.0)"} 237*9880d681SAndroid Build Coastguard Worker!1 = !{i32 2, !"halide_use_soft_float_abi", i32 0} 238*9880d681SAndroid Build Coastguard Worker!2 = !{i32 2, !"halide_mcpu", !"hexagonv60"} 239*9880d681SAndroid Build Coastguard Worker!3 = !{i32 2, !"halide_mattrs", !"+hvx"} 240*9880d681SAndroid Build Coastguard Worker!4 = !{!"branch_weights", i32 1073741824, i32 0} 241*9880d681SAndroid Build Coastguard Worker!5 = !{!6, !6, i64 0} 242*9880d681SAndroid Build Coastguard Worker!6 = !{!"f", !7} 243*9880d681SAndroid Build Coastguard Worker!7 = !{!"Halide buffer"} 244*9880d681SAndroid Build Coastguard Worker!8 = !{!9, !9, i64 0} 245*9880d681SAndroid Build Coastguard Worker!9 = !{!"g", !7} 246*9880d681SAndroid Build Coastguard Worker!10 = !{!11, !11, i64 0} 247*9880d681SAndroid Build Coastguard Worker!11 = !{!"res", !7} 248