From: Elena Demikhovsky Date: Sun, 17 May 2015 08:08:06 +0000 (+0000) Subject: AVX-512: fixed extended load to 512-bit register X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=a0eb8033762a1a4765c06957419eb889ddace887;p=oota-llvm.git AVX-512: fixed extended load to 512-bit register git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237537 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 5ec719bbd8c..06528161e52 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -14022,8 +14022,8 @@ static SDValue LowerExtendedLoad(SDValue Op, const X86Subtarget *Subtarget, "Can only lower sext loads with a single scalar load!"); unsigned loadRegZize = RegSz; - if (Ext == ISD::SEXTLOAD && RegSz == 256) - loadRegZize /= 2; + if (Ext == ISD::SEXTLOAD && RegSz >= 256) + loadRegZize = 128; // Represent our vector as a sequence of elements which are the // largest scalar that we can load. diff --git a/test/CodeGen/X86/avx512-trunc-ext.ll b/test/CodeGen/X86/avx512-trunc-ext.ll index 09806e3ffb5..560d9680fc1 100644 --- a/test/CodeGen/X86/avx512-trunc-ext.ll +++ b/test/CodeGen/X86/avx512-trunc-ext.ll @@ -193,3 +193,13 @@ define <8 x i64> @sext_8i1_8i64(<8 x i32> %a1, <8 x i32> %a2) nounwind { %y = sext <8 x i1> %x to <8 x i64> ret <8 x i64> %y } + +; CHECK-LABEL: @extload_v8i64 +; CHECK: vpmovsxbq +define void @extload_v8i64(<8 x i8>* %a, <8 x i64>* %res) { + %sign_load = load <8 x i8>, <8 x i8>* %a + %c = sext <8 x i8> %sign_load to <8 x i64> + store <8 x i64> %c, <8 x i64>* %res + ret void +} +