4
4
define i1 @icmp_equality_test (i64 %X , i64 %Y , i64 %Z ) {
5
5
; CHECK-LABEL: @icmp_equality_test(
6
6
; CHECK-NEXT: entry:
7
- ; CHECK-NEXT: [[XEQ:%.*]] = icmp eq i64 [[X:%.*]], [[Z:%.*]]
8
- ; CHECK-NEXT: [[YEQ:%.*]] = icmp eq i64 [[Y:%.*]], [[Z]]
9
- ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[X]], [[Y]]
10
- ; CHECK-NEXT: [[NOT_YEQ:%.*]] = xor i1 [[YEQ]], true
11
- ; CHECK-NEXT: [[BOTH:%.*]] = select i1 [[NOT_YEQ]], i1 [[CMP]], i1 false
12
- ; CHECK-NEXT: [[EQUAL:%.*]] = select i1 [[XEQ]], i1 [[YEQ]], i1 [[BOTH]]
13
- ; CHECK-NEXT: ret i1 [[EQUAL]]
7
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[X:%.*]], [[Y:%.*]]
8
+ ; CHECK-NEXT: ret i1 [[CMP]]
14
9
;
15
10
entry:
16
11
%XEq = icmp eq i64 %X , %Z
@@ -25,13 +20,8 @@ entry:
25
20
define i1 @icmp_equality_test_constant (i42 %X , i42 %Y ) {
26
21
; CHECK-LABEL: @icmp_equality_test_constant(
27
22
; CHECK-NEXT: entry:
28
- ; CHECK-NEXT: [[XEQ:%.*]] = icmp eq i42 [[X:%.*]], -42
29
- ; CHECK-NEXT: [[YEQ:%.*]] = icmp eq i42 [[Y:%.*]], -42
30
- ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i42 [[X]], [[Y]]
31
- ; CHECK-NEXT: [[NOT_YEQ:%.*]] = xor i1 [[YEQ]], true
32
- ; CHECK-NEXT: [[BOTH:%.*]] = select i1 [[NOT_YEQ]], i1 [[CMP]], i1 false
33
- ; CHECK-NEXT: [[EQUAL:%.*]] = select i1 [[XEQ]], i1 [[YEQ]], i1 [[BOTH]]
34
- ; CHECK-NEXT: ret i1 [[EQUAL]]
23
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i42 [[X:%.*]], [[Y:%.*]]
24
+ ; CHECK-NEXT: ret i1 [[CMP]]
35
25
;
36
26
entry:
37
27
%XEq = icmp eq i42 %X , -42
@@ -46,13 +36,8 @@ entry:
46
36
define <2 x i1 > @icmp_equality_test_vector (<2 x i64 > %X , <2 x i64 > %Y ) {
47
37
; CHECK-LABEL: @icmp_equality_test_vector(
48
38
; CHECK-NEXT: entry:
49
- ; CHECK-NEXT: [[XEQ:%.*]] = icmp eq <2 x i64> [[X:%.*]], <i64 123, i64 456>
50
- ; CHECK-NEXT: [[YEQ:%.*]] = icmp eq <2 x i64> [[Y:%.*]], <i64 123, i64 456>
51
- ; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i64> [[X]], [[Y]]
52
- ; CHECK-NEXT: [[NOT_YEQ:%.*]] = xor <2 x i1> [[YEQ]], <i1 true, i1 true>
53
- ; CHECK-NEXT: [[BOTH:%.*]] = select <2 x i1> [[NOT_YEQ]], <2 x i1> [[CMP]], <2 x i1> zeroinitializer
54
- ; CHECK-NEXT: [[EQUAL:%.*]] = select <2 x i1> [[XEQ]], <2 x i1> [[YEQ]], <2 x i1> [[BOTH]]
55
- ; CHECK-NEXT: ret <2 x i1> [[EQUAL]]
39
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i64> [[X:%.*]], [[Y:%.*]]
40
+ ; CHECK-NEXT: ret <2 x i1> [[CMP]]
56
41
;
57
42
entry:
58
43
%XEq = icmp eq <2 x i64 > %X , <i64 123 , i64 456 >
@@ -67,13 +52,8 @@ entry:
67
52
define i1 @icmp_equality_test_commute_icmp1 (i64 %X , i64 %Y , i64 %Z ) {
68
53
; CHECK-LABEL: @icmp_equality_test_commute_icmp1(
69
54
; CHECK-NEXT: entry:
70
- ; CHECK-NEXT: [[XEQ:%.*]] = icmp eq i64 [[Z:%.*]], [[X:%.*]]
71
- ; CHECK-NEXT: [[YEQ:%.*]] = icmp eq i64 [[Z]], [[Y:%.*]]
72
- ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[Y]], [[X]]
73
- ; CHECK-NEXT: [[NOT_YEQ:%.*]] = xor i1 [[YEQ]], true
74
- ; CHECK-NEXT: [[BOTH:%.*]] = select i1 [[NOT_YEQ]], i1 [[CMP]], i1 false
75
- ; CHECK-NEXT: [[EQUAL:%.*]] = select i1 [[XEQ]], i1 [[YEQ]], i1 [[BOTH]]
76
- ; CHECK-NEXT: ret i1 [[EQUAL]]
55
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[Y:%.*]], [[X:%.*]]
56
+ ; CHECK-NEXT: ret i1 [[CMP]]
77
57
;
78
58
entry:
79
59
%XEq = icmp eq i64 %Z , %X
@@ -88,13 +68,8 @@ entry:
88
68
define i1 @icmp_equality_test_commute_icmp2 (i64 %X , i64 %Y , i64 %Z ) {
89
69
; CHECK-LABEL: @icmp_equality_test_commute_icmp2(
90
70
; CHECK-NEXT: entry:
91
- ; CHECK-NEXT: [[XEQ:%.*]] = icmp eq i64 [[Z:%.*]], [[X:%.*]]
92
- ; CHECK-NEXT: [[YEQ:%.*]] = icmp eq i64 [[Y:%.*]], [[Z]]
93
- ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[Y]], [[X]]
94
- ; CHECK-NEXT: [[NOT_YEQ:%.*]] = xor i1 [[YEQ]], true
95
- ; CHECK-NEXT: [[BOTH:%.*]] = select i1 [[NOT_YEQ]], i1 [[CMP]], i1 false
96
- ; CHECK-NEXT: [[EQUAL:%.*]] = select i1 [[XEQ]], i1 [[YEQ]], i1 [[BOTH]]
97
- ; CHECK-NEXT: ret i1 [[EQUAL]]
71
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[Y:%.*]], [[X:%.*]]
72
+ ; CHECK-NEXT: ret i1 [[CMP]]
98
73
;
99
74
entry:
100
75
%XEq = icmp eq i64 %Z , %X
@@ -109,13 +84,8 @@ entry:
109
84
define i1 @icmp_equality_test_commute_select1 (i64 %X , i64 %Y ) {
110
85
; CHECK-LABEL: @icmp_equality_test_commute_select1(
111
86
; CHECK-NEXT: entry:
112
- ; CHECK-NEXT: [[XEQ:%.*]] = icmp eq i64 [[X:%.*]], 0
113
- ; CHECK-NEXT: [[YEQ:%.*]] = icmp eq i64 [[Y:%.*]], 0
114
- ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[X]], [[Y]]
115
- ; CHECK-NEXT: [[NOT_YEQ:%.*]] = xor i1 [[YEQ]], true
116
- ; CHECK-NEXT: [[BOTH:%.*]] = select i1 [[NOT_YEQ]], i1 [[CMP]], i1 false
117
- ; CHECK-NEXT: [[EQUAL:%.*]] = select i1 [[XEQ]], i1 [[YEQ]], i1 [[BOTH]]
118
- ; CHECK-NEXT: ret i1 [[EQUAL]]
87
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[X:%.*]], [[Y:%.*]]
88
+ ; CHECK-NEXT: ret i1 [[CMP]]
119
89
;
120
90
entry:
121
91
%XEq = icmp eq i64 %X , 0
@@ -130,13 +100,8 @@ entry:
130
100
define i1 @icmp_equality_test_commute_select2 (i64 %X , i64 %Y ) {
131
101
; CHECK-LABEL: @icmp_equality_test_commute_select2(
132
102
; CHECK-NEXT: entry:
133
- ; CHECK-NEXT: [[XEQ:%.*]] = icmp eq i64 [[X:%.*]], 0
134
- ; CHECK-NEXT: [[YEQ:%.*]] = icmp eq i64 [[Y:%.*]], 0
135
- ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[X]], [[Y]]
136
- ; CHECK-NEXT: [[NOT_XEQ:%.*]] = xor i1 [[XEQ]], true
137
- ; CHECK-NEXT: [[BOTH:%.*]] = select i1 [[NOT_XEQ]], i1 [[CMP]], i1 false
138
- ; CHECK-NEXT: [[EQUAL:%.*]] = select i1 [[YEQ]], i1 [[XEQ]], i1 [[BOTH]]
139
- ; CHECK-NEXT: ret i1 [[EQUAL]]
103
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[X:%.*]], [[Y:%.*]]
104
+ ; CHECK-NEXT: ret i1 [[CMP]]
140
105
;
141
106
entry:
142
107
%XEq = icmp eq i64 %X , 0
0 commit comments