141 lines · plain
1# RUN: llc -mtriple=x86_64 -run-pass none -o - %s | FileCheck %s2# This test ensures that the MIR parser parses global value operands correctly.3 4--- |5 6 @G = external global i327 @0 = external global i328 9 define i32 @inc() {10 entry:11 %a = load i32, ptr @G12 %b = add i32 %a, 113 ret i32 %b14 }15 16 define i32 @inc2() {17 entry:18 %a = load i32, ptr @019 %b = add i32 %a, 120 ret i32 %b21 }22 23 @.$0 = external global i3224 @-_- = external global i3225 @_-_a = external global i3226 @$.-B = external global i3227 28 define i32 @test() {29 entry:30 %a = load i32, ptr @.$031 store i32 %a, ptr @-_-32 %b = load i32, ptr @_-_a33 store i32 %b, ptr @$.-B34 ret i32 %b35 }36 37 @"\01Hello@$%09 \\ World," = external global i3238 39 define i32 @test2() {40 entry:41 %a = load i32, ptr @"\01Hello@$%09 \\ World,"42 ret i32 %a43 }44 45 define i32 @test3() {46 entry:47 %a = load i32, ptr @.$048 store i32 %a, ptr @-_-49 %b = load i32, ptr @_-_a50 store i32 %b, ptr @$.-B51 ret i32 %b52 }53 54 define i32 @tf() {55 entry:56 %a = load i32, ptr @G57 %b = add i32 %a, 158 ret i32 %b59 }60 61...62---63# CHECK: name: inc64name: inc65body: |66 bb.0.entry:67 ; CHECK: $rax = MOV64rm $rip, 1, $noreg, @G, $noreg68 $rax = MOV64rm $rip, 1, _, @G, _69 $eax = MOV32rm $rax, 1, _, 0, _70 $eax = INC32r $eax, implicit-def $eflags71 RET64 $eax72...73---74# CHECK: name: inc275name: inc276body: |77 bb.0.entry:78 ; CHECK: $rax = MOV64rm $rip, 1, $noreg, @0, $noreg79 $rax = MOV64rm $rip, 1, _, @0, _80 $eax = MOV32rm $rax, 1, _, 0, _81 $eax = INC32r $eax, implicit-def $eflags82 RET64 $eax83...84---85name: test86body: |87 bb.0.entry:88 ; CHECK: , @".$0",89 ; CHECK: , @-_-,90 ; CHECK: , @_-_a,91 ; CHECK: , @"$.-B",92 $rax = MOV64rm $rip, 1, _, @.$0, _93 $eax = MOV32rm killed $rax, 1, _, 0, _94 $rcx = MOV64rm $rip, 1, _, @-_-, _95 MOV32mr killed $rcx, 1, _, 0, _, killed $eax96 $rax = MOV64rm $rip, 1, _, @_-_a, _97 $eax = MOV32rm killed $rax, 1, _, 0, _98 $rcx = MOV64rm $rip, 1, _, @$.-B, _99 MOV32mr killed $rcx, 1, _, 0, _, $eax100 RET64 $eax101...102---103name: test2104body: |105 bb.0.entry:106 ; CHECK: , @"\01Hello@$%09 \\ World,",107 $rax = MOV64rm $rip, 1, _, @"\01Hello@$%09 \\ World,", _108 $eax = MOV32rm killed $rax, 1, _, 0, _109 RET64 $eax110...111---112# CHECK: name: test3113name: test3114body: |115 bb.0.entry:116 ; CHECK: , @".$0",117 ; CHECK: , @-_-,118 ; CHECK: , @_-_a + 4,119 ; CHECK: , @"$.-B" - 8,120 $rax = MOV64rm $rip, 1, _, @.$0 + 0, _121 $eax = MOV32rm killed $rax, 1, _, 0, _122 $rcx = MOV64rm $rip, 1, _, @-_- - 0, _123 MOV32mr killed $rcx, 1, _, 0, _, killed $eax124 $rax = MOV64rm $rip, 1, _, @_-_a + 4, _125 $eax = MOV32rm killed $rax, 1, _, 0, _126 $rcx = MOV64rm $rip, 1, _, @$.-B - 8, _127 MOV32mr killed $rcx, 1, _, 0, _, $eax128 RET64 $eax129...130---131# CHECK: name: tf132name: tf133body: |134 bb.0.entry:135 ; CHECK: $rax = MOV64rm $rip, 1, $noreg, target-flags(x86-gotpcrel) @G, $noreg136 $rax = MOV64rm $rip, 1, _, target-flags(x86-gotpcrel) @G, _137 $eax = MOV32rm $rax, 1, _, 0, _138 $eax = INC32r $eax, implicit-def $eflags139 RET64 $eax140...141