Skip to content

Commit 4b54d1a

Browse files
committed
[X86] Add #140693 test coverage
1 parent a17ff7f commit 4b54d1a

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

llvm/test/CodeGen/X86/scalarize-fp.ll

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -899,3 +899,36 @@ define <4 x float> @multi_use_binop(<4 x float> %x, <4 x float> %y) {
899899
%r = fadd <4 x float> %mul0, %mul1
900900
ret <4 x float> %r
901901
}
902+
903+
; PR140693
904+
define <4 x float> @merge_fcmp_cmpeqss_v4f32(<4 x float> %x, <4 x float> %y) {
905+
; SSE-LABEL: merge_fcmp_cmpeqss_v4f32:
906+
; SSE: # %bb.0:
907+
; SSE-NEXT: cmpeqss %xmm0, %xmm1
908+
; SSE-NEXT: movss {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3]
909+
; SSE-NEXT: retq
910+
;
911+
; AVX1-LABEL: merge_fcmp_cmpeqss_v4f32:
912+
; AVX1: # %bb.0:
913+
; AVX1-NEXT: vcmpeqss %xmm0, %xmm1, %xmm1
914+
; AVX1-NEXT: vmovd %xmm1, %eax
915+
; AVX1-NEXT: vmovd %eax, %xmm1
916+
; AVX1-NEXT: vblendps {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3]
917+
; AVX1-NEXT: retq
918+
;
919+
; AVX512-LABEL: merge_fcmp_cmpeqss_v4f32:
920+
; AVX512: # %bb.0:
921+
; AVX512-NEXT: vcmpeqss %xmm0, %xmm1, %k0
922+
; AVX512-NEXT: kmovw %k0, %eax
923+
; AVX512-NEXT: negl %eax
924+
; AVX512-NEXT: vmovd %eax, %xmm1
925+
; AVX512-NEXT: vblendps {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3]
926+
; AVX512-NEXT: retq
927+
%cmp = fcmp oeq <4 x float> %y, %x
928+
%ext = extractelement <4 x i1> %cmp, i64 0
929+
%neg = sext i1 %ext to i32
930+
%vec = insertelement <4 x i32> poison, i32 %neg, i64 0
931+
%vecinit.i = bitcast <4 x i32> %vec to <4 x float>
932+
%vecinit3.i = shufflevector <4 x float> %vecinit.i, <4 x float> %x, <4 x i32> <i32 0, i32 5, i32 6, i32 7>
933+
ret <4 x float> %vecinit3.i
934+
}

0 commit comments

Comments
 (0)