WhenIf the caller or callee is implicit HD function calls a function in device compilation,, or -fgpu-defer-diag is off, keep the original behavior.
if one candidate is an implicit HD function, current solution rule is:
D wins over HD and H
HD and H are equal
this caused regression when there is an otherwise worse D candidate
This patch changes that to
D, HD and H are all equal
The rationale is that we already know for host compilation there is already
a valid candidate in HD and H candidates that will not cause error. Allowing
HD and H gives us a fall back candidate that will not cause error. If D wins,
that means D has to be a better match otherwise, therefore D should also
be a valid candidate that will not cause error. In this way, we can guarantee
no regressOtherwise enable the hostness based resolution.