Fix GC holes for all AMD64 platforms (Windows and System V) and a bug for System V OSs in the codegen
for GS cookie comparison on amd64.
Fixes issue dotnet/coreclr#3382.
There is a bug in the genEmitGSCookieCheck method for amd64 having to do
with potentially trashing a second rgister (RDX) for a 2 register returned
struct.
It also sets the byref state for RAX, if needed. And GCRef and BrRef for
RDX, if needed.
Conflicts:
tests/src/JIT/Methodical/structs/systemvbringup/structrettest.cs
Commit migrated from https://github.com/dotnet/coreclr/commit/
4e4c15840f8b3a7fcd482dfaff758e475a2a3475