mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-14 07:31:47 +00:00
AVX512: Fix predicate of AVX pcmpeqw/b , pcmpgtb/w/d instructions . AVX512 version of this instructions return result in kmask register, so AVX patterns should not be disabled.
Differential Revision: http://reviews.llvm.org/D17517 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261619 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d7746920fa
commit
ec0406b1e1
@ -728,6 +728,8 @@ def vectoraddr : ComplexPattern<iPTR, 5, "selectVectorAddr", [],[SDNPWantParent]
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// X86 Instruction Predicate Definitions.
|
||||
def TruePredicate : Predicate<"true">;
|
||||
|
||||
def HasCMov : Predicate<"Subtarget->hasCMov()">;
|
||||
def NoCMov : Predicate<"!Subtarget->hasCMov()">;
|
||||
|
||||
|
@ -4277,17 +4277,17 @@ let ExeDomain = SSEPackedInt, SchedRW = [WriteVecShift], hasSideEffects = 0 in {
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
defm PCMPEQB : PDI_binop_all<0x74, "pcmpeqb", X86pcmpeq, v16i8, v32i8,
|
||||
SSE_INTALU_ITINS_P, 1, NoVLX_Or_NoBWI>;
|
||||
SSE_INTALU_ITINS_P, 1, TruePredicate>;
|
||||
defm PCMPEQW : PDI_binop_all<0x75, "pcmpeqw", X86pcmpeq, v8i16, v16i16,
|
||||
SSE_INTALU_ITINS_P, 1, NoVLX_Or_NoBWI>;
|
||||
SSE_INTALU_ITINS_P, 1, TruePredicate>;
|
||||
defm PCMPEQD : PDI_binop_all<0x76, "pcmpeqd", X86pcmpeq, v4i32, v8i32,
|
||||
SSE_INTALU_ITINS_P, 1, NoVLX>;
|
||||
SSE_INTALU_ITINS_P, 1, TruePredicate>;
|
||||
defm PCMPGTB : PDI_binop_all<0x64, "pcmpgtb", X86pcmpgt, v16i8, v32i8,
|
||||
SSE_INTALU_ITINS_P, 0, NoVLX_Or_NoBWI>;
|
||||
SSE_INTALU_ITINS_P, 0, TruePredicate>;
|
||||
defm PCMPGTW : PDI_binop_all<0x65, "pcmpgtw", X86pcmpgt, v8i16, v16i16,
|
||||
SSE_INTALU_ITINS_P, 0, NoVLX_Or_NoBWI>;
|
||||
SSE_INTALU_ITINS_P, 0, TruePredicate>;
|
||||
defm PCMPGTD : PDI_binop_all<0x66, "pcmpgtd", X86pcmpgt, v4i32, v8i32,
|
||||
SSE_INTALU_ITINS_P, 0, NoVLX>;
|
||||
SSE_INTALU_ITINS_P, 0, TruePredicate>;
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
// SSE2 - Packed Integer Shuffle Instructions
|
||||
|
@ -654,3 +654,12 @@ define <4 x float> @test_x86_fmsub_ps(<4 x float> %a0, <4 x float> %a1, <4 x flo
|
||||
%res = fsub <4 x float> %x, %a2
|
||||
ret <4 x float> %res
|
||||
}
|
||||
|
||||
define <32 x i8> @test_cmpgtb(<32 x i8> %A) {
|
||||
; generate the follow code
|
||||
; vpxor %ymm1, %ymm1, %ymm1
|
||||
; vpcmpgtb %ymm0, %ymm1, %ymm0
|
||||
%B = ashr <32 x i8> %A, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
|
||||
ret <32 x i8> %B
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user