Skip to content

Commit c9de92e

Browse files
committed
[X86] Add tests for min/maxnum with const operand; NFC
llvm-svn: 361700
1 parent 3c7edb2 commit c9de92e

File tree

2 files changed

+136
-0
lines changed

2 files changed

+136
-0
lines changed

llvm/test/CodeGen/X86/fmaxnum.ll

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,5 +469,73 @@ define <2 x double> @maxnum_intrinsic_nnan_attr_f64(<2 x double> %a, <2 x double
469469
ret <2 x double> %r
470470
}
471471

472+
define float @test_maxnum_const_op1(float %x) {
473+
; SSE-LABEL: test_maxnum_const_op1:
474+
; SSE: # %bb.0:
475+
; SSE-NEXT: movss {{.*#+}} xmm2 = mem[0],zero,zero,zero
476+
; SSE-NEXT: movaps %xmm0, %xmm1
477+
; SSE-NEXT: cmpunordss %xmm0, %xmm1
478+
; SSE-NEXT: movaps %xmm1, %xmm3
479+
; SSE-NEXT: andps %xmm2, %xmm3
480+
; SSE-NEXT: maxss %xmm0, %xmm2
481+
; SSE-NEXT: andnps %xmm2, %xmm1
482+
; SSE-NEXT: orps %xmm3, %xmm1
483+
; SSE-NEXT: movaps %xmm1, %xmm0
484+
; SSE-NEXT: retq
485+
;
486+
; AVX1-LABEL: test_maxnum_const_op1:
487+
; AVX1: # %bb.0:
488+
; AVX1-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero
489+
; AVX1-NEXT: vmaxss %xmm0, %xmm1, %xmm2
490+
; AVX1-NEXT: vcmpunordss %xmm0, %xmm0, %xmm0
491+
; AVX1-NEXT: vblendvps %xmm0, %xmm1, %xmm2, %xmm0
492+
; AVX1-NEXT: retq
493+
;
494+
; AVX512-LABEL: test_maxnum_const_op1:
495+
; AVX512: # %bb.0:
496+
; AVX512-NEXT: vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero
497+
; AVX512-NEXT: vmaxss %xmm0, %xmm2, %xmm1
498+
; AVX512-NEXT: vcmpunordss %xmm0, %xmm0, %k1
499+
; AVX512-NEXT: vmovss %xmm2, %xmm0, %xmm1 {%k1}
500+
; AVX512-NEXT: vmovaps %xmm1, %xmm0
501+
; AVX512-NEXT: retq
502+
%r = call float @llvm.maxnum.f32(float 1.0, float %x)
503+
ret float %r
504+
}
505+
506+
define float @test_maxnum_const_op2(float %x) {
507+
; SSE-LABEL: test_maxnum_const_op2:
508+
; SSE: # %bb.0:
509+
; SSE-NEXT: movss {{.*#+}} xmm2 = mem[0],zero,zero,zero
510+
; SSE-NEXT: movaps %xmm0, %xmm1
511+
; SSE-NEXT: cmpunordss %xmm0, %xmm1
512+
; SSE-NEXT: movaps %xmm1, %xmm3
513+
; SSE-NEXT: andps %xmm2, %xmm3
514+
; SSE-NEXT: maxss %xmm0, %xmm2
515+
; SSE-NEXT: andnps %xmm2, %xmm1
516+
; SSE-NEXT: orps %xmm3, %xmm1
517+
; SSE-NEXT: movaps %xmm1, %xmm0
518+
; SSE-NEXT: retq
519+
;
520+
; AVX1-LABEL: test_maxnum_const_op2:
521+
; AVX1: # %bb.0:
522+
; AVX1-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero
523+
; AVX1-NEXT: vmaxss %xmm0, %xmm1, %xmm2
524+
; AVX1-NEXT: vcmpunordss %xmm0, %xmm0, %xmm0
525+
; AVX1-NEXT: vblendvps %xmm0, %xmm1, %xmm2, %xmm0
526+
; AVX1-NEXT: retq
527+
;
528+
; AVX512-LABEL: test_maxnum_const_op2:
529+
; AVX512: # %bb.0:
530+
; AVX512-NEXT: vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero
531+
; AVX512-NEXT: vmaxss %xmm0, %xmm2, %xmm1
532+
; AVX512-NEXT: vcmpunordss %xmm0, %xmm0, %k1
533+
; AVX512-NEXT: vmovss %xmm2, %xmm0, %xmm1 {%k1}
534+
; AVX512-NEXT: vmovaps %xmm1, %xmm0
535+
; AVX512-NEXT: retq
536+
%r = call float @llvm.maxnum.f32(float %x, float 1.0)
537+
ret float %r
538+
}
539+
472540
attributes #0 = { "no-nans-fp-math"="true" }
473541

llvm/test/CodeGen/X86/fminnum.ll

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,5 +469,73 @@ define <4 x float> @minnum_intrinsic_nnan_attr_v4f32(<4 x float> %a, <4 x float>
469469
ret <4 x float> %r
470470
}
471471

472+
define float @test_minnum_const_op1(float %x) {
473+
; SSE-LABEL: test_minnum_const_op1:
474+
; SSE: # %bb.0:
475+
; SSE-NEXT: movss {{.*#+}} xmm2 = mem[0],zero,zero,zero
476+
; SSE-NEXT: movaps %xmm0, %xmm1
477+
; SSE-NEXT: cmpunordss %xmm0, %xmm1
478+
; SSE-NEXT: movaps %xmm1, %xmm3
479+
; SSE-NEXT: andps %xmm2, %xmm3
480+
; SSE-NEXT: minss %xmm0, %xmm2
481+
; SSE-NEXT: andnps %xmm2, %xmm1
482+
; SSE-NEXT: orps %xmm3, %xmm1
483+
; SSE-NEXT: movaps %xmm1, %xmm0
484+
; SSE-NEXT: retq
485+
;
486+
; AVX1-LABEL: test_minnum_const_op1:
487+
; AVX1: # %bb.0:
488+
; AVX1-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero
489+
; AVX1-NEXT: vminss %xmm0, %xmm1, %xmm2
490+
; AVX1-NEXT: vcmpunordss %xmm0, %xmm0, %xmm0
491+
; AVX1-NEXT: vblendvps %xmm0, %xmm1, %xmm2, %xmm0
492+
; AVX1-NEXT: retq
493+
;
494+
; AVX512-LABEL: test_minnum_const_op1:
495+
; AVX512: # %bb.0:
496+
; AVX512-NEXT: vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero
497+
; AVX512-NEXT: vminss %xmm0, %xmm2, %xmm1
498+
; AVX512-NEXT: vcmpunordss %xmm0, %xmm0, %k1
499+
; AVX512-NEXT: vmovss %xmm2, %xmm0, %xmm1 {%k1}
500+
; AVX512-NEXT: vmovaps %xmm1, %xmm0
501+
; AVX512-NEXT: retq
502+
%r = call float @llvm.minnum.f32(float 1.0, float %x)
503+
ret float %r
504+
}
505+
506+
define float @test_minnum_const_op2(float %x) {
507+
; SSE-LABEL: test_minnum_const_op2:
508+
; SSE: # %bb.0:
509+
; SSE-NEXT: movss {{.*#+}} xmm2 = mem[0],zero,zero,zero
510+
; SSE-NEXT: movaps %xmm0, %xmm1
511+
; SSE-NEXT: cmpunordss %xmm0, %xmm1
512+
; SSE-NEXT: movaps %xmm1, %xmm3
513+
; SSE-NEXT: andps %xmm2, %xmm3
514+
; SSE-NEXT: minss %xmm0, %xmm2
515+
; SSE-NEXT: andnps %xmm2, %xmm1
516+
; SSE-NEXT: orps %xmm3, %xmm1
517+
; SSE-NEXT: movaps %xmm1, %xmm0
518+
; SSE-NEXT: retq
519+
;
520+
; AVX1-LABEL: test_minnum_const_op2:
521+
; AVX1: # %bb.0:
522+
; AVX1-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero
523+
; AVX1-NEXT: vminss %xmm0, %xmm1, %xmm2
524+
; AVX1-NEXT: vcmpunordss %xmm0, %xmm0, %xmm0
525+
; AVX1-NEXT: vblendvps %xmm0, %xmm1, %xmm2, %xmm0
526+
; AVX1-NEXT: retq
527+
;
528+
; AVX512-LABEL: test_minnum_const_op2:
529+
; AVX512: # %bb.0:
530+
; AVX512-NEXT: vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero
531+
; AVX512-NEXT: vminss %xmm0, %xmm2, %xmm1
532+
; AVX512-NEXT: vcmpunordss %xmm0, %xmm0, %k1
533+
; AVX512-NEXT: vmovss %xmm2, %xmm0, %xmm1 {%k1}
534+
; AVX512-NEXT: vmovaps %xmm1, %xmm0
535+
; AVX512-NEXT: retq
536+
%r = call float @llvm.minnum.f32(float %x, float 1.0)
537+
ret float %r
538+
}
539+
472540
attributes #0 = { "no-nans-fp-math"="true" }
473541

0 commit comments

Comments
 (0)