You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			141 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # RUN: llc -march=x86-64 -run-pass none -o - %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
 | |
|   }
 | |
| 
 | |
|   define i32 @test3() {
 | |
|   entry:
 | |
|     %a = load i32, i32* @.$0
 | |
|     store i32 %a, i32* @-_-
 | |
|     %b = load i32, i32* @_-_a
 | |
|     store i32 %b, i32* @$.-B
 | |
|     ret i32 %b
 | |
|   }
 | |
| 
 | |
|   define i32 @tf() {
 | |
|   entry:
 | |
|     %a = load i32, i32* @G
 | |
|     %b = add i32 %a, 1
 | |
|     ret i32 %b
 | |
|   }
 | |
| 
 | |
| ...
 | |
| ---
 | |
| # CHECK: name: inc
 | |
| name: inc
 | |
| body: |
 | |
|   bb.0.entry:
 | |
|     ; CHECK: %rax = MOV64rm %rip, 1, %noreg, @G, %noreg
 | |
|     %rax = MOV64rm %rip, 1, _, @G, _
 | |
|     %eax = MOV32rm %rax, 1, _, 0, _
 | |
|     %eax = INC32r %eax, implicit-def %eflags
 | |
|     RETQ %eax
 | |
| ...
 | |
| ---
 | |
| # CHECK: name: inc2
 | |
| name: inc2
 | |
| body: |
 | |
|   bb.0.entry:
 | |
|     ; CHECK: %rax = MOV64rm %rip, 1, %noreg, @0, %noreg
 | |
|     %rax = MOV64rm %rip, 1, _, @0, _
 | |
|     %eax = MOV32rm %rax, 1, _, 0, _
 | |
|     %eax = INC32r %eax, implicit-def %eflags
 | |
|     RETQ %eax
 | |
| ...
 | |
| ---
 | |
| name:            test
 | |
| body: |
 | |
|   bb.0.entry:
 | |
|     ; 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: |
 | |
|   bb.0.entry:
 | |
|     ; CHECK: , @"\01Hello@$%09 \5C World,",
 | |
|     %rax = MOV64rm %rip, 1, _, @"\01Hello@$%09 \\ World,", _
 | |
|     %eax = MOV32rm killed %rax, 1, _, 0, _
 | |
|     RETQ %eax
 | |
| ...
 | |
| ---
 | |
| # CHECK: name: test3
 | |
| name:            test3
 | |
| body: |
 | |
|   bb.0.entry:
 | |
|     ; CHECK: , @".$0",
 | |
|     ; CHECK: , @-_-,
 | |
|     ; CHECK: , @_-_a + 4,
 | |
|     ; CHECK: , @"$.-B" - 8,
 | |
|     %rax = MOV64rm %rip, 1, _, @.$0 + 0, _
 | |
|     %eax = MOV32rm killed %rax, 1, _, 0, _
 | |
|     %rcx = MOV64rm %rip, 1, _, @-_- - 0, _
 | |
|     MOV32mr killed %rcx, 1, _, 0, _, killed %eax
 | |
|     %rax = MOV64rm %rip, 1, _, @_-_a + 4, _
 | |
|     %eax = MOV32rm killed %rax, 1, _, 0, _
 | |
|     %rcx = MOV64rm %rip, 1, _, @$.-B - 8, _
 | |
|     MOV32mr killed %rcx, 1, _, 0, _, %eax
 | |
|     RETQ %eax
 | |
| ...
 | |
| ---
 | |
| # CHECK: name: tf
 | |
| name: tf
 | |
| body: |
 | |
|   bb.0.entry:
 | |
|   ; CHECK: %rax = MOV64rm %rip, 1, %noreg, target-flags(x86-gotpcrel) @G, %noreg
 | |
|     %rax = MOV64rm %rip, 1, _, target-flags(x86-gotpcrel) @G, _
 | |
|     %eax = MOV32rm %rax, 1, _, 0, _
 | |
|     %eax = INC32r %eax, implicit-def %eflags
 | |
|     RETQ %eax
 | |
| ...
 |