Skip to content
This repository was archived by the owner on Mar 28, 2020. It is now read-only.

Commit 6eaa7d5

Browse files
committed
[InstCombine] minimize tests and autogenerate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278960 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 4633e7e commit 6eaa7d5

File tree

1 file changed

+34
-32
lines changed

1 file changed

+34
-32
lines changed
Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,47 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
12
; RUN: opt < %s -instcombine -S | FileCheck %s
23

3-
define <4 x i32> @psignd_3(<4 x i32> %a, <4 x i32> %b) nounwind ssp {
4-
entry:
4+
define <4 x i32> @psignd_3(<4 x i32> %a, <4 x i32> %b) {
5+
; CHECK-LABEL: @psignd_3(
6+
; CHECK-NEXT: [[B_LOBIT:%.*]] = ashr <4 x i32> %b, <i32 31, i32 31, i32 31, i32 31>
7+
; CHECK-NEXT: [[SUB:%.*]] = sub nsw <4 x i32> zeroinitializer, %a
8+
; CHECK-NEXT: [[T1:%.*]] = xor <4 x i32> [[B_LOBIT]], <i32 -1, i32 -1, i32 -1, i32 -1>
9+
; CHECK-NEXT: [[T2:%.*]] = and <4 x i32> %a, [[T1]]
10+
; CHECK-NEXT: [[T3:%.*]] = and <4 x i32> [[B_LOBIT]], [[SUB]]
11+
; CHECK-NEXT: [[COND:%.*]] = or <4 x i32> [[T2]], [[T3]]
12+
; CHECK-NEXT: ret <4 x i32> [[COND]]
13+
;
514
%cmp = icmp slt <4 x i32> %b, zeroinitializer
615
%sext = sext <4 x i1> %cmp to <4 x i32>
716
%sub = sub nsw <4 x i32> zeroinitializer, %a
8-
%0 = icmp slt <4 x i32> %sext, zeroinitializer
9-
%sext3 = sext <4 x i1> %0 to <4 x i32>
10-
%1 = xor <4 x i32> %sext3, <i32 -1, i32 -1, i32 -1, i32 -1>
11-
%2 = and <4 x i32> %a, %1
12-
%3 = and <4 x i32> %sext3, %sub
13-
%cond = or <4 x i32> %2, %3
17+
%t0 = icmp slt <4 x i32> %sext, zeroinitializer
18+
%sext3 = sext <4 x i1> %t0 to <4 x i32>
19+
%t1 = xor <4 x i32> %sext3, <i32 -1, i32 -1, i32 -1, i32 -1>
20+
%t2 = and <4 x i32> %a, %t1
21+
%t3 = and <4 x i32> %sext3, %sub
22+
%cond = or <4 x i32> %t2, %t3
1423
ret <4 x i32> %cond
15-
16-
; CHECK-LABEL: @psignd_3
17-
; CHECK: ashr <4 x i32> %b, <i32 31, i32 31, i32 31, i32 31>
18-
; CHECK: sub nsw <4 x i32> zeroinitializer, %a
19-
; CHECK: xor <4 x i32> %b.lobit, <i32 -1, i32 -1, i32 -1, i32 -1>
20-
; CHECK: and <4 x i32> %a, %0
21-
; CHECK: and <4 x i32> %b.lobit, %sub
22-
; CHECK: or <4 x i32> %1, %2
2324
}
2425

25-
define <4 x i32> @test1(<4 x i32> %a, <4 x i32> %b) nounwind ssp {
26-
entry:
26+
define <4 x i32> @test1(<4 x i32> %a, <4 x i32> %b) {
27+
; CHECK-LABEL: @test1(
28+
; CHECK-NEXT: [[B_LOBIT:%.*]] = ashr <4 x i32> %b, <i32 31, i32 31, i32 31, i32 31>
29+
; CHECK-NEXT: [[B_LOBIT_NOT:%.*]] = xor <4 x i32> [[B_LOBIT]], <i32 -1, i32 -1, i32 -1, i32 -1>
30+
; CHECK-NEXT: [[SUB:%.*]] = sub nsw <4 x i32> zeroinitializer, %a
31+
; CHECK-NEXT: [[T2:%.*]] = and <4 x i32> [[B_LOBIT]], %a
32+
; CHECK-NEXT: [[T3:%.*]] = and <4 x i32> [[B_LOBIT_NOT]], [[SUB]]
33+
; CHECK-NEXT: [[COND:%.*]] = or <4 x i32> [[T2]], [[T3]]
34+
; CHECK-NEXT: ret <4 x i32> [[COND]]
35+
;
2736
%cmp = icmp sgt <4 x i32> %b, <i32 -1, i32 -1, i32 -1, i32 -1>
2837
%sext = sext <4 x i1> %cmp to <4 x i32>
2938
%sub = sub nsw <4 x i32> zeroinitializer, %a
30-
%0 = icmp slt <4 x i32> %sext, zeroinitializer
31-
%sext3 = sext <4 x i1> %0 to <4 x i32>
32-
%1 = xor <4 x i32> %sext3, <i32 -1, i32 -1, i32 -1, i32 -1>
33-
%2 = and <4 x i32> %a, %1
34-
%3 = and <4 x i32> %sext3, %sub
35-
%cond = or <4 x i32> %2, %3
39+
%t0 = icmp slt <4 x i32> %sext, zeroinitializer
40+
%sext3 = sext <4 x i1> %t0 to <4 x i32>
41+
%t1 = xor <4 x i32> %sext3, <i32 -1, i32 -1, i32 -1, i32 -1>
42+
%t2 = and <4 x i32> %a, %t1
43+
%t3 = and <4 x i32> %sext3, %sub
44+
%cond = or <4 x i32> %t2, %t3
3645
ret <4 x i32> %cond
37-
38-
; CHECK-LABEL: @test1
39-
; CHECK: ashr <4 x i32> %b, <i32 31, i32 31, i32 31, i32 31>
40-
; CHECK: xor <4 x i32> %b.lobit, <i32 -1, i32 -1, i32 -1, i32 -1>
41-
; CHECK: sub nsw <4 x i32> zeroinitializer, %a
42-
; CHECK: and <4 x i32> %b.lobit, %a
43-
; CHECK: and <4 x i32> %b.lobit.not, %sub
44-
; CHECK: or <4 x i32> %0, %1
4546
}
47+

0 commit comments

Comments
 (0)