[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