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: [[XEQZ:%.*]] = icmp eq i64 [[X:%.*]], [[Z:%.*]]
8
- ; CHECK-NEXT: [[YEQZ:%.*]] = icmp eq i64 [[Y:%.*]], [[Z]]
9
- ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq i64 [[X]], [[Y]]
10
- ; CHECK-NEXT: [[NOT_YEQZ:%.*]] = xor i1 [[YEQZ]], true
11
- ; CHECK-NEXT: [[AND:%.*]] = select i1 [[NOT_YEQZ]], i1 [[XEQY]], i1 false
12
- ; CHECK-NEXT: [[EQUAL:%.*]] = select i1 [[XEQZ]], i1 [[YEQZ]], i1 [[AND]]
13
- ; CHECK-NEXT: ret i1 [[EQUAL]]
7
+ ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq i64 [[X:%.*]], [[Y:%.*]]
8
+ ; CHECK-NEXT: ret i1 [[XEQY]]
14
9
;
15
10
entry:
16
11
%XeqZ = 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: [[XEQC:%.*]] = icmp eq i42 [[X:%.*]], -42
29
- ; CHECK-NEXT: [[YEQC:%.*]] = icmp eq i42 [[Y:%.*]], -42
30
- ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq i42 [[X]], [[Y]]
31
- ; CHECK-NEXT: [[NOT_YEQC:%.*]] = xor i1 [[YEQC]], true
32
- ; CHECK-NEXT: [[AND:%.*]] = select i1 [[NOT_YEQC]], i1 [[XEQY]], i1 false
33
- ; CHECK-NEXT: [[EQUAL:%.*]] = select i1 [[XEQC]], i1 [[YEQC]], i1 [[AND]]
34
- ; CHECK-NEXT: ret i1 [[EQUAL]]
23
+ ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq i42 [[X:%.*]], [[Y:%.*]]
24
+ ; CHECK-NEXT: ret i1 [[XEQY]]
35
25
;
36
26
entry:
37
27
%XeqC = icmp eq i42 %X , -42
@@ -46,13 +36,8 @@ entry:
46
36
define i1 @icmp_equality_test_swift_optional_pointers (i64 %X , i64 %Y ) {
47
37
; CHECK-LABEL: @icmp_equality_test_swift_optional_pointers(
48
38
; CHECK-NEXT: entry:
49
- ; CHECK-NEXT: [[XEQC:%.*]] = icmp eq i64 [[X:%.*]], 0
50
- ; CHECK-NEXT: [[YEQC:%.*]] = icmp eq i64 [[Y:%.*]], 0
51
- ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq i64 [[X]], [[Y]]
52
- ; CHECK-NEXT: [[NOT_YEQC:%.*]] = xor i1 [[YEQC]], true
53
- ; CHECK-NEXT: [[BOTH:%.*]] = select i1 [[NOT_YEQC]], i1 [[XEQY]], i1 false
54
- ; CHECK-NEXT: [[EQUAL:%.*]] = select i1 [[XEQC]], i1 [[YEQC]], i1 [[BOTH]]
55
- ; CHECK-NEXT: ret i1 [[EQUAL]]
39
+ ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq i64 [[X:%.*]], [[Y:%.*]]
40
+ ; CHECK-NEXT: ret i1 [[XEQY]]
56
41
;
57
42
entry:
58
43
%XeqC = icmp eq i64 %X , 0
@@ -67,13 +52,8 @@ entry:
67
52
define <2 x i1 > @icmp_equality_test_vector (<2 x i64 > %X , <2 x i64 > %Y ) {
68
53
; CHECK-LABEL: @icmp_equality_test_vector(
69
54
; CHECK-NEXT: entry:
70
- ; CHECK-NEXT: [[XEQC:%.*]] = icmp eq <2 x i64> [[X:%.*]], <i64 123, i64 456>
71
- ; CHECK-NEXT: [[YEQC:%.*]] = icmp eq <2 x i64> [[Y:%.*]], <i64 123, i64 456>
72
- ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq <2 x i64> [[X]], [[Y]]
73
- ; CHECK-NEXT: [[NOT_YEQC:%.*]] = xor <2 x i1> [[YEQC]], <i1 true, i1 true>
74
- ; CHECK-NEXT: [[AND:%.*]] = select <2 x i1> [[NOT_YEQC]], <2 x i1> [[XEQY]], <2 x i1> zeroinitializer
75
- ; CHECK-NEXT: [[EQUAL:%.*]] = select <2 x i1> [[XEQC]], <2 x i1> [[YEQC]], <2 x i1> [[AND]]
76
- ; CHECK-NEXT: ret <2 x i1> [[EQUAL]]
55
+ ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq <2 x i64> [[X:%.*]], [[Y:%.*]]
56
+ ; CHECK-NEXT: ret <2 x i1> [[XEQY]]
77
57
;
78
58
entry:
79
59
%XeqC = icmp eq <2 x i64 > %X , <i64 123 , i64 456 >
@@ -88,13 +68,8 @@ entry:
88
68
define i1 @icmp_equality_test_commute_icmp1 (i64 %X , i64 %Y , i64 %Z ) {
89
69
; CHECK-LABEL: @icmp_equality_test_commute_icmp1(
90
70
; CHECK-NEXT: entry:
91
- ; CHECK-NEXT: [[XEQZ:%.*]] = icmp eq i64 [[Z:%.*]], [[X:%.*]]
92
- ; CHECK-NEXT: [[YEQZ:%.*]] = icmp eq i64 [[Z]], [[Y:%.*]]
93
- ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq i64 [[Y]], [[X]]
94
- ; CHECK-NEXT: [[NOT_YEQZ:%.*]] = xor i1 [[YEQZ]], true
95
- ; CHECK-NEXT: [[AND:%.*]] = select i1 [[NOT_YEQZ]], i1 [[XEQY]], i1 false
96
- ; CHECK-NEXT: [[EQUAL:%.*]] = select i1 [[XEQZ]], i1 [[YEQZ]], i1 [[AND]]
97
- ; CHECK-NEXT: ret i1 [[EQUAL]]
71
+ ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq i64 [[Y:%.*]], [[X:%.*]]
72
+ ; CHECK-NEXT: ret i1 [[XEQY]]
98
73
;
99
74
entry:
100
75
%XeqZ = icmp eq i64 %Z , %X
@@ -108,13 +83,8 @@ entry:
108
83
109
84
define i1 @icmp_equality_test_commute_icmp2 (i64 %X , i64 %Y , i64 %Z ) {
110
85
; CHECK-LABEL: @icmp_equality_test_commute_icmp2(
111
- ; CHECK-NEXT: [[XEQZ:%.*]] = icmp eq i64 [[Z:%.*]], [[X:%.*]]
112
- ; CHECK-NEXT: [[YEQZ:%.*]] = icmp eq i64 [[Y:%.*]], [[Z]]
113
- ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq i64 [[Y]], [[X]]
114
- ; CHECK-NEXT: [[NOT_YEQZ:%.*]] = xor i1 [[YEQZ]], true
115
- ; CHECK-NEXT: [[AND:%.*]] = select i1 [[NOT_YEQZ]], i1 [[XEQY]], i1 false
116
- ; CHECK-NEXT: [[EQUAL:%.*]] = select i1 [[XEQZ]], i1 [[YEQZ]], i1 [[AND]]
117
- ; CHECK-NEXT: ret i1 [[EQUAL]]
86
+ ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq i64 [[Y:%.*]], [[X:%.*]]
87
+ ; CHECK-NEXT: ret i1 [[XEQY]]
118
88
;
119
89
%XeqZ = icmp eq i64 %Z , %X
120
90
%YeqZ = icmp eq i64 %Y , %Z
@@ -128,13 +98,8 @@ define i1 @icmp_equality_test_commute_icmp2(i64 %X, i64 %Y, i64 %Z) {
128
98
define i1 @icmp_equality_test_commute_select1 (i64 %X , i64 %Y , i64 %Z ) {
129
99
; CHECK-LABEL: @icmp_equality_test_commute_select1(
130
100
; CHECK-NEXT: entry:
131
- ; CHECK-NEXT: [[XEQZ:%.*]] = icmp eq i64 [[X:%.*]], [[Z:%.*]]
132
- ; CHECK-NEXT: [[YEQZ:%.*]] = icmp eq i64 [[Y:%.*]], [[Z]]
133
- ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq i64 [[X]], [[Y]]
134
- ; CHECK-NEXT: [[NOT_YEQZ:%.*]] = xor i1 [[YEQZ]], true
135
- ; CHECK-NEXT: [[AND:%.*]] = select i1 [[NOT_YEQZ]], i1 [[XEQY]], i1 false
136
- ; CHECK-NEXT: [[EQUAL:%.*]] = select i1 [[XEQZ]], i1 [[YEQZ]], i1 [[AND]]
137
- ; CHECK-NEXT: ret i1 [[EQUAL]]
101
+ ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq i64 [[X:%.*]], [[Y:%.*]]
102
+ ; CHECK-NEXT: ret i1 [[XEQY]]
138
103
;
139
104
entry:
140
105
%XeqZ = icmp eq i64 %X , %Z
@@ -148,13 +113,8 @@ entry:
148
113
define i1 @icmp_equality_test_commute_select2 (i64 %X , i64 %Y , i64 %Z ) {
149
114
; CHECK-LABEL: @icmp_equality_test_commute_select2(
150
115
; CHECK-NEXT: entry:
151
- ; CHECK-NEXT: [[XEQZ_NOT:%.*]] = icmp eq i64 [[X:%.*]], [[Z:%.*]]
152
- ; CHECK-NEXT: [[YEQZ:%.*]] = icmp eq i64 [[Y:%.*]], [[Z]]
153
- ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq i64 [[X]], [[Y]]
154
- ; CHECK-NEXT: [[NOT_YEQZ:%.*]] = xor i1 [[YEQZ]], true
155
- ; CHECK-NEXT: [[AND:%.*]] = select i1 [[NOT_YEQZ]], i1 [[XEQY]], i1 false
156
- ; CHECK-NEXT: [[EQUAL:%.*]] = select i1 [[XEQZ_NOT]], i1 [[YEQZ]], i1 [[AND]]
157
- ; CHECK-NEXT: ret i1 [[EQUAL]]
116
+ ; CHECK-NEXT: [[XEQY:%.*]] = icmp eq i64 [[X:%.*]], [[Y:%.*]]
117
+ ; CHECK-NEXT: ret i1 [[XEQY]]
158
118
;
159
119
entry:
160
120
%XeqZ = icmp eq i64 %X , %Z
0 commit comments