brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · 2b2bd8b Raw
125 lines · plain
1; RUN: llc < %s -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr9 -verify-machineinstrs | FileCheck %s2; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr9 -verify-machineinstrs | FileCheck %s3; RUN: llc < %s -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 -verify-machineinstrs | FileCheck %s4; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 -verify-machineinstrs | FileCheck %s5 6; Verify pre-inc preparation pass doesn't prepare pre-inc for i64 load/store7; when the stride doesn't conform LDU/STDU DS-form requirement.8 9@result = local_unnamed_addr global i64 0, align 810 11define i64 @test_preinc_i64_ld(ptr nocapture readonly, i64) local_unnamed_addr {12  %3 = icmp eq i64 %1, 013  br i1 %3, label %4, label %614 15; <label>:4:                                      ; preds = %216  %5 = load i64, ptr @result, align 817  br label %1318 19; <label>:6:                                      ; preds = %220  %7 = getelementptr inbounds i8, ptr %0, i64 -5000021  %8 = getelementptr inbounds i8, ptr %0, i64 -6102422  %9 = getelementptr inbounds i8, ptr %0, i64 -6204823  %10 = getelementptr inbounds i8, ptr %0, i64 -6409624  %11 = load i64, ptr @result, align 825  br label %1526 27; <label>:12:                                     ; preds = %1528  store i64 %33, ptr @result, align 829  br label %1330 31; <label>:13:                                     ; preds = %12, %432  %14 = phi i64 [ %5, %4 ], [ %33, %12 ]33  ret i64 %1434 35; <label>:15:                                     ; preds = %15, %636  %16 = phi i64 [ %11, %6 ], [ %33, %15 ]37  %17 = phi i64 [ 0, %6 ], [ %34, %15 ]38  %18 = getelementptr inbounds i8, ptr %7, i64 %1739  %19 = bitcast ptr %18 to ptr40  %20 = load i64, ptr %19, align 841  %21 = getelementptr inbounds i8, ptr %8, i64 %1742  %22 = bitcast ptr %21 to ptr43  %23 = load i64, ptr %22, align 844  %24 = getelementptr inbounds i8, ptr %9, i64 %1745  %25 = bitcast ptr %24 to ptr46  %26 = load i64, ptr %25, align 847  %27 = getelementptr inbounds i8, ptr %10, i64 %1748  %28 = bitcast ptr %27 to ptr49  %29 = load i64, ptr %28, align 850  %30 = mul i64 %23, %2051  %31 = mul i64 %30, %2652  %32 = mul i64 %31, %2953  %33 = mul i64 %32, %1654  %34 = add nuw i64 %17, 155  %35 = icmp eq i64 %34, %156  br i1 %35, label %12, label %1557}58 59; CHECK-LABEL: test_preinc_i64_ld60; CHECK-NOT: addi {{[0-9]+}}, {{[0-9]+}}, -1102361; CHECK-NOT: addi {{[0-9]+}}, {{[0-9]+}}, -1204762; CHECK-NOT: addi {{[0-9]+}}, {{[0-9]+}}, -1409563; CHECK-DAG: ld {{[0-9]+}}, 14096([[REG1:[0-9]+]])64; CHECK-DAG: ld {{[0-9]+}},  3072([[REG1]])65; CHECK-DAG: ld {{[0-9]+}},  2048([[REG1]])66; CHECK-DAG: ld {{[0-9]+}},  0([[REG1]])67; CHECK: blr68 69define i64 @test_preinc_i64_ldst(ptr nocapture, i64, i64) local_unnamed_addr {70  %4 = icmp eq i64 %1, 071  br i1 %4, label %5, label %772 73; <label>:5:                                      ; preds = %374  %6 = load i64, ptr @result, align 875  br label %1676 77; <label>:7:                                      ; preds = %378  %8 = add i64 %2, 179  %9 = getelementptr inbounds i8, ptr %0, i64 -102480  %10 = add i64 %2, 281  %11 = getelementptr inbounds i8, ptr %0, i64 -204882  %12 = getelementptr inbounds i8, ptr %0, i64 -307283  %13 = getelementptr inbounds i8, ptr %0, i64 -409684  %14 = load i64, ptr @result, align 885  br label %1886 87; <label>:15:                                     ; preds = %1888  store i64 %32, ptr @result, align 889  br label %1690 91; <label>:16:                                     ; preds = %15, %592  %17 = phi i64 [ %6, %5 ], [ %32, %15 ]93  ret i64 %1794 95; <label>:18:                                     ; preds = %18, %796  %19 = phi i64 [ %14, %7 ], [ %32, %18 ]97  %20 = phi i64 [ 0, %7 ], [ %33, %18 ]98  %21 = getelementptr inbounds i8, ptr %9, i64 %2099  %22 = bitcast ptr %21 to ptr100  store i64 %8, ptr %22, align 8101  %23 = getelementptr inbounds i8, ptr %11, i64 %20102  %24 = bitcast ptr %23 to ptr103  store i64 %10, ptr %24, align 8104  %25 = getelementptr inbounds i8, ptr %12, i64 %20105  %26 = bitcast ptr %25 to ptr106  %27 = load i64, ptr %26, align 8107  %28 = getelementptr inbounds i8, ptr %13, i64 %20108  %29 = bitcast ptr %28 to ptr109  %30 = load i64, ptr %29, align 8110  %31 = mul i64 %30, %27111  %32 = mul i64 %31, %19112  %33 = add nuw i64 %20, 1113  %34 = icmp eq i64 %33, %1114  br i1 %34, label %15, label %18115}116 117; CHECK-LABEL: test_preinc_i64_ldst118; CHECK-NOT: addi {{[0-9]+}}, {{[0-9]+}}, -3071119; CHECK-NOT: addi {{[0-9]+}}, {{[0-9]+}}, -2047120; CHECK-NOT: addi {{[0-9]+}}, {{[0-9]+}}, -1023121; CHECK-DAG: ld  {{[0-9]+}}, -1024([[REG2:[0-9]+]])122; CHECK-DAG: ld  {{[0-9]+}}, -2048([[REG2]])123; CHECK-DAG: std {{[0-9]+}},  1024([[REG2]])124; CHECK-DAG: std {{[0-9]+}},  0([[REG2]])125