Hi,
The final (!!!) patch in the series making types equivalent between
AArch64 and ARM backends deals with insns in the AArch64 backend
which generate ldp and stp. We could invent a new type for these and
add that type to all the pipeline descriptions, but I think the types
neon_ldm_2 and neon_stm_2 describe them adequately.
Tested on aarch64-none-elf with no regressions.
OK?
Thanks,
James
---
gcc/
2013-09-06 James Greenhalgh <[email protected]>
* config/aarch64/aarch64.md
(*movtf_aarch64): Use neon_<ls>dm_2 as type where v8type
is fpsimd_<load/store>2.
(load_pair<mode>): Likewise.
(store_pair<mode>): Likewise.
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index 5aa127bcb47912f1986007d4491b865555e92c23..f37f98f9994bb773785d8573a7efd1e625b5e23a 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -1025,7 +1025,7 @@ (define_insn "*movtf_aarch64"
stp\\t%1, %H1, %0"
[(set_attr "v8type" "logic,move2,fmovi2f,fmovf2i,fconst,fconst,fpsimd_load,fpsimd_store,fpsimd_load2,fpsimd_store2")
(set_attr "type" "logic_reg,multiple,f_mcr,f_mrc,fconstd,fconstd,\
- f_loadd,f_stored,f_loadd,f_stored")
+ f_loadd,f_stored,neon_ldm_2,neon_stm_2")
(set_attr "mode" "DF,DF,DF,DF,DF,DF,TF,TF,DF,DF")
(set_attr "length" "4,8,8,8,4,4,4,4,4,4")
(set_attr "fp" "*,*,yes,yes,*,yes,yes,yes,*,*")
@@ -1090,7 +1090,7 @@ (define_insn "load_pair<mode>"
GET_MODE_SIZE (<MODE>mode)))"
"ldp\\t%<w>0, %<w>2, %1"
[(set_attr "v8type" "fpsimd_load2")
- (set_attr "type" "f_load<s>")
+ (set_attr "type" "neon_ldm_2")
(set_attr "mode" "<MODE>")]
)
@@ -1106,8 +1106,8 @@ (define_insn "store_pair<mode>"
XEXP (operands[0], 0),
GET_MODE_SIZE (<MODE>mode)))"
"stp\\t%<w>1, %<w>3, %0"
- [(set_attr "v8type" "fpsimd_load2")
- (set_attr "type" "f_load<s>")
+ [(set_attr "v8type" "fpsimd_store2")
+ (set_attr "type" "neon_stm_2")
(set_attr "mode" "<MODE>")]
)