Quoting Basile Starynkevitch <bas...@starynkevitch.net>:
From what I know of the AMD64 ABI, (but I might be false), functions are only supposed to return one result in a register (rax...).
That depends on how you view the return value. complex or structure value could be interpreted as multiple values, or vice versa. complex, structure, or multiple return values are just different kinds of syntactic sugar.