# What is this trapezoid-shaped logic component?

This is from http://www.cis.upenn.edu/~milom/cse240-Fall05/handouts/Ch05.pdf , slide 9.

From this diagram, I recognize 0001 as the opcode, which corresponds to the ADD instruction. I recognize 011, or 3, as the source register and 101, or 5, as the destination register. I know that the 1 signifies immediate mode or the second operand is directly in the instruction.

From here, I know that the second operand is 11111 or -1 in decimal and that it will be sign extended (SEXT) before being added to the data in the source register.

Does anyone know what the logical component I highlighted does?

The component is shaped like an isosceles trapezoid, and has three inputs: seemingly, two data inputs and one control input.

Looking at slide 5-43 "Data Path Revisited" these are MUX, multiplexors.
As such they are a "switch": When the red input is 1, we have immediate mode and the SEXT output is passed through unchanged. When it is 0 it needs to look up a value based on the SEXT value and some memory or register.
Also in the slides, a MUX is represented again at BR and JMP, slides 5-31 and 5-35, again without actually clearly defining the alternative scenarios, and the BR case confuses the issue a bit because it clearly calculates a relative jump previously.
I'd guess the red input is the result of the branch condition and if false the original PC is passed through, but if that was the case they might as well have connected up the lines in this diagram.
For the JMP it is currently showing an absolute jump and under a different red arrow input it could be an indirect jump, similar to the ADD case.