[PATCH] D140682: [PowerPC][NFC] add test case for ShouldTrackLaneMasks
Ting Wang via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 26 21:13:55 PST 2022
tingwang created this revision.
tingwang added reviewers: shchenz, nemanjai, PowerPC.
tingwang added a project: LLVM.
Herald added a project: All.
tingwang requested review of this revision.
Herald added a subscriber: llvm-commits.
Show motivation case for ShouldTrackLaneMasks. Enable ShouldTrackLaneMasks will eliminate the spill.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D140682
Files:
llvm/test/CodeGen/PowerPC/track-lane-masks.ll
Index: llvm/test/CodeGen/PowerPC/track-lane-masks.ll
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/PowerPC/track-lane-masks.ll
@@ -0,0 +1,68 @@
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
+; RUN: -mcpu=pwr10 -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \
+; RUN: -ppc-track-subreg-liveness=true < %s | FileCheck -check-prefix=CHECK-TRACK %s
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
+; RUN: -mcpu=pwr10 -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \
+; RUN: -ppc-track-subreg-liveness=false < %s | FileCheck -check-prefix=CHECK-NOTRACK %s
+
+%struct = type { i32, i32 }
+
+define internal fastcc ptr @foo(i32 %mp.4.val, ptr %ml, ptr %bm, ptr %vtable, ptr %etable) unnamed_addr {
+; CHECK-TRACK-LABEL: foo:
+; CHECK-TRACK: std {{r[0-9]+}}, {{[0-9]+}}({{r[0-9]+}}) # {{[0-9]+}}-byte Folded Spill
+; CHECK-NOTRACK-LABEL: foo:
+; CHECK-NOTRACK: std {{r[0-9]+}}, {{[0-9]+}}({{r[0-9]+}}) # {{[0-9]+}}-byte Folded Spill
+entry:
+ %0 = alloca i8, i64 poison, align 16
+ %1 = alloca i8, i64 poison, align 16
+ %wide.trip.count = zext i32 %mp.4.val to i64
+ %n.vec = and i64 %wide.trip.count, 4294967292
+ br label %vector.body
+
+vector.body: ; preds = %vector.body, %entry
+ %index = phi i64 [ 0, %entry ], [ %index.next, %vector.body ]
+ %2 = shl i64 %index, 3
+ %next.gep = getelementptr i8, ptr %ml, i64 %2
+ %3 = shl i64 %index, 3
+ %4 = or i64 %3, 8
+ %next.gep3 = getelementptr i8, ptr %ml, i64 %4
+ %5 = shl i64 %index, 3
+ %6 = or i64 %5, 24
+ %next.gep5 = getelementptr i8, ptr %ml, i64 %6
+ %induction8 = or i64 %index, 3
+ %7 = load i32, ptr %next.gep3, align 4
+ %8 = load i32, ptr %next.gep5, align 4
+ %9 = zext i32 %7 to i64
+ %10 = zext i32 %8 to i64
+ %11 = getelementptr inbounds ptr, ptr %vtable, i64 %9
+ %12 = getelementptr inbounds ptr, ptr %vtable, i64 %10
+ %13 = load ptr, ptr %11, align 8
+ %14 = load ptr, ptr %12, align 8
+ %15 = getelementptr inbounds ptr, ptr %0, i64 %index
+ %16 = getelementptr inbounds ptr, ptr %0, i64 0
+ %17 = getelementptr inbounds ptr, ptr %0, i64 %induction8
+ store ptr null, ptr %15, align 16
+ store ptr %13, ptr poison, align 8
+ store ptr null, ptr %16, align 16
+ store ptr %14, ptr %17, align 8
+ %18 = getelementptr inbounds %struct, ptr %next.gep, i64 0, i32 1
+ %19 = load i32, ptr %18, align 4
+ %20 = zext i32 %19 to i64
+ %21 = getelementptr inbounds ptr, ptr %etable, i64 %20
+ %22 = load ptr, ptr %21, align 8
+ %23 = getelementptr inbounds ptr, ptr %1, i64 %index
+ %24 = getelementptr inbounds ptr, ptr %1, i64 0
+ %25 = getelementptr inbounds ptr, ptr %1, i64 %induction8
+ store ptr %22, ptr %23, align 16
+ store ptr null, ptr %24, align 16
+ store ptr null, ptr %25, align 8
+ %index.next = add nuw i64 %index, 4
+ %26 = icmp eq i64 %index.next, %n.vec
+ br i1 %26, label %middle.block, label %vector.body
+
+middle.block: ; preds = %vector.body
+ %call = call ptr @bar(ptr noundef %bm, ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef signext %mp.4.val, ptr noundef null, i32 noundef zeroext 4)
+ ret ptr %call
+}
+
+declare ptr @bar(ptr, ptr, ptr, i32, ptr, i32) local_unnamed_addr
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D140682.485345.patch
Type: text/x-patch
Size: 3341 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221227/ab832118/attachment.bin>
More information about the llvm-commits
mailing list