define ptx_kernel void @main_graph_async_dispatch_1_elementwise_D_i64xi1(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) local_unnamed_addr #1 { %5 = tail call range(i32 0, 32) i32 @llvm.nvvm.read.ptx.sreg.tid.x() %6 = zext i32 %2 to i64 %7 = zext i32 %3 to i64 %8 = shl nuw i64 %7, 32 %9 = or disjoint i64 %8, %6 %10 = icmp sgt i64 %8, -1 tail call void @llvm.assume(i1 %10) call void @llvm.assume(i1 true) [ "align"(ptr addrspace(1) %0, i64 64) ] call void @llvm.assume(i1 true) [ "align"(ptr addrspace(1) %1, i64 64) ] %11 = icmp eq i64 %9, 0 %12 = tail call i64 @llvm.usub.sat.i64(i64 %9, i64 1) %13 = lshr i64 %12, 5 %14 = add nuw nsw i64 %13, 1 %15 = select i1 %11, i64 0, i64 %14 %16 = tail call range(i32 0, 2147483647) i32 @llvm.nvvm.read.ptx.sreg.ctaid.x() %17 = zext nneg i32 %16 to i64 %18 = tail call range(i32 1, -2147483648) i32 @llvm.nvvm.read.ptx.sreg.nctaid.x() %19 = zext nneg i32 %18 to i64 %20 = icmp samesign ugt i64 %15, %17 br i1 %20, label %.lr.ph3, label %._crit_edge4 .lr.ph3: ; preds = %4, %._crit_edge %21 = phi i64 [ %37, %._crit_edge ], [ %17, %4 ] %22 = shl i64 %21, 5 %23 = sub i64 %9, %22 %24 = tail call i64 @llvm.smin.i64(i64 %23, i64 32) %25 = trunc i64 %24 to i32 %26 = icmp slt i32 %5, %25 br i1 %26, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %.lr.ph3, %.lr.ph %27 = phi i32 [ %35, %.lr.ph ], [ %5, %.lr.ph3 ] %28 = zext i32 %27 to i64 %29 = add i64 %22, %28 %30 = getelementptr [8 x i8], ptr addrspace(1) %0, i64 %29 %31 = load <1 x i64>, ptr addrspace(1) %30, align 8 %32 = icmp ne <1 x i64> %31, zeroinitializer %33 = zext <1 x i1> %32 to <1 x i8> %34 = getelementptr i8, ptr addrspace(1) %1, i64 %29 store <1 x i8> %33, ptr addrspace(1) %34, align 1 %35 = add i32 %27, 32 %36 = icmp slt i32 %35, %25 br i1 %36, label %.lr.ph, label %._crit_edge ._crit_edge: ; preds = %.lr.ph, %.lr.ph3 %37 = add i64 %21, %19 %38 = icmp samesign ult i64 %37, %15 br i1 %38, label %.lr.ph3, label %._crit_edge4 ._crit_edge4: ; preds = %._crit_edge, %4 ret void }