MIR Parser: Report an error when a virtual register is redefined.
[oota-llvm.git] / test / CodeGen / MIR / X86 / global-value-operands.mir
1 # RUN: llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o /dev/null %s | FileCheck %s
2 # This test ensures that the MIR parser parses global value operands correctly.
3
4 --- |
5
6   @G = external global i32
7   @0 = external global i32
8
9   define i32 @inc() {
10   entry:
11     %a = load i32, i32* @G
12     %b = add i32 %a, 1
13     ret i32 %b
14   }
15
16   define i32 @inc2() {
17   entry:
18     %a = load i32, i32* @0
19     %b = add i32 %a, 1
20     ret i32 %b
21   }
22
23   @.$0  = external global i32
24   @-_-  = external global i32
25   @_-_a = external global i32
26   @$.-B = external global i32
27
28   define i32 @test() {
29   entry:
30     %a = load i32, i32* @.$0
31     store i32 %a, i32* @-_-
32     %b = load i32, i32* @_-_a
33     store i32 %b, i32* @$.-B
34     ret i32 %b
35   }
36
37   @"\01Hello@$%09 \\ World," = external global i32
38
39   define i32 @test2() {
40   entry:
41     %a = load i32, i32* @"\01Hello@$%09 \\ World,"
42     ret i32 %a
43   }
44
45 ...
46 ---
47 # CHECK: name: inc
48 name: inc
49 body:
50   - id: 0
51     name: entry
52     instructions:
53       # CHECK: - '%rax = MOV64rm %rip, 1, _, @G, _'
54       - '%rax = MOV64rm %rip, 1, _, @G, _'
55       - '%eax = MOV32rm %rax, 1, _, 0, _'
56       - '%eax = INC32r %eax, implicit-def %eflags'
57       - 'RETQ %eax'
58 ...
59 ---
60 # CHECK: name: inc2
61 name: inc2
62 body:
63   - id: 0
64     name: entry
65     instructions:
66       # CHECK: - '%rax = MOV64rm %rip, 1, _, @0, _'
67       - '%rax = MOV64rm %rip, 1, _, @0, _'
68       - '%eax = MOV32rm %rax, 1, _, 0, _'
69       - '%eax = INC32r %eax, implicit-def %eflags'
70       - 'RETQ %eax'
71 ...
72 ---
73 name:            test
74 body:
75   - id:              0
76     name:            entry
77     instructions:
78       # CHECK: , @".$0",
79       # CHECK: , @-_-,
80       # CHECK: , @_-_a,
81       # CHECK: , @"$.-B",
82       - '%rax = MOV64rm %rip, 1, _, @.$0, _'
83       - '%eax = MOV32rm killed %rax, 1, _, 0, _'
84       - '%rcx = MOV64rm %rip, 1, _, @-_-, _'
85       - 'MOV32mr killed %rcx, 1, _, 0, _, killed %eax'
86       - '%rax = MOV64rm %rip, 1, _, @_-_a, _'
87       - '%eax = MOV32rm killed %rax, 1, _, 0, _'
88       - '%rcx = MOV64rm %rip, 1, _, @$.-B, _'
89       - 'MOV32mr killed %rcx, 1, _, 0, _, %eax'
90       - 'RETQ %eax'
91 ...
92 ---
93 name:            test2
94 body:
95   - id:              0
96     name:            entry
97     instructions:
98       # CHECK: , @"\01Hello@$%09 \5C World,",
99       - '%rax = MOV64rm %rip, 1, _, @"\01Hello@$%09 \\ World,", _'
100       - '%eax = MOV32rm killed %rax, 1, _, 0, _'
101       - 'RETQ %eax'
102 ...