comparison gcc/config/pa/pa.md @ 63:b7f97abdc517 gcc-4.6-20100522

update gcc from gcc-4.5.0 to gcc-4.6
author ryoma <e075725@ie.u-ryukyu.ac.jp>
date Mon, 24 May 2010 12:47:05 +0900
parents 77e2b8dfacca
children f6334be47118
comparison
equal deleted inserted replaced
56:3c8a44c06a95 63:b7f97abdc517
1 ;;- Machine description for HP PA-RISC architecture for GCC compiler 1 ;;- Machine description for HP PA-RISC architecture for GCC compiler
2 ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2 ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
3 ;; 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. 3 ;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010
4 ;; Free Software Foundation, Inc.
4 ;; Contributed by the Center for Software Science at the University 5 ;; Contributed by the Center for Software Science at the University
5 ;; of Utah. 6 ;; of Utah.
6 7
7 ;; This file is part of GCC. 8 ;; This file is part of GCC.
8 9
3095 if (GET_CODE (operands[2]) != CONST_INT) 3096 if (GET_CODE (operands[2]) != CONST_INT)
3096 FAIL; 3097 FAIL;
3097 3098
3098 size = INTVAL (operands[2]); 3099 size = INTVAL (operands[2]);
3099 align = INTVAL (operands[3]); 3100 align = INTVAL (operands[3]);
3100 align = align > 4 ? 4 : align; 3101 align = align > 4 ? 4 : (align ? align : 1);
3101 3102
3102 /* If size/alignment is large, then use the library routines. */ 3103 /* If size/alignment is large, then use the library routines. */
3103 if (size / align > 16) 3104 if (size / align > 16)
3104 FAIL; 3105 FAIL;
3105 3106
3283 if (GET_CODE (operands[2]) != CONST_INT) 3284 if (GET_CODE (operands[2]) != CONST_INT)
3284 FAIL; 3285 FAIL;
3285 3286
3286 size = INTVAL (operands[2]); 3287 size = INTVAL (operands[2]);
3287 align = INTVAL (operands[3]); 3288 align = INTVAL (operands[3]);
3288 align = align > 8 ? 8 : align; 3289 align = align > 8 ? 8 : (align ? align : 1);
3289 3290
3290 /* If size/alignment is large, then use the library routines. */ 3291 /* If size/alignment is large, then use the library routines. */
3291 if (size / align > 16) 3292 if (size / align > 16)
3292 FAIL; 3293 FAIL;
3293 3294
7229 (match_operand 1 "" "")) 7230 (match_operand 1 "" ""))
7230 (clobber (reg:SI 2))])] 7231 (clobber (reg:SI 2))])]
7231 "" 7232 ""
7232 " 7233 "
7233 { 7234 {
7234 rtx op, call_insn; 7235 rtx op;
7235 rtx nb = operands[1]; 7236 rtx nb = operands[1];
7236 7237
7237 if (TARGET_PORTABLE_RUNTIME) 7238 if (TARGET_PORTABLE_RUNTIME)
7238 op = force_reg (SImode, XEXP (operands[0], 0)); 7239 op = force_reg (SImode, XEXP (operands[0], 0));
7239 else 7240 else
7294 generic pseudo. */ 7295 generic pseudo. */
7295 if (TARGET_64BIT) 7296 if (TARGET_64BIT)
7296 { 7297 {
7297 rtx r4 = gen_rtx_REG (word_mode, 4); 7298 rtx r4 = gen_rtx_REG (word_mode, 4);
7298 if (GET_CODE (op) == SYMBOL_REF) 7299 if (GET_CODE (op) == SYMBOL_REF)
7299 call_insn = emit_call_insn (gen_call_symref_64bit (op, nb, r4)); 7300 emit_call_insn (gen_call_symref_64bit (op, nb, r4));
7300 else 7301 else
7301 { 7302 {
7302 op = force_reg (word_mode, op); 7303 op = force_reg (word_mode, op);
7303 call_insn = emit_call_insn (gen_call_reg_64bit (op, nb, r4)); 7304 emit_call_insn (gen_call_reg_64bit (op, nb, r4));
7304 } 7305 }
7305 } 7306 }
7306 else 7307 else
7307 { 7308 {
7308 if (GET_CODE (op) == SYMBOL_REF) 7309 if (GET_CODE (op) == SYMBOL_REF)
7309 { 7310 {
7310 if (flag_pic) 7311 if (flag_pic)
7311 { 7312 {
7312 rtx r4 = gen_rtx_REG (word_mode, 4); 7313 rtx r4 = gen_rtx_REG (word_mode, 4);
7313 call_insn = emit_call_insn (gen_call_symref_pic (op, nb, r4)); 7314 emit_call_insn (gen_call_symref_pic (op, nb, r4));
7314 } 7315 }
7315 else 7316 else
7316 call_insn = emit_call_insn (gen_call_symref (op, nb)); 7317 emit_call_insn (gen_call_symref (op, nb));
7317 } 7318 }
7318 else 7319 else
7319 { 7320 {
7320 rtx tmpreg = gen_rtx_REG (word_mode, 22); 7321 rtx tmpreg = gen_rtx_REG (word_mode, 22);
7321 emit_move_insn (tmpreg, force_reg (word_mode, op)); 7322 emit_move_insn (tmpreg, force_reg (word_mode, op));
7322 if (flag_pic) 7323 if (flag_pic)
7323 { 7324 {
7324 rtx r4 = gen_rtx_REG (word_mode, 4); 7325 rtx r4 = gen_rtx_REG (word_mode, 4);
7325 call_insn = emit_call_insn (gen_call_reg_pic (nb, r4)); 7326 emit_call_insn (gen_call_reg_pic (nb, r4));
7326 } 7327 }
7327 else 7328 else
7328 call_insn = emit_call_insn (gen_call_reg (nb)); 7329 emit_call_insn (gen_call_reg (nb));
7329 } 7330 }
7330 } 7331 }
7331 7332
7332 DONE; 7333 DONE;
7333 }") 7334 }")
7721 (match_operand 2 "" ""))) 7722 (match_operand 2 "" "")))
7722 (clobber (reg:SI 2))])] 7723 (clobber (reg:SI 2))])]
7723 "" 7724 ""
7724 " 7725 "
7725 { 7726 {
7726 rtx op, call_insn; 7727 rtx op;
7727 rtx dst = operands[0]; 7728 rtx dst = operands[0];
7728 rtx nb = operands[2]; 7729 rtx nb = operands[2];
7729 7730
7730 if (TARGET_PORTABLE_RUNTIME) 7731 if (TARGET_PORTABLE_RUNTIME)
7731 op = force_reg (SImode, XEXP (operands[1], 0)); 7732 op = force_reg (SImode, XEXP (operands[1], 0));
7787 generic pseudo. */ 7788 generic pseudo. */
7788 if (TARGET_64BIT) 7789 if (TARGET_64BIT)
7789 { 7790 {
7790 rtx r4 = gen_rtx_REG (word_mode, 4); 7791 rtx r4 = gen_rtx_REG (word_mode, 4);
7791 if (GET_CODE (op) == SYMBOL_REF) 7792 if (GET_CODE (op) == SYMBOL_REF)
7792 call_insn 7793 emit_call_insn (gen_call_val_symref_64bit (dst, op, nb, r4));
7793 = emit_call_insn (gen_call_val_symref_64bit (dst, op, nb, r4));
7794 else 7794 else
7795 { 7795 {
7796 op = force_reg (word_mode, op); 7796 op = force_reg (word_mode, op);
7797 call_insn 7797 emit_call_insn (gen_call_val_reg_64bit (dst, op, nb, r4));
7798 = emit_call_insn (gen_call_val_reg_64bit (dst, op, nb, r4));
7799 } 7798 }
7800 } 7799 }
7801 else 7800 else
7802 { 7801 {
7803 if (GET_CODE (op) == SYMBOL_REF) 7802 if (GET_CODE (op) == SYMBOL_REF)
7804 { 7803 {
7805 if (flag_pic) 7804 if (flag_pic)
7806 { 7805 {
7807 rtx r4 = gen_rtx_REG (word_mode, 4); 7806 rtx r4 = gen_rtx_REG (word_mode, 4);
7808 call_insn 7807 emit_call_insn (gen_call_val_symref_pic (dst, op, nb, r4));
7809 = emit_call_insn (gen_call_val_symref_pic (dst, op, nb, r4));
7810 } 7808 }
7811 else 7809 else
7812 call_insn = emit_call_insn (gen_call_val_symref (dst, op, nb)); 7810 emit_call_insn (gen_call_val_symref (dst, op, nb));
7813 } 7811 }
7814 else 7812 else
7815 { 7813 {
7816 rtx tmpreg = gen_rtx_REG (word_mode, 22); 7814 rtx tmpreg = gen_rtx_REG (word_mode, 22);
7817 emit_move_insn (tmpreg, force_reg (word_mode, op)); 7815 emit_move_insn (tmpreg, force_reg (word_mode, op));
7818 if (flag_pic) 7816 if (flag_pic)
7819 { 7817 {
7820 rtx r4 = gen_rtx_REG (word_mode, 4); 7818 rtx r4 = gen_rtx_REG (word_mode, 4);
7821 call_insn = emit_call_insn (gen_call_val_reg_pic (dst, nb, r4)); 7819 emit_call_insn (gen_call_val_reg_pic (dst, nb, r4));
7822 } 7820 }
7823 else 7821 else
7824 call_insn = emit_call_insn (gen_call_val_reg (dst, nb)); 7822 emit_call_insn (gen_call_val_reg (dst, nb));
7825 } 7823 }
7826 } 7824 }
7827 7825
7828 DONE; 7826 DONE;
7829 }") 7827 }")