Mercurial > hg > CbC > CbC_gcc
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 }") |