================ @@ -3535,6 +3536,70 @@ void CXXNameMangler::mangleExtFunctionInfo(const FunctionType *T) { // FIXME: noreturn } +enum class AAPCSBitmaskSME : unsigned { + ArmStreamingBit = 1 << 0, + ArmStreamingCompatibleBit = 1 << 1, + ArmAgnosticSMEZAStateBit = 1 << 2, + ZA_Shift = 3, + ZT0_Shift = 6, + NoState = 0b000, + ArmIn = 0b001, + ArmOut = 0b010, + ArmInOut = 0b011, + ArmPreserves = 0b100 +}; + +static unsigned encodeAAPCSZAState(unsigned SMEAttrs) { + switch (SMEAttrs) { + case FunctionType::ARM_None: + return static_cast<unsigned>(AAPCSBitmaskSME::NoState); ---------------- sdesmalen-arm wrote:
You can remove the `static_cast` if you use BitmaskEnum, see `LLVM_MARK_AS_BITMASK_ENUM` or `LLVM_DECLARE_ENUM_AS_BITMASK`. Unfortunately I found that `operator<<` is not supported (needed below in mangleSMEAttrs), so I've created #118007. https://github.com/llvm/llvm-project/pull/114209 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits