Skip to content

Commit 746b101

Browse files
committed
[X86]: Created new test
1 parent 1245b6b commit 746b101

File tree

1 file changed

+171
-0
lines changed

1 file changed

+171
-0
lines changed
Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+bmi | FileCheck %s --check-prefix=X86-WITH-BMI
3+
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+bmi | FileCheck %s --check-prefix=X64-WITH-BMI
4+
; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s --check-prefix=X86-WITHOUT-BMI
5+
; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefix=X64-WITHOUT-BMI
6+
7+
define i32 @not_rewrite_demorgan_i32(i32 %a, i32 %b) nounwind {
8+
; X86-WITH-BMI-LABEL: not_rewrite_demorgan_i32:
9+
; X86-WITH-BMI: # %bb.0:
10+
; X86-WITH-BMI-NEXT: movl {{[0-9]+}}(%esp), %eax
11+
; X86-WITH-BMI-NEXT: orl {{[0-9]+}}(%esp), %eax
12+
; X86-WITH-BMI-NEXT: notl %eax
13+
; X86-WITH-BMI-NEXT: retl
14+
;
15+
; X64-WITH-BMI-LABEL: not_rewrite_demorgan_i32:
16+
; X64-WITH-BMI: # %bb.0:
17+
; X64-WITH-BMI-NEXT: movl %edi, %eax
18+
; X64-WITH-BMI-NEXT: orl %esi, %eax
19+
; X64-WITH-BMI-NEXT: notl %eax
20+
; X64-WITH-BMI-NEXT: retq
21+
;
22+
; X86-WITHOUT-BMI-LABEL: not_rewrite_demorgan_i32:
23+
; X86-WITHOUT-BMI: # %bb.0:
24+
; X86-WITHOUT-BMI-NEXT: movl {{[0-9]+}}(%esp), %eax
25+
; X86-WITHOUT-BMI-NEXT: orl {{[0-9]+}}(%esp), %eax
26+
; X86-WITHOUT-BMI-NEXT: notl %eax
27+
; X86-WITHOUT-BMI-NEXT: retl
28+
;
29+
; X64-WITHOUT-BMI-LABEL: not_rewrite_demorgan_i32:
30+
; X64-WITHOUT-BMI: # %bb.0:
31+
; X64-WITHOUT-BMI-NEXT: movl %edi, %eax
32+
; X64-WITHOUT-BMI-NEXT: orl %esi, %eax
33+
; X64-WITHOUT-BMI-NEXT: notl %eax
34+
; X64-WITHOUT-BMI-NEXT: retq
35+
%temp = or i32 %b, %a
36+
%res = xor i32 %temp, -1
37+
ret i32 %res
38+
}
39+
40+
define i32 @rewrite_demorgan_i32(i32 %a, i32 %b, i32 %c) nounwind {
41+
; X86-WITH-BMI-LABEL: rewrite_demorgan_i32:
42+
; X86-WITH-BMI: # %bb.0:
43+
; X86-WITH-BMI-NEXT: movl {{[0-9]+}}(%esp), %eax
44+
; X86-WITH-BMI-NEXT: movl {{[0-9]+}}(%esp), %ecx
45+
; X86-WITH-BMI-NEXT: movl {{[0-9]+}}(%esp), %edx
46+
; X86-WITH-BMI-NEXT: notl %edx
47+
; X86-WITH-BMI-NEXT: andnl %edx, %ecx, %ecx
48+
; X86-WITH-BMI-NEXT: andnl %ecx, %eax, %eax
49+
; X86-WITH-BMI-NEXT: retl
50+
;
51+
; X64-WITH-BMI-LABEL: rewrite_demorgan_i32:
52+
; X64-WITH-BMI: # %bb.0:
53+
; X64-WITH-BMI-NEXT: notl %edi
54+
; X64-WITH-BMI-NEXT: andnl %edi, %esi, %eax
55+
; X64-WITH-BMI-NEXT: andnl %eax, %edx, %eax
56+
; X64-WITH-BMI-NEXT: retq
57+
;
58+
; X86-WITHOUT-BMI-LABEL: rewrite_demorgan_i32:
59+
; X86-WITHOUT-BMI: # %bb.0:
60+
; X86-WITHOUT-BMI-NEXT: movl {{[0-9]+}}(%esp), %eax
61+
; X86-WITHOUT-BMI-NEXT: orl {{[0-9]+}}(%esp), %eax
62+
; X86-WITHOUT-BMI-NEXT: orl {{[0-9]+}}(%esp), %eax
63+
; X86-WITHOUT-BMI-NEXT: notl %eax
64+
; X86-WITHOUT-BMI-NEXT: retl
65+
;
66+
; X64-WITHOUT-BMI-LABEL: rewrite_demorgan_i32:
67+
; X64-WITHOUT-BMI: # %bb.0:
68+
; X64-WITHOUT-BMI-NEXT: movl %edi, %eax
69+
; X64-WITHOUT-BMI-NEXT: orl %esi, %eax
70+
; X64-WITHOUT-BMI-NEXT: orl %edx, %eax
71+
; X64-WITHOUT-BMI-NEXT: notl %eax
72+
; X64-WITHOUT-BMI-NEXT: retq
73+
%and.demorgan = or i32 %b, %a
74+
%and3.demorgan = or i32 %and.demorgan, %c
75+
%and3 = xor i32 %and3.demorgan, -1
76+
ret i32 %and3
77+
}
78+
79+
define i64 @not_rewrite_demorgan_i64(i64 %a, i64 %b) nounwind {
80+
; X86-WITH-BMI-LABEL: not_rewrite_demorgan_i64:
81+
; X86-WITH-BMI: # %bb.0:
82+
; X86-WITH-BMI-NEXT: movl {{[0-9]+}}(%esp), %eax
83+
; X86-WITH-BMI-NEXT: movl {{[0-9]+}}(%esp), %edx
84+
; X86-WITH-BMI-NEXT: orl {{[0-9]+}}(%esp), %edx
85+
; X86-WITH-BMI-NEXT: orl {{[0-9]+}}(%esp), %eax
86+
; X86-WITH-BMI-NEXT: notl %eax
87+
; X86-WITH-BMI-NEXT: notl %edx
88+
; X86-WITH-BMI-NEXT: retl
89+
;
90+
; X64-WITH-BMI-LABEL: not_rewrite_demorgan_i64:
91+
; X64-WITH-BMI: # %bb.0:
92+
; X64-WITH-BMI-NEXT: movq %rdi, %rax
93+
; X64-WITH-BMI-NEXT: orq %rsi, %rax
94+
; X64-WITH-BMI-NEXT: notq %rax
95+
; X64-WITH-BMI-NEXT: retq
96+
;
97+
; X86-WITHOUT-BMI-LABEL: not_rewrite_demorgan_i64:
98+
; X86-WITHOUT-BMI: # %bb.0:
99+
; X86-WITHOUT-BMI-NEXT: movl {{[0-9]+}}(%esp), %eax
100+
; X86-WITHOUT-BMI-NEXT: movl {{[0-9]+}}(%esp), %edx
101+
; X86-WITHOUT-BMI-NEXT: orl {{[0-9]+}}(%esp), %edx
102+
; X86-WITHOUT-BMI-NEXT: orl {{[0-9]+}}(%esp), %eax
103+
; X86-WITHOUT-BMI-NEXT: notl %eax
104+
; X86-WITHOUT-BMI-NEXT: notl %edx
105+
; X86-WITHOUT-BMI-NEXT: retl
106+
;
107+
; X64-WITHOUT-BMI-LABEL: not_rewrite_demorgan_i64:
108+
; X64-WITHOUT-BMI: # %bb.0:
109+
; X64-WITHOUT-BMI-NEXT: movq %rdi, %rax
110+
; X64-WITHOUT-BMI-NEXT: orq %rsi, %rax
111+
; X64-WITHOUT-BMI-NEXT: notq %rax
112+
; X64-WITHOUT-BMI-NEXT: retq
113+
%temp = or i64 %b, %a
114+
%res = xor i64 %temp, -1
115+
ret i64 %res
116+
}
117+
118+
define i64 @rewrite_demorgan_i64(i64 %a, i64 %b, i64 %c) nounwind {
119+
; X86-WITH-BMI-LABEL: rewrite_demorgan_i64:
120+
; X86-WITH-BMI: # %bb.0:
121+
; X86-WITH-BMI-NEXT: pushl %ebx
122+
; X86-WITH-BMI-NEXT: pushl %edi
123+
; X86-WITH-BMI-NEXT: pushl %esi
124+
; X86-WITH-BMI-NEXT: movl {{[0-9]+}}(%esp), %eax
125+
; X86-WITH-BMI-NEXT: movl {{[0-9]+}}(%esp), %ecx
126+
; X86-WITH-BMI-NEXT: movl {{[0-9]+}}(%esp), %edx
127+
; X86-WITH-BMI-NEXT: movl {{[0-9]+}}(%esp), %esi
128+
; X86-WITH-BMI-NEXT: movl {{[0-9]+}}(%esp), %edi
129+
; X86-WITH-BMI-NEXT: movl {{[0-9]+}}(%esp), %ebx
130+
; X86-WITH-BMI-NEXT: notl %edi
131+
; X86-WITH-BMI-NEXT: andnl %edi, %edx, %edx
132+
; X86-WITH-BMI-NEXT: andnl %edx, %eax, %eax
133+
; X86-WITH-BMI-NEXT: notl %ebx
134+
; X86-WITH-BMI-NEXT: andnl %ebx, %esi, %edx
135+
; X86-WITH-BMI-NEXT: andnl %edx, %ecx, %edx
136+
; X86-WITH-BMI-NEXT: popl %esi
137+
; X86-WITH-BMI-NEXT: popl %edi
138+
; X86-WITH-BMI-NEXT: popl %ebx
139+
; X86-WITH-BMI-NEXT: retl
140+
;
141+
; X64-WITH-BMI-LABEL: rewrite_demorgan_i64:
142+
; X64-WITH-BMI: # %bb.0:
143+
; X64-WITH-BMI-NEXT: notq %rdi
144+
; X64-WITH-BMI-NEXT: andnq %rdi, %rsi, %rax
145+
; X64-WITH-BMI-NEXT: andnq %rax, %rdx, %rax
146+
; X64-WITH-BMI-NEXT: retq
147+
;
148+
; X86-WITHOUT-BMI-LABEL: rewrite_demorgan_i64:
149+
; X86-WITHOUT-BMI: # %bb.0:
150+
; X86-WITHOUT-BMI-NEXT: movl {{[0-9]+}}(%esp), %eax
151+
; X86-WITHOUT-BMI-NEXT: movl {{[0-9]+}}(%esp), %edx
152+
; X86-WITHOUT-BMI-NEXT: orl {{[0-9]+}}(%esp), %eax
153+
; X86-WITHOUT-BMI-NEXT: orl {{[0-9]+}}(%esp), %edx
154+
; X86-WITHOUT-BMI-NEXT: orl {{[0-9]+}}(%esp), %edx
155+
; X86-WITHOUT-BMI-NEXT: orl {{[0-9]+}}(%esp), %eax
156+
; X86-WITHOUT-BMI-NEXT: notl %eax
157+
; X86-WITHOUT-BMI-NEXT: notl %edx
158+
; X86-WITHOUT-BMI-NEXT: retl
159+
;
160+
; X64-WITHOUT-BMI-LABEL: rewrite_demorgan_i64:
161+
; X64-WITHOUT-BMI: # %bb.0:
162+
; X64-WITHOUT-BMI-NEXT: movq %rdi, %rax
163+
; X64-WITHOUT-BMI-NEXT: orq %rsi, %rax
164+
; X64-WITHOUT-BMI-NEXT: orq %rdx, %rax
165+
; X64-WITHOUT-BMI-NEXT: notq %rax
166+
; X64-WITHOUT-BMI-NEXT: retq
167+
%and.demorgan = or i64 %b, %a
168+
%and3.demorgan = or i64 %and.demorgan, %c
169+
%and3 = xor i64 %and3.demorgan, -1
170+
ret i64 %and3
171+
}

0 commit comments

Comments
 (0)