diff options
author | Robert Khasanov <rob.khasanov@gmail.com> | 2014-10-28 12:28:51 +0000 |
---|---|---|
committer | Robert Khasanov <rob.khasanov@gmail.com> | 2014-10-28 12:28:51 +0000 |
commit | dd09a8f320d8dc0e5e57e68cc4e3d6dbb15ed4a3 (patch) | |
tree | 318dbe284a2b30d1926cc9270cf6ac761014ca84 /clang/unittests/Format/FormatTestJava.cpp | |
parent | d0e13af22cd700c57349b2b039b5c16723cfac6b (diff) | |
download | llvm-dd09a8f320d8dc0e5e57e68cc4e3d6dbb15ed4a3.zip llvm-dd09a8f320d8dc0e5e57e68cc4e3d6dbb15ed4a3.tar.gz llvm-dd09a8f320d8dc0e5e57e68cc4e3d6dbb15ed4a3.tar.bz2 |
[AVX512] Bring back vector-shuffle lowering support through broadcasts
Ffter commit at rev219046 512-bit broadcasts lowering become non-optimal. Most of tests on broadcasting and embedded broadcasting were changed and they doesn’t produce efficient code.
Example below is from commit changes (it’s the first test from test/CodeGen/X86/avx512-vbroadcast.ll):
define <16 x i32> @_inreg16xi32(i32 %a) {
; CHECK-LABEL: _inreg16xi32:
; CHECK: ## BB#0:
-; CHECK-NEXT: vpbroadcastd %edi, %zmm0
+; CHECK-NEXT: vmovd %edi, %xmm0
+; CHECK-NEXT: vpbroadcastd %xmm0, %ymm0
+; CHECK-NEXT: vinserti64x4 $1, %ymm0, %zmm0, %zmm0
; CHECK-NEXT: retq
%b = insertelement <16 x i32> undef, i32 %a, i32 0
%c = shufflevector <16 x i32> %b, <16 x i32> undef, <16 x i32> zeroinitializer
ret <16 x i32> %c
}
Here, 256-bit broadcast was generated instead of 512-bit one.
In this patch
1) I added vector-shuffle lowering through broadcasts
2) Removed asserts and branches likes because this is incorrect
- assert(Subtarget->hasDQI() && "We can only lower v8i64 with AVX-512-DQI");
3) Fixed lowering tests
llvm-svn: 220774
Diffstat (limited to 'clang/unittests/Format/FormatTestJava.cpp')
0 files changed, 0 insertions, 0 deletions