|
| 1 | +;=========================== begin_copyright_notice ============================ |
| 2 | +; |
| 3 | +; Copyright (C) 2024 Intel Corporation |
| 4 | +; |
| 5 | +; SPDX-License-Identifier: MIT |
| 6 | +; |
| 7 | +;============================ end_copyright_notice ============================= |
| 8 | + |
| 9 | +; RUN: %opt %use_old_pass_manager% -loop-unroll -vc-peel-loops-dpas-null-acc=true -march=genx64 -mcpu=XeHPC -S < %s | FileCheck %s |
| 10 | + |
| 11 | +target datalayout = "e-p:64:64-p3:32:32-p6:32:32-i64:64-n8:16:32:64" |
| 12 | +target triple = "spir64-unknown-unknown" |
| 13 | + |
| 14 | +define void @kernel(i8 addrspace(1)* %0, i8 addrspace(1)* %1, i8 addrspace(1)* %2) { |
| 15 | + %4 = ptrtoint i8 addrspace(1)* %1 to i64 |
| 16 | + %5 = ptrtoint i8 addrspace(1)* %2 to i64 |
| 17 | + br label %6 |
| 18 | + |
| 19 | +6: ; preds = %6, %3 |
| 20 | + ; CHECK-DAG: [[PHI0:%[^ ]+]] = phi <128 x i32> [ zeroinitializer, %{{[^ ]+}} ], [ [[ACC0:[^ ]+]], %{{[^ ]+}} ] |
| 21 | + ; CHECK-DAG: [[PHI1:%[^ ]+]] = phi <128 x i32> [ zeroinitializer, %{{[^ ]+}} ], [ [[ACC1:[^ ]+]], %{{[^ ]+}} ] |
| 22 | + ; CHECK-DAG: [[PHI2:%[^ ]+]] = phi <128 x i32> [ zeroinitializer, %{{[^ ]+}} ], [ [[ACC2:[^ ]+]], %{{[^ ]+}} ] |
| 23 | + ; CHECK-DAG: [[PHI3:%[^ ]+]] = phi <128 x i32> [ zeroinitializer, %{{[^ ]+}} ], [ [[ACC3:[^ ]+]], %{{[^ ]+}} ] |
| 24 | + |
| 25 | + ; CHECK-DAG: [[ACC0]] = add <128 x i32> [[PHI0]], |
| 26 | + ; CHECK-DAG: [[ACC1]] = add <128 x i32> [[PHI1]], |
| 27 | + ; CHECK-DAG: [[ACC2]] = add <128 x i32> [[PHI2]], |
| 28 | + ; CHECK-DAG: [[ACC3]] = add <128 x i32> [[PHI3]], |
| 29 | + |
| 30 | + %indvars.iv159 = phi i64 [ 0, %3 ], [ %indvars.iv.next160, %6 ] |
| 31 | + %indvars.iv = phi i64 [ 0, %3 ], [ %indvars.iv.next, %6 ] |
| 32 | + %.0140155 = phi i32 [ 0, %3 ], [ %19, %6 ] |
| 33 | + %.0143152 = phi <128 x i32> [ zeroinitializer, %3 ], [ %18, %6 ] |
| 34 | + %.0144151 = phi <128 x i32> [ zeroinitializer, %3 ], [ %17, %6 ] |
| 35 | + %.0145150 = phi <128 x i32> [ zeroinitializer, %3 ], [ %16, %6 ] |
| 36 | + %.0146149 = phi <128 x i32> [ zeroinitializer, %3 ], [ %15, %6 ] |
| 37 | + %7 = shl nsw i64 %indvars.iv159, 2 |
| 38 | + %8 = add i64 %7, %4 |
| 39 | + %9 = inttoptr i64 %8 to <128 x i32> addrspace(1)* |
| 40 | + %10 = load <128 x i32>, <128 x i32> addrspace(1)* %9, align 16 |
| 41 | + %11 = shl nsw i64 %indvars.iv, 2 |
| 42 | + %12 = add i64 %11, %5 |
| 43 | + %13 = inttoptr i64 %12 to <128 x i32> addrspace(1)* |
| 44 | + %14 = load <128 x i32>, <128 x i32> addrspace(1)* %13, align 16 |
| 45 | + %indvars.iv.next160 = add nuw nsw i64 %indvars.iv159, 256 |
| 46 | + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 128 |
| 47 | + %15 = add <128 x i32> %.0146149, %10 |
| 48 | + %16 = add <128 x i32> %.0145150, %14 |
| 49 | + %17 = add <128 x i32> %.0144151, %10 |
| 50 | + %18 = add <128 x i32> %.0143152, %14 |
| 51 | + %19 = add nuw nsw i32 %.0140155, 1 |
| 52 | + %exitcond.not = icmp eq i32 %19, 16 |
| 53 | + br i1 %exitcond.not, label %20, label %6 |
| 54 | + |
| 55 | +20: ; preds = %6 |
| 56 | + %.lcssa4 = phi <128 x i32> [ %15, %6 ] |
| 57 | + %.lcssa3 = phi <128 x i32> [ %16, %6 ] |
| 58 | + %.lcssa2 = phi <128 x i32> [ %17, %6 ] |
| 59 | + %.lcssa = phi <128 x i32> [ %18, %6 ] |
| 60 | + %21 = ptrtoint i8 addrspace(1)* %0 to i64 |
| 61 | + %22 = bitcast i8 addrspace(1)* %0 to <128 x i32> addrspace(1)* |
| 62 | + store <128 x i32> %.lcssa4, <128 x i32> addrspace(1)* %22, align 16 |
| 63 | + %23 = add i64 %21, 512 |
| 64 | + %24 = inttoptr i64 %23 to <128 x i32> addrspace(1)* |
| 65 | + store <128 x i32> %.lcssa3, <128 x i32> addrspace(1)* %24, align 16 |
| 66 | + %25 = add i64 %21, 1024 |
| 67 | + %26 = inttoptr i64 %25 to <128 x i32> addrspace(1)* |
| 68 | + store <128 x i32> %.lcssa2, <128 x i32> addrspace(1)* %26, align 16 |
| 69 | + %27 = add i64 %21, 1536 |
| 70 | + %28 = inttoptr i64 %27 to <128 x i32> addrspace(1)* |
| 71 | + store <128 x i32> %.lcssa, <128 x i32> addrspace(1)* %28, align 16 |
| 72 | + ret void |
| 73 | +} |
0 commit comments