mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
438a4919fd
This commit serializes machine basic block operands. The machine basic block operands use the following syntax: %bb.<id>[.<name>] This commit also modifies the YAML representation for the machine basic blocks - a new, required field 'id' is added to the MBB YAML mapping. The id is used to resolve the MBB references to the actual MBBs. And while the name of the MBB can be included in a MBB reference, this name isn't used to resolve MBB references - as it's possible that multiple MBBs will reference the same BB and thus they will have the same name. If the name is specified, the parser will verify that it is equal to the name of the MBB with the specified id. Reviewers: Duncan P. N. Exon Smith Differential Revision: http://reviews.llvm.org/D10608 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240792 91177308-0d34-0410-b5e6-96231b3b80d8
76 lines
1.4 KiB
YAML
76 lines
1.4 KiB
YAML
# RUN: llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o /dev/null %s | FileCheck %s
|
|
# This test ensures that the MIR parser parses machine basic block operands.
|
|
|
|
--- |
|
|
|
|
define i32 @foo(i32* %p) {
|
|
entry:
|
|
%a = load i32, i32* %p
|
|
%0 = icmp sle i32 %a, 10
|
|
br i1 %0, label %less, label %exit
|
|
|
|
less:
|
|
ret i32 0
|
|
|
|
exit:
|
|
ret i32 %a
|
|
}
|
|
|
|
define i32 @bar(i32* %p) {
|
|
entry:
|
|
%a = load i32, i32* %p
|
|
%b = icmp sle i32 %a, 10
|
|
br i1 %b, label %0, label %1
|
|
|
|
; <label>:0
|
|
ret i32 0
|
|
|
|
; <label>:1
|
|
ret i32 %a
|
|
}
|
|
|
|
...
|
|
---
|
|
# CHECK: name: foo
|
|
name: foo
|
|
body:
|
|
# CHECK: name: entry
|
|
- id: 0
|
|
name: entry
|
|
instructions:
|
|
- '%eax = MOV32rm %rdi, 1, _, 0, _'
|
|
# CHECK: - 'CMP32ri8 %eax, 10
|
|
# CHECK-NEXT: - 'JG_1 %bb.2.exit
|
|
- 'CMP32ri8 %eax, 10'
|
|
- 'JG_1 %bb.2.exit'
|
|
# CHECK: name: less
|
|
- id: 1
|
|
name: less
|
|
instructions:
|
|
- '%eax = MOV32r0'
|
|
- id: 2
|
|
name: exit
|
|
instructions:
|
|
- 'RETQ %eax'
|
|
...
|
|
---
|
|
# CHECK: name: bar
|
|
name: bar
|
|
body:
|
|
# CHECK: name: entry
|
|
- id: 0
|
|
name: entry
|
|
instructions:
|
|
- '%eax = MOV32rm %rdi, 1, _, 0, _'
|
|
# CHECK: - 'CMP32ri8 %eax, 10
|
|
# CHECK-NEXT: - 'JG_1 %bb.2
|
|
- 'CMP32ri8 %eax, 10'
|
|
- 'JG_1 %bb.3'
|
|
- id: 1
|
|
instructions:
|
|
- '%eax = MOV32r0'
|
|
- id: 3
|
|
instructions:
|
|
- 'RETQ %eax'
|
|
...
|