forked from OSchip/llvm-project
[X86] Add NoAVX predicates to the patterns for the legacy encoded PCLMUL and AES instructions.
Previously we were just relying on pattern order to define precedence. Which works, but isn't the best way. llvm-svn: 313471
This commit is contained in:
parent
dbf17cf048
commit
ffca0ff9bf
|
@ -839,18 +839,18 @@ class AVX512<bits<8> o, Format F, dag outs, dag ins, string asm,
|
||||||
class AES8I<bits<8> o, Format F, dag outs, dag ins, string asm,
|
class AES8I<bits<8> o, Format F, dag outs, dag ins, string asm,
|
||||||
list<dag>pattern, InstrItinClass itin = IIC_AES>
|
list<dag>pattern, InstrItinClass itin = IIC_AES>
|
||||||
: I<o, F, outs, ins, asm, pattern, itin, SSEPackedInt>, T8PD,
|
: I<o, F, outs, ins, asm, pattern, itin, SSEPackedInt>, T8PD,
|
||||||
Requires<[HasAES]>;
|
Requires<[NoAVX, HasAES]>;
|
||||||
|
|
||||||
class AESAI<bits<8> o, Format F, dag outs, dag ins, string asm,
|
class AESAI<bits<8> o, Format F, dag outs, dag ins, string asm,
|
||||||
list<dag> pattern, InstrItinClass itin = NoItinerary>
|
list<dag> pattern, InstrItinClass itin = NoItinerary>
|
||||||
: Ii8<o, F, outs, ins, asm, pattern, itin, SSEPackedInt>, TAPD,
|
: Ii8<o, F, outs, ins, asm, pattern, itin, SSEPackedInt>, TAPD,
|
||||||
Requires<[HasAES]>;
|
Requires<[NoAVX, HasAES]>;
|
||||||
|
|
||||||
// PCLMUL Instruction Templates
|
// PCLMUL Instruction Templates
|
||||||
class PCLMULIi8<bits<8> o, Format F, dag outs, dag ins, string asm,
|
class PCLMULIi8<bits<8> o, Format F, dag outs, dag ins, string asm,
|
||||||
list<dag>pattern, InstrItinClass itin = NoItinerary>
|
list<dag>pattern, InstrItinClass itin = NoItinerary>
|
||||||
: Ii8<o, F, outs, ins, asm, pattern, itin, SSEPackedInt>, TAPD,
|
: Ii8<o, F, outs, ins, asm, pattern, itin, SSEPackedInt>, TAPD,
|
||||||
Requires<[HasPCLMUL]>;
|
Requires<[NoAVX, HasPCLMUL]>;
|
||||||
|
|
||||||
class AVXPCLMULIi8<bits<8> o, Format F, dag outs, dag ins, string asm,
|
class AVXPCLMULIi8<bits<8> o, Format F, dag outs, dag ins, string asm,
|
||||||
list<dag>pattern, InstrItinClass itin = NoItinerary>
|
list<dag>pattern, InstrItinClass itin = NoItinerary>
|
||||||
|
|
|
@ -801,6 +801,7 @@ def UseSSE41 : Predicate<"Subtarget->hasSSE41() && !Subtarget->hasAVX()">;
|
||||||
def HasSSE42 : Predicate<"Subtarget->hasSSE42()">;
|
def HasSSE42 : Predicate<"Subtarget->hasSSE42()">;
|
||||||
def UseSSE42 : Predicate<"Subtarget->hasSSE42() && !Subtarget->hasAVX()">;
|
def UseSSE42 : Predicate<"Subtarget->hasSSE42() && !Subtarget->hasAVX()">;
|
||||||
def HasSSE4A : Predicate<"Subtarget->hasSSE4A()">;
|
def HasSSE4A : Predicate<"Subtarget->hasSSE4A()">;
|
||||||
|
def NoAVX : Predicate<"!Subtarget->hasAVX()">;
|
||||||
def HasAVX : Predicate<"Subtarget->hasAVX()">;
|
def HasAVX : Predicate<"Subtarget->hasAVX()">;
|
||||||
def HasAVX2 : Predicate<"Subtarget->hasAVX2()">;
|
def HasAVX2 : Predicate<"Subtarget->hasAVX2()">;
|
||||||
def HasAVX1Only : Predicate<"Subtarget->hasAVX() && !Subtarget->hasAVX2()">;
|
def HasAVX1Only : Predicate<"Subtarget->hasAVX() && !Subtarget->hasAVX2()">;
|
||||||
|
|
Loading…
Reference in New Issue