Skip to content

Commit 55189cc

Browse files
committed
[X86] Add extra test cases
1 parent 5574dce commit 55189cc

File tree

1 file changed

+50
-8
lines changed

1 file changed

+50
-8
lines changed

llvm/test/CodeGen/X86/combine-i64-trunc-srl-add.ll

Lines changed: 50 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@ define i32 @test_trunc_sub(i64 %x) {
141141
ret i32 %conv
142142
}
143143

144-
define i32 @test_trunc_and(i64 %x) {
145-
; X64-LABEL: test_trunc_and:
144+
define i32 @test_trunc_and_1(i64 %x) {
145+
; X64-LABEL: test_trunc_and_1:
146146
; X64: # %bb.0:
147147
; X64-NEXT: movq %rdi, %rax
148148
; X64-NEXT: shrq $48, %rax
@@ -155,8 +155,8 @@ define i32 @test_trunc_and(i64 %x) {
155155
ret i32 %conv
156156
}
157157

158-
define i32 @test_trunc_or(i64 %x) {
159-
; X64-LABEL: test_trunc_or:
158+
define i32 @test_trunc_or_1(i64 %x) {
159+
; X64-LABEL: test_trunc_or_1:
160160
; X64: # %bb.0:
161161
; X64-NEXT: movq %rdi, %rax
162162
; X64-NEXT: shrq $48, %rax
@@ -169,8 +169,8 @@ define i32 @test_trunc_or(i64 %x) {
169169
ret i32 %conv
170170
}
171171

172-
define i32 @test_trunc_xor(i64 %x) {
173-
; X64-LABEL: test_trunc_xor:
172+
define i32 @test_trunc_xor_1(i64 %x) {
173+
; X64-LABEL: test_trunc_xor_1:
174174
; X64: # %bb.0:
175175
; X64-NEXT: movq %rdi, %rax
176176
; X64-NEXT: shrq $48, %rax
@@ -183,6 +183,48 @@ define i32 @test_trunc_xor(i64 %x) {
183183
ret i32 %conv
184184
}
185185

186+
define i32 @test_trunc_and_2(i64 %x) {
187+
; X64-LABEL: test_trunc_and_2:
188+
; X64: # %bb.0:
189+
; X64-NEXT: movq %rdi, %rax
190+
; X64-NEXT: shrq $48, %rax
191+
; X64-NEXT: andl $13, %eax
192+
; X64-NEXT: # kill: def $eax killed $eax killed $rax
193+
; X64-NEXT: retq
194+
%and = and i64 %x, 3940649673949183
195+
%shr = lshr i64 %and, 48
196+
%conv = trunc i64 %shr to i32
197+
ret i32 %conv
198+
}
199+
200+
define i32 @test_trunc_or_2(i64 %x) {
201+
; X64-LABEL: test_trunc_or_2:
202+
; X64: # %bb.0:
203+
; X64-NEXT: movq %rdi, %rax
204+
; X64-NEXT: shrq $48, %rax
205+
; X64-NEXT: orl $13, %eax
206+
; X64-NEXT: # kill: def $eax killed $eax killed $rax
207+
; X64-NEXT: retq
208+
%or = or i64 %x, 3940649673949183
209+
%shr = lshr i64 %or, 48
210+
%conv = trunc i64 %shr to i32
211+
ret i32 %conv
212+
}
213+
214+
define i32 @test_trunc_xor_2(i64 %x) {
215+
; X64-LABEL: test_trunc_xor_2:
216+
; X64: # %bb.0:
217+
; X64-NEXT: movq %rdi, %rax
218+
; X64-NEXT: shrq $48, %rax
219+
; X64-NEXT: xorl $13, %eax
220+
; X64-NEXT: # kill: def $eax killed $eax killed $rax
221+
; X64-NEXT: retq
222+
%xor = xor i64 %x, 3940649673949183
223+
%shr = lshr i64 %xor, 48
224+
%conv = trunc i64 %shr to i32
225+
ret i32 %conv
226+
}
227+
186228
; Make sure we don't crash on this test case.
187229

188230
define i32 @pr128158(i64 %x) {
@@ -192,10 +234,10 @@ define i32 @pr128158(i64 %x) {
192234
; X64-NEXT: addq %rdi, %rax
193235
; X64-NEXT: shrq $32, %rax
194236
; X64-NEXT: .p2align 4
195-
; X64-NEXT: .LBB13_1: # %for.body
237+
; X64-NEXT: .LBB16_1: # %for.body
196238
; X64-NEXT: # =>This Inner Loop Header: Depth=1
197239
; X64-NEXT: cmpl $9, %eax
198-
; X64-NEXT: jb .LBB13_1
240+
; X64-NEXT: jb .LBB16_1
199241
; X64-NEXT: # %bb.2: # %exit
200242
; X64-NEXT: xorl %eax, %eax
201243
; X64-NEXT: retq

0 commit comments

Comments
 (0)