def execute(self, processor): if processor.condition_passed(): doubled, sat1 = signed_sat_q(2 * processor.registers.get(self.n).int, 32) result, sat2 = signed_sat_q(processor.registers.get(self.m).int + doubled.int, 32) processor.registers.set(self.d, result) if sat1 or sat2: processor.registers.cpsr.set_q(True)
def execute(self, processor): if processor.condition_passed(): doubled, sat1 = signed_sat_q(2 * to_signed(processor.registers.get(self.n), 32), 32) result, sat2 = signed_sat_q(to_signed(processor.registers.get(self.m), 32) - to_signed(doubled, 32), 32) processor.registers.set(self.d, result) if sat1 or sat2: processor.registers.cpsr.q = 1
def execute(self, processor): if processor.condition_passed(): n = processor.registers.get(self.n) result1, sat1 = signed_sat_q(to_signed(substring(n, 15, 0), 16), self.saturate_to) result2, sat2 = signed_sat_q(to_signed(substring(n, 31, 16), 16), self.saturate_to) processor.registers.set( self.d, chain(to_unsigned(result2, 16), to_unsigned(result1, 16), 16)) if sat1 or sat2: processor.registers.cpsr.q = 1
def execute(self, processor): if processor.condition_passed(): result, sat = signed_sat_q( processor.registers.get(self.m).int + processor.registers.get(self.n).int, 32) processor.registers.set(self.d, result) if sat: processor.registers.cpsr.set_q(True)
def execute(self, processor): if processor.condition_passed(): result, sat = signed_sat_q( to_signed(processor.registers.get(self.m), 32) - to_signed(processor.registers.get(self.n), 32), 32) processor.registers.set(self.d, result) if sat: processor.registers.cpsr.q = 1
def execute(self, processor): if processor.condition_passed(): operand = shift(processor.registers.get(self.n), 32, self.shift_t, self.shift_n, processor.registers.cpsr.c) result, sat = signed_sat_q(to_signed(operand, 32), self.saturate_to) processor.registers.set(self.d, to_unsigned(result, 32)) if sat: processor.registers.cpsr.q = 1