data/full_repos/permissive/507307707/generated/FU.v
data/verilator_xmls/d28d2768-e9d3-45a1-81fe-5cc6dc762f10.xml
module ALU(
  input  [7:0] io_din_1,
  input  [7:0] io_din_2,
  input  [7:0] io_op_config,
  output [7:0] io_dout
);
  wire [7:0] _io_dout_T_1 = io_din_1 + io_din_2;
  wire [15:0] _io_dout_T_2 = io_din_1 * io_din_2;
  wire [7:0] _io_dout_T_4 = io_din_1 - io_din_2;
  wire [262:0] _GEN_14 = {{255'd0}, io_din_1};
  wire [262:0] _io_dout_T_5 = _GEN_14 << io_din_2;
  wire [7:0] _io_dout_T_6 = io_din_1 >> io_din_2;
  wire [7:0] _io_dout_T_7 = io_din_1 & io_din_2;
  wire [7:0] _io_dout_T_8 = io_din_1 | io_din_2;
  wire [7:0] _io_dout_T_9 = io_din_1 ^ io_din_2;
  wire [7:0] _GEN_0 = io_din_1 > io_din_2 ? io_din_2 : 8'h0;
  wire [7:0] _GEN_1 = io_din_1 <= io_din_2 ? io_din_1 : _GEN_0;
  wire [7:0] _GEN_2 = io_din_1 < io_din_2 ? io_din_2 : 8'h0;
  wire [7:0] _GEN_3 = io_din_1 >= io_din_2 ? io_din_1 : _GEN_2;
  wire [7:0] _GEN_4 = io_op_config == 8'h9 ? _GEN_3 : 8'h0;
  wire [7:0] _GEN_5 = io_op_config == 8'h8 ? _GEN_1 : _GEN_4;
  wire [7:0] _GEN_6 = io_op_config == 8'h7 ? _io_dout_T_9 : _GEN_5;
  wire [7:0] _GEN_7 = io_op_config == 8'h6 ? _io_dout_T_8 : _GEN_6;
  wire [7:0] _GEN_8 = io_op_config == 8'h5 ? _io_dout_T_7 : _GEN_7;
  wire [7:0] _GEN_9 = io_op_config == 8'h4 ? _io_dout_T_6 : _GEN_8;
  wire [262:0] _GEN_10 = io_op_config == 8'h3 ? _io_dout_T_5 : {{255'd0}, _GEN_9};
  wire [262:0] _GEN_11 = io_op_config == 8'h2 ? {{255'd0}, _io_dout_T_4} : _GEN_10;
  wire [262:0] _GEN_12 = io_op_config == 8'h1 ? {{247'd0}, _io_dout_T_2} : _GEN_11;
  wire [262:0] _GEN_13 = io_op_config == 8'h0 ? {{255'd0}, _io_dout_T_1} : _GEN_12;
  assign io_dout = _GEN_13[7:0];
endmodule
module ALU(
  input  [7:0] io_din_1,
  input  [7:0] io_din_2,
  input  [7:0] io_op_config,
  output [7:0] io_dout
);

  wire [7:0] _io_dout_T_1 = io_din_1 + io_din_2;
  wire [15:0] _io_dout_T_2 = io_din_1 * io_din_2;
  wire [7:0] _io_dout_T_4 = io_din_1 - io_din_2;
  wire [262:0] _GEN_14 = {{255'd0}, io_din_1};
  wire [262:0] _io_dout_T_5 = _GEN_14 << io_din_2;
  wire [7:0] _io_dout_T_6 = io_din_1 >> io_din_2;
  wire [7:0] _io_dout_T_7 = io_din_1 & io_din_2;
  wire [7:0] _io_dout_T_8 = io_din_1 | io_din_2;
  wire [7:0] _io_dout_T_9 = io_din_1 ^ io_din_2;
  wire [7:0] _GEN_0 = io_din_1 > io_din_2 ? io_din_2 : 8'h0;
  wire [7:0] _GEN_1 = io_din_1 <= io_din_2 ? io_din_1 : _GEN_0;
  wire [7:0] _GEN_2 = io_din_1 < io_din_2 ? io_din_2 : 8'h0;
  wire [7:0] _GEN_3 = io_din_1 >= io_din_2 ? io_din_1 : _GEN_2;
  wire [7:0] _GEN_4 = io_op_config == 8'h9 ? _GEN_3 : 8'h0;
  wire [7:0] _GEN_5 = io_op_config == 8'h8 ? _GEN_1 : _GEN_4;
  wire [7:0] _GEN_6 = io_op_config == 8'h7 ? _io_dout_T_9 : _GEN_5;
  wire [7:0] _GEN_7 = io_op_config == 8'h6 ? _io_dout_T_8 : _GEN_6;
  wire [7:0] _GEN_8 = io_op_config == 8'h5 ? _io_dout_T_7 : _GEN_7;
  wire [7:0] _GEN_9 = io_op_config == 8'h4 ? _io_dout_T_6 : _GEN_8;
  wire [262:0] _GEN_10 = io_op_config == 8'h3 ? _io_dout_T_5 : {{255'd0}, _GEN_9};
  wire [262:0] _GEN_11 = io_op_config == 8'h2 ? {{255'd0}, _io_dout_T_4} : _GEN_10;
  wire [262:0] _GEN_12 = io_op_config == 8'h1 ? {{247'd0}, _io_dout_T_2} : _GEN_11;
  wire [262:0] _GEN_13 = io_op_config == 8'h0 ? {{255'd0}, _io_dout_T_1} : _GEN_12;
  assign io_dout = _GEN_13[7:0];
endmodule