aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/arm/arm.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/arm/arm.cc')
-rw-r--r--gcc/config/arm/arm.cc25
1 files changed, 13 insertions, 12 deletions
diff --git a/gcc/config/arm/arm.cc b/gcc/config/arm/arm.cc
index 14b6c80..e062361 100644
--- a/gcc/config/arm/arm.cc
+++ b/gcc/config/arm/arm.cc
@@ -13521,27 +13521,28 @@ mve_vector_mem_operand (machine_mode mode, rtx op, bool strict)
case E_V16QImode:
case E_V8QImode:
case E_V4QImode:
- if (abs (val) <= 127)
- return (reg_no < LAST_ARM_REGNUM && reg_no != SP_REGNUM)
- || reg_no >= FIRST_PSEUDO_REGISTER;
- return FALSE;
+ if (abs (val) > 127)
+ return FALSE;
+ break;
case E_V8HImode:
case E_V8HFmode:
case E_V4HImode:
case E_V4HFmode:
- if (val % 2 == 0 && abs (val) <= 254)
- return reg_no <= LAST_LO_REGNUM
- || reg_no >= FIRST_PSEUDO_REGISTER;
- return FALSE;
+ if (val % 2 != 0 || abs (val) > 254)
+ return FALSE;
+ break;
case E_V4SImode:
case E_V4SFmode:
- if (val % 4 == 0 && abs (val) <= 508)
- return (reg_no < LAST_ARM_REGNUM && reg_no != SP_REGNUM)
- || reg_no >= FIRST_PSEUDO_REGISTER;
- return FALSE;
+ if (val % 4 != 0 || abs (val) > 508)
+ return FALSE;
+ break;
default:
return FALSE;
}
+ return reg_no >= FIRST_PSEUDO_REGISTER
+ || (MVE_STN_LDW_MODE (mode)
+ ? reg_no <= LAST_LO_REGNUM
+ : (reg_no < LAST_ARM_REGNUM && reg_no != SP_REGNUM));
}
return FALSE;
}