a single operand instruction has a single operand
Some checks are pending
Build / cmake-builds (push) Waiting to run
Build / makefile (macos-latest, besm6 imlac tt2500 microvax3900 microvax1 rtvax1000 vaxstation3100m76 vaxstation4000m60) (push) Waiting to run
Build / makefile (macos-latest, id16 id32 sds lgp h316 cdc1700 swtp6800mp-a swtp6800mp-a2 tx-0 ssem b5500 sage pdq3 alpha) (push) Waiting to run
Build / makefile (macos-latest, microvax2 vax730 vax750 vax780 vax8200 vax8600 microvax2000 infoserver100 infoserver150vxt microvax3100 microvax3100e vaxstation3100m30 vaxstation3100m38) (push) Waiting to run
Build / makefile (macos-latest, microvax3100m80 vaxstation4000vlc infoserver1000 nova eclipse hp2100 hp3000 i1401 i1620 s3 altair altairz80 gri i7094) (push) Waiting to run
Build / makefile (macos-latest, pdp1 pdp4 pdp6 pdp7 pdp8 pdp9 pdp10 pdp10-ka pdp10-ki pdp10-kl pdp10-ks pdp11 pdp15 vax) (push) Waiting to run
Build / makefile (macos-latest, scelbi 3b2 i701 i704 i7010 i7070 i7080 i7090 sigma uc15 i650 sel32 intel-mds ibm1130) (push) Waiting to run
Build / makefile (ubuntu-latest, besm6 imlac tt2500 microvax3900 microvax1 rtvax1000 vaxstation3100m76 vaxstation4000m60) (push) Waiting to run
Build / makefile (ubuntu-latest, id16 id32 sds lgp h316 cdc1700 swtp6800mp-a swtp6800mp-a2 tx-0 ssem b5500 sage pdq3 alpha) (push) Waiting to run
Build / makefile (ubuntu-latest, microvax2 vax730 vax750 vax780 vax8200 vax8600 microvax2000 infoserver100 infoserver150vxt microvax3100 microvax3100e vaxstation3100m30 vaxstation3100m38) (push) Waiting to run
Build / makefile (ubuntu-latest, microvax3100m80 vaxstation4000vlc infoserver1000 nova eclipse hp2100 hp3000 i1401 i1620 s3 altair altairz80 gri i7094) (push) Waiting to run
Build / makefile (ubuntu-latest, pdp1 pdp4 pdp6 pdp7 pdp8 pdp9 pdp10 pdp10-ka pdp10-ki pdp10-kl pdp10-ks pdp11 pdp15 vax) (push) Waiting to run
Build / makefile (ubuntu-latest, scelbi 3b2 i701 i704 i7010 i7070 i7080 i7090 sigma uc15 i650 sel32 intel-mds ibm1130) (push) Waiting to run

This commit is contained in:
Folkert van Heusden 2025-04-04 23:51:34 +02:00
parent 4b508f81ca
commit bfff919fcc
Signed by untrusted user who does not match committer: folkert
GPG key ID: 6B6455EDFEED3BD1

View file

@ -312,6 +312,55 @@ void emit_add_sub_c()
dump_json(filename, out); dump_json(filename, out);
} }
void emit_single_operand_instructions()
{
printf("single operand instructions\n");
int groups[] = { 00001, 00003, 00050, 01050, 00051, 01051, 00052, 01052, 00053, 01053, 00054, 01054, 00057, 01057, 00060, 01060, 00061, 01061, 00062, 01062, 00063, 01063, 00067, -1 };
for(int group=0; group<23; group++) {
char filename[128] = { 0 };
sprintf(filename, "pdp1170-valtest-SINGLE_OPERAND-%o.json", groups[group]);
if (file_exist(filename))
continue;
printf("%s \r", filename);
fflush(NULL);
int id = 0;
json_t *out = json_array();
uint16_t instr = 0;
if (groups[group] == 00001) // JMP can't jump to a register
instr = (groups[group] << 6) | 010; // (R0)
else
instr = (groups[group] << 6) | 001; // R0
for(int v1=0; v1<n_test_values; v1++) {
for(int psw_val=0; psw_val<2; psw_val++) {
init_simh();
saved_PC = 0100;
randomize_registers_all_values();
REGFILE[0][0] = REGFILE[0][1] = v1;
init_stack_registers();
struct mem_t mem[1] = {
{ 0100, instr }
};
PSW = psw_val;
json_t *obj = generate_test(instr, &id, mem, 1);
if (obj)
json_array_append_new(out, obj);
}
}
dump_json(filename, out);
}
}
void emit_cmp() void emit_cmp()
{ {
printf("CMP instructions\n"); printf("CMP instructions\n");
@ -473,6 +522,8 @@ void produce_validation_tests()
emit_condition_sets(); // condition_code_operations* emit_condition_sets(); // condition_code_operations*
emit_add_double_oper_instr(); // additional_double_operand_instructions* emit_add_double_oper_instr(); // additional_double_operand_instructions*
emit_single_operand_instructions();
emit_add_sub_c(); // double_operand_instructions, single_operand_instructions emit_add_sub_c(); // double_operand_instructions, single_operand_instructions
emit_bit_instructions(); // double_operand_instructions emit_bit_instructions(); // double_operand_instructions
emit_cmp(); // double_operand_instructions emit_cmp(); // double_operand_instructions