A good answer might be:

The CPU. Although the instruction tests a bit in the FPU, it affects the program counter of the CPU and takes place in the CPU.

Example

The example program looks at two floating point values, A and B, and writes a message saying which one is smallest. First the program loads the two values A and B into registers:

main:   # get the values into registers
        l.s     $f0,A
        l.s     $f2,B
        . . . . 
    
A:      .float  4.830
B:      .float  1.012
        . . . . 

Then the program tests if A<B, or if B<A. If neither of these is true, then it must be that B==A.

        . . . .
        c.lt.s  $f0,$f2          # is A < B?
        bc1t    printA           # yes -- print A

        c.lt.s  $f2,$f0          # is B < A?
        bc1t    printB           # yes -- print B

        la      $a0,EQmsg        # otherwise
        li      $v0,4            # they are equal
        . . . . 

QUESTION 5:

The three outcomes can be detected by other comparison instructions. Here is another arrangement of the code:

        c._____.s  $f0,$f2       # is A = B?
        bc1t    printEQ          # yes -- print equal

        c._____.s  $f2,$f0       # is B < A?
        bc1t    printB           # yes -- print B

                                 # otherwise A < B

Fill in the blanks. You may wish to consult the list of floating point comparison instructions.