Hi Steve,
On 20/08/18 18:37, Steve Ellcey wrote:
On Tue, 2018-08-07 at 12:15 -0500, Segher Boessenkool wrote:
> > +/* { dg-final { scan-assembler-not "\[ \t\]stp\tq\[01234567\]" } }
> > */
> That's [0-7] but maybe you find [01234567] more readable here.
Segher, I fixed all the issues you pointed out except this one. Since
there are some uses of non consecutive numbers in one of the tests I
decided to leave [01234567] instead of using [0-7]. Here is the
latest version of the patch, there are no semantic changes, just
syntactical ones to address the issues that you pointed out.
Steve Ellcey
sell...@cavium.com
One more comment below.
It looks sensible enough to me otherwise, but I haven't done a deep review of
the logic.
Thanks,
Kyrill
2018-08-20 Steve Ellcey <sell...@cavium.com>
* config/aarch64/aarch64-protos.h (aarch64_use_simple_return_insn_p):
New prototype.
(aarch64_epilogue_uses): Ditto.
* config/aarch64/aarch64.c (aarch64_attribute_table): New array.
(aarch64_simd_decl_p): New function.
(aarch64_reg_save_mode): New function.
(aarch64_is_simd_call_p): New function.
(aarch64_function_ok_for_sibcall): Check for simd calls.
(aarch64_layout_frame): Check for simd function.
(aarch64_gen_storewb_pair): Handle E_TFmode.
(aarch64_push_regs): Use aarch64_reg_save_mode to get mode.
(aarch64_gen_loadwb_pair): Handle E_TFmode.
(aarch64_pop_regs): Use aarch64_reg_save_mode to get mode.
(aarch64_gen_store_pair): Handle E_TFmode.
(aarch64_gen_load_pair): Ditto.
(aarch64_save_callee_saves): Handle different mode sizes.
(aarch64_restore_callee_saves): Ditto.
(aarch64_components_for_bb): Check for simd function.
(aarch64_epilogue_uses): New function.
(aarch64_process_components): Check for simd function.
(aarch64_expand_prologue): Ditto.
(aarch64_expand_epilogue): Ditto.
(aarch64_expand_call): Ditto.
(TARGET_ATTRIBUTE_TABLE): New define.
* config/aarch64/aarch64.h (EPILOGUE_USES): Redefine.
(FP_SIMD_SAVED_REGNUM_P): New macro.
* config/aarch64/aarch64.md (V23_REGNUM) New constant.
(simple_return): New define_expand.
(load_pair_dw_tftf): New instruction.
(store_pair_dw_tftf): Ditto.
(loadwb_pair<TX:mode>_<P:mode>): Ditto.
("storewb_pair<TX:mode>_<P:mode>): Ditto.
2018-08-20 Steve Ellcey <sell...@cavium.com>
* gcc.target/aarch64/torture/aarch64-torture.exp: New file.
* gcc.target/aarch64/torture/simd-abi-1.c: New test.
* gcc.target/aarch64/torture/simd-abi-2.c: Ditto.
* gcc.target/aarch64/torture/simd-abi-3.c: Ditto.
* gcc.target/aarch64/torture/simd-abi-4.c: Ditto.
@@ -4469,6 +4536,9 @@ aarch64_restore_callee_saves (machine_mode mode,
unsigned regno;
unsigned regno2;
poly_int64 offset;
+ HOST_WIDE_INT mode_size;
+
+ gcc_assert (GET_MODE_SIZE (mode).is_constant(&mode_size));
I think you want to use the gcc_unreachable approach here:
if (!GET_MODE_SIZE (mode).is_constant(&mode_size))
gcc_unreachable ();
just in case the gcc_assert is compiled out.