mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-05 01:31:05 +00:00
[X86] Add IntrNoMem to the AVX512 conflict intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226897 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
eb3eb88fb7
commit
c3942c9623
@ -3404,22 +3404,22 @@ let TargetPrefix = "x86" in {
|
||||
GCCBuiltin<"__builtin_ia32_vpconflictsi_512_mask">,
|
||||
Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty,
|
||||
llvm_v16i32_ty, llvm_i16_ty],
|
||||
[]>;
|
||||
[IntrNoMem]>;
|
||||
def int_x86_avx512_mask_conflict_q_512 :
|
||||
GCCBuiltin<"__builtin_ia32_vpconflictdi_512_mask">,
|
||||
Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty,
|
||||
llvm_v8i64_ty, llvm_i8_ty],
|
||||
[]>;
|
||||
[IntrNoMem]>;
|
||||
def int_x86_avx512_mask_lzcnt_d_512 :
|
||||
GCCBuiltin<"__builtin_ia32_vplzcntd_512_mask">,
|
||||
Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty,
|
||||
llvm_v16i32_ty, llvm_i16_ty],
|
||||
[]>;
|
||||
[IntrNoMem]>;
|
||||
def int_x86_avx512_mask_lzcnt_q_512 :
|
||||
GCCBuiltin<"__builtin_ia32_vplzcntq_512_mask">,
|
||||
Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty,
|
||||
llvm_v8i64_ty, llvm_i8_ty],
|
||||
[]>;
|
||||
[IntrNoMem]>;
|
||||
}
|
||||
|
||||
// Vector blend
|
||||
|
@ -5083,14 +5083,17 @@ multiclass avx512_conflict<bits<8> opc, string OpcodeStr,
|
||||
RegisterClass RC, RegisterClass KRC,
|
||||
X86MemOperand x86memop,
|
||||
X86MemOperand x86scalar_mop, string BrdcstStr> {
|
||||
let hasSideEffects = 0 in {
|
||||
def rr : AVX5128I<opc, MRMSrcReg, (outs RC:$dst),
|
||||
(ins RC:$src),
|
||||
!strconcat(OpcodeStr, "\t{$src, ${dst} |${dst}, $src}"),
|
||||
[]>, EVEX;
|
||||
let mayLoad = 1 in
|
||||
def rm : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
|
||||
(ins x86memop:$src),
|
||||
!strconcat(OpcodeStr, "\t{$src, ${dst}|${dst}, $src}"),
|
||||
[]>, EVEX;
|
||||
let mayLoad = 1 in
|
||||
def rmb : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
|
||||
(ins x86scalar_mop:$src),
|
||||
!strconcat(OpcodeStr, "\t{${src}", BrdcstStr,
|
||||
@ -5101,11 +5104,13 @@ multiclass avx512_conflict<bits<8> opc, string OpcodeStr,
|
||||
!strconcat(OpcodeStr,
|
||||
"\t{$src, ${dst} {${mask}} {z}|${dst} {${mask}} {z}, $src}"),
|
||||
[]>, EVEX, EVEX_KZ;
|
||||
let mayLoad = 1 in
|
||||
def rmkz : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
|
||||
(ins KRC:$mask, x86memop:$src),
|
||||
!strconcat(OpcodeStr,
|
||||
"\t{$src, ${dst} {${mask}} {z}|${dst} {${mask}} {z}, $src}"),
|
||||
[]>, EVEX, EVEX_KZ;
|
||||
let mayLoad = 1 in
|
||||
def rmbkz : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
|
||||
(ins KRC:$mask, x86scalar_mop:$src),
|
||||
!strconcat(OpcodeStr, "\t{${src}", BrdcstStr,
|
||||
@ -5119,17 +5124,20 @@ multiclass avx512_conflict<bits<8> opc, string OpcodeStr,
|
||||
!strconcat(OpcodeStr,
|
||||
"\t{$src2, ${dst} {${mask}}|${dst} {${mask}}, $src2}"),
|
||||
[]>, EVEX, EVEX_K;
|
||||
let mayLoad = 1 in
|
||||
def rmk : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
|
||||
(ins RC:$src1, KRC:$mask, x86memop:$src2),
|
||||
!strconcat(OpcodeStr,
|
||||
"\t{$src2, ${dst} {${mask}}|${dst} {${mask}}, $src2}"),
|
||||
[]>, EVEX, EVEX_K;
|
||||
let mayLoad = 1 in
|
||||
def rmbk : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
|
||||
(ins RC:$src1, KRC:$mask, x86scalar_mop:$src2),
|
||||
!strconcat(OpcodeStr, "\t{${src2}", BrdcstStr,
|
||||
", ${dst} {${mask}}|${dst} {${mask}}, ${src2}", BrdcstStr, "}"),
|
||||
[]>, EVEX, EVEX_K, EVEX_B;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let Predicates = [HasCDI] in {
|
||||
|
Loading…
x
Reference in New Issue
Block a user