define ptx_kernel void @main_graph_async_dispatch_13_elementwise_D_f16xf32(ptr addrspace(1) noalias noundef nonnull readonly align 16 captures(none) %0, ptr addrspace(1) noalias nofree noundef nonnull writeonly align 16 captures(none) %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5) local_unnamed_addr #1 { %7 = zext i32 %2 to i64 %8 = zext i32 %3 to i64 %9 = zext i32 %4 to i64 %10 = zext i32 %5 to i64 %11 = shl nuw i64 %10, 32 %12 = or disjoint i64 %11, %9 %13 = and i64 %7, 63 %14 = icmp eq i64 %13, 0 tail call void @llvm.assume(i1 %14) %15 = icmp sgt i64 %11, -1 tail call void @llvm.assume(i1 %15) call void @llvm.assume(i1 true) [ "align"(ptr addrspace(1) %0, i64 64) ] %16 = shl nuw i64 %8, 32 %17 = and i64 %16, 2305843004918726656 %18 = getelementptr i8, ptr addrspace(1) %1, i64 %17 %19 = getelementptr i8, ptr addrspace(1) %18, i64 %7 call void @llvm.assume(i1 true) [ "align"(ptr addrspace(1) %19, i64 64) ] %20 = udiv i64 %12, 3584 %21 = mul nuw nsw i64 %20, 14 %22 = tail call range(i32 0, 2147483647) i32 @llvm.nvvm.read.ptx.sreg.ctaid.x() %23 = zext nneg i32 %22 to i64 %24 = tail call range(i32 1, -2147483648) i32 @llvm.nvvm.read.ptx.sreg.nctaid.x() %25 = zext nneg i32 %24 to i64 %26 = icmp samesign ugt i64 %21, %23 br i1 %26, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %6 %27 = tail call range(i32 0, 32) i32 @llvm.nvvm.read.ptx.sreg.tid.x() %28 = shl nuw nsw i32 %27, 3 br label %29 29: ; preds = %.lr.ph, %29 %30 = phi i64 [ %23, %.lr.ph ], [ %43, %29 ] %.frozen = freeze i64 %30 %31 = udiv i64 %.frozen, 14 %32 = mul i64 %31, 14 %.decomposed = sub i64 %.frozen, %32 %33 = trunc nuw nsw i64 %.decomposed to i32 %34 = shl nuw nsw i32 %33, 8 %35 = or disjoint i32 %34, %28 %36 = zext nneg i32 %35 to i64 %37 = mul nuw nsw i64 %31, 3584 %38 = add nuw nsw i64 %37, %36 %39 = getelementptr [2 x i8], ptr addrspace(1) %0, i64 %38 %40 = load <8 x half>, ptr addrspace(1) %39, align 16 %41 = fpext <8 x half> %40 to <8 x float> %42 = getelementptr [4 x i8], ptr addrspace(1) %19, i64 %38 store <8 x float> %41, ptr addrspace(1) %42, align 32 %43 = add nuw nsw i64 %30, %25 %44 = icmp samesign ult i64 %43, %21 br i1 %44, label %29, label %._crit_edge ._crit_edge: ; preds = %29, %6 ret void }