brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · 4cb0611 Raw
105 lines · plain
1; RUN: llc < %s -mtriple=x86_64-- -mcpu=corei7 -verify-machineinstrs | FileCheck %s2 3define void @test(ptr %a, ptr %b, i64 %c, i64 %d) nounwind {4entry:5  %ptrtoarg4 = load ptr, ptr %a, align 86  %brglist1 = getelementptr ptr, ptr %a, i64 17  %ptrtoarg25 = load ptr, ptr %brglist1, align 88  %0 = load i64, ptr %b, align 89  %1 = mul i64 %0, 410  %scevgep = getelementptr i8, ptr %ptrtoarg25, i64 %111  %2 = mul i64 %d, 412  br label %loop.cond13 14loop.cond:                                        ; preds = %test.exit, %entry15  %asr.iv6 = phi ptr [ %29, %test.exit ], [ %scevgep, %entry ]16  %iv = phi i64 [ %0, %entry ], [ %28, %test.exit ]17  %3 = icmp eq i64 %iv, %c18  br i1 %3, label %return, label %loop19 20loop:                                             ; preds = %loop.cond21  %4 = load ptr, ptr addrspace(256) inttoptr (i64 264 to ptr addrspace(256)), align 822  %5 = load i64, ptr %4, align 823  %vector.size.i = ashr i64 %5, 324  %num.vector.wi.i = shl i64 %vector.size.i, 325  %6 = icmp eq i64 %vector.size.i, 026  br i1 %6, label %scalarIf.i, label %dim_0_vector_pre_head.i27 28dim_0_vector_pre_head.i:                          ; preds = %loop29  %7 = trunc i64 %5 to i3230  %tempvector_func.i = insertelement <8 x i32> undef, i32 %7, i32 031  %vectorvector_func.i = shufflevector <8 x i32> %tempvector_func.i, <8 x i32> undef, <8 x i32> zeroinitializer32  br label %vector_kernel_entry.i33 34vector_kernel_entry.i:                            ; preds = %vector_kernel_entry.i, %dim_0_vector_pre_head.i35  %asr.iv9 = phi ptr [ %scevgep10, %vector_kernel_entry.i ], [ %asr.iv6, %dim_0_vector_pre_head.i ]36  %asr.iv = phi i64 [ %asr.iv.next, %vector_kernel_entry.i ], [ %vector.size.i, %dim_0_vector_pre_head.i ]37  %8 = addrspacecast ptr %ptrtoarg4 to ptr addrspace(1)38  %asr.iv911 = addrspacecast ptr %asr.iv9 to ptr addrspace(1)39  %9 = load <8 x i32>, ptr addrspace(1) %asr.iv911, align 440  %extract8vector_func.i = extractelement <8 x i32> %9, i32 041  %extract9vector_func.i = extractelement <8 x i32> %9, i32 142  %extract10vector_func.i = extractelement <8 x i32> %9, i32 243  %extract11vector_func.i = extractelement <8 x i32> %9, i32 344  %extract12vector_func.i = extractelement <8 x i32> %9, i32 445  %extract13vector_func.i = extractelement <8 x i32> %9, i32 546  %extract14vector_func.i = extractelement <8 x i32> %9, i32 647  %extract15vector_func.i = extractelement <8 x i32> %9, i32 748  %10 = atomicrmw min ptr addrspace(1) %8, i32 %extract8vector_func.i seq_cst49  %11 = atomicrmw min ptr addrspace(1) %8, i32 %extract9vector_func.i seq_cst50  %12 = atomicrmw min ptr addrspace(1) %8, i32 %extract10vector_func.i seq_cst51  %13 = atomicrmw min ptr addrspace(1) %8, i32 %extract11vector_func.i seq_cst52  %14 = atomicrmw min ptr addrspace(1) %8, i32 %extract12vector_func.i seq_cst53  %15 = atomicrmw min ptr addrspace(1) %8, i32 %extract13vector_func.i seq_cst54  %16 = atomicrmw min ptr addrspace(1) %8, i32 %extract14vector_func.i seq_cst55  %17 = atomicrmw min ptr addrspace(1) %8, i32 %extract15vector_func.i seq_cst56  store <8 x i32> %vectorvector_func.i, ptr addrspace(1) %asr.iv911, align 457  %asr.iv.next = add i64 %asr.iv, -158  %scevgep10 = getelementptr i8, ptr %asr.iv9, i64 3259  %dim_0_vector_cmp.to.max.i = icmp eq i64 %asr.iv.next, 060  br i1 %dim_0_vector_cmp.to.max.i, label %scalarIf.i, label %vector_kernel_entry.i61 62scalarIf.i:                                       ; preds = %vector_kernel_entry.i, %loop63  %exec_wi.i = phi i64 [ 0, %loop ], [ %num.vector.wi.i, %vector_kernel_entry.i ]64  %18 = icmp eq i64 %exec_wi.i, %565  br i1 %18, label %test.exit, label %dim_0_pre_head.i66 67dim_0_pre_head.i:                                 ; preds = %scalarIf.i68  %19 = load ptr, ptr addrspace(256) inttoptr (i64 264 to ptr addrspace(256)), align 869  %20 = load i64, ptr %19, align 870  %21 = trunc i64 %20 to i3271  %22 = mul i64 %vector.size.i, 872  br label %scalar_kernel_entry.i73 74scalar_kernel_entry.i:                            ; preds = %scalar_kernel_entry.i, %dim_0_pre_head.i75  %asr.iv12 = phi i64 [ %asr.iv.next13, %scalar_kernel_entry.i ], [ %22, %dim_0_pre_head.i ]76  %23 = addrspacecast ptr %asr.iv6 to ptr addrspace(1)77  %24 = addrspacecast ptr %ptrtoarg4 to ptr addrspace(1)78  %scevgep16 = getelementptr i32, ptr addrspace(1) %23, i64 %asr.iv1279  %25 = load i32, ptr addrspace(1) %scevgep16, align 480  %26 = atomicrmw min ptr addrspace(1) %24, i32 %25 seq_cst81  %scevgep15 = getelementptr i32, ptr addrspace(1) %23, i64 %asr.iv1282  store i32 %21, ptr addrspace(1) %scevgep15, align 483  %asr.iv.next13 = add i64 %asr.iv12, 184  %dim_0_cmp.to.max.i = icmp eq i64 %5, %asr.iv.next1385  br i1 %dim_0_cmp.to.max.i, label %test.exit, label %scalar_kernel_entry.i86 87test.exit:                     ; preds = %scalar_kernel_entry.i, %scalarIf.i88  %27 = bitcast ptr %asr.iv6 to ptr89  %28 = add i64 %iv, %d90  store i64 %28, ptr %b, align 891  %scevgep8 = getelementptr i1, ptr %27, i64 %292  %29 = bitcast ptr %scevgep8 to ptr93  br label %loop.cond94 95return:                                           ; preds = %loop.cond96  store i64 %0, ptr %b, align 897  ret void98}99 100; CHECK: test101; CHECK: decq102; CHECK-NOT: cmpxchgl103; CHECK: jne104; CHECK: ret105