define ptx_kernel void @main_graph_async_dispatch_1_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) local_unnamed_addr #1 { %5 = zext i32 %2 to i64 %6 = zext i32 %3 to i64 %7 = shl nuw i64 %6, 32 %8 = or disjoint i64 %7, %5 %9 = icmp sgt i64 %7, -1 tail call void @llvm.assume(i1 %9) 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) ] %10 = udiv i64 %8, 2560 %11 = mul nuw nsw i64 %10, 10 %12 = tail call range(i32 0, 2147483647) i32 @llvm.nvvm.read.ptx.sreg.ctaid.x() %13 = zext nneg i32 %12 to i64 %14 = tail call range(i32 1, -2147483648) i32 @llvm.nvvm.read.ptx.sreg.nctaid.x() %15 = zext nneg i32 %14 to i64 %16 = icmp samesign ugt i64 %11, %13 br i1 %16, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %4 %17 = tail call range(i32 0, 32) i32 @llvm.nvvm.read.ptx.sreg.tid.x() %18 = shl nuw nsw i32 %17, 3 br label %19 19: ; preds = %.lr.ph, %19 %20 = phi i64 [ %13, %.lr.ph ], [ %33, %19 ] %.frozen = freeze i64 %20 %21 = udiv i64 %.frozen, 10 %22 = mul i64 %21, 10 %.decomposed = sub i64 %.frozen, %22 %23 = trunc nuw nsw i64 %.decomposed to i32 %24 = shl nuw nsw i32 %23, 8 %25 = or disjoint i32 %24, %18 %26 = zext nneg i32 %25 to i64 %27 = mul nuw nsw i64 %21, 2560 %28 = add nuw nsw i64 %27, %26 %29 = getelementptr [2 x i8], ptr addrspace(1) %0, i64 %28 %30 = load <8 x half>, ptr addrspace(1) %29, align 16 %31 = fpext <8 x half> %30 to <8 x float> %32 = getelementptr [4 x i8], ptr addrspace(1) %1, i64 %28 store <8 x float> %31, ptr addrspace(1) %32, align 32 %33 = add nuw nsw i64 %20, %15 %34 = icmp samesign ult i64 %33, %11 br i1 %34, label %19, label %._crit_edge ._crit_edge: ; preds = %19, %4 ret void }