Deleted Added
full compact
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 ---