ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
phases.c
Go to the documentation of this file.
1#include "allocate.h"
2#include "internal.h"
3#include "logging.h"
4
5#include <string.h>
6
8
9#define realloc_phases(NAME) \
10 do { \
11 solver->phases.NAME = \
12 (value*) kissat_realloc (solver, solver->phases.NAME, old_size, new_size); \
13 } while (0)
14
15#define increase_phases(NAME) \
16 do { \
17 KISSAT_assert (old_size < new_size); \
18 realloc_phases (NAME); \
19 memset (solver->phases.NAME + old_size, 0, new_size - old_size); \
20 } while (0)
21
22void kissat_increase_phases (kissat *solver, unsigned new_size) {
23 const unsigned old_size = solver->size;
24 KISSAT_assert (old_size < new_size);
25 LOG ("increasing phases from %u to %u", old_size, new_size);
26 increase_phases (best);
27 increase_phases (saved);
28 increase_phases (target);
29}
30
31void kissat_decrease_phases (kissat *solver, unsigned new_size) {
32 const unsigned old_size = solver->size;
33 KISSAT_assert (old_size > new_size);
34 LOG ("decreasing phases from %u to %u", old_size, new_size);
35 realloc_phases (best);
36 realloc_phases (saved);
37 realloc_phases (target);
38}
39
40#define release_phases(NAME, SIZE) \
41 kissat_free (solver, solver->phases.NAME, SIZE)
42
44 const unsigned size = solver->size;
45 release_phases (best, size);
46 release_phases (saved, size);
47 release_phases (target, size);
48}
49
50static void save_phases (kissat *solver, value *phases) {
51 const value *const values = solver->values;
52 const value *const end = phases + VARS;
53 value const *v = values;
54 for (value *p = phases, tmp; p != end; p++, v += 2)
55 if ((tmp = *v))
56 *p = tmp;
57 KISSAT_assert (v == values + LITS);
58}
59
61 KISSAT_assert (sizeof (value) == 1);
62 LOG ("saving %u best values", VARS);
63 save_phases (solver, solver->phases.best);
64}
65
67 KISSAT_assert (sizeof (value) == 1);
68 LOG ("saving %u target values", VARS);
69 save_phases (solver, solver->phases.target);
70}
71
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
#define LOG(...)
ABC_NAMESPACE_IMPL_START typedef signed char value
Cube * p
Definition exorList.c:222
#define VARS
Definition internal.h:250
#define LITS
Definition internal.h:251
#define KISSAT_assert(ignore)
Definition global.h:13
#define solver
Definition kitten.c:211
void kissat_save_best_phases(kissat *solver)
Definition phases.c:60
#define increase_phases(NAME)
Definition phases.c:15
void kissat_release_phases(kissat *solver)
Definition phases.c:43
void kissat_increase_phases(kissat *solver, unsigned new_size)
Definition phases.c:22
#define release_phases(NAME, SIZE)
Definition phases.c:40
#define realloc_phases(NAME)
Definition phases.c:9
void kissat_save_target_phases(kissat *solver)
Definition phases.c:66
void kissat_decrease_phases(kissat *solver, unsigned new_size)
Definition phases.c:31