1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
- ; RUN: llc -O0 -mtriple=x86_64-unknown-linux-gnu -o - %s | FileCheck %s -check-prefix=X640
3
- ; RUN: llc -O0 -mtriple=i686-unknown -o - %s | FileCheck %s -check-prefix=6860
4
- ; RUN: llc -mtriple=x86_64-unknown-linux-gnu -o - %s | FileCheck %s -check-prefix=X64
5
- ; RUN: llc -mtriple=i686-unknown -o - %s | FileCheck %s -check-prefix=686
2
+ ; RUN: llc -O0 -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s -check-prefix=X64-O0
3
+ ; RUN: llc -O0 -mtriple=i686-unknown < %s | FileCheck %s -check-prefix=X86-O0
4
+ ; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s -check-prefix=X64
5
+ ; RUN: llc -mtriple=i686-unknown < %s | FileCheck %s -check-prefix=X86
6
6
7
7
@var_22 = external dso_local global i16 , align 2
8
8
@var_27 = external dso_local global i16 , align 2
9
9
10
10
define void @foo () {
11
- ; X640 -LABEL: foo:
12
- ; X640 : # %bb.0: # %bb
13
- ; X640 -NEXT: movzwl var_22, %eax
14
- ; X640 -NEXT: movzwl var_27, %ecx
15
- ; X640 -NEXT: xorl %ecx, %eax
16
- ; X640 -NEXT: movzwl var_27, %ecx
17
- ; X640 -NEXT: xorl %ecx, %eax
18
- ; X640 -NEXT: cltq
19
- ; X640 -NEXT: movq %rax, -{{[0-9]+}}(%rsp)
20
- ; X640 -NEXT: movzwl var_22, %eax
21
- ; X640 -NEXT: movzwl var_27, %ecx
22
- ; X640 -NEXT: xorl %ecx, %eax
23
- ; X640 -NEXT: movzwl var_27, %ecx
24
- ; X640 -NEXT: xorl %ecx, %eax
25
- ; X640 -NEXT: cltq
26
- ; X640 -NEXT: movzwl var_27, %ecx
27
- ; X640 -NEXT: subl $16610, %ecx # imm = 0x40E2
28
- ; X640 -NEXT: movl %ecx, %ecx
29
- ; X640 -NEXT: # kill: def $rcx killed $ecx
30
- ; X640 -NEXT: # kill: def $cl killed $rcx
31
- ; X640 -NEXT: sarq %cl, %rax
32
- ; X640 -NEXT: movb %al, %cl
33
- ; X640 -NEXT: # implicit-def: $rax
34
- ; X640 -NEXT: movb %cl, (%rax)
35
- ; X640 -NEXT: retq
11
+ ; X64-O0 -LABEL: foo:
12
+ ; X64-O0 : # %bb.0: # %bb
13
+ ; X64-O0 -NEXT: movzwl var_22, %eax
14
+ ; X64-O0 -NEXT: movzwl var_27, %ecx
15
+ ; X64-O0 -NEXT: xorl %ecx, %eax
16
+ ; X64-O0 -NEXT: movzwl var_27, %ecx
17
+ ; X64-O0 -NEXT: xorl %ecx, %eax
18
+ ; X64-O0 -NEXT: cltq
19
+ ; X64-O0 -NEXT: movq %rax, -{{[0-9]+}}(%rsp)
20
+ ; X64-O0 -NEXT: movzwl var_22, %eax
21
+ ; X64-O0 -NEXT: movzwl var_27, %ecx
22
+ ; X64-O0 -NEXT: xorl %ecx, %eax
23
+ ; X64-O0 -NEXT: movzwl var_27, %ecx
24
+ ; X64-O0 -NEXT: xorl %ecx, %eax
25
+ ; X64-O0 -NEXT: cltq
26
+ ; X64-O0 -NEXT: movzwl var_27, %ecx
27
+ ; X64-O0 -NEXT: subl $16610, %ecx # imm = 0x40E2
28
+ ; X64-O0 -NEXT: movl %ecx, %ecx
29
+ ; X64-O0 -NEXT: # kill: def $rcx killed $ecx
30
+ ; X64-O0 -NEXT: # kill: def $cl killed $rcx
31
+ ; X64-O0 -NEXT: sarq %cl, %rax
32
+ ; X64-O0 -NEXT: movb %al, %cl
33
+ ; X64-O0 -NEXT: # implicit-def: $rax
34
+ ; X64-O0 -NEXT: movb %cl, (%rax)
35
+ ; X64-O0 -NEXT: retq
36
36
;
37
- ; 6860 -LABEL: foo:
38
- ; 6860 : # %bb.0: # %bb
39
- ; 6860 -NEXT: pushl %ebp
40
- ; 6860 -NEXT: .cfi_def_cfa_offset 8
41
- ; 6860 -NEXT: .cfi_offset %ebp, -8
42
- ; 6860 -NEXT: movl %esp, %ebp
43
- ; 6860 -NEXT: .cfi_def_cfa_register %ebp
44
- ; 6860 -NEXT: andl $-8, %esp
45
- ; 6860 -NEXT: subl $24, %esp
46
- ; 6860 -NEXT: movzwl var_22, %eax
47
- ; 6860 -NEXT: movl %eax, {{[0-9]+}}(%esp)
48
- ; 6860 -NEXT: movl $0, {{[0-9]+}}(%esp)
49
- ; 6860 -NEXT: movzwl var_22, %edx
50
- ; 6860 -NEXT: movb var_27, %cl
51
- ; 6860 -NEXT: addb $30, %cl
52
- ; 6860 -NEXT: movb %cl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
53
- ; 6860 -NEXT: xorl %eax, %eax
54
- ; 6860 -NEXT: shrdl %cl, %eax, %edx
55
- ; 6860 -NEXT: movb {{[-0-9]+}}(%e{{[sb]}}p), %cl # 1-byte Reload
56
- ; 6860 -NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
57
- ; 6860 -NEXT: testb $32, %cl
58
- ; 6860 -NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
59
- ; 6860 -NEXT: jne .LBB0_2
60
- ; 6860 -NEXT: # %bb.1: # %bb
61
- ; 6860 -NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
62
- ; 6860 -NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
63
- ; 6860 -NEXT: .LBB0_2: # %bb
64
- ; 6860 -NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
65
- ; 6860 -NEXT: movb %al, %cl
66
- ; 6860 -NEXT: # implicit-def: $eax
67
- ; 6860 -NEXT: movb %cl, (%eax)
68
- ; 6860 -NEXT: movl %ebp, %esp
69
- ; 6860 -NEXT: popl %ebp
70
- ; 6860 -NEXT: .cfi_def_cfa %esp, 4
71
- ; 6860 -NEXT: retl
37
+ ; X86-O0 -LABEL: foo:
38
+ ; X86-O0 : # %bb.0: # %bb
39
+ ; X86-O0 -NEXT: pushl %ebp
40
+ ; X86-O0 -NEXT: .cfi_def_cfa_offset 8
41
+ ; X86-O0 -NEXT: .cfi_offset %ebp, -8
42
+ ; X86-O0 -NEXT: movl %esp, %ebp
43
+ ; X86-O0 -NEXT: .cfi_def_cfa_register %ebp
44
+ ; X86-O0 -NEXT: andl $-8, %esp
45
+ ; X86-O0 -NEXT: subl $24, %esp
46
+ ; X86-O0 -NEXT: movzwl var_22, %eax
47
+ ; X86-O0 -NEXT: movl %eax, {{[0-9]+}}(%esp)
48
+ ; X86-O0 -NEXT: movl $0, {{[0-9]+}}(%esp)
49
+ ; X86-O0 -NEXT: movzwl var_22, %edx
50
+ ; X86-O0 -NEXT: movb var_27, %cl
51
+ ; X86-O0 -NEXT: addb $30, %cl
52
+ ; X86-O0 -NEXT: movb %cl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
53
+ ; X86-O0 -NEXT: xorl %eax, %eax
54
+ ; X86-O0 -NEXT: shrdl %cl, %eax, %edx
55
+ ; X86-O0 -NEXT: movb {{[-0-9]+}}(%e{{[sb]}}p), %cl # 1-byte Reload
56
+ ; X86-O0 -NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
57
+ ; X86-O0 -NEXT: testb $32, %cl
58
+ ; X86-O0 -NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
59
+ ; X86-O0 -NEXT: jne .LBB0_2
60
+ ; X86-O0 -NEXT: # %bb.1: # %bb
61
+ ; X86-O0 -NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
62
+ ; X86-O0 -NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
63
+ ; X86-O0 -NEXT: .LBB0_2: # %bb
64
+ ; X86-O0 -NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
65
+ ; X86-O0 -NEXT: movb %al, %cl
66
+ ; X86-O0 -NEXT: # implicit-def: $eax
67
+ ; X86-O0 -NEXT: movb %cl, (%eax)
68
+ ; X86-O0 -NEXT: movl %ebp, %esp
69
+ ; X86-O0 -NEXT: popl %ebp
70
+ ; X86-O0 -NEXT: .cfi_def_cfa %esp, 4
71
+ ; X86-O0 -NEXT: retl
72
72
;
73
73
; X64-LABEL: foo:
74
74
; X64: # %bb.0: # %bb
@@ -80,32 +80,32 @@ define void @foo() {
80
80
; X64-NEXT: movb %al, (%rax)
81
81
; X64-NEXT: retq
82
82
;
83
- ; 686 -LABEL: foo:
84
- ; 686 : # %bb.0: # %bb
85
- ; 686 -NEXT: pushl %ebp
86
- ; 686 -NEXT: .cfi_def_cfa_offset 8
87
- ; 686 -NEXT: .cfi_offset %ebp, -8
88
- ; 686 -NEXT: movl %esp, %ebp
89
- ; 686 -NEXT: .cfi_def_cfa_register %ebp
90
- ; 686 -NEXT: andl $-8, %esp
91
- ; 686 -NEXT: subl $8, %esp
92
- ; 686 -NEXT: movzbl var_27, %ecx
93
- ; 686 -NEXT: movzwl var_22, %eax
94
- ; 686 -NEXT: movl %eax, (%esp)
95
- ; 686 -NEXT: movl $0, {{[0-9]+}}(%esp)
96
- ; 686 -NEXT: addb $30, %cl
97
- ; 686 -NEXT: xorl %edx, %edx
98
- ; 686 -NEXT: shrdl %cl, %edx, %eax
99
- ; 686 -NEXT: testb $32, %cl
100
- ; 686 -NEXT: jne .LBB0_2
101
- ; 686 -NEXT: # %bb.1: # %bb
102
- ; 686 -NEXT: movl %eax, %edx
103
- ; 686 -NEXT: .LBB0_2: # %bb
104
- ; 686 -NEXT: movb %dl, (%eax)
105
- ; 686 -NEXT: movl %ebp, %esp
106
- ; 686 -NEXT: popl %ebp
107
- ; 686 -NEXT: .cfi_def_cfa %esp, 4
108
- ; 686 -NEXT: retl
83
+ ; X86 -LABEL: foo:
84
+ ; X86 : # %bb.0: # %bb
85
+ ; X86 -NEXT: pushl %ebp
86
+ ; X86 -NEXT: .cfi_def_cfa_offset 8
87
+ ; X86 -NEXT: .cfi_offset %ebp, -8
88
+ ; X86 -NEXT: movl %esp, %ebp
89
+ ; X86 -NEXT: .cfi_def_cfa_register %ebp
90
+ ; X86 -NEXT: andl $-8, %esp
91
+ ; X86 -NEXT: subl $8, %esp
92
+ ; X86 -NEXT: movzbl var_27, %ecx
93
+ ; X86 -NEXT: movzwl var_22, %eax
94
+ ; X86 -NEXT: movl %eax, (%esp)
95
+ ; X86 -NEXT: movl $0, {{[0-9]+}}(%esp)
96
+ ; X86 -NEXT: addb $30, %cl
97
+ ; X86 -NEXT: xorl %edx, %edx
98
+ ; X86 -NEXT: shrdl %cl, %edx, %eax
99
+ ; X86 -NEXT: testb $32, %cl
100
+ ; X86 -NEXT: jne .LBB0_2
101
+ ; X86 -NEXT: # %bb.1: # %bb
102
+ ; X86 -NEXT: movl %eax, %edx
103
+ ; X86 -NEXT: .LBB0_2: # %bb
104
+ ; X86 -NEXT: movb %dl, (%eax)
105
+ ; X86 -NEXT: movl %ebp, %esp
106
+ ; X86 -NEXT: popl %ebp
107
+ ; X86 -NEXT: .cfi_def_cfa %esp, 4
108
+ ; X86 -NEXT: retl
109
109
bb:
110
110
%tmp = alloca i64 , align 8
111
111
%tmp1 = load i16 , ptr @var_22 , align 2
0 commit comments