mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-22 20:43:44 +02:00
96c6a7e8a7
This commit extends the machine instruction lexer and implements support for the quoted global value tokens. With this change the syntax for the global value identifier tokens becomes identical to the syntax for the global identifier tokens from the LLVM's assembly language. Reviewers: Duncan P. N. Exon Smith llvm-svn: 242702
103 lines
2.3 KiB
YAML
103 lines
2.3 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 global value operands correctly.
|
|
|
|
--- |
|
|
|
|
@G = external global i32
|
|
@0 = external global i32
|
|
|
|
define i32 @inc() {
|
|
entry:
|
|
%a = load i32, i32* @G
|
|
%b = add i32 %a, 1
|
|
ret i32 %b
|
|
}
|
|
|
|
define i32 @inc2() {
|
|
entry:
|
|
%a = load i32, i32* @0
|
|
%b = add i32 %a, 1
|
|
ret i32 %b
|
|
}
|
|
|
|
@.$0 = external global i32
|
|
@-_- = external global i32
|
|
@_-_a = external global i32
|
|
@$.-B = external global i32
|
|
|
|
define i32 @test() {
|
|
entry:
|
|
%a = load i32, i32* @.$0
|
|
store i32 %a, i32* @-_-
|
|
%b = load i32, i32* @_-_a
|
|
store i32 %b, i32* @$.-B
|
|
ret i32 %b
|
|
}
|
|
|
|
@"\01Hello@$%09 \\ World," = external global i32
|
|
|
|
define i32 @test2() {
|
|
entry:
|
|
%a = load i32, i32* @"\01Hello@$%09 \\ World,"
|
|
ret i32 %a
|
|
}
|
|
|
|
...
|
|
---
|
|
# CHECK: name: inc
|
|
name: inc
|
|
body:
|
|
- id: 0
|
|
name: entry
|
|
instructions:
|
|
# CHECK: - '%rax = MOV64rm %rip, 1, _, @G, _'
|
|
- '%rax = MOV64rm %rip, 1, _, @G, _'
|
|
- '%eax = MOV32rm %rax, 1, _, 0, _'
|
|
- '%eax = INC32r %eax, implicit-def %eflags'
|
|
- 'RETQ %eax'
|
|
...
|
|
---
|
|
# CHECK: name: inc2
|
|
name: inc2
|
|
body:
|
|
- id: 0
|
|
name: entry
|
|
instructions:
|
|
# CHECK: - '%rax = MOV64rm %rip, 1, _, @0, _'
|
|
- '%rax = MOV64rm %rip, 1, _, @0, _'
|
|
- '%eax = MOV32rm %rax, 1, _, 0, _'
|
|
- '%eax = INC32r %eax, implicit-def %eflags'
|
|
- 'RETQ %eax'
|
|
...
|
|
---
|
|
name: test
|
|
body:
|
|
- id: 0
|
|
name: entry
|
|
instructions:
|
|
# CHECK: , @".$0",
|
|
# CHECK: , @-_-,
|
|
# CHECK: , @_-_a,
|
|
# CHECK: , @"$.-B",
|
|
- '%rax = MOV64rm %rip, 1, _, @.$0, _'
|
|
- '%eax = MOV32rm killed %rax, 1, _, 0, _'
|
|
- '%rcx = MOV64rm %rip, 1, _, @-_-, _'
|
|
- 'MOV32mr killed %rcx, 1, _, 0, _, killed %eax'
|
|
- '%rax = MOV64rm %rip, 1, _, @_-_a, _'
|
|
- '%eax = MOV32rm killed %rax, 1, _, 0, _'
|
|
- '%rcx = MOV64rm %rip, 1, _, @$.-B, _'
|
|
- 'MOV32mr killed %rcx, 1, _, 0, _, %eax'
|
|
- 'RETQ %eax'
|
|
...
|
|
---
|
|
name: test2
|
|
body:
|
|
- id: 0
|
|
name: entry
|
|
instructions:
|
|
# CHECK: , @"\01Hello@$%09 \5C World,",
|
|
- '%rax = MOV64rm %rip, 1, _, @"\01Hello@$%09 \\ World,", _'
|
|
- '%eax = MOV32rm killed %rax, 1, _, 0, _'
|
|
- 'RETQ %eax'
|
|
...
|