Commit dec11868 by James Greenhalgh Committed by James Greenhalgh

[AArch64] Convert ld1, st1 arm_neon.h intrinsics to RTL builtins.

gcc/
	* config/aarch64/aarch64-builtins.c
	(aarch64_simd_expand_builtin): Handle AARCH64_SIMD_STORE1.
	* config/aarch64/aarch64-simd-builtins.def (ld1): New.
	(st1): Likewise.
	* config/aarch64/aarch64-simd.md
	(aarch64_ld1<VALL:mode>): New.
	(aarch64_st1<VALL:mode>): Likewise.
	* config/aarch64/arm_neon.h
	(vld1<q>_<fpsu><8, 16, 32, 64>): Convert to RTL builtins.

From-SVN: r200634
parent b2809898
2013-07-03 James Greenhalgh <james.greenhalgh@arm.com>
* config/aarch64/aarch64-builtins.c
(aarch64_simd_expand_builtin): Handle AARCH64_SIMD_STORE1.
* config/aarch64/aarch64-simd-builtins.def (ld1): New.
(st1): Likewise.
* config/aarch64/aarch64-simd.md
(aarch64_ld1<VALL:mode>): New.
(aarch64_st1<VALL:mode>): Likewise.
* config/aarch64/arm_neon.h
(vld1<q>_<fpsu><8, 16, 32, 64>): Convert to RTL builtins.
2013-07-02 Sriraman Tallam <tmsriram@google.com>
* config/i386/i386.c (gate_insert_vzeroupper): Check if target
......
......@@ -1123,6 +1123,7 @@ aarch64_simd_expand_builtin (int fcode, tree exp, rtx target)
return aarch64_simd_expand_args (target, icode, 1, exp,
SIMD_ARG_COPY_TO_REG, SIMD_ARG_STOP);
case AARCH64_SIMD_STORE1:
case AARCH64_SIMD_STORESTRUCT:
return aarch64_simd_expand_args (target, icode, 0, exp,
SIMD_ARG_COPY_TO_REG,
......
......@@ -354,3 +354,10 @@
VAR1 (UNOP, float_extend_lo_, 0, v2df)
VAR1 (UNOP, float_truncate_lo_, 0, v2sf)
/* Implemented by aarch64_ld1<VALL:mode>. */
BUILTIN_VALL (LOAD1, ld1, 0)
/* Implemented by aarch64_st1<VALL:mode>. */
BUILTIN_VALL (STORE1, st1, 0)
......@@ -3882,6 +3882,17 @@
DONE;
})
(define_expand "aarch64_ld1<VALL:mode>"
[(match_operand:VALL 0 "register_operand")
(match_operand:DI 1 "register_operand")]
"TARGET_SIMD"
{
enum machine_mode mode = <VALL:MODE>mode;
rtx mem = gen_rtx_MEM (mode, operands[1]);
emit_move_insn (operands[0], mem);
DONE;
})
(define_expand "aarch64_ld<VSTRUCT:nregs><VQ:mode>"
[(match_operand:VSTRUCT 0 "register_operand" "=w")
(match_operand:DI 1 "register_operand" "r")
......@@ -4098,6 +4109,17 @@
DONE;
})
(define_expand "aarch64_st1<VALL:mode>"
[(match_operand:DI 0 "register_operand")
(match_operand:VALL 1 "register_operand")]
"TARGET_SIMD"
{
enum machine_mode mode = <VALL:MODE>mode;
rtx mem = gen_rtx_MEM (mode, operands[0]);
emit_move_insn (mem, operands[1]);
DONE;
})
;; Expander for builtins to insert vector registers into large
;; opaque integer modes.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment