Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
alu_control_flow.hpp
Go to the documentation of this file.
1 
14 #ifndef ALU_CONTROL_FLOW_HPP_
15 #define ALU_CONTROL_FLOW_HPP_
16 
20 
21 namespace libsnark
22 {
23 
24 /* control flow gadgets */
25 template<typename FieldT>
27 {
28 public:
33 
40  const std::string &annotation_prefix = "")
42  , pc(pc)
43  , argval2(argval2)
44  , flag(flag)
45  , result(result){};
46 };
47 
48 template<typename FieldT>
50 {
51 public:
58  const std::string &annotation_prefix = "")
59  : ALU_control_flow_gadget<FieldT>(
61  {
62  }
63 
65  void generate_r1cs_witness();
66 };
67 
68 template<typename FieldT> void test_ALU_jmp_gadget();
69 
70 template<typename FieldT>
72 {
73 public:
80  const std::string &annotation_prefix = "")
81  : ALU_control_flow_gadget<FieldT>(
83  {
84  }
85 
87  void generate_r1cs_witness();
88 };
89 
90 template<typename FieldT> void test_ALU_cjmp_gadget();
91 
92 template<typename FieldT>
94 {
95 public:
100  const pb_variable<FieldT> &flag,
102  const std::string &annotation_prefix = "")
103  : ALU_control_flow_gadget<FieldT>(
105  {
106  }
107 
109  void generate_r1cs_witness();
110 };
111 
112 template<typename FieldT> void test_ALU_cnjmp_gadget();
113 
114 } // namespace libsnark
115 
117 
118 #endif // ALU_CONTROL_FLOW_HPP_
libsnark::ALU_cjmp_gadget::generate_r1cs_witness
void generate_r1cs_witness()
libsnark::ALU_jmp_gadget::generate_r1cs_witness
void generate_r1cs_witness()
libsnark::ALU_control_flow_gadget
Definition: alu_control_flow.hpp:26
libsnark::gadget::annotation_prefix
const std::string annotation_prefix
Definition: gadget.hpp:20
libsnark
Definition: accumulation_vector.hpp:18
libsnark::ALU_jmp_gadget
Definition: alu_control_flow.hpp:49
libsnark::ALU_control_flow_gadget::pc
const word_variable_gadget< FieldT > pc
Definition: alu_control_flow.hpp:29
alu_control_flow.tcc
libsnark::ALU_jmp_gadget::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::ALU_control_flow_gadget::flag
const pb_variable< FieldT > flag
Definition: alu_control_flow.hpp:31
libsnark::ALU_control_flow_gadget::result
const pb_variable< FieldT > result
Definition: alu_control_flow.hpp:32
libsnark::ALU_cjmp_gadget
Definition: alu_control_flow.hpp:71
libsnark::ALU_cnjmp_gadget::ALU_cnjmp_gadget
ALU_cnjmp_gadget(tinyram_protoboard< FieldT > &pb, const word_variable_gadget< FieldT > &pc, const word_variable_gadget< FieldT > &argval2, const pb_variable< FieldT > &flag, const pb_variable< FieldT > &result, const std::string &annotation_prefix="")
Definition: alu_control_flow.hpp:96
word_variable_gadget.hpp
libsnark::ALU_control_flow_gadget::argval2
const word_variable_gadget< FieldT > argval2
Definition: alu_control_flow.hpp:30
libsnark::test_ALU_cjmp_gadget
void test_ALU_cjmp_gadget()
tinyram_protoboard.hpp
libsnark::ALU_cnjmp_gadget::generate_r1cs_witness
void generate_r1cs_witness()
libsnark::tinyram_gadget::pb
tinyram_protoboard< FieldT > & pb
Definition: tinyram_protoboard.hpp:34
libsnark::test_ALU_cnjmp_gadget
void test_ALU_cnjmp_gadget()
libsnark::tinyram_protoboard
Definition: tinyram_protoboard.hpp:23
libsnark::pb_variable
Definition: pb_variable.hpp:24
libsnark::ALU_cjmp_gadget::generate_r1cs_constraints
void generate_r1cs_constraints()
basic_gadgets.hpp
libsnark::tinyram_standard_gadget
Definition: tinyram_protoboard.hpp:45
libsnark::word_variable_gadget
Definition: word_variable_gadget.hpp:24
libsnark::ALU_jmp_gadget::ALU_jmp_gadget
ALU_jmp_gadget(tinyram_protoboard< FieldT > &pb, const word_variable_gadget< FieldT > &pc, const word_variable_gadget< FieldT > &argval2, const pb_variable< FieldT > &flag, const pb_variable< FieldT > &result, const std::string &annotation_prefix="")
Definition: alu_control_flow.hpp:52
libsnark::ALU_control_flow_gadget::ALU_control_flow_gadget
ALU_control_flow_gadget(tinyram_protoboard< FieldT > &pb, const word_variable_gadget< FieldT > &pc, const word_variable_gadget< FieldT > &argval2, const pb_variable< FieldT > &flag, const pb_variable< FieldT > &result, const std::string &annotation_prefix="")
Definition: alu_control_flow.hpp:34
libsnark::ALU_cjmp_gadget::ALU_cjmp_gadget
ALU_cjmp_gadget(tinyram_protoboard< FieldT > &pb, const word_variable_gadget< FieldT > &pc, const word_variable_gadget< FieldT > &argval2, const pb_variable< FieldT > &flag, const pb_variable< FieldT > &result, const std::string &annotation_prefix="")
Definition: alu_control_flow.hpp:74
libsnark::ALU_cnjmp_gadget::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::test_ALU_jmp_gadget
void test_ALU_jmp_gadget()
libsnark::ALU_cnjmp_gadget
Definition: alu_control_flow.hpp:93