@@ -87,3 +87,202 @@ define void @pow_poison(i16 %arg_int,float %arg_flt, ptr %P) {
87
87
88
88
ret void
89
89
}
90
+
91
+ define void @sin_poison (ptr %P ) {
92
+ ; CHECK-LABEL: @sin_poison(
93
+ ; CHECK-NEXT: store volatile float poison, ptr [[P:%.*]], align 4
94
+ ; CHECK-NEXT: store volatile <2 x float> poison, ptr [[P]], align 8
95
+ ; CHECK-NEXT: store volatile <4 x double> poison, ptr [[P]], align 32
96
+ ; CHECK-NEXT: store volatile float poison, ptr [[P]], align 4
97
+ ; CHECK-NEXT: store volatile <2 x float> poison, ptr [[P]], align 8
98
+ ; CHECK-NEXT: store volatile <4 x double> poison, ptr [[P]], align 32
99
+ ; CHECK-NEXT: ret void
100
+ ;
101
+ %sin_f32 = call float @llvm.sin (float poison)
102
+ store volatile float %sin_f32 , ptr %P
103
+
104
+ %sin_2xf32 = call <2 x float > @llvm.sin (<2 x float > poison)
105
+ store volatile <2 x float > %sin_2xf32 , ptr %P
106
+
107
+ %sin_4xf64 = call <4 x double > @llvm.sin (<4 x double > poison)
108
+ store volatile <4 x double > %sin_4xf64 , ptr %P
109
+
110
+ %asin_f32 = call float @llvm.asin (float poison)
111
+ store volatile float %asin_f32 , ptr %P
112
+
113
+ %asin_2xf32 = call <2 x float > @llvm.asin (<2 x float > poison)
114
+ store volatile <2 x float > %asin_2xf32 , ptr %P
115
+
116
+ %asin_4xf64 = call <4 x double > @llvm.asin (<4 x double > poison)
117
+ store volatile <4 x double > %asin_4xf64 , ptr %P
118
+
119
+ ret void
120
+ }
121
+
122
+
123
+ define void @cos_poison (ptr %P ) {
124
+ ; CHECK-LABEL: @cos_poison(
125
+ ; CHECK-NEXT: store volatile float poison, ptr [[P:%.*]], align 4
126
+ ; CHECK-NEXT: store volatile <2 x float> poison, ptr [[P]], align 8
127
+ ; CHECK-NEXT: store volatile <4 x double> poison, ptr [[P]], align 32
128
+ ; CHECK-NEXT: store volatile float poison, ptr [[P]], align 4
129
+ ; CHECK-NEXT: store volatile <2 x float> poison, ptr [[P]], align 8
130
+ ; CHECK-NEXT: store volatile <4 x double> poison, ptr [[P]], align 32
131
+ ; CHECK-NEXT: ret void
132
+ ;
133
+ %cos_f32 = call float @llvm.cos (float poison)
134
+ store volatile float %cos_f32 , ptr %P
135
+
136
+ %cos_2xf32 = call <2 x float > @llvm.cos (<2 x float > poison)
137
+ store volatile <2 x float > %cos_2xf32 , ptr %P
138
+
139
+ %cos_4xf64 = call <4 x double > @llvm.cos (<4 x double > poison)
140
+ store volatile <4 x double > %cos_4xf64 , ptr %P
141
+
142
+ %acos_f32 = call float @llvm.acos (float poison)
143
+ store volatile float %acos_f32 , ptr %P
144
+
145
+ %acos_2xf32 = call <2 x float > @llvm.acos (<2 x float > poison)
146
+ store volatile <2 x float > %acos_2xf32 , ptr %P
147
+
148
+ %acos_4xf64 = call <4 x double > @llvm.acos (<4 x double > poison)
149
+ store volatile <4 x double > %acos_4xf64 , ptr %P
150
+
151
+ ret void
152
+ }
153
+
154
+
155
+ define void @tan_poison (ptr %P ) {
156
+ ; CHECK-LABEL: @tan_poison(
157
+ ; CHECK-NEXT: store volatile float poison, ptr [[P:%.*]], align 4
158
+ ; CHECK-NEXT: store volatile <2 x float> poison, ptr [[P]], align 8
159
+ ; CHECK-NEXT: store volatile <4 x double> poison, ptr [[P]], align 32
160
+ ; CHECK-NEXT: store volatile float poison, ptr [[P]], align 4
161
+ ; CHECK-NEXT: store volatile <2 x float> poison, ptr [[P]], align 8
162
+ ; CHECK-NEXT: store volatile <4 x double> poison, ptr [[P]], align 32
163
+ ; CHECK-NEXT: store volatile float poison, ptr [[P]], align 4
164
+ ; CHECK-NEXT: store volatile <2 x float> poison, ptr [[P]], align 8
165
+ ; CHECK-NEXT: store volatile <4 x double> poison, ptr [[P]], align 32
166
+ ; CHECK-NEXT: ret void
167
+ ;
168
+ %tan_f32 = call float @llvm.tan (float poison)
169
+ store volatile float %tan_f32 , ptr %P
170
+
171
+ %tan_2xf32 = call <2 x float > @llvm.tan (<2 x float > poison)
172
+ store volatile <2 x float > %tan_2xf32 , ptr %P
173
+
174
+ %tan_4xf64 = call <4 x double > @llvm.tan (<4 x double > poison)
175
+ store volatile <4 x double > %tan_4xf64 , ptr %P
176
+
177
+ %atan_f32 = call float @llvm.atan (float poison)
178
+ store volatile float %atan_f32 , ptr %P
179
+
180
+ %atan_2xf32 = call <2 x float > @llvm.atan (<2 x float > poison)
181
+ store volatile <2 x float > %atan_2xf32 , ptr %P
182
+
183
+ %atan_4xf64 = call <4 x double > @llvm.atan (<4 x double > poison)
184
+ store volatile <4 x double > %atan_4xf64 , ptr %P
185
+
186
+ %atan2_f32 = call float @llvm.atan2 (float poison, float poison)
187
+ store volatile float %atan2_f32 , ptr %P
188
+
189
+ %atan2_2xf32 = call <2 x float > @llvm.atan2 (<2 x float > poison, <2 x float > poison)
190
+ store volatile <2 x float > %atan2_2xf32 , ptr %P
191
+
192
+ %atan2_4xf64 = call <4 x double > @llvm.atan2 (<4 x double > poison, <4 x double > poison)
193
+ store volatile <4 x double > %atan2_4xf64 , ptr %P
194
+
195
+ ret void
196
+ }
197
+
198
+
199
+ define void @sincos_poison (ptr %P ) {
200
+ ; CHECK-LABEL: @sincos_poison(
201
+ ; CHECK-NEXT: store volatile { float, float } poison, ptr [[P:%.*]], align 4
202
+ ; CHECK-NEXT: store volatile { <2 x float>, <2 x float> } poison, ptr [[P]], align 8
203
+ ; CHECK-NEXT: store volatile { <4 x double>, <4 x double> } poison, ptr [[P]], align 32
204
+ ; CHECK-NEXT: store volatile { float, float } poison, ptr [[P]], align 4
205
+ ; CHECK-NEXT: store volatile { <2 x float>, <2 x float> } poison, ptr [[P]], align 8
206
+ ; CHECK-NEXT: store volatile { <4 x double>, <4 x double> } poison, ptr [[P]], align 32
207
+ ; CHECK-NEXT: ret void
208
+ ;
209
+ %sincos_f32 = call { float , float } @llvm.sincos (float poison)
210
+ store volatile { float , float } %sincos_f32 , ptr %P
211
+
212
+ %sincos_2xf32 = call { <2 x float >, <2 x float > } @llvm.sincos (<2 x float > poison)
213
+ store volatile { <2 x float >, <2 x float > } %sincos_2xf32 , ptr %P
214
+
215
+ %sincos_4xf64 = call { <4 x double >, <4 x double > } @llvm.sincos (<4 x double > poison)
216
+ store volatile { <4 x double >, <4 x double > } %sincos_4xf64 , ptr %P
217
+
218
+ %sincospi_f32 = call { float , float } @llvm.sincospi (float poison)
219
+ store volatile { float , float } %sincospi_f32 , ptr %P
220
+
221
+ %sincospi_2xf32 = call { <2 x float >, <2 x float > } @llvm.sincospi (<2 x float > poison)
222
+ store volatile { <2 x float >, <2 x float > } %sincospi_2xf32 , ptr %P
223
+
224
+ %sincospi_4xf64 = call { <4 x double >, <4 x double > } @llvm.sincospi (<4 x double > poison)
225
+ store volatile { <4 x double >, <4 x double > } %sincospi_4xf64 , ptr %P
226
+
227
+ ret void
228
+ }
229
+
230
+
231
+ define void @sinh_poison (ptr %P ) {
232
+ ; CHECK-LABEL: @sinh_poison(
233
+ ; CHECK-NEXT: store volatile float poison, ptr [[P:%.*]], align 4
234
+ ; CHECK-NEXT: store volatile <2 x float> poison, ptr [[P]], align 8
235
+ ; CHECK-NEXT: store volatile <4 x double> poison, ptr [[P]], align 32
236
+ ; CHECK-NEXT: ret void
237
+ ;
238
+ %sinh_f32 = call float @llvm.sinh (float poison)
239
+ store volatile float %sinh_f32 , ptr %P
240
+
241
+ %sinh_2xf32 = call <2 x float > @llvm.sinh (<2 x float > poison)
242
+ store volatile <2 x float > %sinh_2xf32 , ptr %P
243
+
244
+ %sinh_4xf64 = call <4 x double > @llvm.sinh (<4 x double > poison)
245
+ store volatile <4 x double > %sinh_4xf64 , ptr %P
246
+
247
+ ret void
248
+ }
249
+
250
+
251
+ define void @cosh_poison (ptr %P ) {
252
+ ; CHECK-LABEL: @cosh_poison(
253
+ ; CHECK-NEXT: store volatile float poison, ptr [[P:%.*]], align 4
254
+ ; CHECK-NEXT: store volatile <2 x float> poison, ptr [[P]], align 8
255
+ ; CHECK-NEXT: store volatile <4 x double> poison, ptr [[P]], align 32
256
+ ; CHECK-NEXT: ret void
257
+ ;
258
+ %cosh_f32 = call float @llvm.cosh (float poison)
259
+ store volatile float %cosh_f32 , ptr %P
260
+
261
+ %cosh_2xf32 = call <2 x float > @llvm.cosh (<2 x float > poison)
262
+ store volatile <2 x float > %cosh_2xf32 , ptr %P
263
+
264
+ %cosh_4xf64 = call <4 x double > @llvm.cosh (<4 x double > poison)
265
+ store volatile <4 x double > %cosh_4xf64 , ptr %P
266
+
267
+ ret void
268
+ }
269
+
270
+
271
+ define void @tanh_poison (ptr %P ) {
272
+ ; CHECK-LABEL: @tanh_poison(
273
+ ; CHECK-NEXT: store volatile float poison, ptr [[P:%.*]], align 4
274
+ ; CHECK-NEXT: store volatile <2 x float> poison, ptr [[P]], align 8
275
+ ; CHECK-NEXT: store volatile <4 x double> poison, ptr [[P]], align 32
276
+ ; CHECK-NEXT: ret void
277
+ ;
278
+ %tanh_f32 = call float @llvm.tanh (float poison)
279
+ store volatile float %tanh_f32 , ptr %P
280
+
281
+ %tanh_2xf32 = call <2 x float > @llvm.tanh (<2 x float > poison)
282
+ store volatile <2 x float > %tanh_2xf32 , ptr %P
283
+
284
+ %tanh_4xf64 = call <4 x double > @llvm.tanh (<4 x double > poison)
285
+ store volatile <4 x double > %tanh_4xf64 , ptr %P
286
+
287
+ ret void
288
+ }
0 commit comments