rs6000.c (217396) | rs6000.c (220150) |
---|---|
1/* Subroutines used for code generation on IBM RS/6000. 2 Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 3 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 4 Free Software Foundation, Inc. 5 Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) 6 7 This file is part of GCC. 8 --- 650 unchanged lines hidden (view full) --- 659static int force_new_group (int, FILE *, rtx *, rtx, bool *, int, int *); 660static int redefine_groups (FILE *, int, rtx, rtx); 661static int pad_groups (FILE *, int, rtx, rtx); 662static void rs6000_sched_finish (FILE *, int); 663static int rs6000_use_sched_lookahead (void); 664static tree rs6000_builtin_mask_for_load (void); 665 666static void def_builtin (int, const char *, tree, int); | 1/* Subroutines used for code generation on IBM RS/6000. 2 Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 3 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 4 Free Software Foundation, Inc. 5 Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) 6 7 This file is part of GCC. 8 --- 650 unchanged lines hidden (view full) --- 659static int force_new_group (int, FILE *, rtx *, rtx, bool *, int, int *); 660static int redefine_groups (FILE *, int, rtx, rtx); 661static int pad_groups (FILE *, int, rtx, rtx); 662static void rs6000_sched_finish (FILE *, int); 663static int rs6000_use_sched_lookahead (void); 664static tree rs6000_builtin_mask_for_load (void); 665 666static void def_builtin (int, const char *, tree, int); |
667static bool rs6000_vector_alignment_reachable (tree, bool); |
|
667static void rs6000_init_builtins (void); 668static rtx rs6000_expand_unop_builtin (enum insn_code, tree, rtx); 669static rtx rs6000_expand_binop_builtin (enum insn_code, tree, rtx); 670static rtx rs6000_expand_ternop_builtin (enum insn_code, tree, rtx); 671static rtx rs6000_expand_builtin (tree, rtx, rtx, enum machine_mode, int); 672static void altivec_init_builtins (void); 673static void rs6000_common_init_builtins (void); 674static void rs6000_init_libfuncs (void); --- 235 unchanged lines hidden (view full) --- 910#define TARGET_SCHED_FINISH rs6000_sched_finish 911 912#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD 913#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD rs6000_use_sched_lookahead 914 915#undef TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD 916#define TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD rs6000_builtin_mask_for_load 917 | 668static void rs6000_init_builtins (void); 669static rtx rs6000_expand_unop_builtin (enum insn_code, tree, rtx); 670static rtx rs6000_expand_binop_builtin (enum insn_code, tree, rtx); 671static rtx rs6000_expand_ternop_builtin (enum insn_code, tree, rtx); 672static rtx rs6000_expand_builtin (tree, rtx, rtx, enum machine_mode, int); 673static void altivec_init_builtins (void); 674static void rs6000_common_init_builtins (void); 675static void rs6000_init_libfuncs (void); --- 235 unchanged lines hidden (view full) --- 911#define TARGET_SCHED_FINISH rs6000_sched_finish 912 913#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD 914#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD rs6000_use_sched_lookahead 915 916#undef TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD 917#define TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD rs6000_builtin_mask_for_load 918 |
919#undef TARGET_VECTOR_ALIGNMENT_REACHABLE 920#define TARGET_VECTOR_ALIGNMENT_REACHABLE rs6000_vector_alignment_reachable 921 |
|
918#undef TARGET_INIT_BUILTINS 919#define TARGET_INIT_BUILTINS rs6000_init_builtins 920 921#undef TARGET_EXPAND_BUILTIN 922#define TARGET_EXPAND_BUILTIN rs6000_expand_builtin 923 924#undef TARGET_MANGLE_FUNDAMENTAL_TYPE 925#define TARGET_MANGLE_FUNDAMENTAL_TYPE rs6000_mangle_fundamental_type --- 653 unchanged lines hidden (view full) --- 1579rs6000_builtin_mask_for_load (void) 1580{ 1581 if (TARGET_ALTIVEC) 1582 return altivec_builtin_mask_for_load; 1583 else 1584 return 0; 1585} 1586 | 922#undef TARGET_INIT_BUILTINS 923#define TARGET_INIT_BUILTINS rs6000_init_builtins 924 925#undef TARGET_EXPAND_BUILTIN 926#define TARGET_EXPAND_BUILTIN rs6000_expand_builtin 927 928#undef TARGET_MANGLE_FUNDAMENTAL_TYPE 929#define TARGET_MANGLE_FUNDAMENTAL_TYPE rs6000_mangle_fundamental_type --- 653 unchanged lines hidden (view full) --- 1583rs6000_builtin_mask_for_load (void) 1584{ 1585 if (TARGET_ALTIVEC) 1586 return altivec_builtin_mask_for_load; 1587 else 1588 return 0; 1589} 1590 |
1591 1592/* Return true iff, data reference of TYPE can reach vector alignment (16) 1593 after applying N number of iterations. This routine does not determine 1594 how may iterations are required to reach desired alignment. */ 1595 1596static bool 1597rs6000_vector_alignment_reachable (tree type ATTRIBUTE_UNUSED, bool is_packed) 1598{ 1599 if (is_packed) 1600 return false; 1601 1602 if (TARGET_32BIT) 1603 { 1604 if (rs6000_alignment_flags == MASK_ALIGN_NATURAL) 1605 return true; 1606 1607 if (rs6000_alignment_flags == MASK_ALIGN_POWER) 1608 return true; 1609 1610 return false; 1611 } 1612 else 1613 { 1614 if (TARGET_MACHO) 1615 return false; 1616 1617 /* Assuming that all other types are naturally aligned. CHECKME! */ 1618 return true; 1619 } 1620} 1621 |
|
1587/* Handle generic options of the form -mfoo=yes/no. 1588 NAME is the option name. 1589 VALUE is the option value. 1590 FLAG is the pointer to the flag where to store a 1 or 0, depending on 1591 whether the option value is 'yes' or 'no' respectively. */ 1592static void 1593rs6000_parse_yes_no_option (const char *name, const char *value, int *flag) 1594{ --- 17946 unchanged lines hidden --- | 1622/* Handle generic options of the form -mfoo=yes/no. 1623 NAME is the option name. 1624 VALUE is the option value. 1625 FLAG is the pointer to the flag where to store a 1 or 0, depending on 1626 whether the option value is 'yes' or 'no' respectively. */ 1627static void 1628rs6000_parse_yes_no_option (const char *name, const char *value, int *flag) 1629{ --- 17946 unchanged lines hidden --- |