Comparing and adding numbers using multiplexers and comparators
We can either look for the two largest, or we can look for the one smallest and sum the other two. 

In my opinion, finding the smallest feels more intuitive than finding two largest. 

Let's see in pseudo-code how that can be accomplished. 

//find smallest, and sum the others
s0=0 //introduce another 2-bit variable called s
s1=0 //it essentially keeps the sign of the addition between the comparisons
if(a&gt;b){
  s0=1
}
if(b&gt;c){
  s1=1
}

//mini truth table
//s1 s0                             verdict                        sum
// 0  0     b&lt;=c  a&lt;=b       =&gt;   a is smallest                    b+c
// 0  1     b&lt;=c  a&gt;b        =&gt;   b is smallest                    a+c
// 1  0     b&gt;c   a&lt;=b       =&gt;   either a or c is smallest        b+?
// 1  1     b&gt;c   a&gt;b        =&gt;   c is smallest                    a+b


// looks like we need a third check for s1 = 1 and s0 = 0
s2=0
if(a&gt;c){
  s2=1
}

//s2 s1 s0                          verdict                        sum
// 0  1  0  b&lt;=c  a&lt;=b a&lt;=c  =&gt;  a is smallest                     b+c 
// 1  1  0  b&lt;=c  a&lt;=b a&gt;c   =&gt;  c is smallest                     b+a 




So here's my result on a white board.




The / sign means the bit width of the wire.
The red x means that I throw away the result.
Some of the input to the adders got a -, that's 2's complement.


If this is too high level for your needs, then convert the mux into the AND gates that it's made of, and make your 2bit adder with the gates that it's made of. 



Edit

It wasn't 100% correct the first try, I messed up with s1=1 and s0=0. And I ignored s1=1 and s0=1. This will be bulletproof and definitely work. I've updated the pseudo-code above so it's correct. 

Here's the correct block diagram.