fix: Handle -Xarch_host/-Xarch_device except with other -Xarch_*
-Xarch_host and -Xarch_device appear to have different semantics than
other -Xarch_* options, so add special case code that allows only
-Xarch_host options or only -Xarch_device options while falling back to
the compiler for other combinations.
A future improvement would be to add multi-pass support for -Xarch_host
and -Xarch_device combinations as well.
Fixes #1632.
(cherry picked from commit
36282483f3ac0b2a018eb9ea1f543004620bf622)