[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