diff options
Diffstat (limited to 'test/CodeGen/MIR/X86/global-value-operands.mir')
-rw-r--r-- | test/CodeGen/MIR/X86/global-value-operands.mir | 127 |
1 files changed, 109 insertions, 18 deletions
diff --git a/test/CodeGen/MIR/X86/global-value-operands.mir b/test/CodeGen/MIR/X86/global-value-operands.mir index 3ea729b00554..394aa397aef4 100644 --- a/test/CodeGen/MIR/X86/global-value-operands.mir +++ b/test/CodeGen/MIR/X86/global-value-operands.mir @@ -20,30 +20,121 @@ 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: - - 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' +body: | + bb.0.entry: + ; 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' +body: | + bb.0.entry: + ; 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: | + 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, _, target-flags(x86-gotpcrel) @G, _ + %rax = MOV64rm %rip, 1, _, target-flags(x86-gotpcrel) @G, _ + %eax = MOV32rm %rax, 1, _, 0, _ + %eax = INC32r %eax, implicit-def %eflags + RETQ %eax ... |