def test_testset32_nonzero(): state = new_state(rf0=0, rf1=0x80002, rf2=0x80002) size = 0b10 # Word state.mem.write(0x00100004, 4, 0xffff) instr = opcode_factory.testset32(rd=0, rn=1, rm=2, sub=0, bb=size) name, executefn = decode(instr) executefn(state, Instruction(instr, None)) expected_state = StateChecker(rf0=0xffff, rf1=0x80002, rf2=0x80002,) expected_state.check(state, memory=[(0x00100004, 4, 0xffff)])
def test_testset32_fail(): expected_text = """testset32 has failed to write to address 0x4. The absolute address used for the test and set instruction must be located within the on-chip local memory and must be greater than 0x00100000 (2^20). """ state = new_state(rf0=0, rf1=0x2, rf2=0x2) size = 0b10 # Word state.mem.write(0x00100004, 4, 0xffff) instr = opcode_factory.testset32(rd=0, rn=1, rm=2, sub=0, bb=size) name, executefn = decode(instr) with pytest.raises(FatalError) as exninfo: executefn(state, Instruction(instr, None)) assert expected_text == exninfo.value.msg
('asrimm32', opcode_factory.asr32_immediate(rd=1, rn=1, imm=1)), ('bitrimm32', opcode_factory.bitr32_immediate(rd=1, rn=1, imm=1)), ('jr32', opcode_factory.jr32(rn=0)), ('jr16', opcode_factory.jr16(rn=0)), ('jalr32', opcode_factory.jalr32(rn=0)), ('jalr16', opcode_factory.jalr16(rn=0)), ('bcond32', opcode_factory.bcond32(condition=0b1111, imm=0)), ('bcond16', opcode_factory.bcond16(condition=0b1111, imm=0)), ('ldstrpmd32', opcode_factory.ldstrpmd32(rd=1, rn=0, sub=1, imm=0b1010101010, bb=0b11, s=1)), ('ldstrdisp16', opcode_factory.ldstrdisp16(rd=1, rn=0, imm=0b010, bb=0b11, s=1)), ('ldstrdisp32', opcode_factory.ldstrdisp32(rd=1, rn=0, sub=1, imm=0b1010101010, bb=0b11, s=1)), ('ldstrpm16', opcode_factory.ldstrpm16(rd=1, rn=0, rm=0, bb=0b11, s=1)), ('ldstrpm32', opcode_factory.ldstrpm32(rd=1, rn=0, rm=0, sub=1, bb=0b11, s=1)), ('ldstrind16', opcode_factory.ldstrind16(rd=1, rn=0, rm=0, bb=0b11, s=1)), ('ldstrind32', opcode_factory.ldstrind32(rd=1, rn=0, rm=0, sub=1, bb=0b11, s=1)), ('testset32', opcode_factory.testset32(rd=1, rn=0, rm=0, sub=1, bb=0b11)), ('fadd16', opcode_factory.fadd16(rd=1, rn=0, rm=0)), ('fsub16', opcode_factory.fsub16(rd=1, rn=0, rm=0)), ('fmul16', opcode_factory.fmul16(rd=1, rn=0, rm=0)), ('fmadd16', opcode_factory.fmadd16(rd=1, rn=0, rm=0)), ('fmsub16', opcode_factory.fmsub16(rd=1, rn=0, rm=0)), ('float16', opcode_factory.float16(rd=1, rn=0, rm=0)), ('fix16', opcode_factory.fix16(rd=1, rn=0, rm=0)), ('fabs16', opcode_factory.fabs16(rd=1, rn=0, rm=0)), ('fadd32', opcode_factory.fadd32(rd=1, rn=0, rm=0)), ('fsub32', opcode_factory.fsub32(rd=1, rn=0, rm=0)), ('fmul32', opcode_factory.fmul32(rd=1, rn=0, rm=0)), ('fmadd32', opcode_factory.fmadd32(rd=1, rn=0, rm=0)), ('fmsub32', opcode_factory.fmsub32(rd=1, rn=0, rm=0)), ('float32', opcode_factory.float32(rd=1, rn=0, rm=0)), ('fix32', opcode_factory.fix32(rd=1, rn=0, rm=0)),