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.



Reply via email to