Skip to content

Commit fe8151f

Browse files
committed
[X86] Add pre-commit tests.
1 parent 72791fe commit fe8151f

File tree

1 file changed

+57
-2
lines changed

1 file changed

+57
-2
lines changed

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

Lines changed: 57 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,61 @@ define i32 @test_trunc_add(i64 %x) {
128128
ret i32 %conv
129129
}
130130

131+
define i32 @test_trunc_sub(i64 %x) {
132+
; X64-LABEL: test_trunc_sub:
133+
; X64: # %bb.0:
134+
; X64-NEXT: shrq $48, %rdi
135+
; X64-NEXT: addl $65522, %edi # imm = 0xFFF2
136+
; X64-NEXT: movzwl %di, %eax
137+
; X64-NEXT: retq
138+
%sub = sub i64 %x, 3940649673949184
139+
%shr = lshr i64 %sub, 48
140+
%conv = trunc i64 %shr to i32
141+
ret i32 %conv
142+
}
143+
144+
define i32 @test_trunc_and(i64 %x) {
145+
; X64-LABEL: test_trunc_and:
146+
; X64: # %bb.0:
147+
; X64-NEXT: movq %rdi, %rax
148+
; X64-NEXT: shrq $48, %rax
149+
; X64-NEXT: andl $14, %eax
150+
; X64-NEXT: # kill: def $eax killed $eax killed $rax
151+
; X64-NEXT: retq
152+
%and = and i64 %x, 3940649673949184
153+
%shr = lshr i64 %and, 48
154+
%conv = trunc i64 %shr to i32
155+
ret i32 %conv
156+
}
157+
158+
define i32 @test_trunc_or(i64 %x) {
159+
; X64-LABEL: test_trunc_or:
160+
; X64: # %bb.0:
161+
; X64-NEXT: movabsq $3940649673949184, %rax # imm = 0xE000000000000
162+
; X64-NEXT: orq %rdi, %rax
163+
; X64-NEXT: shrq $48, %rax
164+
; X64-NEXT: # kill: def $eax killed $eax killed $rax
165+
; X64-NEXT: retq
166+
%or = or i64 %x, 3940649673949184
167+
%shr = lshr i64 %or, 48
168+
%conv = trunc i64 %shr to i32
169+
ret i32 %conv
170+
}
171+
172+
define i32 @test_trunc_xor(i64 %x) {
173+
; X64-LABEL: test_trunc_xor:
174+
; X64: # %bb.0:
175+
; X64-NEXT: movabsq $3940649673949184, %rax # imm = 0xE000000000000
176+
; X64-NEXT: xorq %rdi, %rax
177+
; X64-NEXT: shrq $48, %rax
178+
; X64-NEXT: # kill: def $eax killed $eax killed $rax
179+
; X64-NEXT: retq
180+
%xor = xor i64 %x, 3940649673949184
181+
%shr = lshr i64 %xor, 48
182+
%conv = trunc i64 %shr to i32
183+
ret i32 %conv
184+
}
185+
131186
; Make sure we don't crash on this test case.
132187

133188
define i32 @pr128158(i64 %x) {
@@ -137,10 +192,10 @@ define i32 @pr128158(i64 %x) {
137192
; X64-NEXT: addq %rdi, %rax
138193
; X64-NEXT: shrq $32, %rax
139194
; X64-NEXT: .p2align 4
140-
; X64-NEXT: .LBB9_1: # %for.body
195+
; X64-NEXT: .LBB13_1: # %for.body
141196
; X64-NEXT: # =>This Inner Loop Header: Depth=1
142197
; X64-NEXT: cmpl $9, %eax
143-
; X64-NEXT: jb .LBB9_1
198+
; X64-NEXT: jb .LBB13_1
144199
; X64-NEXT: # %bb.2: # %exit
145200
; X64-NEXT: xorl %eax, %eax
146201
; X64-NEXT: retq

0 commit comments

Comments
 (0)