+2019-01-16 Tamar Christina <tamar.christina@arm.com>
+
+ * config/arm/arm-protos.h (neon_vcmla_lane_prepare_operands): Remove patternmode.
+ * config/arm/arm.c (neon_vcmla_lane_prepare_operands): Likewise.
+ * config/arm/neon.md (neon_vcmla_lane<rot><mode>, neon_vcmla_laneq<rot><mode>,
+ neon_vcmlaq_lane<rot><mode>): Remove endianness conversion.
+
2019-01-16 Martin Liska <mliska@suse.cz>
* Makefile.in: Set TOOL_INCLUDE_DIR and NATIVE_SYSTEM_HEADER_DIR
extern int neon_vector_mem_operand (rtx, int, bool);
extern int neon_struct_mem_operand (rtx);
-extern rtx *neon_vcmla_lane_prepare_operands (machine_mode, rtx *);
+extern rtx *neon_vcmla_lane_prepare_operands (rtx *);
extern int tls_mentioned_p (rtx);
extern int symbol_mentioned_p (rtx);
/* Prepares the operands for the VCMLA by lane instruction such that the right
register number is selected. This instruction is special in that it always
requires a D register, however there is a choice to be made between Dn[0],
- Dn[1], D(n+1)[0], and D(n+1)[1] depending on the mode of the registers and
- the PATTERNMODE of the insn.
+ Dn[1], D(n+1)[0], and D(n+1)[1] depending on the mode of the registers.
The VCMLA by lane function always selects two values. For instance given D0
and a V2SF, the only valid index is 0 as the values in S0 and S1 will be
updated to contain the right index. */
rtx *
-neon_vcmla_lane_prepare_operands (machine_mode patternmode, rtx *operands)
+neon_vcmla_lane_prepare_operands (rtx *operands)
{
- int lane = NEON_ENDIAN_LANE_N (patternmode, INTVAL (operands[4]));
+ int lane = INTVAL (operands[4]);
machine_mode constmode = SImode;
machine_mode mode = GET_MODE (operands[3]);
int regno = REGNO (operands[3]);
VCMLA)))]
"TARGET_COMPLEX"
{
- operands = neon_vcmla_lane_prepare_operands (<MODE>mode, operands);
+ operands = neon_vcmla_lane_prepare_operands (operands);
return "vcmla.<V_s_elem>\t%<V_reg>0, %<V_reg>2, d%c3[%c4], #<rot>";
}
[(set_attr "type" "neon_fcmla")]
VCMLA)))]
"TARGET_COMPLEX"
{
- operands = neon_vcmla_lane_prepare_operands (<MODE>mode, operands);
+ operands = neon_vcmla_lane_prepare_operands (operands);
return "vcmla.<V_s_elem>\t%<V_reg>0, %<V_reg>2, d%c3[%c4], #<rot>";
}
[(set_attr "type" "neon_fcmla")]
VCMLA)))]
"TARGET_COMPLEX"
{
- operands = neon_vcmla_lane_prepare_operands (<MODE>mode, operands);
+ operands = neon_vcmla_lane_prepare_operands (operands);
return "vcmla.<V_s_elem>\t%<V_reg>0, %<V_reg>2, d%c3[%c4], #<rot>";
}
[(set_attr "type" "neon_fcmla")]