This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PATCH: First part of 64-bit Darwin support
- From: Andrew Pinski <pinskia at physics dot uc dot edu>
- To: Stan Shebs <shebs at apple dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 12 Aug 2004 02:53:30 -0700
- Subject: Re: PATCH: First part of 64-bit Darwin support
- References: <411AA72A.5020409@apple.com>
Some comments by quickly looking into your patch (late at night too).
Shouldn't these be in altivec.md if not already right?
+ (define_split
+ [(set (mem:V4SI (plus:DI (match_operand:DI 0 "gpc_reg_operand" "")
+ (match_operand:DI 1 "short_cint_operand" "")))
+ (match_operand:V4SI 2 "register_operand" ""))
+ (clobber (match_operand:DI 3 "gpc_reg_operand" ""))]
+ ""
+ [(set (match_dup 3) (plus:DI (match_dup 0) (match_dup 1)))
+ (set (mem:V4SI (match_dup 3))
+ (match_dup 2))]
+ "")
+
+ (define_insn ""
+ [(set (mem:V4SI (plus:DI (match_operand:DI 0 "gpc_reg_operand"
"b,r")
+ (match_operand:DI 1 "gpc_reg_operand" "r,b")))
+ (match_operand:V4SI 2 "register_operand" "v,v"))]
+ ""
+ "@
+ stvx %2,%0,%1
+ stvx %2,%1,%0"
+ [(set_attr "type" "vecstore")])
+
+ (define_insn ""
+ [(set (mem:V4SI (match_operand:DI 0 "gpc_reg_operand" "r"))
+ (match_operand:V4SI 1 "register_operand" "v"))]
+ ""
+ "stvx %1,0,%0"
+ [(set_attr "type" "vecstore")])
+
+ (define_split
+ [(set (match_operand:V4SI 0 "register_operand" "")
+ (mem:V4SI (plus:DI (match_operand:DI 1 "gpc_reg_operand" "")
+ (match_operand:DI 2 "short_cint_operand" ""))))
+ (clobber (match_operand:DI 3 "gpc_reg_operand" ""))]
+ ""
+ [(set (match_dup 3) (plus:DI (match_dup 1) (match_dup 2)))
+ (set (match_dup 0)
+ (mem:V4SI (match_dup 3)))]
+ "")
+
+ (define_insn ""
+ [(set (match_operand:V4SI 0 "register_operand" "=v,v")
+ (mem:V4SI (plus:DI (match_operand:DI 1 "gpc_reg_operand" "b,r")
+ (match_operand:DI 2 "gpc_reg_operand" "r,b"))))]
+ ""
+ "@
+ lvx %0,%1,%2
+ lvx %0,%2,%1"
+ [(set_attr "type" "vecload")])
+
+ (define_insn ""
+ [(set (match_operand:V4SI 0 "register_operand" "=v")
+ (mem:V4SI (match_operand:DI 1 "gpc_reg_operand" "r")))]
+ ""
+ "lvx %0,0,%1"
+ [(set_attr "type" "vecload")])
Aren't these part of saveworld support which has not made it into FSF's
gcc or
at least maybe done differently in the FSF's GCC:
+ (define_insn "*save_fpregs_with_label_di"
+ [(match_parallel 0 "any_operand"
+ [(clobber (match_operand:DI 1 "register_operand"
"=l"))
+ (use (match_operand:DI 2 "call_operand" "s"))
+ (use (match_operand:DI 3 "" ""))
+ (set (match_operand:DF 4 "memory_operand" "=m")
+ (match_operand:DF 5 "gpc_reg_operand" "f"))])]
+ "TARGET_64BIT"
+ "*
+ #if TARGET_MACHO
+ const char *picbase = machopic_function_base_name ();
+ operands[3] = gen_rtx_SYMBOL_REF (Pmode, ggc_alloc_string
(picbase, -1));
+ #endif
+ return \"bl %z2\\n%3:\";
+ "
+ [(set_attr "type" "branch")
+ (set_attr "length" "4")])
+
+ (define_insn "*save_vregs_di"
+ [(match_parallel 0 "any_operand"
+ [(clobber (match_operand:DI 1 "register_operand"
"=l"))
+ (use (match_operand:DI 2 "call_operand" "s"))
+ (set (match_operand:V4SI 3 "any_operand" "=m")
+ (match_operand:V4SI 4 "register_operand" "v"))])]
+ "TARGET_64BIT"
+ "bl %z2"
+ [(set_attr "type" "branch")
+ (set_attr "length" "4")])
+
+ (define_insn "*restore_vregs_di"
+ [(match_parallel 0 "any_operand"
+ [(clobber (match_operand:DI 1 "register_operand"
"=l"))
+ (use (match_operand:DI 2 "call_operand" "s"))
+ (clobber (match_operand:DI 3 "gpc_reg_operand" "=r"))
+ (set (match_operand:V4SI 4 "register_operand" "=v")
+ (match_operand:V4SI 5 "any_operand" "m"))])]
+ "TARGET_64BIT"
+ "bl %z2")
+
+ (define_insn "*save_vregs_with_label_di"
+ [(match_parallel 0 "any_operand"
+ [(clobber (match_operand:DI 1 "register_operand"
"=l"))
+ (use (match_operand:DI 2 "call_operand" "s"))
+ (use (match_operand:DI 3 "" ""))
+ (set (match_operand:V4SI 4 "any_operand" "=m")
+ (match_operand:V4SI 5 "register_operand" "v"))])]
+ "TARGET_64BIT"
+ "*
+ #if TARGET_MACHO
+ const char *picbase = machopic_function_base_name ();
+ operands[3] = gen_rtx_SYMBOL_REF (Pmode, ggc_alloc_string
(picbase, -1));
+ #endif
+ return \"bl %z2\\n%3:\";
+ "
+ [(set_attr "type" "branch")
+ (set_attr "length" "4")])
-- Pinski