[PATCH] D131957: Add a baseline test for D131958
Alexander Richardson via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 21 05:50:38 PDT 2022
This revision was not accepted when it landed; it landed in state "Needs Review".
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG963287acbf42: Add a baseline test for D131958 (authored by arichardson).
Changed prior to commit:
https://reviews.llvm.org/D131957?vs=452960&id=461869#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D131957/new/
https://reviews.llvm.org/D131957
Files:
llvm/test/CodeGen/AArch64/avoid-zero-copy.mir
llvm/test/CodeGen/Mips/avoid-zero-copy.mir
Index: llvm/test/CodeGen/Mips/avoid-zero-copy.mir
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/Mips/avoid-zero-copy.mir
@@ -0,0 +1,45 @@
+# Check that we can remove the redundant save of constant registers such as $zero
+# RUN: llc -mtriple=mips64-unknown-freebsd %s -start-before=machine-cp -o - | FileCheck %s --check-prefix ASM
+# RUN: llc -mtriple=mips64-unknown-freebsd %s -verify-machineinstrs -run-pass=machine-cp -o - | FileCheck %s
+--- |
+ target triple = "mips64-unknown-freebsd"
+ define i32 @a() nounwind {
+ ; ASM-LABEL: a:
+ ; ASM: # %bb.0:
+ ; ASM-NEXT: daddiu $sp, $sp, -16
+ ; ASM-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill
+ ; ASM-NEXT: sd $16, 0($sp) # 8-byte Folded Spill
+ ; ASM-NEXT: move $16, $zero
+ ; ASM-NEXT: jalr $25
+ ; ASM-NEXT: move $4, $zero
+ ; ASM-NEXT: move $4, $16
+ ; ASM-NEXT: ld $16, 0($sp) # 8-byte Folded Reload
+ ; ASM-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload
+ ; ASM-NEXT: jr $ra
+ ; ASM-NEXT: daddiu $sp, $sp, 16
+ ret i32 0
+ }
+...
+---
+name: a
+body: |
+ bb.0 (%ir-block.0):
+ liveins: $a0_64, $t9_64, $ra_64, $fp_64, $gp_64
+ ; CHECK-LABEL: name: a
+ ; CHECK: liveins: $a0_64, $t9_64, $ra_64, $fp_64, $gp_64
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
+ ; CHECK-NEXT: renamable $s0_64 = COPY $zero_64
+ ; CHECK-NEXT: $a0_64 = COPY $zero_64
+ ; CHECK-NEXT: JALR64Pseudo $t9_64, csr_n64, implicit-def dead $ra, implicit $a0_64, implicit $gp_64, implicit-def $sp, implicit-def $v0
+ ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
+ ; CHECK-NEXT: $a0_64 = COPY killed renamable $s0_64
+ ; CHECK-NEXT: PseudoReturn64 undef $ra_64, implicit $v0_64, implicit killed $a0_64
+ ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
+ renamable $s0_64 = COPY $zero_64
+ $a0_64 = COPY renamable $s0_64
+ JALR64Pseudo $t9_64, csr_n64, implicit-def dead $ra, implicit $a0_64, implicit $gp_64, implicit-def $sp, implicit-def $v0
+ ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
+ $a0_64 = COPY killed renamable $s0_64
+ PseudoReturn64 undef $ra_64, implicit $v0_64, implicit killed $a0_64
+...
Index: llvm/test/CodeGen/AArch64/avoid-zero-copy.mir
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/AArch64/avoid-zero-copy.mir
@@ -0,0 +1,40 @@
+# Check that we can remove the redundant save of constant registers such as $wzr
+# RUN: llc -mtriple=aarch64-unknown-linux %s -verify-machineinstrs -start-before=machine-cp -o - | FileCheck %s --check-prefix ASM
+# RUN: llc -mtriple=aarch64-unknown-linux %s -verify-machineinstrs -run-pass=machine-cp -o - | FileCheck %s
+--- |
+ target triple = "aarch64-unknown-linux"
+ declare i32 @bar(i32) nounwind
+ define i32 @foo() nounwind {
+ ; ASM-LABEL: foo:
+ ; ASM: // %bb.0:
+ ; ASM-NEXT: stp x30, x19, [sp, #-16]! // 16-byte Folded Spill
+ ; ASM-NEXT: mov w0, wzr
+ ; ASM-NEXT: mov w19, wzr
+ ; ASM-NEXT: bl bar
+ ; ASM-NEXT: mov w0, w19
+ ; ASM-NEXT: ldp x30, x19, [sp], #16 // 16-byte Folded Reload
+ ; ASM-NEXT: ret
+ call i32 @bar(i32 0)
+ ret i32 0
+ }
+...
+---
+name: foo
+body: |
+ bb.0 (%ir-block.0):
+ ; CHECK-LABEL: name: foo
+ ; CHECK: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
+ ; CHECK-NEXT: renamable $w19 = COPY $wzr
+ ; CHECK-NEXT: $w0 = COPY $wzr
+ ; CHECK-NEXT: BL @bar, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit $w0, implicit-def $sp, implicit-def $w0
+ ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
+ ; CHECK-NEXT: $w0 = COPY killed renamable $w19
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
+ ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
+ renamable $w19 = COPY $wzr
+ $w0 = COPY renamable $w19
+ BL @bar, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit $w0, implicit-def $sp, implicit-def $w0
+ ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
+ $w0 = COPY killed renamable $w19
+ RET_ReallyLR implicit $w0
+...
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D131957.461869.patch
Type: text/x-patch
Size: 4253 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220921/78e2a104/attachment.bin>
More information about the llvm-commits
mailing list