(unspec:VDQIW [(match_operand:VDQIW 1 "s_register_operand" "w,w")
(match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "w,Dm")]
VSHLQ))]
- "ARM_HAVE_<MODE>_ARITH"
+ "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
"@
vshl.<supf>%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2
* return neon_output_shift_immediate (\"vshl\", 'i', &operands[2], <MODE>mode, VALID_NEON_QREG_MODE (<MODE>mode), true);"
[(set (match_operand:VDQIW 0 "s_register_operand" "")
(ashift:VDQIW (match_operand:VDQIW 1 "s_register_operand" "")
(match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "")))]
- "ARM_HAVE_<MODE>_ARITH"
+ "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
{
emit_insn (gen_mve_vshlq_u<mode> (operands[0], operands[1], operands[2]));
DONE;
[(set (match_operand:VDQIW 0 "s_register_operand")
(ashiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand")
(match_operand:VDQIW 2 "imm_rshift_or_reg_neon")))]
- "ARM_HAVE_<MODE>_ARITH"
+ "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
{
if (s_register_operand (operands[2], <MODE>mode))
{
[(set (match_operand:VDQIW 0 "s_register_operand")
(lshiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand")
(match_operand:VDQIW 2 "imm_rshift_or_reg_neon")))]
- "ARM_HAVE_<MODE>_ARITH"
+ "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
{
if (s_register_operand (operands[2], <MODE>mode))
{
--- /dev/null
+/* PR target/98849 */
+
+unsigned int a[1024], b[1024];
+int c[1024], d[1024];
+
+void
+f1 (void)
+{
+ for (int i = 0; i < 1024; i++)
+ a[i] = b[i] << 3;
+}
+
+void
+f2 (int x)
+{
+ for (int i = 0; i < 1024; i++)
+ a[i] = b[i] << x;
+}
+
+void
+f3 (void)
+{
+ for (int i = 0; i < 1024; i++)
+ c[i] = d[i] << 3;
+}
+
+void
+f4 (int x)
+{
+ for (int i = 0; i < 1024; i++)
+ c[i] = d[i] << x;
+}
+
+void
+f5 (void)
+{
+ for (int i = 0; i < 1024; i++)
+ a[i] = b[i] >> 3;
+}
+
+void
+f6 (int x)
+{
+ for (int i = 0; i < 1024; i++)
+ a[i] = b[i] >> x;
+}
+
+void
+f7 (void)
+{
+ for (int i = 0; i < 1024; i++)
+ c[i] = d[i] >> 3;
+}
+
+void
+f8 (int x)
+{
+ for (int i = 0; i < 1024; i++)
+ c[i] = d[i] >> x;
+}