[PATCH] D153346: [BOLT][RISCV] Add tests for simple CFG transformations
Job Noorman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 20 06:58:00 PDT 2023
jobnoorman created this revision.
jobnoorman added reviewers: rafauler, maksfb, yota9, Amir.
Herald added subscribers: asb, luke, treapster, pmatos, ayermolo, VincentWu, vkmr, frasercrmck, luismarques, apazos, sameer.abuasal, s.egerton, Jim, benna, psnobl, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, shiva0217, kito-cheng, niosHD, sabuasal, simoncook, johnrusso, rbar, arichardson.
Herald added a project: All.
jobnoorman requested review of this revision.
Herald added subscribers: llvm-commits, wangpc, eopXD, MaskRay.
Herald added a project: LLVM.
Depends on D153345 <https://reviews.llvm.org/D153345>
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D153346
Files:
bolt/test/RISCV/internal-func-reloc.s
bolt/test/RISCV/reorder-blocks-reverse.s
Index: bolt/test/RISCV/reorder-blocks-reverse.s
===================================================================
--- /dev/null
+++ bolt/test/RISCV/reorder-blocks-reverse.s
@@ -0,0 +1,31 @@
+// RUN: %clang %cflags -o %t %s
+// RUN: llvm-bolt --reorder-blocks=reverse -o %t.bolt %t
+// RUN: llvm-objdump -d --no-show-raw-insn %t.bolt | FileCheck %s
+
+ .text
+ .globl _start
+ .p2align 1
+_start:
+ nop
+ beq t0, t1, 1f
+ nop
+ beq t0, t2, 2f
+1:
+ li a0, 5
+ j 3f
+2:
+ li a0, 6
+3:
+ ret
+ .size _start,.-_start
+
+// CHECK: {{.*}}00 <_start>:
+// CHECK-NEXT: {{.*}}00: beq t0, t1, {{.*}} <_start+0x10>
+// CHECK-NEXT: {{.*}}04: j {{.*}} <_start+0x16>
+// CHECK-NEXT: {{.*}}08: ret
+// CHECK-NEXT: {{.*}}0a: li a0, 6
+// CHECK-NEXT: {{.*}}0c: j {{.*}} <_start+0x8>
+// CHECK-NEXT: {{.*}}10: li a0, 5
+// CHECK-NEXT: {{.*}}12: j {{.*}} <_start+0x8>
+// CHECK-NEXT: {{.*}}16: beq t0, t2, {{.*}} <_start+0xa>
+// CHECK-NEXT: {{.*}}1a: j {{.*}} <_start+0x10>
Index: bolt/test/RISCV/internal-func-reloc.s
===================================================================
--- /dev/null
+++ bolt/test/RISCV/internal-func-reloc.s
@@ -0,0 +1,43 @@
+/// Check that functions with internal relocations are considered "simple" and
+/// get transformed by BOLT. The tests rely on the "remove-nops" optimization:
+/// if nops got removed from the function, it got transformed by BOLT.
+
+// RUN: %clang %cflags -o %t %s
+// RUN: llvm-bolt -o %t.bolt %t
+// RUN: llvm-objdump -d %t.bolt | FileCheck %s
+
+ .text
+
+ /// These options are only used to make the assembler output easier to predict
+ .option norelax
+ .option norvc
+
+ .globl _start
+ .p2align 1
+// CHECK: <_start>:
+// CHECK-NEXT: j 0x{{.*}} <_start>
+_start:
+ nop
+1:
+ j 1b
+ .size _start, .-_start
+
+ .globl f
+ .p2align 1
+// CHECK: <f>:
+// CHECK-NEXT: auipc a0, 0
+// CHECK-NEXT: addi a0, a0, 12
+f:
+ nop
+1:
+ /// Same as "la a0, g" but more explicit
+ auipc a0, %pcrel_hi(g)
+ addi a0, a0, %pcrel_lo(1b)
+ ret
+ .size f, .-f
+
+ .globl g
+ .p2align 1
+g:
+ ret
+ .size g, .-g
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D153346.532910.patch
Type: text/x-patch
Size: 2149 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230620/a9add447/attachment.bin>
More information about the llvm-commits
mailing list