@@ -1328,36 +1328,51 @@ define <4 x float> @test_fmaximum_v4f32_splat(<4 x float> %x, float %y) {
1328
1328
; SSE2-LABEL: test_fmaximum_v4f32_splat:
1329
1329
; SSE2: # %bb.0:
1330
1330
; SSE2-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0,0,0]
1331
- ; SSE2-NEXT: movaps %xmm0, %xmm2
1331
+ ; SSE2-NEXT: pxor %xmm2, %xmm2
1332
+ ; SSE2-NEXT: pcmpgtd %xmm0, %xmm2
1333
+ ; SSE2-NEXT: movdqa %xmm2, %xmm3
1334
+ ; SSE2-NEXT: pandn %xmm0, %xmm3
1335
+ ; SSE2-NEXT: movaps %xmm1, %xmm4
1336
+ ; SSE2-NEXT: andps %xmm2, %xmm4
1337
+ ; SSE2-NEXT: orps %xmm3, %xmm4
1338
+ ; SSE2-NEXT: pand %xmm2, %xmm0
1339
+ ; SSE2-NEXT: andnps %xmm1, %xmm2
1340
+ ; SSE2-NEXT: por %xmm2, %xmm0
1341
+ ; SSE2-NEXT: movdqa %xmm0, %xmm1
1342
+ ; SSE2-NEXT: maxps %xmm4, %xmm1
1343
+ ; SSE2-NEXT: movdqa %xmm0, %xmm2
1332
1344
; SSE2-NEXT: cmpunordps %xmm0, %xmm2
1333
- ; SSE2-NEXT: movaps %xmm0, %xmm3
1334
- ; SSE2-NEXT: andps %xmm2, %xmm3
1335
- ; SSE2-NEXT: maxps %xmm1, %xmm0
1336
- ; SSE2-NEXT: andnps %xmm0, %xmm2
1337
- ; SSE2-NEXT: orps %xmm3, %xmm2
1338
- ; SSE2-NEXT: movaps %xmm2, %xmm0
1345
+ ; SSE2-NEXT: andps %xmm2, %xmm0
1346
+ ; SSE2-NEXT: andnps %xmm1, %xmm2
1347
+ ; SSE2-NEXT: orps %xmm2, %xmm0
1339
1348
; SSE2-NEXT: retq
1340
1349
;
1341
1350
; AVX1-LABEL: test_fmaximum_v4f32_splat:
1342
1351
; AVX1: # %bb.0:
1343
1352
; AVX1-NEXT: vshufps {{.*#+}} xmm1 = xmm1[0,0,0,0]
1344
- ; AVX1-NEXT: vmaxps %xmm1, %xmm0, %xmm1
1353
+ ; AVX1-NEXT: vblendvps %xmm0, %xmm1, %xmm0, %xmm2
1354
+ ; AVX1-NEXT: vblendvps %xmm0, %xmm0, %xmm1, %xmm0
1355
+ ; AVX1-NEXT: vmaxps %xmm2, %xmm0, %xmm1
1345
1356
; AVX1-NEXT: vcmpunordps %xmm0, %xmm0, %xmm2
1346
1357
; AVX1-NEXT: vblendvps %xmm2, %xmm0, %xmm1, %xmm0
1347
1358
; AVX1-NEXT: retq
1348
1359
;
1349
1360
; AVX512-LABEL: test_fmaximum_v4f32_splat:
1350
1361
; AVX512: # %bb.0:
1351
1362
; AVX512-NEXT: vbroadcastss %xmm1, %xmm1
1352
- ; AVX512-NEXT: vmaxps %xmm1, %xmm0, %xmm1
1363
+ ; AVX512-NEXT: vblendvps %xmm0, %xmm1, %xmm0, %xmm2
1364
+ ; AVX512-NEXT: vblendvps %xmm0, %xmm0, %xmm1, %xmm0
1365
+ ; AVX512-NEXT: vmaxps %xmm2, %xmm0, %xmm1
1353
1366
; AVX512-NEXT: vcmpunordps %xmm0, %xmm0, %xmm2
1354
1367
; AVX512-NEXT: vblendvps %xmm2, %xmm0, %xmm1, %xmm0
1355
1368
; AVX512-NEXT: retq
1356
1369
;
1357
1370
; X86-LABEL: test_fmaximum_v4f32_splat:
1358
1371
; X86: # %bb.0:
1359
1372
; X86-NEXT: vbroadcastss {{[0-9]+}}(%esp), %xmm1
1360
- ; X86-NEXT: vmaxps %xmm1, %xmm0, %xmm1
1373
+ ; X86-NEXT: vblendvps %xmm0, %xmm1, %xmm0, %xmm2
1374
+ ; X86-NEXT: vblendvps %xmm0, %xmm0, %xmm1, %xmm0
1375
+ ; X86-NEXT: vmaxps %xmm2, %xmm0, %xmm1
1361
1376
; X86-NEXT: vcmpunordps %xmm0, %xmm0, %xmm2
1362
1377
; X86-NEXT: vblendvps %xmm2, %xmm0, %xmm1, %xmm0
1363
1378
; X86-NEXT: retl
0 commit comments