diff options
| author | Craig Topper <craig.topper@intel.com> | 2017-12-31 07:38:33 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2017-12-31 07:38:33 +0000 |
| commit | a362dee774a705e0401a7b19e4baf5e95d1a6d07 (patch) | |
| tree | 5b33d5699f16fdfebcc69ecee8ad6b3386f69996 | |
| parent | 7ba1b768542023e32f9f470bc3d61d27f54348ee (diff) | |
| download | bcm5719-llvm-a362dee774a705e0401a7b19e4baf5e95d1a6d07.tar.gz bcm5719-llvm-a362dee774a705e0401a7b19e4baf5e95d1a6d07.zip | |
[X86] Remove AND32ri8 from pattern for v1i1 load.
I don't think anything would actually expect the other bits to be zero.
llvm-svn: 321596
| -rw-r--r-- | llvm/lib/Target/X86/X86InstrAVX512.td | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/avx512-calling-conv.ll | 19 |
2 files changed, 13 insertions, 8 deletions
diff --git a/llvm/lib/Target/X86/X86InstrAVX512.td b/llvm/lib/Target/X86/X86InstrAVX512.td index ebf9bd7d8b0..901efbaf408 100644 --- a/llvm/lib/Target/X86/X86InstrAVX512.td +++ b/llvm/lib/Target/X86/X86InstrAVX512.td @@ -2748,7 +2748,7 @@ let Predicates = [HasAVX512] in { def : Pat<(store (i16 (bitconvert (v16i1 VK16:$src))), addr:$dst), (KMOVWmk addr:$dst, VK16:$src)>; def : Pat<(v1i1 (load addr:$src)), - (COPY_TO_REGCLASS (AND32ri8 (MOVZX32rm8 addr:$src), (i32 1)), VK1)>; + (COPY_TO_REGCLASS (MOVZX32rm8 addr:$src), VK1)>; def : Pat<(v16i1 (bitconvert (i16 (load addr:$src)))), (KMOVWkm addr:$src)>; } diff --git a/llvm/test/CodeGen/X86/avx512-calling-conv.ll b/llvm/test/CodeGen/X86/avx512-calling-conv.ll index 5ea44c5ea2d..e3cf2181387 100644 --- a/llvm/test/CodeGen/X86/avx512-calling-conv.ll +++ b/llvm/test/CodeGen/X86/avx512-calling-conv.ll @@ -412,18 +412,23 @@ define i32 @test12(i32 %a1, i32 %a2, i32 %b1) { } define <1 x i1> @test13(<1 x i1>* %foo) { -; ALL_X64-LABEL: test13: -; ALL_X64: ## %bb.0: -; ALL_X64-NEXT: movzbl (%rdi), %eax -; ALL_X64-NEXT: andl $1, %eax -; ALL_X64-NEXT: ## kill: def %al killed %al killed %eax -; ALL_X64-NEXT: retq +; KNL-LABEL: test13: +; KNL: ## %bb.0: +; KNL-NEXT: movzbl (%rdi), %eax +; KNL-NEXT: ## kill: def %al killed %al killed %eax +; KNL-NEXT: retq +; +; SKX-LABEL: test13: +; SKX: ## %bb.0: +; SKX-NEXT: kmovb (%rdi), %k0 +; SKX-NEXT: kmovd %k0, %eax +; SKX-NEXT: ## kill: def %al killed %al killed %eax +; SKX-NEXT: retq ; ; KNL_X32-LABEL: test13: ; KNL_X32: ## %bb.0: ; KNL_X32-NEXT: movl {{[0-9]+}}(%esp), %eax ; KNL_X32-NEXT: movzbl (%eax), %eax -; KNL_X32-NEXT: andl $1, %eax ; KNL_X32-NEXT: ## kill: def %al killed %al killed %eax ; KNL_X32-NEXT: retl %bar = load <1 x i1>, <1 x i1>* %foo |

