Move explicit Himode handling for SSE2 XMM regnos from
ix86_hard_regno_mode_ok to VALID_SSE2_REG_MODE.
No functional change.
gcc/ChangeLog:
* config/i386/i386.cc (ix86_hard_regno_mode_ok):
Remove explicit HImode handling for SSE2 XMM regnos.
* config/i386/i386.h (VALID_SSE2_REG_MODE): Add HImode.
Bootstrapped and regression tested on x86_64-pc-linux-gnu {,-m32}.
Uros.
diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
index ca763e1eb33..f74329a941a 100644
--- a/gcc/config/i386/i386.cc
+++ b/gcc/config/i386/i386.cc
@@ -21155,10 +21155,6 @@ ix86_hard_regno_mode_ok (unsigned int regno,
machine_mode mode)
if (EXT_REX_SSE_REGNO_P (regno))
return false;
- /* Use pinsrw/pextrw to mov 16-bit data from/to sse to/from integer. */
- if (TARGET_SSE2 && mode == HImode)
- return true;
-
/* OImode and AVX modes are available only when AVX is enabled. */
return ((TARGET_AVX
&& VALID_AVX256_REG_OR_OI_MODE (mode))
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 85c54c35c5c..61bc20e1868 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -1099,7 +1099,7 @@ extern const char *host_detect_local_cpu (int argc, const
char **argv);
|| (MODE) == V8HFmode || (MODE) == V4HFmode || (MODE) == V2HFmode \
|| (MODE) == V8BFmode || (MODE) == V4BFmode || (MODE) == V2BFmode \
|| (MODE) == V4QImode || (MODE) == V2HImode || (MODE) == V1SImode \
- || (MODE) == V2DImode || (MODE) == V2QImode \
+ || (MODE) == V2DImode || (MODE) == V2QImode || (MODE) == HImode \
|| (MODE) == DFmode || (MODE) == DImode \
|| (MODE) == HFmode || (MODE) == BFmode)