forked from OSchip/llvm-project
[RISCV] Infer mask type for vector intrinsics from the data type
We can use LLVMScalarOrSameVectorWidth<0, llvm_i1_ty> to infer the mask type from the anyvector_ty. This will save us from needing to pass it to getDeclaration when creating these intrinsics from clang. No tests updates are needed because our declarations are exploiting a behavior in the IR parser where the declaration of an intrinsic doesn't need to mention all the types as long as there isn't a name conflict in the file. Reviewed By: khchen Differential Revision: https://reviews.llvm.org/D93409
This commit is contained in:
parent
1e42ad9d62
commit
0d7dd026c8
|
@ -124,7 +124,7 @@ let TargetPrefix = "riscv" in {
|
||||||
class RISCVBinaryAAXMask
|
class RISCVBinaryAAXMask
|
||||||
: Intrinsic<[llvm_anyvector_ty],
|
: Intrinsic<[llvm_anyvector_ty],
|
||||||
[LLVMMatchType<0>, LLVMMatchType<0>, llvm_any_ty,
|
[LLVMMatchType<0>, LLVMMatchType<0>, llvm_any_ty,
|
||||||
llvm_anyvector_ty, llvm_anyint_ty],
|
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>, llvm_anyint_ty],
|
||||||
[IntrNoMem]>, RISCVVIntrinsic {
|
[IntrNoMem]>, RISCVVIntrinsic {
|
||||||
let ExtendOperand = 3;
|
let ExtendOperand = 3;
|
||||||
}
|
}
|
||||||
|
@ -141,7 +141,7 @@ let TargetPrefix = "riscv" in {
|
||||||
class RISCVBinaryABXMask
|
class RISCVBinaryABXMask
|
||||||
: Intrinsic<[llvm_anyvector_ty],
|
: Intrinsic<[llvm_anyvector_ty],
|
||||||
[LLVMMatchType<0>, llvm_anyvector_ty, llvm_any_ty,
|
[LLVMMatchType<0>, llvm_anyvector_ty, llvm_any_ty,
|
||||||
llvm_anyvector_ty, llvm_anyint_ty],
|
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>, llvm_anyint_ty],
|
||||||
[IntrNoMem]>, RISCVVIntrinsic {
|
[IntrNoMem]>, RISCVVIntrinsic {
|
||||||
let ExtendOperand = 3;
|
let ExtendOperand = 3;
|
||||||
}
|
}
|
||||||
|
@ -149,7 +149,8 @@ let TargetPrefix = "riscv" in {
|
||||||
// Input: (vector_in, vector_in/scalar_in, V0, vl)
|
// Input: (vector_in, vector_in/scalar_in, V0, vl)
|
||||||
class RISCVBinaryWithV0
|
class RISCVBinaryWithV0
|
||||||
: Intrinsic<[llvm_anyvector_ty],
|
: Intrinsic<[llvm_anyvector_ty],
|
||||||
[LLVMMatchType<0>, llvm_any_ty, llvm_anyvector_ty,
|
[LLVMMatchType<0>, llvm_any_ty,
|
||||||
|
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
|
||||||
llvm_anyint_ty],
|
llvm_anyint_ty],
|
||||||
[IntrNoMem]>, RISCVVIntrinsic {
|
[IntrNoMem]>, RISCVVIntrinsic {
|
||||||
let ExtendOperand = 2;
|
let ExtendOperand = 2;
|
||||||
|
@ -158,8 +159,9 @@ let TargetPrefix = "riscv" in {
|
||||||
// Output: (mask type output)
|
// Output: (mask type output)
|
||||||
// Input: (vector_in, vector_in/scalar_in, V0, vl)
|
// Input: (vector_in, vector_in/scalar_in, V0, vl)
|
||||||
class RISCVBinaryMOutWithV0
|
class RISCVBinaryMOutWithV0
|
||||||
:Intrinsic<[llvm_anyvector_ty],
|
:Intrinsic<[LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
|
||||||
[llvm_anyvector_ty, llvm_any_ty, LLVMMatchType<0>,
|
[llvm_anyvector_ty, llvm_any_ty,
|
||||||
|
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
|
||||||
llvm_anyint_ty],
|
llvm_anyint_ty],
|
||||||
[IntrNoMem]>, RISCVVIntrinsic {
|
[IntrNoMem]>, RISCVVIntrinsic {
|
||||||
let ExtendOperand = 2;
|
let ExtendOperand = 2;
|
||||||
|
@ -168,7 +170,7 @@ let TargetPrefix = "riscv" in {
|
||||||
// Output: (mask type output)
|
// Output: (mask type output)
|
||||||
// Input: (vector_in, vector_in/scalar_in, vl)
|
// Input: (vector_in, vector_in/scalar_in, vl)
|
||||||
class RISCVBinaryMOut
|
class RISCVBinaryMOut
|
||||||
: Intrinsic<[llvm_anyvector_ty],
|
: Intrinsic<[LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
|
||||||
[llvm_anyvector_ty, llvm_any_ty, llvm_anyint_ty],
|
[llvm_anyvector_ty, llvm_any_ty, llvm_anyint_ty],
|
||||||
[IntrNoMem]>, RISCVVIntrinsic {
|
[IntrNoMem]>, RISCVVIntrinsic {
|
||||||
let ExtendOperand = 2;
|
let ExtendOperand = 2;
|
||||||
|
|
Loading…
Reference in New Issue