3
3
4
4
define float @select_fcmp_fsub_oeq (float %x , float %y ) {
5
5
; CHECK-LABEL: @select_fcmp_fsub_oeq(
6
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq float [[Y:%.*]], 2.000000e+00
7
- ; CHECK-NEXT: [[FADD:%.*]] = fsub float [[Y]], 2.000000e+00
8
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float [[FADD]], float 0.000000e+00
9
- ; CHECK-NEXT: ret float [[SEL]]
6
+ ; CHECK-NEXT: ret float 0.000000e+00
10
7
;
11
8
%fcmp = fcmp oeq float %y , 2 .
12
9
%fadd = fsub float %y , 2 .
@@ -42,10 +39,7 @@ define float @select_fcmp_fsub_ueq(float %x, float %y) {
42
39
43
40
define float @select_fcmp_fsub_ueq_nnan (float %x , float %y ) {
44
41
; CHECK-LABEL: @select_fcmp_fsub_ueq_nnan(
45
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp nnan ueq float [[Y:%.*]], 2.000000e+00
46
- ; CHECK-NEXT: [[FADD:%.*]] = fsub float [[Y]], 2.000000e+00
47
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float [[FADD]], float 0.000000e+00
48
- ; CHECK-NEXT: ret float [[SEL]]
42
+ ; CHECK-NEXT: ret float 0.000000e+00
49
43
;
50
44
%fcmp = fcmp nnan ueq float %y , 2 .
51
45
%fadd = fsub float %y , 2 .
@@ -55,10 +49,7 @@ define float @select_fcmp_fsub_ueq_nnan(float %x, float %y) {
55
49
56
50
define float @select_fcmp_fsub_une (float %x , float %y ) {
57
51
; CHECK-LABEL: @select_fcmp_fsub_une(
58
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp une float [[Y:%.*]], 2.000000e+00
59
- ; CHECK-NEXT: [[FADD:%.*]] = fsub float [[Y]], 2.000000e+00
60
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float 0.000000e+00, float [[FADD]]
61
- ; CHECK-NEXT: ret float [[SEL]]
52
+ ; CHECK-NEXT: ret float 0.000000e+00
62
53
;
63
54
%fcmp = fcmp une float %y , 2 .
64
55
%fadd = fsub float %y , 2 .
@@ -94,10 +85,7 @@ define float @select_fcmp_fsub_one(float %x, float %y) {
94
85
95
86
define float @select_fcmp_fsub_one_nnan (float %x , float %y ) {
96
87
; CHECK-LABEL: @select_fcmp_fsub_one_nnan(
97
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp nnan one float [[Y:%.*]], 2.000000e+00
98
- ; CHECK-NEXT: [[FADD:%.*]] = fsub float [[Y]], 2.000000e+00
99
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float 0.000000e+00, float [[FADD]]
100
- ; CHECK-NEXT: ret float [[SEL]]
88
+ ; CHECK-NEXT: ret float 0.000000e+00
101
89
;
102
90
%fcmp = fcmp nnan one float %y , 2 .
103
91
%fadd = fsub float %y , 2 .
@@ -107,10 +95,7 @@ define float @select_fcmp_fsub_one_nnan(float %x, float %y) {
107
95
108
96
define float @select_fcmp_fadd (float %x , float %y ) {
109
97
; CHECK-LABEL: @select_fcmp_fadd(
110
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq float [[Y:%.*]], 2.000000e+00
111
- ; CHECK-NEXT: [[FADD:%.*]] = fadd float [[Y]], 2.000000e+00
112
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float [[FADD]], float 4.000000e+00
113
- ; CHECK-NEXT: ret float [[SEL]]
98
+ ; CHECK-NEXT: ret float 4.000000e+00
114
99
;
115
100
%fcmp = fcmp oeq float %y , 2 .
116
101
%fadd = fadd float %y , 2 .
@@ -120,10 +105,7 @@ define float @select_fcmp_fadd(float %x, float %y) {
120
105
121
106
define <2 x float > @select_fcmp_fadd_vec (<2 x float > %x , <2 x float > %y ) {
122
107
; CHECK-LABEL: @select_fcmp_fadd_vec(
123
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq <2 x float> [[Y:%.*]], <float 2.000000e+00, float 2.000000e+00>
124
- ; CHECK-NEXT: [[FADD:%.*]] = fadd <2 x float> [[Y]], <float 2.000000e+00, float 2.000000e+00>
125
- ; CHECK-NEXT: [[SEL:%.*]] = select <2 x i1> [[FCMP]], <2 x float> [[FADD]], <2 x float> <float 4.000000e+00, float 4.000000e+00>
126
- ; CHECK-NEXT: ret <2 x float> [[SEL]]
108
+ ; CHECK-NEXT: ret <2 x float> splat (float 4.000000e+00)
127
109
;
128
110
%fcmp = fcmp oeq <2 x float > %y , <float 2 ., float 2 .>
129
111
%fadd = fadd <2 x float > %y , <float 2 ., float 2 .>
@@ -134,10 +116,7 @@ define <2 x float> @select_fcmp_fadd_vec(<2 x float> %x, <2 x float> %y) {
134
116
135
117
define float @select_fcmp_fdiv (float %x , float %y ) {
136
118
; CHECK-LABEL: @select_fcmp_fdiv(
137
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq float [[Y:%.*]], 2.000000e+00
138
- ; CHECK-NEXT: [[FDIV:%.*]] = fdiv float [[Y]], 2.000000e+00
139
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float [[FDIV]], float 1.000000e+00
140
- ; CHECK-NEXT: ret float [[SEL]]
119
+ ; CHECK-NEXT: ret float 1.000000e+00
141
120
;
142
121
%fcmp = fcmp oeq float %y , 2 .
143
122
%fdiv = fdiv float %y , 2 .
@@ -147,10 +126,7 @@ define float @select_fcmp_fdiv(float %x, float %y) {
147
126
148
127
define float @select_fcmp_frem (float %x , float %y ) {
149
128
; CHECK-LABEL: @select_fcmp_frem(
150
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq float [[Y:%.*]], 3.000000e+00
151
- ; CHECK-NEXT: [[FREM:%.*]] = frem float [[Y]], 2.000000e+00
152
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float [[FREM]], float 1.000000e+00
153
- ; CHECK-NEXT: ret float [[SEL]]
129
+ ; CHECK-NEXT: ret float 1.000000e+00
154
130
;
155
131
%fcmp = fcmp oeq float %y , 3 .
156
132
%frem = frem float %y , 2 .
@@ -160,10 +136,7 @@ define float @select_fcmp_frem(float %x, float %y) {
160
136
161
137
define <2 x float > @select_fcmp_insertelement (<2 x float > %x , <2 x float > %y ) {
162
138
; CHECK-LABEL: @select_fcmp_insertelement(
163
- ; CHECK-NEXT: [[CMP:%.*]] = fcmp oeq <2 x float> [[Y:%.*]], <float 2.000000e+00, float 2.000000e+00>
164
- ; CHECK-NEXT: [[INSERT:%.*]] = insertelement <2 x float> [[Y]], float 4.000000e+00, i64 0
165
- ; CHECK-NEXT: [[RETVAL:%.*]] = select <2 x i1> [[CMP]], <2 x float> [[INSERT]], <2 x float> <float 4.000000e+00, float 2.000000e+00>
166
- ; CHECK-NEXT: ret <2 x float> [[RETVAL]]
139
+ ; CHECK-NEXT: ret <2 x float> <float 4.000000e+00, float 2.000000e+00>
167
140
;
168
141
%fcmp = fcmp oeq <2 x float > %y , <float 2 ., float 2 .>
169
142
%insert = insertelement <2 x float > %y , float 4 ., i64 0
@@ -173,10 +146,7 @@ define <2 x float> @select_fcmp_insertelement(<2 x float> %x, <2 x float> %y) {
173
146
174
147
define <4 x float > @select_fcmp_shufflevector_select (<4 x float > %x , <4 x float > %y ) {
175
148
; CHECK-LABEL: @select_fcmp_shufflevector_select(
176
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq <4 x float> [[Y:%.*]], <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
177
- ; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x float> [[Y]], <4 x float> poison, <4 x i32> <i32 4, i32 1, i32 6, i32 3>
178
- ; CHECK-NEXT: [[SEL:%.*]] = select <4 x i1> [[FCMP]], <4 x float> [[SHUFFLE]], <4 x float> <float poison, float 2.000000e+00, float poison, float 2.000000e+00>
179
- ; CHECK-NEXT: ret <4 x float> [[SEL]]
149
+ ; CHECK-NEXT: ret <4 x float> <float poison, float 2.000000e+00, float poison, float 2.000000e+00>
180
150
;
181
151
%fcmp = fcmp oeq <4 x float > %y , <float 2 ., float 2 ., float 2 ., float 2 .>
182
152
%shuffle = shufflevector <4 x float > %y , <4 x float > poison, <4 x i32 > <i32 4 , i32 1 , i32 6 , i32 3 >
0 commit comments