[PATCH] D153346: [BOLT][RISCV] Add tests for simple CFG transformations

Job Noorman via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 22 00:40:50 PDT 2023


This revision was automatically updated to reflect the committed changes.
Closed by commit rG7c2604ca196c: [BOLT][RISCV] Add tests for simple CFG transformations (authored by jobnoorman).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D153346/new/

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.533492.patch
Type: text/x-patch
Size: 2149 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230622/bede7070/attachment.bin>


More information about the llvm-commits mailing list