OSDN Git Service

Revert delta 190174
[pf3gnuchains/gcc-fork.git] / gcc / config / rs6000 / rs6000.md
index 5328e54..f0780c6 100644 (file)
    "TARGET_ELF && TARGET_CMODEL != CMODEL_SMALL"
    "{cal %0,%2@l(%1)|addi %0,%1,%2@l}")
 \f
-;; A function pointer under AIX is a pointer to a data area whose first word
-;; contains the actual address of the function, whose second word contains a
-;; pointer to its TOC, and whose third word contains a value to place in the
-;; static chain register (r11).  Note that if we load the static chain, our
-;; "trampoline" need not have any executable code.
-
-(define_expand "call_indirect_aix32"
-  [(set (match_dup 2)
-       (mem:SI (match_operand:SI 0 "gpc_reg_operand" "")))
-   (set (match_dup 3)
-       (reg:SI 2))
-   (set (reg:SI 11)
-       (mem:SI (plus:SI (match_dup 0)
-                        (const_int 8))))
-   (parallel [(call (mem:SI (match_dup 2))
-                   (match_operand 1 "" ""))
-             (use (match_dup 4))
-             (set (reg:SI 2) (match_dup 3))
-             (use (reg:SI 11))
-             (clobber (reg:SI LR_REGNO))])]
-  "TARGET_32BIT"
-  "
-{
-  operands[2] = gen_reg_rtx (SImode);
-  operands[3] = gen_rtx_MEM (SImode,
-                            gen_rtx_PLUS (SImode, stack_pointer_rtx,
-                                          GEN_INT (20)));
-
-  operands[4] = gen_rtx_MEM (SImode,
-                            gen_rtx_PLUS (SImode, operands[0],
-                                          GEN_INT (4)));
-
-  /* Make sure the compiler does not optimize away the store of the TOC.  */
-  MEM_VOLATILE_P (operands[3]) = 1;
-}")
-
-(define_expand "call_indirect_aix64"
-  [(set (match_dup 2)
-       (mem:DI (match_operand:DI 0 "gpc_reg_operand" "")))
-   (set (match_dup 3)
-       (reg:DI 2))
-   (set (reg:DI 11)
-       (mem:DI (plus:DI (match_dup 0)
-                        (const_int 16))))
-   (parallel [(call (mem:SI (match_dup 2))
-                   (match_operand 1 "" ""))
-             (use (match_dup 4))
-             (set (reg:DI 2) (match_dup 3))
-             (use (reg:DI 11))
-             (clobber (reg:DI LR_REGNO))])]
-  "TARGET_64BIT"
-  "
-{
-  operands[2] = gen_reg_rtx (DImode);
-  operands[3] = gen_rtx_MEM (DImode,
-                            gen_rtx_PLUS (DImode, stack_pointer_rtx,
-                                          GEN_INT (40)));
-
-  operands[4] = gen_rtx_MEM (DImode,
-                            gen_rtx_PLUS (DImode, operands[0],
-                                          GEN_INT (8)));
-
-  /* Make sure the compiler does not optimize away the store of the TOC.  */
-  MEM_VOLATILE_P (operands[3]) = 1;
-}")
-
-(define_expand "call_value_indirect_aix32"
-  [(set (match_dup 3)
-       (mem:SI (match_operand:SI 1 "gpc_reg_operand" "")))
-   (set (match_dup 4)
-       (reg:SI 2))
-   (set (reg:SI 11)
-       (mem:SI (plus:SI (match_dup 1)
-                        (const_int 8))))
-   (parallel [(set (match_operand 0 "" "")
-                  (call (mem:SI (match_dup 3))
-                        (match_operand 2 "" "")))
-             (use (match_dup 5))
-             (set (reg:SI 2) (match_dup 4))
-             (use (reg:SI 11))
-             (clobber (reg:SI LR_REGNO))])]
-  "TARGET_32BIT"
-  "
-{
-  operands[3] = gen_reg_rtx (SImode);
-  operands[4] = gen_rtx_MEM (SImode,
-                            gen_rtx_PLUS (SImode, stack_pointer_rtx,
-                                          GEN_INT (20)));
-
-  operands[5] = gen_rtx_MEM (SImode,
-                            gen_rtx_PLUS (SImode, operands[1],
-                                          GEN_INT (4)));
-
-  /* Make sure the compiler does not optimize away the store of the TOC.  */
-  MEM_VOLATILE_P (operands[4]) = 1;
-}")
-
-(define_expand "call_value_indirect_aix64"
-  [(set (match_dup 3)
-       (mem:DI (match_operand:DI 1 "gpc_reg_operand" "")))
-   (set (match_dup 4)
-       (reg:DI 2))
-   (set (reg:DI 11)
-       (mem:DI (plus:DI (match_dup 1)
-                        (const_int 16))))
-   (parallel [(set (match_operand 0 "" "")
-                  (call (mem:SI (match_dup 3))
-                        (match_operand 2 "" "")))
-             (use (match_dup 5))
-             (set (reg:DI 2) (match_dup 4))
-             (use (reg:DI 11))
-             (clobber (reg:DI LR_REGNO))])]
-  "TARGET_64BIT"
-  "
-{
-  operands[3] = gen_reg_rtx (DImode);
-  operands[4] = gen_rtx_MEM (DImode,
-                            gen_rtx_PLUS (DImode, stack_pointer_rtx,
-                                          GEN_INT (40)));
-
-  operands[5] = gen_rtx_MEM (DImode,
-                            gen_rtx_PLUS (DImode, operands[1],
-                                          GEN_INT (8)));
-
-  /* Make sure the compiler does not optimize away the store of the TOC.  */
-  MEM_VOLATILE_P (operands[4]) = 1;
-}")
-
-;; Now the definitions for the call and call_value insns
+;; Call and call_value insns
 (define_expand "call"
   [(parallel [(call (mem:SI (match_operand 0 "address_operand" ""))
                    (match_operand 1 "" ""))