forked from OSchip/llvm-project
[X86] Add an AVX check prefix to bitcast-vector-bool.ll to combine checks where AVX1/2/512 are all the same. NFC
This commit is contained in:
parent
59d48eadd0
commit
d3c79d1953
|
@ -1,9 +1,9 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=SSE2-SSSE3,SSE2
|
||||
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+ssse3 | FileCheck %s --check-prefixes=SSE2-SSSE3,SSSE3
|
||||
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX12,AVX1
|
||||
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX12,AVX2
|
||||
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512vl,+avx512bw | FileCheck %s --check-prefixes=AVX512
|
||||
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX12,AVX1
|
||||
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX12,AVX2
|
||||
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512vl,+avx512bw | FileCheck %s --check-prefixes=AVX,AVX512
|
||||
|
||||
;
|
||||
; 128-bit vectors
|
||||
|
@ -55,25 +55,15 @@ define i2 @bitcast_v4i32_to_v2i2(<4 x i32> %a0) nounwind {
|
|||
; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax
|
||||
; SSE2-SSSE3-NEXT: retq
|
||||
;
|
||||
; AVX12-LABEL: bitcast_v4i32_to_v2i2:
|
||||
; AVX12: # %bb.0:
|
||||
; AVX12-NEXT: vmovmskps %xmm0, %eax
|
||||
; AVX12-NEXT: movl %eax, %ecx
|
||||
; AVX12-NEXT: shrb $2, %cl
|
||||
; AVX12-NEXT: andb $3, %al
|
||||
; AVX12-NEXT: addb %cl, %al
|
||||
; AVX12-NEXT: # kill: def $al killed $al killed $eax
|
||||
; AVX12-NEXT: retq
|
||||
;
|
||||
; AVX512-LABEL: bitcast_v4i32_to_v2i2:
|
||||
; AVX512: # %bb.0:
|
||||
; AVX512-NEXT: vmovmskps %xmm0, %eax
|
||||
; AVX512-NEXT: movl %eax, %ecx
|
||||
; AVX512-NEXT: shrb $2, %cl
|
||||
; AVX512-NEXT: andb $3, %al
|
||||
; AVX512-NEXT: addb %cl, %al
|
||||
; AVX512-NEXT: # kill: def $al killed $al killed $eax
|
||||
; AVX512-NEXT: retq
|
||||
; AVX-LABEL: bitcast_v4i32_to_v2i2:
|
||||
; AVX: # %bb.0:
|
||||
; AVX-NEXT: vmovmskps %xmm0, %eax
|
||||
; AVX-NEXT: movl %eax, %ecx
|
||||
; AVX-NEXT: shrb $2, %cl
|
||||
; AVX-NEXT: andb $3, %al
|
||||
; AVX-NEXT: addb %cl, %al
|
||||
; AVX-NEXT: # kill: def $al killed $al killed $eax
|
||||
; AVX-NEXT: retq
|
||||
%1 = icmp slt <4 x i32> %a0, zeroinitializer
|
||||
%2 = bitcast <4 x i1> %1 to <2 x i2>
|
||||
%3 = extractelement <2 x i2> %2, i32 0
|
||||
|
@ -133,23 +123,14 @@ define i8 @bitcast_v16i8_to_v2i8(<16 x i8> %a0) nounwind {
|
|||
; SSE2-SSSE3-NEXT: addb -{{[0-9]+}}(%rsp), %al
|
||||
; SSE2-SSSE3-NEXT: retq
|
||||
;
|
||||
; AVX12-LABEL: bitcast_v16i8_to_v2i8:
|
||||
; AVX12: # %bb.0:
|
||||
; AVX12-NEXT: vpmovmskb %xmm0, %ecx
|
||||
; AVX12-NEXT: movl %ecx, %eax
|
||||
; AVX12-NEXT: shrl $8, %eax
|
||||
; AVX12-NEXT: addb %cl, %al
|
||||
; AVX12-NEXT: # kill: def $al killed $al killed $eax
|
||||
; AVX12-NEXT: retq
|
||||
;
|
||||
; AVX512-LABEL: bitcast_v16i8_to_v2i8:
|
||||
; AVX512: # %bb.0:
|
||||
; AVX512-NEXT: vpmovmskb %xmm0, %ecx
|
||||
; AVX512-NEXT: movl %ecx, %eax
|
||||
; AVX512-NEXT: shrl $8, %eax
|
||||
; AVX512-NEXT: addb %cl, %al
|
||||
; AVX512-NEXT: # kill: def $al killed $al killed $eax
|
||||
; AVX512-NEXT: retq
|
||||
; AVX-LABEL: bitcast_v16i8_to_v2i8:
|
||||
; AVX: # %bb.0:
|
||||
; AVX-NEXT: vpmovmskb %xmm0, %ecx
|
||||
; AVX-NEXT: movl %ecx, %eax
|
||||
; AVX-NEXT: shrl $8, %eax
|
||||
; AVX-NEXT: addb %cl, %al
|
||||
; AVX-NEXT: # kill: def $al killed $al killed $eax
|
||||
; AVX-NEXT: retq
|
||||
%1 = icmp slt <16 x i8> %a0, zeroinitializer
|
||||
%2 = bitcast <16 x i1> %1 to <2 x i8>
|
||||
%3 = extractelement <2 x i8> %2, i32 0
|
||||
|
@ -174,27 +155,16 @@ define i2 @bitcast_v4i64_to_v2i2(<4 x i64> %a0) nounwind {
|
|||
; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax
|
||||
; SSE2-SSSE3-NEXT: retq
|
||||
;
|
||||
; AVX12-LABEL: bitcast_v4i64_to_v2i2:
|
||||
; AVX12: # %bb.0:
|
||||
; AVX12-NEXT: vmovmskpd %ymm0, %eax
|
||||
; AVX12-NEXT: movl %eax, %ecx
|
||||
; AVX12-NEXT: shrb $2, %cl
|
||||
; AVX12-NEXT: andb $3, %al
|
||||
; AVX12-NEXT: addb %cl, %al
|
||||
; AVX12-NEXT: # kill: def $al killed $al killed $eax
|
||||
; AVX12-NEXT: vzeroupper
|
||||
; AVX12-NEXT: retq
|
||||
;
|
||||
; AVX512-LABEL: bitcast_v4i64_to_v2i2:
|
||||
; AVX512: # %bb.0:
|
||||
; AVX512-NEXT: vmovmskpd %ymm0, %eax
|
||||
; AVX512-NEXT: movl %eax, %ecx
|
||||
; AVX512-NEXT: shrb $2, %cl
|
||||
; AVX512-NEXT: andb $3, %al
|
||||
; AVX512-NEXT: addb %cl, %al
|
||||
; AVX512-NEXT: # kill: def $al killed $al killed $eax
|
||||
; AVX512-NEXT: vzeroupper
|
||||
; AVX512-NEXT: retq
|
||||
; AVX-LABEL: bitcast_v4i64_to_v2i2:
|
||||
; AVX: # %bb.0:
|
||||
; AVX-NEXT: vmovmskpd %ymm0, %eax
|
||||
; AVX-NEXT: movl %eax, %ecx
|
||||
; AVX-NEXT: shrb $2, %cl
|
||||
; AVX-NEXT: andb $3, %al
|
||||
; AVX-NEXT: addb %cl, %al
|
||||
; AVX-NEXT: # kill: def $al killed $al killed $eax
|
||||
; AVX-NEXT: vzeroupper
|
||||
; AVX-NEXT: retq
|
||||
%1 = icmp slt <4 x i64> %a0, zeroinitializer
|
||||
%2 = bitcast <4 x i1> %1 to <2 x i2>
|
||||
%3 = extractelement <2 x i2> %2, i32 0
|
||||
|
@ -216,27 +186,16 @@ define i4 @bitcast_v8i32_to_v2i4(<8 x i32> %a0) nounwind {
|
|||
; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax
|
||||
; SSE2-SSSE3-NEXT: retq
|
||||
;
|
||||
; AVX12-LABEL: bitcast_v8i32_to_v2i4:
|
||||
; AVX12: # %bb.0:
|
||||
; AVX12-NEXT: vmovmskps %ymm0, %eax
|
||||
; AVX12-NEXT: movl %eax, %ecx
|
||||
; AVX12-NEXT: shrb $4, %cl
|
||||
; AVX12-NEXT: andb $15, %al
|
||||
; AVX12-NEXT: addb %cl, %al
|
||||
; AVX12-NEXT: # kill: def $al killed $al killed $eax
|
||||
; AVX12-NEXT: vzeroupper
|
||||
; AVX12-NEXT: retq
|
||||
;
|
||||
; AVX512-LABEL: bitcast_v8i32_to_v2i4:
|
||||
; AVX512: # %bb.0:
|
||||
; AVX512-NEXT: vmovmskps %ymm0, %eax
|
||||
; AVX512-NEXT: movl %eax, %ecx
|
||||
; AVX512-NEXT: shrb $4, %cl
|
||||
; AVX512-NEXT: andb $15, %al
|
||||
; AVX512-NEXT: addb %cl, %al
|
||||
; AVX512-NEXT: # kill: def $al killed $al killed $eax
|
||||
; AVX512-NEXT: vzeroupper
|
||||
; AVX512-NEXT: retq
|
||||
; AVX-LABEL: bitcast_v8i32_to_v2i4:
|
||||
; AVX: # %bb.0:
|
||||
; AVX-NEXT: vmovmskps %ymm0, %eax
|
||||
; AVX-NEXT: movl %eax, %ecx
|
||||
; AVX-NEXT: shrb $4, %cl
|
||||
; AVX-NEXT: andb $15, %al
|
||||
; AVX-NEXT: addb %cl, %al
|
||||
; AVX-NEXT: # kill: def $al killed $al killed $eax
|
||||
; AVX-NEXT: vzeroupper
|
||||
; AVX-NEXT: retq
|
||||
%1 = icmp slt <8 x i32> %a0, zeroinitializer
|
||||
%2 = bitcast <8 x i1> %1 to <2 x i4>
|
||||
%3 = extractelement <2 x i4> %2, i32 0
|
||||
|
|
Loading…
Reference in New Issue