xref: /llvm-project/llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/x86-basic.ll.expected (revision caf22ec64a03bb2f02fd2e42756eb7ef83d5ac25)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2;; Check that we accept functions with '$' in the name.
3; RUN: llc -mtriple=x86_64 < %s | FileCheck %s
4
5;; Check that we accept .Ldsolocal$local: below the function label.
6; RUN: llc -mtriple=x86_64 -relocation-model=pic < %s | FileCheck %s --check-prefix=PIC
7
8;; Check that we accept .seh_proc below the function label.
9; RUN: llc -mtriple=x86_64-windows -relocation-model=pic < %s | FileCheck %s --check-prefix=WIN
10
11@gv0 = dso_local global i32 0, align 4
12@gv1 = dso_preemptable global i32 0, align 4
13
14define hidden i32 @"_Z54bar$ompvariant$bar"() {
15; CHECK-LABEL: _Z54bar$ompvariant$bar:
16; CHECK:       # %bb.0: # %entry
17; CHECK-NEXT:    movl $2, %eax
18; CHECK-NEXT:    retq
19;
20; PIC-LABEL: _Z54bar$ompvariant$bar:
21; PIC:       # %bb.0: # %entry
22; PIC-NEXT:    movl $2, %eax
23; PIC-NEXT:    retq
24;
25; WIN-LABEL: _Z54bar$ompvariant$bar:
26; WIN:       # %bb.0: # %entry
27; WIN-NEXT:    movl $2, %eax
28; WIN-NEXT:    retq
29entry:
30  ret i32 2
31}
32
33define dso_local i32 @dsolocal() {
34; CHECK-LABEL: dsolocal:
35; CHECK:       # %bb.0: # %entry
36; CHECK-NEXT:    pushq %rax
37; CHECK-NEXT:    .cfi_def_cfa_offset 16
38; CHECK-NEXT:    callq ext@PLT
39; CHECK-NEXT:    movl $2, %eax
40; CHECK-NEXT:    popq %rcx
41; CHECK-NEXT:    .cfi_def_cfa_offset 8
42; CHECK-NEXT:    retq
43;
44; PIC-LABEL: dsolocal:
45; PIC:       # %bb.0: # %entry
46; PIC-NEXT:    pushq %rax
47; PIC-NEXT:    .cfi_def_cfa_offset 16
48; PIC-NEXT:    callq ext@PLT
49; PIC-NEXT:    movl $2, %eax
50; PIC-NEXT:    popq %rcx
51; PIC-NEXT:    .cfi_def_cfa_offset 8
52; PIC-NEXT:    retq
53;
54; WIN-LABEL: dsolocal:
55; WIN:       # %bb.0: # %entry
56; WIN-NEXT:    subq $40, %rsp
57; WIN-NEXT:    .seh_stackalloc 40
58; WIN-NEXT:    .seh_endprologue
59; WIN-NEXT:    callq ext
60; WIN-NEXT:    movl $2, %eax
61; WIN-NEXT:    addq $40, %rsp
62; WIN-NEXT:    retq
63; WIN-NEXT:    .seh_endproc
64entry:
65  call void @ext()
66  ret i32 2
67}
68
69declare void @ext()
70
71define i32 @load() {
72; CHECK-LABEL: load:
73; CHECK:       # %bb.0: # %entry
74; CHECK-NEXT:    movl gv0(%rip), %eax
75; CHECK-NEXT:    movq gv1@GOTPCREL(%rip), %rcx
76; CHECK-NEXT:    addl (%rcx), %eax
77; CHECK-NEXT:    retq
78;
79; PIC-LABEL: load:
80; PIC:       # %bb.0: # %entry
81; PIC-NEXT:    movl .Lgv0$local(%rip), %eax
82; PIC-NEXT:    movq gv1@GOTPCREL(%rip), %rcx
83; PIC-NEXT:    addl (%rcx), %eax
84; PIC-NEXT:    retq
85;
86; WIN-LABEL: load:
87; WIN:       # %bb.0: # %entry
88; WIN-NEXT:    movl gv0(%rip), %eax
89; WIN-NEXT:    addl gv1(%rip), %eax
90; WIN-NEXT:    retq
91entry:
92  %a = load i32, i32* @gv0
93  %b = load i32, i32* @gv1
94  %c = add i32 %a, %b
95  ret i32 %c
96}
97
98declare i32 @pers(...)
99
100define i32 @eh() personality ptr @pers {
101; CHECK-LABEL: eh:
102; CHECK:       # %bb.0:
103; CHECK-NEXT:    xorl %eax, %eax
104; CHECK-NEXT:    retq
105;
106; PIC-LABEL: eh:
107; PIC:       # %bb.0:
108; PIC-NEXT:    xorl %eax, %eax
109; PIC-NEXT:    retq
110;
111; WIN-LABEL: eh:
112; WIN:       # %bb.0:
113; WIN-NEXT:    xorl %eax, %eax
114; WIN-NEXT:    retq
115; WIN-NEXT:  .Lfunc_end0:
116; WIN-NEXT:    .seh_handlerdata
117; WIN-NEXT:    .text
118; WIN-NEXT:    .seh_endproc
119  ret i32 0
120}
121