From e070cf81196d2415f2f64ddbdfed9a49d9b96245 Mon Sep 17 00:00:00 2001 From: Sanjay Patel Date: Fri, 25 Oct 2019 15:58:35 -0400 Subject: [PATCH] [x86] add tests for extractelement with undef index (PR42689); NFC --- llvm/test/CodeGen/X86/extractelement-index.ll | 36 +++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/llvm/test/CodeGen/X86/extractelement-index.ll b/llvm/test/CodeGen/X86/extractelement-index.ll index a34ea7f..c70949a 100644 --- a/llvm/test/CodeGen/X86/extractelement-index.ll +++ b/llvm/test/CodeGen/X86/extractelement-index.ll @@ -8,6 +8,42 @@ ; ExtractElement - Constant Index ; +define i64 @extract_undef_index_from_zero_vec() nounwind { +; SSE-LABEL: extract_undef_index_from_zero_vec: +; SSE: # %bb.0: +; SSE-NEXT: xorps %xmm0, %xmm0 +; SSE-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp) +; SSE-NEXT: movq -{{[0-9]+}}(%rsp), %rax +; SSE-NEXT: retq +; +; AVX-LABEL: extract_undef_index_from_zero_vec: +; AVX: # %bb.0: +; AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0 +; AVX-NEXT: vmovaps %xmm0, -{{[0-9]+}}(%rsp) +; AVX-NEXT: movq -{{[0-9]+}}(%rsp), %rax +; AVX-NEXT: retq + %E = extractelement <2 x i64> zeroinitializer, i64 undef + ret i64 %E +} + +define i64 @extract_undef_index_from_nonzero_vec() nounwind { +; SSE-LABEL: extract_undef_index_from_nonzero_vec: +; SSE: # %bb.0: +; SSE-NEXT: pcmpeqd %xmm0, %xmm0 +; SSE-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) +; SSE-NEXT: movq -{{[0-9]+}}(%rsp), %rax +; SSE-NEXT: retq +; +; AVX-LABEL: extract_undef_index_from_nonzero_vec: +; AVX: # %bb.0: +; AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 +; AVX-NEXT: vmovdqa %xmm0, -{{[0-9]+}}(%rsp) +; AVX-NEXT: movq -{{[0-9]+}}(%rsp), %rax +; AVX-NEXT: retq + %E = extractelement <2 x i64> , i64 undef + ret i64 %E +} + define i8 @extractelement_v16i8_1(<16 x i8> %a) nounwind { ; SSE2-LABEL: extractelement_v16i8_1: ; SSE2: # %bb.0: -- 2.7.4