mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
40fefe0084
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242702 91177308-0d34-0410-b5e6-96231b3b80d8
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'
|
|
...
|