diff --git a/clang/include/clang/Basic/riscv_vector.td b/clang/include/clang/Basic/riscv_vector.td --- a/clang/include/clang/Basic/riscv_vector.td +++ b/clang/include/clang/Basic/riscv_vector.td @@ -217,127 +217,109 @@ // IntrinsicTypes is output, op0, op1 [-1, 0, 1] multiclass RVVOutOp0Op1BuiltinSet> suffixes_prototypes> { - defm NAME : RVVBuiltinSet> suffixes_prototypes> + : RVVBuiltinSet; -} // IntrinsicTypes is output, op1 [-1, 1] multiclass RVVOutOp1BuiltinSet> suffixes_prototypes> { - defm "" : RVVBuiltinSet; -} + list> suffixes_prototypes> + : RVVBuiltinSet; multiclass RVVOp0Op1BuiltinSet> suffixes_prototypes> { - defm "" : RVVBuiltinSet; -} + list> suffixes_prototypes> + : RVVBuiltinSet; multiclass RVVOutOp1Op2BuiltinSet> suffixes_prototypes> { - defm "" : RVVBuiltinSet; -} + list> suffixes_prototypes> + : RVVBuiltinSet; -multiclass RVVSignedBinBuiltinSet { - defm "" : RVVOutOp1BuiltinSet; -} +multiclass RVVSignedBinBuiltinSet + : RVVOutOp1BuiltinSet; -multiclass RVVUnsignedBinBuiltinSet { - defm "" : RVVOutOp1BuiltinSet; -} +multiclass RVVUnsignedBinBuiltinSet + : RVVOutOp1BuiltinSet; -multiclass RVVIntBinBuiltinSet { - defm "" : RVVSignedBinBuiltinSet; - defm "" : RVVUnsignedBinBuiltinSet; -} +multiclass RVVIntBinBuiltinSet + : RVVSignedBinBuiltinSet, + RVVUnsignedBinBuiltinSet; -multiclass RVVSignedShiftBuiltinSet { - defm "" : RVVOutOp1BuiltinSet; -} +multiclass RVVSignedShiftBuiltinSet + : RVVOutOp1BuiltinSet; -multiclass RVVUnsignedShiftBuiltinSet { - defm "" : RVVOutOp1BuiltinSet; -} +multiclass RVVUnsignedShiftBuiltinSet + : RVVOutOp1BuiltinSet; -multiclass RVVShiftBuiltinSet { - defm "" : RVVSignedShiftBuiltinSet; - defm "" : RVVUnsignedShiftBuiltinSet; -} +multiclass RVVShiftBuiltinSet + : RVVSignedShiftBuiltinSet, + RVVUnsignedShiftBuiltinSet; let Log2LMUL = [-3, -2, -1, 0, 1, 2] in { - multiclass RVVSignedNShiftBuiltinSet { - defm "" : RVVOutOp0Op1BuiltinSet; - } - multiclass RVVUnsignedNShiftBuiltinSet { - defm "" : RVVOutOp0Op1BuiltinSet; - } -} - -multiclass RVVIntTerBuiltinSet { - defm "" : RVVOutOp1BuiltinSet; } -multiclass RVVCarryinBuiltinSet { - defm "" : RVVOutOp1BuiltinSet; -} - -multiclass RVVCarryOutInBuiltinSet { - defm "" : RVVOp0Op1BuiltinSet; -} - -multiclass RVVSignedMaskOutBuiltinSet { - defm "" : RVVOp0Op1BuiltinSet; -} - -multiclass RVVUnsignedMaskOutBuiltinSet { - defm "" : RVVOp0Op1BuiltinSet; -} - -multiclass RVVIntMaskOutBuiltinSet { - defm "" : RVVSignedMaskOutBuiltinSet; - defm "" : RVVUnsignedMaskOutBuiltinSet; -} - -multiclass RVVFloatingBinBuiltinSet { - defm "" : RVVOutOp1BuiltinSet; -} - -multiclass RVVIntExt { - let IRName = intrinsic_name, IRNameMask = intrinsic_name # "_mask", - MangledName = NAME, IntrinsicTypes = [-1, 0] in { - def "" : RVVBuiltin; - } +multiclass RVVIntTerBuiltinSet + : RVVOutOp1BuiltinSet; + +multiclass RVVCarryinBuiltinSet + : RVVOutOp1BuiltinSet; + +multiclass RVVCarryOutInBuiltinSet + : RVVOp0Op1BuiltinSet; + +multiclass RVVSignedMaskOutBuiltinSet + : RVVOp0Op1BuiltinSet; + +multiclass RVVUnsignedMaskOutBuiltinSet + : RVVOp0Op1BuiltinSet; + +multiclass RVVIntMaskOutBuiltinSet + : RVVSignedMaskOutBuiltinSet, + RVVUnsignedMaskOutBuiltinSet; + +multiclass RVVFloatingBinBuiltinSet + : RVVOutOp1BuiltinSet; + +class RVVIntExt + : RVVBuiltin { + let IRName = intrinsic_name; + let IRNameMask = intrinsic_name # "_mask"; + let MangledName = NAME; + let IntrinsicTypes = [-1, 0]; } defvar TypeList = ["c","s","i","l","f","d"]; @@ -520,16 +502,16 @@ // 12.3. Vector Integer Extension let Log2LMUL = [-3, -2, -1, 0, 1, 2] in { - defm vsext_vf2 : RVVIntExt<"vsext", "w", "wv", "csi">; - defm vzext_vf2 : RVVIntExt<"vzext", "Uw", "UwUv", "csi">; + def vsext_vf2 : RVVIntExt<"vsext", "w", "wv", "csi">; + def vzext_vf2 : RVVIntExt<"vzext", "Uw", "UwUv", "csi">; } let Log2LMUL = [-3, -2, -1, 0, 1] in { - defm vsext_vf4 : RVVIntExt<"vsext", "q", "qv", "cs">; - defm vzext_vf4 : RVVIntExt<"vzext", "Uq", "UqUv", "cs">; + def vsext_vf4 : RVVIntExt<"vsext", "q", "qv", "cs">; + def vzext_vf4 : RVVIntExt<"vzext", "Uq", "UqUv", "cs">; } let Log2LMUL = [-3, -2, -1, 0] in { - defm vsext_vf8 : RVVIntExt<"vsext", "o", "ov", "c">; - defm vzext_vf8 : RVVIntExt<"vzext", "Uo", "UoUv", "c">; + def vsext_vf8 : RVVIntExt<"vsext", "o", "ov", "c">; + def vzext_vf8 : RVVIntExt<"vzext", "Uo", "UoUv", "c">; } // 12.4. Vector Integer Add-with-Carry / Subtract-with-Borrow Instructions