@@ -137,8 +137,6 @@ class PolicyScheme<int val>{
137
137
def NonePolicy : PolicyScheme<0>;
138
138
def HasPassthruOperand : PolicyScheme<1>;
139
139
def HasPolicyOperand : PolicyScheme<2>;
140
- // Specail case for passthru operand which is not a first opeand.
141
- def HasPassthruOperandAtIdx1 : PolicyScheme<3>;
142
140
143
141
class RVVBuiltin<string suffix, string prototype, string type_range,
144
142
string overloaded_suffix = ""> {
@@ -1878,20 +1876,19 @@ defm vwmaccus : RVVOutOp1Op2BuiltinSet<"vwmaccus", "csi",
1878
1876
// 12.15. Vector Integer Merge Instructions
1879
1877
// C/C++ Operand: (mask, op1, op2, vl), Intrinsic: (passthru, op1, op2, mask, vl)
1880
1878
let HasMasked = false,
1881
- UnMaskedPolicyScheme = HasPassthruOperandAtIdx1 ,
1879
+ UnMaskedPolicyScheme = HasPassthruOperand ,
1882
1880
MaskedPolicyScheme = NonePolicy,
1883
1881
ManualCodegen = [{
1884
- std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 1);
1885
1882
// insert poison passthru
1886
1883
if (PolicyAttrs == TAIL_AGNOSTIC)
1887
1884
Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType));
1888
1885
IntrinsicTypes = {ResultType, Ops[2]->getType(), Ops.back()->getType()};
1889
1886
}] in {
1890
1887
defm vmerge : RVVOutOp1BuiltinSet<"vmerge", "csil",
1891
- [["vvm", "v", "vmvv "],
1892
- ["vxm", "v", "vmve "],
1893
- ["vvm", "Uv", "UvmUvUv "],
1894
- ["vxm", "Uv", "UvmUvUe "]]>;
1888
+ [["vvm", "v", "vvvm "],
1889
+ ["vxm", "v", "vvem "],
1890
+ ["vvm", "Uv", "UvUvUvm "],
1891
+ ["vxm", "Uv", "UvUvUem "]]>;
1895
1892
}
1896
1893
1897
1894
// 12.16. Vector Integer Move Instructions
@@ -2022,19 +2019,18 @@ let Name = "vfclass_v", UnMaskedPolicyScheme = HasPassthruOperand in
2022
2019
// 14.15. Vector Floating-Point Merge Instructio
2023
2020
// C/C++ Operand: (mask, op1, op2, vl), Builtin: (op1, op2, mask, vl)
2024
2021
let HasMasked = false,
2025
- UnMaskedPolicyScheme = HasPassthruOperandAtIdx1 ,
2022
+ UnMaskedPolicyScheme = HasPassthruOperand ,
2026
2023
MaskedPolicyScheme = NonePolicy,
2027
2024
ManualCodegen = [{
2028
- std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 1);
2029
2025
// insert poison passthru
2030
2026
if (PolicyAttrs == TAIL_AGNOSTIC)
2031
2027
Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType));
2032
2028
IntrinsicTypes = {ResultType, Ops[2]->getType(), Ops.back()->getType()};
2033
2029
}] in {
2034
2030
defm vmerge : RVVOutOp1BuiltinSet<"vmerge", "xfd",
2035
- [["vvm", "v", "vmvv "]]>;
2031
+ [["vvm", "v", "vvvm "]]>;
2036
2032
defm vfmerge : RVVOutOp1BuiltinSet<"vfmerge", "xfd",
2037
- [["vfm", "v", "vmve "]]>;
2033
+ [["vfm", "v", "vvem "]]>;
2038
2034
}
2039
2035
2040
2036
// 14.16. Vector Floating-Point Move Instruction
@@ -2222,21 +2218,20 @@ defm vrgatherei16 : RVVOutBuiltinSet<"vrgatherei16_vv", "csil",
2222
2218
// 17.5. Vector Compress Instruction
2223
2219
let IsPrototypeDefaultTU = true,
2224
2220
HasMasked = false,
2225
- UnMaskedPolicyScheme = HasPassthruOperandAtIdx1 ,
2221
+ UnMaskedPolicyScheme = HasPassthruOperand ,
2226
2222
MaskedPolicyScheme = NonePolicy,
2227
2223
ManualCodegen = [{
2228
- std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 1);
2229
2224
// insert poison passthru
2230
2225
if (PolicyAttrs == TAIL_AGNOSTIC)
2231
2226
Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType));
2232
2227
IntrinsicTypes = {ResultType, Ops.back()->getType()};
2233
2228
}] in {
2234
2229
// signed and floating type
2235
2230
defm vcompress : RVVOutBuiltinSet<"vcompress", "csilxfd",
2236
- [["vm", "v", "vmvv "]]>;
2231
+ [["vm", "v", "vvvm "]]>;
2237
2232
// unsigned type
2238
2233
defm vcompress : RVVOutBuiltinSet<"vcompress", "csil",
2239
- [["vm", "Uv", "UvmUvUv "]]>;
2234
+ [["vm", "Uv", "UvUvUvm "]]>;
2240
2235
}
2241
2236
2242
2237
// Miscellaneous
0 commit comments