Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions cfoInterfaceLib/CFO_Compiler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,7 @@ const std::map<std::string, CFOLib::CFO_Compiler::CFO_INSTR> CFOLib::CFO_Compile
{"SET_MODE_BITS", CFO_INSTR::SET_MODE_BITS},
{"AND_MODE_BITS", CFO_INSTR::AND_MODE_BITS},
{"OR_MODE_BITS", CFO_INSTR::OR_MODE_BITS},
{"OR_SINGLESHOT_MODE_BITS", CFO_INSTR::OR_SINGLESHOT_MODE_BITS},
{"SET_MODE", CFO_INSTR::SET_MODE},
};

Expand Down Expand Up @@ -279,6 +280,7 @@ const std::map<CFOLib::CFO_Compiler::CFO_INSTR, std::string> CFOLib::CFO_Compile
{CFOLib::CFO_Compiler::CFO_INSTR::SET_MODE_BITS, "SET_MODE_BITS"},
{CFOLib::CFO_Compiler::CFO_INSTR::AND_MODE_BITS, "AND_MODE_BITS"},
{CFOLib::CFO_Compiler::CFO_INSTR::OR_MODE_BITS, "OR_MODE_BITS"},
{CFOLib::CFO_Compiler::CFO_INSTR::OR_SINGLESHOT_MODE_BITS, "OR_SINGLESHOT_MODE_BITS"},
{CFOLib::CFO_Compiler::CFO_INSTR::SET_MODE, "SET_MODE"},
};

Expand Down Expand Up @@ -639,7 +641,8 @@ uint64_t CFOLib::CFO_Compiler::calculateParameterAndErrorCheck(CFO_INSTR instruc
// otherwise, a normal noop label
case CFO_INSTR::SET_MODE_BITS:
case CFO_INSTR::AND_MODE_BITS:
case CFO_INSTR::OR_MODE_BITS: {
case CFO_INSTR::OR_MODE_BITS:
case CFO_INSTR::OR_SINGLESHOT_MODE_BITS: {
if (opArgCount != 7 ||
opArguments_[1] != "start_bit" ||
opArguments_[3] != "bit_count" ||
Expand Down Expand Up @@ -729,10 +732,11 @@ uint64_t CFOLib::CFO_Compiler::calculateParameterAndErrorCheck(CFO_INSTR instruc
return value; // AND

case CFO_INSTR::OR_MODE_BITS:
case CFO_INSTR::OR_SINGLESHOT_MODE_BITS:

value <<= startBit; // shift then mask
value &= bitmask; // force ignore outside of bitcount in case of ~ inverted value
return value; // OR
return value; // OR / OR (single-shot)

default: {
__COUTV__((int)instructionOpcode);
Expand Down
3 changes: 2 additions & 1 deletion cfoInterfaceLib/CFO_Compiler.hh
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ class CFO_Compiler
CLEAR_MODE_BITS = 100, // used by HEARTBEAT w/param 'event_mode = registered'
SET_MODE_BITS = 101, // used by HEARTBEAT w/param 'event_mode = registered'
AND_MODE_BITS = 102, // used by HEARTBEAT w/param 'event_mode = registered'
OR_MODE_BITS = 103, // used by HEARTBEAT w/param 'event_mode = registered'
OR_MODE_BITS = 103, // used by HEARTBEAT w/param 'event_mode = registered'
OR_SINGLESHOT_MODE_BITS = 111, // single-shot OR; identical to OR but fires only once in hardware
SET_MODE = 200, // used by HEARTBEAT w/param 'event_mode = registered'
INVALID = 0xFF,
};
Expand Down
Loading