PIPS
freia_spoc.h File Reference
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  spoc_alu_op_t
 ALU operation full description. More...
 
struct  spoc_poc_t
 
struct  spoc_hw_t
 description of a SPoC hardware configuration should be precise enough to generate a full AIPO function. More...
 

Macros

#define spoc_depth_prop   "HWAC_SPOC_DEPTH"
 
#define FREIA_SPOC_INCLUDES
 
#define FREIA_SPOC_DECL
 
#define FREIA_SPOC_CALL_START
 
#define FREIA_SPOC_CALL_REDUC
 
#define FREIA_SPOC_CALL_END
 

Enumerations

enum  spoc_hw_parts_t {
  spoc_nothing = 0x00000000 , spoc_input_0 = 0x00000001 , spoc_input_1 = 0x00000002 , spoc_output_0 = 0x00000004 ,
  spoc_output_1 = 0x00000008 , spoc_poc_0 = 0x00000010 , spoc_poc_1 = 0x00000020 , spoc_alu = 0x00000040 ,
  spoc_th_0 = 0x00000100 , spoc_th_1 = 0x00000200 , spoc_measure_0 = 0x00004000 , spoc_measure_1 = 0x00008000 ,
  spoc_alu_in0 = 0x01000000 , spoc_alu_in1 = 0x02000000 , spoc_alu_out0 = 0x04000000 , spoc_alu_out1 = 0x08000000 ,
  spoc_not_implemented = 0xffffffff
}
 all SPoC hardware parts as a bitfield More...
 
enum  spoc_measure_t {
  measure_none , measure_max , measure_max_coord , measure_min ,
  measure_min_coord , measure_vol
}
 
enum  spoc_alu_t {
  alu_unused , alu_add , alu_add_0cst , alu_add_1cst ,
  alu_addsat , alu_addsat_0cst , alu_addsat_1cst , alu_sub_01 ,
  alu_sub_10 , alu_sub_0cst , alu_sub_1cst , alu_sub_cst0 ,
  alu_sub_cst1 , alu_subsat_01 , alu_subsat_10 , alu_subsat_0cst ,
  alu_subsat_1cst , alu_subsat_cst0 , alu_subsat_cst1 , alu_abssub ,
  alu_abssub_0cst , alu_abssub_1cst , alu_mul , alu_mul_0cst ,
  alu_mul_1cst , alu_div_01 , alu_div_10 , alu_div_0cst ,
  alu_div_1cst , alu_div_cst0 , alu_div_cst1 , alu_log2_0 ,
  alu_log2_1 , alu_inf_01 , alu_inf_0cst , alu_inf_1cst ,
  alu_sup_01 , alu_sup_0cst , alu_sup_1cst , alu_and ,
  alu_and_0cst , alu_and_1cst , alu_or , alu_or_0cst ,
  alu_or_1cst , alu_xor , alu_xor_0cst , alu_xor_1cst ,
  alu_not_0 , alu_not_1 , alu_copy_cst , alu_mask_0 ,
  alu_mask_1 , alu_repcst_0 , alu_repcst_1
}
 all SPoC ALU operations More...
 
enum  spoc_poc_op_t { spoc_poc_unused , spoc_poc_erode , spoc_poc_dilate , spoc_poc_conv }
 
enum  spoc_hardware_type {
  spoc_type_sni = -3 , spoc_type_oth = -2 , spoc_type_nop = -1 , spoc_type_inp = 0 ,
  spoc_type_poc = 1 , spoc_type_alu = 2 , spoc_type_thr = 3 , spoc_type_mes = 4 ,
  spoc_type_out = 5
}
 

Macro Definition Documentation

◆ FREIA_SPOC_CALL_END

#define FREIA_SPOC_CALL_END
Value:
" ret = freia_cg_write_microcode(&mcode);\n" \
" ret |= freia_cg_write_dynamic_param(&dynparam);\n" \
"\n"

Definition at line 216 of file freia_spoc.h.

◆ FREIA_SPOC_CALL_REDUC

#define FREIA_SPOC_CALL_REDUC
Value:
" redres.raw = (freia_ptr) &reduc;\n" \
" redres.size = sizeof(spoc_reduction);\n" \
"\n"

Definition at line 211 of file freia_spoc.h.

◆ FREIA_SPOC_CALL_START

#define FREIA_SPOC_CALL_START
Value:
"\n" \
" mcode.raw = (freia_ptr) &si;\n" \
" mcode.size = sizeof(spoc_instr);\n" \
"\n" \
" dynparam.raw = (freia_ptr) &sp;\n" \
" dynparam.size = sizeof(spoc_param);\n" \
"\n"

Definition at line 202 of file freia_spoc.h.

◆ FREIA_SPOC_DECL

#define FREIA_SPOC_DECL
Value:
" spoc_instr si;\n" \
" spoc_param sp;\n" \
" freia_microcode mcode;\n" \
" freia_dynamic_param dynparam;\n" \
" freia_op_param param;\n" \
" freia_status ret;\n"

Definition at line 194 of file freia_spoc.h.

◆ FREIA_SPOC_INCLUDES

#define FREIA_SPOC_INCLUDES
Value:
"#include <freiaCommon.h>\n" \
"#include <freiaMediumGrain.h>\n" \
"#include <freiaCoarseGrain.h>\n" \
"#include <spoc.h>\n"

Definition at line 188 of file freia_spoc.h.

◆ spoc_depth_prop

#define spoc_depth_prop   "HWAC_SPOC_DEPTH"

Definition at line 185 of file freia_spoc.h.

Enumeration Type Documentation

◆ spoc_alu_t

enum spoc_alu_t

all SPoC ALU operations

Enumerator
alu_unused 
alu_add 
alu_add_0cst 
alu_add_1cst 
alu_addsat 
alu_addsat_0cst 
alu_addsat_1cst 
alu_sub_01 
alu_sub_10 
alu_sub_0cst 
alu_sub_1cst 
alu_sub_cst0 
alu_sub_cst1 
alu_subsat_01 
alu_subsat_10 
alu_subsat_0cst 
alu_subsat_1cst 
alu_subsat_cst0 
alu_subsat_cst1 
alu_abssub 
alu_abssub_0cst 
alu_abssub_1cst 
alu_mul 
alu_mul_0cst 
alu_mul_1cst 
alu_div_01 
alu_div_10 
alu_div_0cst 
alu_div_1cst 
alu_div_cst0 
alu_div_cst1 
alu_log2_0 
alu_log2_1 
alu_inf_01 
alu_inf_0cst 
alu_inf_1cst 
alu_sup_01 
alu_sup_0cst 
alu_sup_1cst 
alu_and 
alu_and_0cst 
alu_and_1cst 
alu_or 
alu_or_0cst 
alu_or_1cst 
alu_xor 
alu_xor_0cst 
alu_xor_1cst 
alu_not_0 
alu_not_1 
alu_copy_cst 
alu_mask_0 
alu_mask_1 
alu_repcst_0 
alu_repcst_1 

Definition at line 71 of file freia_spoc.h.

71  {
72  alu_unused,
73  // arithmetic operations
74  alu_add,
77  alu_addsat,
80  alu_sub_01,
81  alu_sub_10,
92  alu_abssub,
95  alu_mul,
98  alu_div_01,
99  alu_div_10,
100  alu_div_0cst,
101  alu_div_1cst,
102  alu_div_cst0,
103  alu_div_cst1,
104  alu_log2_0,
105  alu_log2_1,
106  // comparisons
107  alu_inf_01,
108  alu_inf_0cst,
109  alu_inf_1cst,
110  alu_sup_01,
111  alu_sup_0cst,
112  alu_sup_1cst,
113  // logical operations
114  alu_and,
115  alu_and_0cst,
116  alu_and_1cst,
117  alu_or,
118  alu_or_0cst,
119  alu_or_1cst,
120  alu_xor,
121  alu_xor_0cst,
122  alu_xor_1cst,
123  alu_not_0,
124  alu_not_1,
125  // array generation
126  alu_copy_cst,
127  // mask & replace constant
128  alu_mask_0,
129  alu_mask_1,
130  alu_repcst_0,
132  // and so on
133 } spoc_alu_t;
spoc_alu_t
all SPoC ALU operations
Definition: freia_spoc.h:71
@ alu_sup_0cst
Definition: freia_spoc.h:111
@ alu_sub_1cst
Definition: freia_spoc.h:83
@ alu_div_10
Definition: freia_spoc.h:99
@ alu_or
Definition: freia_spoc.h:117
@ alu_mul_0cst
Definition: freia_spoc.h:96
@ alu_div_01
Definition: freia_spoc.h:98
@ alu_subsat_0cst
Definition: freia_spoc.h:88
@ alu_sub_0cst
Definition: freia_spoc.h:82
@ alu_abssub_1cst
Definition: freia_spoc.h:94
@ alu_inf_01
Definition: freia_spoc.h:107
@ alu_sup_01
Definition: freia_spoc.h:110
@ alu_copy_cst
Definition: freia_spoc.h:126
@ alu_subsat_01
Definition: freia_spoc.h:86
@ alu_sub_10
Definition: freia_spoc.h:81
@ alu_sup_1cst
Definition: freia_spoc.h:112
@ alu_add
Definition: freia_spoc.h:74
@ alu_xor_1cst
Definition: freia_spoc.h:122
@ alu_subsat_cst1
Definition: freia_spoc.h:91
@ alu_subsat_1cst
Definition: freia_spoc.h:89
@ alu_repcst_0
Definition: freia_spoc.h:130
@ alu_abssub
Definition: freia_spoc.h:92
@ alu_subsat_10
Definition: freia_spoc.h:87
@ alu_addsat
Definition: freia_spoc.h:77
@ alu_sub_cst0
Definition: freia_spoc.h:84
@ alu_and
Definition: freia_spoc.h:114
@ alu_add_1cst
Definition: freia_spoc.h:76
@ alu_sub_cst1
Definition: freia_spoc.h:85
@ alu_addsat_1cst
Definition: freia_spoc.h:79
@ alu_log2_1
Definition: freia_spoc.h:105
@ alu_log2_0
Definition: freia_spoc.h:104
@ alu_div_0cst
Definition: freia_spoc.h:100
@ alu_or_1cst
Definition: freia_spoc.h:119
@ alu_xor_0cst
Definition: freia_spoc.h:121
@ alu_unused
Definition: freia_spoc.h:72
@ alu_div_cst0
Definition: freia_spoc.h:102
@ alu_abssub_0cst
Definition: freia_spoc.h:93
@ alu_addsat_0cst
Definition: freia_spoc.h:78
@ alu_xor
Definition: freia_spoc.h:120
@ alu_div_1cst
Definition: freia_spoc.h:101
@ alu_mul_1cst
Definition: freia_spoc.h:97
@ alu_or_0cst
Definition: freia_spoc.h:118
@ alu_and_1cst
Definition: freia_spoc.h:116
@ alu_add_0cst
Definition: freia_spoc.h:75
@ alu_mask_1
Definition: freia_spoc.h:129
@ alu_repcst_1
Definition: freia_spoc.h:131
@ alu_inf_1cst
Definition: freia_spoc.h:109
@ alu_not_0
Definition: freia_spoc.h:123
@ alu_not_1
Definition: freia_spoc.h:124
@ alu_div_cst1
Definition: freia_spoc.h:103
@ alu_sub_01
Definition: freia_spoc.h:80
@ alu_mul
Definition: freia_spoc.h:95
@ alu_mask_0
Definition: freia_spoc.h:128
@ alu_and_0cst
Definition: freia_spoc.h:115
@ alu_subsat_cst0
Definition: freia_spoc.h:90
@ alu_inf_0cst
Definition: freia_spoc.h:108

◆ spoc_hardware_type

Enumerator
spoc_type_sni 
spoc_type_oth 
spoc_type_nop 
spoc_type_inp 
spoc_type_poc 
spoc_type_alu 
spoc_type_thr 
spoc_type_mes 
spoc_type_out 

Definition at line 170 of file freia_spoc.h.

170  {
171  // important, in hardware order
172  spoc_type_sni = -3, // spoc not implemented
173  spoc_type_oth = -2, // for anything else...
174  spoc_type_nop = -1, // no-operation, used by copy?
175  spoc_type_inp = 0, // used for input
176  spoc_type_poc = 1,
177  spoc_type_alu = 2,
178  spoc_type_thr = 3,
179  spoc_type_mes = 4,
180  spoc_type_out = 5 // output...
spoc_hardware_type
Definition: freia_spoc.h:170
@ spoc_type_sni
Definition: freia_spoc.h:172
@ spoc_type_out
Definition: freia_spoc.h:180
@ spoc_type_mes
Definition: freia_spoc.h:179
@ spoc_type_nop
Definition: freia_spoc.h:174
@ spoc_type_oth
Definition: freia_spoc.h:173
@ spoc_type_inp
Definition: freia_spoc.h:175
@ spoc_type_thr
Definition: freia_spoc.h:178
@ spoc_type_alu
Definition: freia_spoc.h:177
@ spoc_type_poc
Definition: freia_spoc.h:176

◆ spoc_hw_parts_t

all SPoC hardware parts as a bitfield

Enumerator
spoc_nothing 
spoc_input_0 
spoc_input_1 
spoc_output_0 
spoc_output_1 
spoc_poc_0 
spoc_poc_1 
spoc_alu 
spoc_th_0 
spoc_th_1 
spoc_measure_0 
spoc_measure_1 
spoc_alu_in0 
spoc_alu_in1 
spoc_alu_out0 
spoc_alu_out1 
spoc_not_implemented 

Definition at line 33 of file freia_spoc.h.

33  {
34  spoc_nothing = 0x00000000,
35  // Inputs
36  spoc_input_0 = 0x00000001,
37  spoc_input_1 = 0x00000002,
38  // Outputs
39  spoc_output_0 = 0x00000004,
40  spoc_output_1 = 0x00000008,
41  // Morpho
42  spoc_poc_0 = 0x00000010,
43  spoc_poc_1 = 0x00000020,
44  // ALU
45  spoc_alu = 0x00000040,
46  // ThreasHold
47  spoc_th_0 = 0x00000100,
48  spoc_th_1 = 0x00000200,
49  // Measures
50  spoc_measure_0 = 0x00004000,
51  spoc_measure_1 = 0x00008000,
52  // Links...
53  spoc_alu_in0 = 0x01000000, // redundant with spoc_alu_op_t.use_in0
54  spoc_alu_in1 = 0x02000000, // redundant with spoc_alu_op_t.use_in1
55  spoc_alu_out0 = 0x04000000,
56  spoc_alu_out1 = 0x08000000,
57  // others?
58  spoc_not_implemented = 0xffffffff
spoc_hw_parts_t
all SPoC hardware parts as a bitfield
Definition: freia_spoc.h:33
@ spoc_not_implemented
Definition: freia_spoc.h:58
@ spoc_measure_0
Definition: freia_spoc.h:50
@ spoc_th_0
Definition: freia_spoc.h:47
@ spoc_output_0
Definition: freia_spoc.h:39
@ spoc_alu_in1
Definition: freia_spoc.h:54
@ spoc_input_0
Definition: freia_spoc.h:36
@ spoc_measure_1
Definition: freia_spoc.h:51
@ spoc_alu_out1
Definition: freia_spoc.h:56
@ spoc_output_1
Definition: freia_spoc.h:40
@ spoc_alu
Definition: freia_spoc.h:45
@ spoc_nothing
Definition: freia_spoc.h:34
@ spoc_input_1
Definition: freia_spoc.h:37
@ spoc_alu_in0
Definition: freia_spoc.h:53
@ spoc_poc_1
Definition: freia_spoc.h:43
@ spoc_poc_0
Definition: freia_spoc.h:42
@ spoc_th_1
Definition: freia_spoc.h:48
@ spoc_alu_out0
Definition: freia_spoc.h:55

◆ spoc_measure_t

Enumerator
measure_none 
measure_max 
measure_max_coord 
measure_min 
measure_min_coord 
measure_vol 

Definition at line 61 of file freia_spoc.h.

61  {
spoc_measure_t
Definition: freia_spoc.h:61
@ measure_min
Definition: freia_spoc.h:65
@ measure_vol
Definition: freia_spoc.h:67
@ measure_none
Definition: freia_spoc.h:62
@ measure_max_coord
Definition: freia_spoc.h:64
@ measure_min_coord
Definition: freia_spoc.h:66
@ measure_max
Definition: freia_spoc.h:63

◆ spoc_poc_op_t

Enumerator
spoc_poc_unused 
spoc_poc_erode 
spoc_poc_dilate 
spoc_poc_conv 

Definition at line 145 of file freia_spoc.h.

145  {
150 } spoc_poc_op_t;
spoc_poc_op_t
Definition: freia_spoc.h:145
@ spoc_poc_erode
Definition: freia_spoc.h:147
@ spoc_poc_conv
Definition: freia_spoc.h:149
@ spoc_poc_unused
Definition: freia_spoc.h:146
@ spoc_poc_dilate
Definition: freia_spoc.h:148