===================================================================
@@ -2783,7 +2783,7 @@ sparc*-*-solaris2*)
tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
case ${target} in
sparc64-*-* | sparcv9-*-*)
- tm_file="sparc/default-64.h ${tm_file}"
+ tm_file="sparc/default64.h ${tm_file}"
;;
*)
test x$with_cpu != x || with_cpu=v9
@@ -2806,7 +2806,7 @@ sparc64-*-rtems*)
tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
;;
sparc64-*-linux*)
- tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default-64.h sparc/linux64.h sparc/tso.h"
+ tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h"
extra_options="${extra_options} sparc/long-double-switch.opt"
tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
;;
===================================================================
@@ -1,22 +0,0 @@
-/* Definitions of target machine for GCC, for bi-arch SPARC,
- defaulting to 64-bit code generation.
-
- Copyright (C) 1999-2016 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#define TARGET_64BIT_DEFAULT 1
===================================================================
@@ -1384,13 +1384,13 @@ sparc_option_override (void)
#ifndef SPARC_BI_ARCH
/* Check for unsupported architecture size. */
- if (! TARGET_64BIT != DEFAULT_ARCH32_P)
+ if (!TARGET_64BIT != DEFAULT_ARCH32_P)
error ("%s is not supported by this configuration",
DEFAULT_ARCH32_P ? "-m64" : "-m32");
#endif
/* We force all 64bit archs to use 128 bit long double */
- if (TARGET_64BIT && ! TARGET_LONG_DOUBLE_128)
+ if (TARGET_ARCH64 && !TARGET_LONG_DOUBLE_128)
{
error ("-mlong-double-64 not allowed with -m64");
target_flags |= MASK_LONG_DOUBLE_128;
@@ -11739,7 +11739,7 @@ sparc_file_end (void)
static const char *
sparc_mangle_type (const_tree type)
{
- if (!TARGET_64BIT
+ if (TARGET_ARCH32
&& TYPE_MAIN_VARIANT (type) == long_double_type_node
&& TARGET_LONG_DOUBLE_128)
return "g";
===================================================================
@@ -44,12 +44,12 @@ along with GCC; see the file COPYING3.
#endif /* sparc64 */
#else
#ifdef SPARC_BI_ARCH
-#define TARGET_ARCH32 (! TARGET_64BIT)
+#define TARGET_ARCH32 (!TARGET_64BIT)
#else
#define TARGET_ARCH32 (DEFAULT_ARCH32_P)
#endif /* SPARC_BI_ARCH */
#endif /* IN_LIBGCC2 */
-#define TARGET_ARCH64 (! TARGET_ARCH32)
+#define TARGET_ARCH64 (!TARGET_ARCH32)
/* Code model selection in 64-bit environment.
===================================================================
@@ -1,8 +1,8 @@
-;; Machine description for SPARC chip for GCC
-;; Copyright (C) 1987-2016 Free Software Foundation, Inc.
-;; Contributed by Michael Tiemann (tiemann@cygnus.com)
-;; 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
-;; at Cygnus Support.
+;; Machine description for SPARC.
+;; Copyright (C) 1987-2016 Free Software Foundation, Inc.
+;; Contributed by Michael Tiemann (tiemann@cygnus.com)
+;; 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
+;; at Cygnus Support.
;; This file is part of GCC.
@@ -20,8 +20,6 @@
;; along with GCC; see the file COPYING3. If not see
;; <http://www.gnu.org/licenses/>.
-;;- See file "rtl.def" for documentation on define_insn, match_*, et. al.
-
(define_c_enum "unspec" [
UNSPEC_MOVE_PIC
UNSPEC_UPDATE_RETURN
@@ -205,8 +203,8 @@ (define_constants
(GSR_REG 102)
])
-(define_mode_iterator P [(SI "Pmode == SImode") (DI "Pmode == DImode")])
(define_mode_iterator I [QI HI SI DI])
+(define_mode_iterator P [(SI "TARGET_ARCH32") (DI "TARGET_ARCH64")])
(define_mode_iterator W [SI (DI "TARGET_ARCH64")])
(define_mode_iterator F [SF DF TF])
@@ -710,7 +708,7 @@ (define_insn_and_split "*snedi<W:mode>_z
(const_int 0)))]
"TARGET_ARCH64 && !TARGET_VIS3"
"#"
- "&& ! reg_overlap_mentioned_p (operands[1], operands[0])"
+ "&& !reg_overlap_mentioned_p (operands[1], operands[0])"
[(set (match_dup 0) (const_int 0))
(set (match_dup 0) (if_then_else:W (ne:DI (match_dup 1) (const_int 0))
(const_int 1)
@@ -737,7 +735,7 @@ (define_insn_and_split "*neg_snedi<W:mod
(const_int 0))))]
"TARGET_ARCH64 && !TARGET_SUBXC"
"#"
- "&& ! reg_overlap_mentioned_p (operands[1], operands[0])"
+ "&& !reg_overlap_mentioned_p (operands[1], operands[0])"
[(set (match_dup 0) (const_int 0))
(set (match_dup 0) (if_then_else:W (ne:DI (match_dup 1) (const_int 0))
(const_int -1)
@@ -790,7 +788,7 @@ (define_insn_and_split "*seqdi<W:mode>_z
(const_int 0)))]
"TARGET_ARCH64"
"#"
- "&& ! reg_overlap_mentioned_p (operands[1], operands[0])"
+ "&& !reg_overlap_mentioned_p (operands[1], operands[0])"
[(set (match_dup 0) (const_int 0))
(set (match_dup 0) (if_then_else:W (eq:DI (match_dup 1) (const_int 0))
(const_int 1)
@@ -804,7 +802,7 @@ (define_insn_and_split "*neg_seqdi<W:mod
(const_int 0))))]
"TARGET_ARCH64"
"#"
- "&& ! reg_overlap_mentioned_p (operands[1], operands[0])"
+ "&& !reg_overlap_mentioned_p (operands[1], operands[0])"
[(set (match_dup 0) (const_int 0))
(set (match_dup 0) (if_then_else:W (eq:DI (match_dup 1) (const_int 0))
(const_int -1)
@@ -1220,7 +1218,7 @@ (define_insn "*subxc<W:mode>"
(define_split
[(set (match_operand:W 0 "register_operand" "")
(match_operator:W 1 "icc_comparison_operator"
- [(match_operand 2 "icc_register_operand" "") (const_int 0)]))]
+ [(match_operand 2 "icc_register_operand" "") (const_int 0)]))]
"TARGET_V9
/* 64-bit LTU is better implemented using addxc with VIS3. */
&& !(GET_CODE (operands[1]) == LTU
@@ -1243,8 +1241,8 @@ (define_split
(define_expand "cbranchcc4"
[(set (pc)
(if_then_else (match_operator 0 "comparison_operator"
- [(match_operand 1 "compare_operand" "")
- (match_operand 2 "const_zero_operand" "")])
+ [(match_operand 1 "compare_operand" "")
+ (match_operand 2 "const_zero_operand" "")])
(label_ref (match_operand 3 "" ""))
(pc)))]
""
@@ -1282,7 +1280,10 @@ (define_expand "cbranch<F:mode>4"
(match_operand:F 2 "register_operand" "")]))
(use (match_operand 3 ""))]
"TARGET_FPU"
- { emit_conditional_branch_insn (operands); DONE; })
+{
+ emit_conditional_branch_insn (operands);
+ DONE;
+})
;; Now match both normal and inverted jump.
@@ -1291,7 +1292,7 @@ (define_expand "cbranch<F:mode>4"
(define_insn "*normal_branch"
[(set (pc)
(if_then_else (match_operator 0 "icc_comparison_operator"
- [(reg CC_REG) (const_int 0)])
+ [(reg CC_REG) (const_int 0)])
(label_ref (match_operand 1 "" ""))
(pc)))]
""
@@ -1307,7 +1308,7 @@ (define_insn "*normal_branch"
(define_insn "*inverted_branch"
[(set (pc)
(if_then_else (match_operator 0 "icc_comparison_operator"
- [(reg CC_REG) (const_int 0)])
+ [(reg CC_REG) (const_int 0)])
(pc)
(label_ref (match_operand 1 "" ""))))]
""
@@ -1323,8 +1324,8 @@ (define_insn "*inverted_branch"
(define_insn "*normal_fp_branch"
[(set (pc)
(if_then_else (match_operator 1 "comparison_operator"
- [(match_operand:CCFP 0 "fcc_register_operand" "c")
- (const_int 0)])
+ [(match_operand:CCFP 0 "fcc_register_operand" "c")
+ (const_int 0)])
(label_ref (match_operand 2 "" ""))
(pc)))]
""
@@ -1340,8 +1341,8 @@ (define_insn "*normal_fp_branch"
(define_insn "*inverted_fp_branch"
[(set (pc)
(if_then_else (match_operator 1 "comparison_operator"
- [(match_operand:CCFP 0 "fcc_register_operand" "c")
- (const_int 0)])
+ [(match_operand:CCFP 0 "fcc_register_operand" "c")
+ (const_int 0)])
(pc)
(label_ref (match_operand 2 "" ""))))]
""
@@ -1357,8 +1358,8 @@ (define_insn "*inverted_fp_branch"
(define_insn "*normal_fpe_branch"
[(set (pc)
(if_then_else (match_operator 1 "comparison_operator"
- [(match_operand:CCFPE 0 "fcc_register_operand" "c")
- (const_int 0)])
+ [(match_operand:CCFPE 0 "fcc_register_operand" "c")
+ (const_int 0)])
(label_ref (match_operand 2 "" ""))
(pc)))]
""
@@ -1374,8 +1375,8 @@ (define_insn "*normal_fpe_branch"
(define_insn "*inverted_fpe_branch"
[(set (pc)
(if_then_else (match_operator 1 "comparison_operator"
- [(match_operand:CCFPE 0 "fcc_register_operand" "c")
- (const_int 0)])
+ [(match_operand:CCFPE 0 "fcc_register_operand" "c")
+ (const_int 0)])
(pc)
(label_ref (match_operand 2 "" ""))))]
""
@@ -1421,8 +1422,8 @@ (define_insn "*cbcond_sp64"
(define_insn "*normal_int_branch_sp64"
[(set (pc)
(if_then_else (match_operator 0 "v9_register_comparison_operator"
- [(match_operand:DI 1 "register_operand" "r")
- (const_int 0)])
+ [(match_operand:DI 1 "register_operand" "r")
+ (const_int 0)])
(label_ref (match_operand 2 "" ""))
(pc)))]
"TARGET_ARCH64"
@@ -1437,8 +1438,8 @@ (define_insn "*normal_int_branch_sp64"
(define_insn "*inverted_int_branch_sp64"
[(set (pc)
(if_then_else (match_operator 0 "v9_register_comparison_operator"
- [(match_operand:DI 1 "register_operand" "r")
- (const_int 0)])
+ [(match_operand:DI 1 "register_operand" "r")
+ (const_int 0)])
(pc)
(label_ref (match_operand 2 "" ""))))]
"TARGET_ARCH64"
@@ -1463,7 +1464,8 @@ (define_insn "load_pcrel_sym<P:mode>"
[(set (match_operand:P 0 "register_operand" "=r")
(unspec:P [(match_operand:P 1 "symbolic_operand" "")
(match_operand:P 2 "call_address_operand" "")
- (match_operand:P 3 "const_int_operand" "")] UNSPEC_LOAD_PCREL_SYM))
+ (match_operand:P 3 "const_int_operand" "")]
+ UNSPEC_LOAD_PCREL_SYM))
(clobber (reg:P O7_REG))]
"REGNO (operands[0]) == INTVAL (operands[3])"
{
@@ -1580,7 +1582,8 @@ (define_insn "*movsi_high"
(define_insn "movsi_lo_sum_pic"
[(set (match_operand:SI 0 "register_operand" "=r")
(lo_sum:SI (match_operand:SI 1 "register_operand" "r")
- (unspec:SI [(match_operand:SI 2 "immediate_operand" "in")] UNSPEC_MOVE_PIC)))]
+ (unspec:SI [(match_operand:SI 2 "immediate_operand" "in")]
+ UNSPEC_MOVE_PIC)))]
"flag_pic"
{
#ifdef HAVE_AS_SPARC_GOTDATA_OP
@@ -1606,7 +1609,8 @@ (define_insn "movsi_pic_gotdata_op"
[(set (match_operand:SI 0 "register_operand" "=r")
(unspec:SI [(match_operand:SI 1 "register_operand" "r")
(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "symbolic_operand" "")] UNSPEC_MOVE_GOTDATA))]
+ (match_operand 3 "symbolic_operand" "")]
+ UNSPEC_MOVE_GOTDATA))]
"flag_pic && check_pic (1)"
{
#ifdef HAVE_AS_SPARC_GOTDATA_OP
@@ -1697,10 +1701,10 @@ (define_expand "movdi"
(define_insn "*movdi_insn_sp32"
[(set (match_operand:DI 0 "nonimmediate_operand"
- "=T,o,T,U,o,r,r,r,?T,?*f,?*f,?o,?*e,?*e, r,?*f,?*e,?W,b,b")
+ "=T,o,T,U,o,r,r,r,?T,?*f,?*f,?o,?*e,?*e, r,?*f,?*e,?W,b,b")
(match_operand:DI 1 "input_operand"
- " J,J,U,T,r,o,i,r,*f, T, o,*f, *e, *e,?*f, r, W,*e,J,P"))]
- "! TARGET_ARCH64
+ " J,J,U,T,r,o,i,r,*f, T, o,*f, *e, *e,?*f, r, W,*e,J,P"))]
+ "TARGET_ARCH32
&& (register_operand (operands[0], DImode)
|| register_or_zero_operand (operands[1], DImode))"
"@
@@ -1800,7 +1804,8 @@ (define_insn "*movdi_lo_sum_pic_label_re
(define_insn "movdi_lo_sum_pic"
[(set (match_operand:DI 0 "register_operand" "=r")
(lo_sum:DI (match_operand:DI 1 "register_operand" "r")
- (unspec:DI [(match_operand:DI 2 "immediate_operand" "in")] UNSPEC_MOVE_PIC)))]
+ (unspec:DI [(match_operand:DI 2 "immediate_operand" "in")]
+ UNSPEC_MOVE_PIC)))]
"TARGET_ARCH64 && flag_pic"
{
#ifdef HAVE_AS_SPARC_GOTDATA_OP
@@ -1826,7 +1831,8 @@ (define_insn "movdi_pic_gotdata_op"
[(set (match_operand:DI 0 "register_operand" "=r")
(unspec:DI [(match_operand:DI 1 "register_operand" "r")
(match_operand:DI 2 "register_operand" "r")
- (match_operand 3 "symbolic_operand" "")] UNSPEC_MOVE_GOTDATA))]
+ (match_operand 3 "symbolic_operand" "")]
+ UNSPEC_MOVE_GOTDATA))]
"TARGET_ARCH64 && flag_pic && check_pic (1)"
{
#ifdef HAVE_AS_SPARC_GOTDATA_OP
@@ -1858,14 +1864,16 @@ (define_insn "*losum_di_medlow"
(define_insn "seth44"
[(set (match_operand:DI 0 "register_operand" "=r")
- (high:DI (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")] UNSPEC_SETH44)))]
+ (high:DI (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
+ UNSPEC_SETH44)))]
"TARGET_CM_MEDMID"
"sethi\t%%h44(%a1), %0")
(define_insn "setm44"
[(set (match_operand:DI 0 "register_operand" "=r")
(lo_sum:DI (match_operand:DI 1 "register_operand" "r")
- (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")] UNSPEC_SETM44)))]
+ (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")]
+ UNSPEC_SETM44)))]
"TARGET_CM_MEDMID"
"or\t%1, %%m44(%a2), %0")
@@ -1878,20 +1886,23 @@ (define_insn "setl44"
(define_insn "sethh"
[(set (match_operand:DI 0 "register_operand" "=r")
- (high:DI (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")] UNSPEC_SETHH)))]
+ (high:DI (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
+ UNSPEC_SETHH)))]
"TARGET_CM_MEDANY"
"sethi\t%%hh(%a1), %0")
(define_insn "setlm"
[(set (match_operand:DI 0 "register_operand" "=r")
- (high:DI (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")] UNSPEC_SETLM)))]
+ (high:DI (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
+ UNSPEC_SETLM)))]
"TARGET_CM_MEDANY"
"sethi\t%%lm(%a1), %0")
(define_insn "sethm"
[(set (match_operand:DI 0 "register_operand" "=r")
(lo_sum:DI (match_operand:DI 1 "register_operand" "r")
- (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")] UNSPEC_EMB_SETHM)))]
+ (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")]
+ UNSPEC_EMB_SETHM)))]
"TARGET_CM_MEDANY"
"or\t%1, %%hm(%a2), %0")
@@ -1904,7 +1915,8 @@ (define_insn "setlo"
(define_insn "embmedany_sethi"
[(set (match_operand:DI 0 "register_operand" "=r")
- (high:DI (unspec:DI [(match_operand:DI 1 "data_segment_operand" "")] UNSPEC_EMB_HISUM)))]
+ (high:DI (unspec:DI [(match_operand:DI 1 "data_segment_operand" "")]
+ UNSPEC_EMB_HISUM)))]
"TARGET_CM_EMBMEDANY && check_pic (1)"
"sethi\t%%hi(%a1), %0")
@@ -1917,26 +1929,30 @@ (define_insn "embmedany_losum"
(define_insn "embmedany_brsum"
[(set (match_operand:DI 0 "register_operand" "=r")
- (unspec:DI [(match_operand:DI 1 "register_operand" "r")] UNSPEC_EMB_HISUM))]
+ (unspec:DI [(match_operand:DI 1 "register_operand" "r")]
+ UNSPEC_EMB_HISUM))]
"TARGET_CM_EMBMEDANY"
"add\t%1, %_, %0")
(define_insn "embmedany_textuhi"
[(set (match_operand:DI 0 "register_operand" "=r")
- (high:DI (unspec:DI [(match_operand:DI 1 "text_segment_operand" "")] UNSPEC_EMB_TEXTUHI)))]
+ (high:DI (unspec:DI [(match_operand:DI 1 "text_segment_operand" "")]
+ UNSPEC_EMB_TEXTUHI)))]
"TARGET_CM_EMBMEDANY && check_pic (1)"
"sethi\t%%uhi(%a1), %0")
(define_insn "embmedany_texthi"
[(set (match_operand:DI 0 "register_operand" "=r")
- (high:DI (unspec:DI [(match_operand:DI 1 "text_segment_operand" "")] UNSPEC_EMB_TEXTHI)))]
+ (high:DI (unspec:DI [(match_operand:DI 1 "text_segment_operand" "")]
+ UNSPEC_EMB_TEXTHI)))]
"TARGET_CM_EMBMEDANY && check_pic (1)"
"sethi\t%%hi(%a1), %0")
(define_insn "embmedany_textulo"
[(set (match_operand:DI 0 "register_operand" "=r")
(lo_sum:DI (match_operand:DI 1 "register_operand" "r")
- (unspec:DI [(match_operand:DI 2 "text_segment_operand" "")] UNSPEC_EMB_TEXTULO)))]
+ (unspec:DI [(match_operand:DI 2 "text_segment_operand" "")]
+ UNSPEC_EMB_TEXTULO)))]
"TARGET_CM_EMBMEDANY"
"or\t%1, %%ulo(%a2), %0")
@@ -1954,7 +1970,7 @@ (define_expand "reload_indi"
(match_operand:TI 2 "register_operand" "=&r")])]
"(TARGET_CM_MEDANY
|| TARGET_CM_EMBMEDANY)
- && ! flag_pic"
+ && !flag_pic"
{
sparc_emit_set_symbolic_const64 (operands[0], operands[1], operands[2]);
DONE;
@@ -1966,7 +1982,7 @@ (define_expand "reload_outdi"
(match_operand:TI 2 "register_operand" "=&r")])]
"(TARGET_CM_MEDANY
|| TARGET_CM_EMBMEDANY)
- && ! flag_pic"
+ && !flag_pic"
{
sparc_emit_set_symbolic_const64 (operands[0], operands[1], operands[2]);
DONE;
@@ -1976,7 +1992,7 @@ (define_expand "reload_outdi"
(define_split
[(set (match_operand:DI 0 "register_operand" "")
(match_operand:DI 1 "const_int_operand" ""))]
- "! TARGET_ARCH64
+ "TARGET_ARCH32
&& ((GET_CODE (operands[0]) == REG
&& SPARC_INT_REG_P (REGNO (operands[0])))
|| (GET_CODE (operands[0]) == SUBREG
@@ -1994,8 +2010,8 @@ (define_split
/* Slick... but this trick loses if this subreg constant part
can be done in one insn. */
if (low == high
- && ! SPARC_SETHI32_P (high)
- && ! SPARC_SIMM13_P (high))
+ && !SPARC_SETHI32_P (high)
+ && !SPARC_SIMM13_P (high))
emit_insn (gen_movsi (gen_lowpart (SImode, operands[0]),
gen_highpart (SImode, operands[0])));
else
@@ -2008,10 +2024,9 @@ (define_split
[(set (match_operand:DI 0 "register_operand" "")
(match_operand:DI 1 "register_operand" ""))]
"reload_completed
- && (! TARGET_V9
- || (! TARGET_ARCH64
- && sparc_split_regreg_legitimate (operands[0],
- operands[1])))"
+ && (!TARGET_V9
+ || (TARGET_ARCH32
+ && sparc_split_regreg_legitimate (operands[0], operands[1])))"
[(clobber (const_int 0))]
{
rtx set_dest = operands[0];
@@ -2044,7 +2059,7 @@ (define_split
(define_split
[(set (match_operand:DI 0 "register_operand" "")
(match_operand:DI 1 "memory_operand" ""))]
- "(! TARGET_ARCH64
+ "(TARGET_ARCH32
&& reload_completed
&& sparc_splitdi_legitimate (operands[0], operands[1]))"
[(clobber (const_int 0))]
@@ -2070,7 +2085,7 @@ (define_split
(define_split
[(set (match_operand:DI 0 "memory_operand" "")
(match_operand:DI 1 "register_operand" ""))]
- "(! TARGET_ARCH64
+ "(TARGET_ARCH32
&& reload_completed
&& sparc_splitdi_legitimate (operands[1], operands[0]))"
[(clobber (const_int 0))]
@@ -2086,9 +2101,9 @@ (define_split
[(set (match_operand:DI 0 "memory_operand" "")
(match_operand:DI 1 "const_zero_operand" ""))]
"reload_completed
- && (! TARGET_V9
- || (! TARGET_ARCH64
- && ! mem_min_alignment (operands[0], 8)))
+ && (!TARGET_V9
+ || (TARGET_ARCH32
+ && !mem_min_alignment (operands[0], 8)))
&& offsettable_memref_p (operands[0])"
[(clobber (const_int 0))]
{
@@ -2115,7 +2130,7 @@ (define_insn "*movti_insn_sp64"
[(set (match_operand:TI 0 "nonimmediate_operand" "=r , o,?*e,?o,b")
(match_operand:TI 1 "input_operand" "roJ,rJ, eo, e,J"))]
"TARGET_ARCH64
- && ! TARGET_HARD_QUAD
+ && !TARGET_HARD_QUAD
&& (register_operand (operands[0], TImode)
|| register_or_zero_operand (operands[1], TImode))"
"#"
@@ -2145,9 +2160,9 @@ (define_split
(match_operand:TI 1 "register_operand" ""))]
"reload_completed
&& ((TARGET_FPU
- && ! TARGET_HARD_QUAD)
- || (! fp_register_operand (operands[0], TImode)
- && ! fp_register_operand (operands[1], TImode)))"
+ && !TARGET_HARD_QUAD)
+ || (!fp_register_operand (operands[0], TImode)
+ && !fp_register_operand (operands[1], TImode)))"
[(clobber (const_int 0))]
{
rtx set_dest = operands[0];
@@ -2208,8 +2223,8 @@ (define_split
(match_operand:TI 1 "memory_operand" ""))]
"reload_completed
&& offsettable_memref_p (operands[1])
- && (! TARGET_HARD_QUAD
- || ! fp_register_operand (operands[0], TImode))"
+ && (!TARGET_HARD_QUAD
+ || !fp_register_operand (operands[0], TImode))"
[(clobber (const_int 0))]
{
rtx word0 = adjust_address (operands[1], DImode, 0);
@@ -2242,8 +2257,8 @@ (define_split
(match_operand:TI 1 "register_operand" ""))]
"reload_completed
&& offsettable_memref_p (operands[0])
- && (! TARGET_HARD_QUAD
- || ! fp_register_operand (operands[1], TImode))"
+ && (!TARGET_HARD_QUAD
+ || !fp_register_operand (operands[1], TImode))"
[(clobber (const_int 0))]
{
rtx set_src = operands[1];
@@ -2360,9 +2375,11 @@ (define_expand "movdf"
})
(define_insn "*movdf_insn_sp32"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=b,b,e,e,*r, f, e,T,W,U,T, f, *r, o,o")
- (match_operand:DF 1 "input_operand" "G,C,e,e, f,*r,W#F,G,e,T,U,o#F,*roF,*rG,f"))]
- "! TARGET_ARCH64
+ [(set (match_operand:DF 0 "nonimmediate_operand"
+ "=b,b,e,e,*r, f, e,T,W,U,T, f, *r, o,o")
+ (match_operand:DF 1 "input_operand"
+ " G,C,e,e, f,*r,W#F,G,e,T,U,o#F,*roF,*rG,f"))]
+ "TARGET_ARCH32
&& (register_operand (operands[0], DFmode)
|| register_or_zero_or_all_ones_operand (operands[1], DFmode))"
"@
@@ -2417,7 +2434,7 @@ (define_split
(match_operand:DF 1 "const_double_operand" ""))]
"REG_P (operands[0])
&& SPARC_INT_REG_P (REGNO (operands[0]))
- && ! const_zero_operand (operands[1], GET_MODE (operands[0]))
+ && !const_zero_operand (operands[1], GET_MODE (operands[0]))
&& reload_completed"
[(clobber (const_int 0))]
{
@@ -2443,8 +2460,8 @@ (define_split
/* Slick... but this trick loses if this subreg constant part
can be done in one insn. */
if (lo == hi
- && ! SPARC_SETHI32_P (INTVAL (hi))
- && ! SPARC_SIMM13_P (INTVAL (hi)))
+ && !SPARC_SETHI32_P (INTVAL (hi))
+ && !SPARC_SIMM13_P (INTVAL (hi)))
{
emit_insn (gen_movsi (gen_lowpart (SImode, operands[0]),
gen_highpart (SImode, operands[0])));
@@ -2465,10 +2482,9 @@ (define_split
(define_split
[(set (match_operand:DF 0 "register_operand" "")
(match_operand:DF 1 "register_operand" ""))]
- "(! TARGET_V9
- || (! TARGET_ARCH64
- && sparc_split_regreg_legitimate (operands[0],
- operands[1])))
+ "(!TARGET_V9
+ || (TARGET_ARCH32
+ && sparc_split_regreg_legitimate (operands[0], operands[1])))
&& reload_completed"
[(clobber (const_int 0))]
{
@@ -2501,9 +2517,9 @@ (define_split
[(set (match_operand:DF 0 "register_operand" "")
(match_operand:DF 1 "memory_operand" ""))]
"reload_completed
- && ! TARGET_ARCH64
+ && TARGET_ARCH32
&& (((REGNO (operands[0]) % 2) != 0)
- || ! mem_min_alignment (operands[1], 8))
+ || !mem_min_alignment (operands[1], 8))
&& offsettable_memref_p (operands[1])"
[(clobber (const_int 0))]
{
@@ -2529,9 +2545,9 @@ (define_split
[(set (match_operand:DF 0 "memory_operand" "")
(match_operand:DF 1 "register_operand" ""))]
"reload_completed
- && ! TARGET_ARCH64
+ && TARGET_ARCH32
&& (((REGNO (operands[1]) % 2) != 0)
- || ! mem_min_alignment (operands[0], 8))
+ || !mem_min_alignment (operands[0], 8))
&& offsettable_memref_p (operands[0])"
[(clobber (const_int 0))]
{
@@ -2549,9 +2565,9 @@ (define_split
[(set (match_operand:DF 0 "memory_operand" "")
(match_operand:DF 1 "const_zero_operand" ""))]
"reload_completed
- && (! TARGET_V9
- || (! TARGET_ARCH64
- && ! mem_min_alignment (operands[0], 8)))
+ && (!TARGET_V9
+ || (TARGET_ARCH32
+ && !mem_min_alignment (operands[0], 8)))
&& offsettable_memref_p (operands[0])"
[(clobber (const_int 0))]
{
@@ -2569,7 +2585,7 @@ (define_split
[(set (match_operand:DF 0 "register_operand" "")
(match_operand:DF 1 "const_zero_operand" ""))]
"reload_completed
- && ! TARGET_ARCH64
+ && TARGET_ARCH32
&& ((GET_CODE (operands[0]) == REG
&& SPARC_INT_REG_P (REGNO (operands[0])))
|| (GET_CODE (operands[0]) == SUBREG
@@ -2599,7 +2615,7 @@ (define_expand "movtf"
(define_insn "*movtf_insn_sp32"
[(set (match_operand:TF 0 "nonimmediate_operand" "=b, e,o, o,U, r")
(match_operand:TF 1 "input_operand" " G,oe,e,rGU,o,roG"))]
- "! TARGET_ARCH64
+ "TARGET_ARCH32
&& (register_operand (operands[0], TFmode)
|| register_or_zero_operand (operands[1], TFmode))"
"#"
@@ -2610,7 +2626,7 @@ (define_insn "*movtf_insn_sp64"
[(set (match_operand:TF 0 "nonimmediate_operand" "=b, e,o, o, r")
(match_operand:TF 1 "input_operand" "G,oe,e,rG,roG"))]
"TARGET_ARCH64
- && ! TARGET_HARD_QUAD
+ && !TARGET_HARD_QUAD
&& (register_operand (operands[0], TFmode)
|| register_or_zero_operand (operands[1], TFmode))"
"#"
@@ -2639,11 +2655,11 @@ (define_split
[(set (match_operand:TF 0 "register_operand" "")
(match_operand:TF 1 "register_operand" ""))]
"reload_completed
- && (! TARGET_ARCH64
+ && (TARGET_ARCH32
|| (TARGET_FPU
- && ! TARGET_HARD_QUAD)
- || (! fp_register_operand (operands[0], TFmode)
- && ! fp_register_operand (operands[1], TFmode)))"
+ && !TARGET_HARD_QUAD)
+ || (!fp_register_operand (operands[0], TFmode)
+ && !fp_register_operand (operands[1], TFmode)))"
[(clobber (const_int 0))]
{
rtx set_dest = operands[0];
@@ -2704,9 +2720,9 @@ (define_split
(match_operand:TF 1 "memory_operand" ""))]
"(reload_completed
&& offsettable_memref_p (operands[1])
- && (! TARGET_ARCH64
- || ! TARGET_HARD_QUAD
- || ! fp_register_operand (operands[0], TFmode)))"
+ && (TARGET_ARCH32
+ || !TARGET_HARD_QUAD
+ || !fp_register_operand (operands[0], TFmode)))"
[(clobber (const_int 0))]
{
rtx word0 = adjust_address (operands[1], DFmode, 0);
@@ -2739,9 +2755,9 @@ (define_split
(match_operand:TF 1 "register_operand" ""))]
"(reload_completed
&& offsettable_memref_p (operands[0])
- && (! TARGET_ARCH64
- || ! TARGET_HARD_QUAD
- || ! fp_register_operand (operands[1], TFmode)))"
+ && (TARGET_ARCH32
+ || !TARGET_HARD_QUAD
+ || !fp_register_operand (operands[1], TFmode)))"
[(clobber (const_int 0))]
{
rtx set_src = operands[1];
@@ -2772,7 +2788,7 @@ (define_expand "mov<I:mode>cc"
(match_operand:I 3 "arith10_operand" "")))]
"TARGET_V9 && !(<I:MODE>mode == DImode && TARGET_ARCH32)"
{
- if (! sparc_expand_conditional_move (<I:MODE>mode, operands))
+ if (!sparc_expand_conditional_move (<I:MODE>mode, operands))
FAIL;
DONE;
})
@@ -2784,7 +2800,7 @@ (define_expand "mov<F:mode>cc"
(match_operand:F 3 "register_operand" "")))]
"TARGET_V9 && TARGET_FPU"
{
- if (! sparc_expand_conditional_move (<F:MODE>mode, operands))
+ if (!sparc_expand_conditional_move (<F:MODE>mode, operands))
FAIL;
DONE;
})
@@ -2792,8 +2808,8 @@ (define_expand "mov<F:mode>cc"
(define_insn "*mov<I:mode>_cc_v9"
[(set (match_operand:I 0 "register_operand" "=r")
(if_then_else:I (match_operator 1 "icc_or_fcc_comparison_operator"
- [(match_operand 2 "icc_or_fcc_register_operand" "X")
- (const_int 0)])
+ [(match_operand 2 "icc_or_fcc_register_operand" "X")
+ (const_int 0)])
(match_operand:I 3 "arith11_operand" "rL")
(match_operand:I 4 "register_operand" "0")))]
"TARGET_V9 && !(<I:MODE>mode == DImode && TARGET_ARCH32)"
@@ -2803,8 +2819,8 @@ (define_insn "*mov<I:mode>_cc_v9"
(define_insn "*mov<I:mode>_cc_reg_sp64"
[(set (match_operand:I 0 "register_operand" "=r")
(if_then_else:I (match_operator 1 "v9_register_comparison_operator"
- [(match_operand:DI 2 "register_operand" "r")
- (const_int 0)])
+ [(match_operand:DI 2 "register_operand" "r")
+ (const_int 0)])
(match_operand:I 3 "arith10_operand" "rM")
(match_operand:I 4 "register_operand" "0")))]
"TARGET_ARCH64"
@@ -2814,8 +2830,8 @@ (define_insn "*mov<I:mode>_cc_reg_sp64"
(define_insn "*movsf_cc_v9"
[(set (match_operand:SF 0 "register_operand" "=f")
(if_then_else:SF (match_operator 1 "icc_or_fcc_comparison_operator"
- [(match_operand 2 "icc_or_fcc_register_operand" "X")
- (const_int 0)])
+ [(match_operand 2 "icc_or_fcc_register_operand" "X")
+ (const_int 0)])
(match_operand:SF 3 "register_operand" "f")
(match_operand:SF 4 "register_operand" "0")))]
"TARGET_V9 && TARGET_FPU"
@@ -2825,8 +2841,8 @@ (define_insn "*movsf_cc_v9"
(define_insn "*movsf_cc_reg_sp64"
[(set (match_operand:SF 0 "register_operand" "=f")
(if_then_else:SF (match_operator 1 "v9_register_comparison_operator"
- [(match_operand:DI 2 "register_operand" "r")
- (const_int 0)])
+ [(match_operand:DI 2 "register_operand" "r")
+ (const_int 0)])
(match_operand:SF 3 "register_operand" "f")
(match_operand:SF 4 "register_operand" "0")))]
"TARGET_ARCH64 && TARGET_FPU"
@@ -2837,8 +2853,8 @@ (define_insn "*movsf_cc_reg_sp64"
(define_insn "movdf_cc_v9"
[(set (match_operand:DF 0 "register_operand" "=e")
(if_then_else:DF (match_operator 1 "icc_or_fcc_comparison_operator"
- [(match_operand 2 "icc_or_fcc_register_operand" "X")
- (const_int 0)])
+ [(match_operand 2 "icc_or_fcc_register_operand" "X")
+ (const_int 0)])
(match_operand:DF 3 "register_operand" "e")
(match_operand:DF 4 "register_operand" "0")))]
"TARGET_V9 && TARGET_FPU"
@@ -2850,8 +2866,8 @@ (define_insn "movdf_cc_v9"
(define_insn "movdf_cc_reg_sp64"
[(set (match_operand:DF 0 "register_operand" "=e")
(if_then_else:DF (match_operator 1 "v9_register_comparison_operator"
- [(match_operand:DI 2 "register_operand" "r")
- (const_int 0)])
+ [(match_operand:DI 2 "register_operand" "r")
+ (const_int 0)])
(match_operand:DF 3 "register_operand" "e")
(match_operand:DF 4 "register_operand" "0")))]
"TARGET_ARCH64 && TARGET_FPU"
@@ -2862,8 +2878,8 @@ (define_insn "movdf_cc_reg_sp64"
(define_insn "*movtf_cc_hq_v9"
[(set (match_operand:TF 0 "register_operand" "=e")
(if_then_else:TF (match_operator 1 "icc_or_fcc_comparison_operator"
- [(match_operand 2 "icc_or_fcc_register_operand" "X")
- (const_int 0)])
+ [(match_operand 2 "icc_or_fcc_register_operand" "X")
+ (const_int 0)])
(match_operand:TF 3 "register_operand" "e")
(match_operand:TF 4 "register_operand" "0")))]
"TARGET_V9 && TARGET_FPU && TARGET_HARD_QUAD"
@@ -2873,8 +2889,8 @@ (define_insn "*movtf_cc_hq_v9"
(define_insn "*movtf_cc_reg_hq_sp64"
[(set (match_operand:TF 0 "register_operand" "=e")
(if_then_else:TF (match_operator 1 "v9_register_comparison_operator"
- [(match_operand:DI 2 "register_operand" "r")
- (const_int 0)])
+ [(match_operand:DI 2 "register_operand" "r")
+ (const_int 0)])
(match_operand:TF 3 "register_operand" "e")
(match_operand:TF 4 "register_operand" "0")))]
"TARGET_ARCH64 && TARGET_FPU && TARGET_HARD_QUAD"
@@ -2884,8 +2900,8 @@ (define_insn "*movtf_cc_reg_hq_sp64"
(define_insn_and_split "*movtf_cc_v9"
[(set (match_operand:TF 0 "register_operand" "=e")
(if_then_else:TF (match_operator 1 "icc_or_fcc_comparison_operator"
- [(match_operand 2 "icc_or_fcc_register_operand" "X")
- (const_int 0)])
+ [(match_operand 2 "icc_or_fcc_register_operand" "X")
+ (const_int 0)])
(match_operand:TF 3 "register_operand" "e")
(match_operand:TF 4 "register_operand" "0")))]
"TARGET_V9 && TARGET_FPU && !TARGET_HARD_QUAD"
@@ -2905,13 +2921,17 @@ (define_insn_and_split "*movtf_cc_v9"
if (reg_overlap_mentioned_p (dest1, srca2))
{
- emit_insn (gen_movdf_cc_v9 (dest2, operands[1], operands[2], srca2, dest2));
- emit_insn (gen_movdf_cc_v9 (dest1, operands[1], operands[2], srca1, dest1));
+ emit_insn (gen_movdf_cc_v9 (dest2, operands[1], operands[2],
+ srca2, dest2));
+ emit_insn (gen_movdf_cc_v9 (dest1, operands[1], operands[2],
+ srca1, dest1));
}
else
{
- emit_insn (gen_movdf_cc_v9 (dest1, operands[1], operands[2], srca1, dest1));
- emit_insn (gen_movdf_cc_v9 (dest2, operands[1], operands[2], srca2, dest2));
+ emit_insn (gen_movdf_cc_v9 (dest1, operands[1], operands[2],
+ srca1, dest1));
+ emit_insn (gen_movdf_cc_v9 (dest2, operands[1], operands[2],
+ srca2, dest2));
}
DONE;
}
@@ -2920,11 +2940,11 @@ (define_insn_and_split "*movtf_cc_v9"
(define_insn_and_split "*movtf_cc_reg_sp64"
[(set (match_operand:TF 0 "register_operand" "=e")
(if_then_else:TF (match_operator 1 "v9_register_comparison_operator"
- [(match_operand:DI 2 "register_operand" "r")
- (const_int 0)])
+ [(match_operand:DI 2 "register_operand" "r")
+ (const_int 0)])
(match_operand:TF 3 "register_operand" "e")
(match_operand:TF 4 "register_operand" "0")))]
- "TARGET_ARCH64 && TARGET_FPU && ! TARGET_HARD_QUAD"
+ "TARGET_ARCH64 && TARGET_FPU && !TARGET_HARD_QUAD"
"#"
"&& reload_completed"
[(clobber (const_int 0))]
@@ -2941,13 +2961,17 @@ (define_insn_and_split "*movtf_cc_reg_sp
if (reg_overlap_mentioned_p (dest1, srca2))
{
- emit_insn (gen_movdf_cc_reg_sp64 (dest2, operands[1], operands[2], srca2, dest2));
- emit_insn (gen_movdf_cc_reg_sp64 (dest1, operands[1], operands[2], srca1, dest1));
+ emit_insn (gen_movdf_cc_reg_sp64 (dest2, operands[1], operands[2],
+ srca2, dest2));
+ emit_insn (gen_movdf_cc_reg_sp64 (dest1, operands[1], operands[2],
+ srca1, dest1));
}
else
{
- emit_insn (gen_movdf_cc_reg_sp64 (dest1, operands[1], operands[2], srca1, dest1));
- emit_insn (gen_movdf_cc_reg_sp64 (dest2, operands[1], operands[2], srca2, dest2));
+ emit_insn (gen_movdf_cc_reg_sp64 (dest1, operands[1], operands[2],
+ srca1, dest1));
+ emit_insn (gen_movdf_cc_reg_sp64 (dest2, operands[1], operands[2],
+ srca2, dest2));
}
DONE;
}
@@ -3094,7 +3118,7 @@ (define_insn "*zero_extendsidi2_insn_sp6
(define_insn_and_split "*zero_extendsidi2_insn_sp32"
[(set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI (match_operand:SI 1 "register_operand" "r")))]
- "! TARGET_ARCH64"
+ "TARGET_ARCH32"
"#"
"&& reload_completed"
[(set (match_dup 2) (match_dup 1))
@@ -3450,8 +3474,7 @@ (define_insn "*cmp_zero_extract_sp64"
(define_insn "extendsfdf2"
[(set (match_operand:DF 0 "register_operand" "=e")
- (float_extend:DF
- (match_operand:SF 1 "register_operand" "f")))]
+ (float_extend:DF (match_operand:SF 1 "register_operand" "f")))]
"TARGET_FPU"
"fstod\t%1, %0"
[(set_attr "type" "fp")
@@ -3459,38 +3482,33 @@ (define_insn "extendsfdf2"
(define_expand "extendsftf2"
[(set (match_operand:TF 0 "nonimmediate_operand" "")
- (float_extend:TF
- (match_operand:SF 1 "register_operand" "")))]
+ (float_extend:TF (match_operand:SF 1 "register_operand" "")))]
"TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
"emit_tfmode_cvt (FLOAT_EXTEND, operands); DONE;")
(define_insn "*extendsftf2_hq"
[(set (match_operand:TF 0 "register_operand" "=e")
- (float_extend:TF
- (match_operand:SF 1 "register_operand" "f")))]
+ (float_extend:TF (match_operand:SF 1 "register_operand" "f")))]
"TARGET_FPU && TARGET_HARD_QUAD"
"fstoq\t%1, %0"
[(set_attr "type" "fp")])
(define_expand "extenddftf2"
[(set (match_operand:TF 0 "nonimmediate_operand" "")
- (float_extend:TF
- (match_operand:DF 1 "register_operand" "")))]
+ (float_extend:TF (match_operand:DF 1 "register_operand" "")))]
"TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
"emit_tfmode_cvt (FLOAT_EXTEND, operands); DONE;")
(define_insn "*extenddftf2_hq"
[(set (match_operand:TF 0 "register_operand" "=e")
- (float_extend:TF
- (match_operand:DF 1 "register_operand" "e")))]
+ (float_extend:TF (match_operand:DF 1 "register_operand" "e")))]
"TARGET_FPU && TARGET_HARD_QUAD"
"fdtoq\t%1, %0"
[(set_attr "type" "fp")])
(define_insn "truncdfsf2"
[(set (match_operand:SF 0 "register_operand" "=f")
- (float_truncate:SF
- (match_operand:DF 1 "register_operand" "e")))]
+ (float_truncate:SF (match_operand:DF 1 "register_operand" "e")))]
"TARGET_FPU"
"fdtos\t%1, %0"
[(set_attr "type" "fp")
@@ -3499,30 +3517,26 @@ (define_insn "truncdfsf2"
(define_expand "trunctfsf2"
[(set (match_operand:SF 0 "register_operand" "")
- (float_truncate:SF
- (match_operand:TF 1 "general_operand" "")))]
+ (float_truncate:SF (match_operand:TF 1 "general_operand" "")))]
"TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
"emit_tfmode_cvt (FLOAT_TRUNCATE, operands); DONE;")
(define_insn "*trunctfsf2_hq"
[(set (match_operand:SF 0 "register_operand" "=f")
- (float_truncate:SF
- (match_operand:TF 1 "register_operand" "e")))]
+ (float_truncate:SF (match_operand:TF 1 "register_operand" "e")))]
"TARGET_FPU && TARGET_HARD_QUAD"
"fqtos\t%1, %0"
[(set_attr "type" "fp")])
(define_expand "trunctfdf2"
[(set (match_operand:DF 0 "register_operand" "")
- (float_truncate:DF
- (match_operand:TF 1 "general_operand" "")))]
+ (float_truncate:DF (match_operand:TF 1 "general_operand" "")))]
"TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
"emit_tfmode_cvt (FLOAT_TRUNCATE, operands); DONE;")
(define_insn "*trunctfdf2_hq"
[(set (match_operand:DF 0 "register_operand" "=e")
- (float_truncate:DF
- (match_operand:TF 1 "register_operand" "e")))]
+ (float_truncate:DF (match_operand:TF 1 "register_operand" "e")))]
"TARGET_FPU && TARGET_HARD_QUAD"
"fqtod\t%1, %0"
[(set_attr "type" "fp")])
@@ -3562,7 +3576,7 @@ (define_insn "*floatsitf2_hq"
(define_expand "floatunssitf2"
[(set (match_operand:TF 0 "nonimmediate_operand" "")
(unsigned_float:TF (match_operand:SI 1 "register_operand" "")))]
- "TARGET_FPU && TARGET_ARCH64 && ! TARGET_HARD_QUAD"
+ "TARGET_FPU && TARGET_ARCH64 && !TARGET_HARD_QUAD"
"emit_tfmode_cvt (UNSIGNED_FLOAT, operands); DONE;")
;; Now the same for 64 bit sources.
@@ -3611,7 +3625,7 @@ (define_insn "*floatditf2_hq"
(define_expand "floatunsditf2"
[(set (match_operand:TF 0 "nonimmediate_operand" "")
(unsigned_float:TF (match_operand:DI 1 "register_operand" "")))]
- "TARGET_FPU && TARGET_ARCH64 && ! TARGET_HARD_QUAD"
+ "TARGET_FPU && TARGET_ARCH64 && !TARGET_HARD_QUAD"
"emit_tfmode_cvt (UNSIGNED_FLOAT, operands); DONE;")
;; Convert a float to an actual integer.
@@ -3650,7 +3664,7 @@ (define_insn "*fix_trunctfsi2_hq"
(define_expand "fixuns_trunctfsi2"
[(set (match_operand:SI 0 "register_operand" "")
(unsigned_fix:SI (match_operand:TF 1 "general_operand" "")))]
- "TARGET_FPU && TARGET_ARCH64 && ! TARGET_HARD_QUAD"
+ "TARGET_FPU && TARGET_ARCH64 && !TARGET_HARD_QUAD"
"emit_tfmode_cvt (UNSIGNED_FIX, operands); DONE;")
;; Now the same, for V9 targets
@@ -3699,7 +3713,7 @@ (define_insn "*fix_trunctfdi2_hq"
(define_expand "fixuns_trunctfdi2"
[(set (match_operand:DI 0 "register_operand" "")
(unsigned_fix:DI (match_operand:TF 1 "general_operand" "")))]
- "TARGET_FPU && TARGET_ARCH64 && ! TARGET_HARD_QUAD"
+ "TARGET_FPU && TARGET_ARCH64 && !TARGET_HARD_QUAD"
"emit_tfmode_cvt (UNSIGNED_FIX, operands); DONE;")
@@ -3711,7 +3725,7 @@ (define_expand "adddi3"
(match_operand:DI 2 "arith_double_add_operand" "")))]
""
{
- if (!TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
emit_insn (gen_adddi3_sp32 (operands[0], operands[1], operands[2]));
DONE;
@@ -3730,7 +3744,7 @@ (define_expand "uaddvdi4"
(pc)))]
""
{
- if (!TARGET_64BIT)
+ if (TARGET_ARCH32)
{
emit_insn (gen_uaddvdi4_sp32 (operands[0], operands[1], operands[2]));
rtx x = gen_rtx_LTU (VOIDmode, gen_rtx_REG (CCCmode, SPARC_ICC_REG),
@@ -3753,7 +3767,7 @@ (define_expand "addvdi4"
(pc)))]
""
{
- if (!TARGET_64BIT)
+ if (TARGET_ARCH32)
{
emit_insn (gen_addvdi4_sp32 (operands[0], operands[1], operands[2]));
rtx x = gen_rtx_NE (VOIDmode, gen_rtx_REG (CCVmode, SPARC_ICC_REG),
@@ -3768,7 +3782,7 @@ (define_insn_and_split "adddi3_sp32"
(plus:DI (match_operand:DI 1 "register_operand" "%r")
(match_operand:DI 2 "arith_double_operand" "rHI")))
(clobber (reg:CC CC_REG))]
- "!TARGET_ARCH64"
+ "TARGET_ARCH32"
"#"
"&& reload_completed"
[(parallel [(set (reg:CCC CC_REG)
@@ -3796,7 +3810,7 @@ (define_insn_and_split "uaddvdi4_sp32"
(match_dup 1)))
(set (match_operand:DI 0 "register_operand" "=&r")
(plus:DI (match_dup 1) (match_dup 2)))]
- "!TARGET_ARCH64"
+ "TARGET_ARCH32"
"#"
"&& reload_completed"
[(parallel [(set (reg:CCC CC_REG)
@@ -3834,7 +3848,7 @@ (define_insn_and_split "addvdi4_sp32"
(unspec:DI [(match_dup 1) (match_dup 2)] UNSPEC_ADDV)))
(set (match_operand:DI 0 "register_operand" "=&r")
(plus:DI (match_dup 1) (match_dup 2)))]
- "!TARGET_ARCH64"
+ "TARGET_ARCH32"
"#"
"&& reload_completed"
[(parallel [(set (reg:CCC CC_REG)
@@ -3869,7 +3883,7 @@ (define_insn_and_split "*addx_extend_sp3
(match_operand:SI 1 "register_operand" "%r")
(match_operand:SI 2 "arith_operand" "rI"))
(ltu:SI (reg:CCC CC_REG) (const_int 0)))))]
- "! TARGET_ARCH64"
+ "TARGET_ARCH32"
"#"
"&& reload_completed"
[(set (match_dup 3) (plus:SI (plus:SI (match_dup 1) (match_dup 2))
@@ -3884,7 +3898,7 @@ (define_insn_and_split "*adddi3_extend_s
(plus:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
(match_operand:DI 2 "register_operand" "r")))
(clobber (reg:CC CC_REG))]
- "! TARGET_ARCH64"
+ "TARGET_ARCH32"
"#"
"&& reload_completed"
[(parallel [(set (reg:CCC CC_REG)
@@ -4104,7 +4118,7 @@ (define_expand "subdi3"
(match_operand:DI 2 "arith_double_add_operand" "")))]
""
{
- if (!TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
emit_insn (gen_subdi3_sp32 (operands[0], operands[1], operands[2]));
DONE;
@@ -4128,7 +4142,7 @@ (define_expand "usubvdi4"
DONE;
}
- if (!TARGET_64BIT)
+ if (TARGET_ARCH32)
{
emit_insn (gen_usubvdi4_sp32 (operands[0], operands[1], operands[2]));
rtx x = gen_rtx_LTU (VOIDmode, gen_rtx_REG (CCCmode, SPARC_ICC_REG),
@@ -4151,7 +4165,7 @@ (define_expand "subvdi4"
(pc)))]
""
{
- if (!TARGET_64BIT)
+ if (TARGET_ARCH32)
{
emit_insn (gen_subvdi4_sp32 (operands[0], operands[1], operands[2]));
rtx x = gen_rtx_NE (VOIDmode, gen_rtx_REG (CCVmode, SPARC_ICC_REG),
@@ -4166,7 +4180,7 @@ (define_insn_and_split "subdi3_sp32"
(minus:DI (match_operand:DI 1 "register_operand" "r")
(match_operand:DI 2 "arith_double_operand" "rHI")))
(clobber (reg:CC CC_REG))]
- "! TARGET_ARCH64"
+ "TARGET_ARCH32"
"#"
"&& reload_completed"
[(parallel [(set (reg:CC CC_REG)
@@ -4192,7 +4206,7 @@ (define_insn_and_split "usubvdi4_sp32"
(match_operand:DI 2 "arith_double_operand" "rHI")))
(set (match_operand:DI 0 "register_operand" "=&r")
(minus:DI (match_dup 1) (match_dup 2)))]
- "!TARGET_ARCH64"
+ "TARGET_ARCH32"
"#"
"&& reload_completed"
[(parallel [(set (reg:CC CC_REG)
@@ -4232,7 +4246,7 @@ (define_insn_and_split "subvdi4_sp32"
(unspec:DI [(match_dup 1) (match_dup 2)] UNSPEC_SUBV)))
(set (match_operand:DI 0 "register_operand" "=&r")
(minus:DI (match_dup 1) (match_dup 2)))]
- "!TARGET_ARCH64"
+ "TARGET_ARCH32"
"#"
"&& reload_completed"
[(parallel [(set (reg:CC CC_REG)
@@ -4266,7 +4280,7 @@ (define_insn_and_split "*subx_extend_sp3
(match_operand:SI 1 "register_or_zero_operand" "rJ")
(match_operand:SI 2 "arith_operand" "rI"))
(ltu:SI (reg:CCC CC_REG) (const_int 0)))))]
- "! TARGET_ARCH64"
+ "TARGET_ARCH32"
"#"
"&& reload_completed"
[(set (match_dup 3) (minus:SI (minus:SI (match_dup 1) (match_dup 2))
@@ -4281,7 +4295,7 @@ (define_insn_and_split "*subdi3_extend_s
(minus:DI (match_operand:DI 1 "register_operand" "r")
(zero_extend:DI (match_operand:SI 2 "register_operand" "r"))))
(clobber (reg:CC CC_REG))]
- "! TARGET_ARCH64"
+ "TARGET_ARCH32"
"#"
"&& reload_completed"
[(parallel [(set (reg:CC CC_REG)
@@ -4470,12 +4484,13 @@ (define_insn "*cmp_ccxv_minus_set"
(define_insn "*cmp_ccv_minus_sltu_set"
[(set (reg:CCV CC_REG)
- (compare:CCV (minus:SI (minus:SI (match_operand:SI 1 "register_or_zero_operand" "rJ")
- (match_operand:SI 2 "arith_operand" "rI"))
- (ltu:SI (reg:CC CC_REG) (const_int 0)))
- (unspec:SI [(minus:SI (match_dup 1) (match_dup 2))
- (ltu:SI (reg:CC CC_REG) (const_int 0))]
- UNSPEC_SUBV)))
+ (compare:CCV
+ (minus:SI (minus:SI (match_operand:SI 1 "register_or_zero_operand" "rJ")
+ (match_operand:SI 2 "arith_operand" "rI"))
+ (ltu:SI (reg:CC CC_REG) (const_int 0)))
+ (unspec:SI [(minus:SI (match_dup 1) (match_dup 2))
+ (ltu:SI (reg:CC CC_REG) (const_int 0))]
+ UNSPEC_SUBV)))
(set (match_operand:SI 0 "register_operand" "=r")
(minus:SI (minus:SI (match_dup 1) (match_dup 2))
(ltu:SI (reg:CC CC_REG) (const_int 0))))]
@@ -4526,7 +4541,9 @@ (define_insn "muldi3_v8plus"
(clobber (match_scratch:SI 3 "=&h,X"))
(clobber (match_scratch:SI 4 "=&h,X"))]
"TARGET_V8PLUS"
- "* return output_v8plus_mult (insn, operands, \"mulx\");"
+{
+ return output_v8plus_mult (insn, operands, \"mulx\");
+}
[(set_attr "type" "multi")
(set_attr "length" "9,8")])
@@ -4648,9 +4665,10 @@ (define_insn "const_mulsidi3_sp64"
(define_expand "smulsi3_highpart"
[(set (match_operand:SI 0 "register_operand" "")
(truncate:SI
- (lshiftrt:DI (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" ""))
- (sign_extend:DI (match_operand:SI 2 "arith_operand" "")))
- (const_int 32))))]
+ (lshiftrt:DI
+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" ""))
+ (sign_extend:DI (match_operand:SI 2 "arith_operand" "")))
+ (const_int 32))))]
"TARGET_HARD_MUL && TARGET_ARCH32"
{
if (CONSTANT_P (operands[2]))
@@ -4677,9 +4695,10 @@ (define_expand "smulsi3_highpart"
(define_insn "smulsi3_highpart_v8plus"
[(set (match_operand:SI 0 "register_operand" "=h,r")
(truncate:SI
- (lshiftrt:DI (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
- (sign_extend:DI (match_operand:SI 2 "register_operand" "r,r")))
- (match_operand:SI 3 "small_int_operand" "I,I"))))
+ (lshiftrt:DI
+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
+ (sign_extend:DI (match_operand:SI 2 "register_operand" "r,r")))
+ (match_operand:SI 3 "small_int_operand" "I,I"))))
(clobber (match_scratch:SI 4 "=X,&h"))]
"TARGET_V8PLUS"
"@
@@ -4692,11 +4711,10 @@ (define_insn "smulsi3_highpart_v8plus"
(define_insn ""
[(set (match_operand:SI 0 "register_operand" "=h,r")
(subreg:SI
- (lshiftrt:DI
- (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
- (sign_extend:DI (match_operand:SI 2 "register_operand" "r,r")))
- (match_operand:SI 3 "small_int_operand" "I,I"))
- 4))
+ (lshiftrt:DI
+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
+ (sign_extend:DI (match_operand:SI 2 "register_operand" "r,r")))
+ (match_operand:SI 3 "small_int_operand" "I,I")) 4))
(clobber (match_scratch:SI 4 "=X,&h"))]
"TARGET_V8PLUS"
"@
@@ -4708,9 +4726,10 @@ (define_insn ""
(define_insn "const_smulsi3_highpart_v8plus"
[(set (match_operand:SI 0 "register_operand" "=h,r")
(truncate:SI
- (lshiftrt:DI (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
- (match_operand:DI 2 "small_int_operand" "I,I"))
- (match_operand:SI 3 "small_int_operand" "I,I"))))
+ (lshiftrt:DI
+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
+ (match_operand:DI 2 "small_int_operand" "I,I"))
+ (match_operand:SI 3 "small_int_operand" "I,I"))))
(clobber (match_scratch:SI 4 "=X,&h"))]
"TARGET_V8PLUS"
"@
@@ -4722,9 +4741,10 @@ (define_insn "const_smulsi3_highpart_v8p
(define_insn "*smulsi3_highpart_sp32"
[(set (match_operand:SI 0 "register_operand" "=r")
(truncate:SI
- (lshiftrt:DI (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r"))
- (sign_extend:DI (match_operand:SI 2 "register_operand" "r")))
- (const_int 32))))]
+ (lshiftrt:DI
+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r"))
+ (sign_extend:DI (match_operand:SI 2 "register_operand" "r")))
+ (const_int 32))))]
"TARGET_HARD_MUL32"
"smul\t%1, %2, %%g0\n\trd\t%%y, %0"
[(set_attr "type" "multi")
@@ -4733,9 +4753,10 @@ (define_insn "*smulsi3_highpart_sp32"
(define_insn "const_smulsi3_highpart"
[(set (match_operand:SI 0 "register_operand" "=r")
(truncate:SI
- (lshiftrt:DI (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r"))
- (match_operand:DI 2 "small_int_operand" "i"))
- (const_int 32))))]
+ (lshiftrt:DI
+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r"))
+ (match_operand:DI 2 "small_int_operand" "i"))
+ (const_int 32))))]
"TARGET_HARD_MUL32"
"smul\t%1, %2, %%g0\n\trd\t%%y, %0"
[(set_attr "type" "multi")
@@ -4846,9 +4867,10 @@ (define_insn "const_umulsidi3_v8plus"
(define_expand "umulsi3_highpart"
[(set (match_operand:SI 0 "register_operand" "")
(truncate:SI
- (lshiftrt:DI (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" ""))
- (zero_extend:DI (match_operand:SI 2 "uns_arith_operand" "")))
- (const_int 32))))]
+ (lshiftrt:DI
+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" ""))
+ (zero_extend:DI (match_operand:SI 2 "uns_arith_operand" "")))
+ (const_int 32))))]
"TARGET_HARD_MUL && TARGET_ARCH32"
{
if (CONSTANT_P (operands[2]))
@@ -4875,9 +4897,10 @@ (define_expand "umulsi3_highpart"
(define_insn "umulsi3_highpart_v8plus"
[(set (match_operand:SI 0 "register_operand" "=h,r")
(truncate:SI
- (lshiftrt:DI (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
- (zero_extend:DI (match_operand:SI 2 "register_operand" "r,r")))
- (match_operand:SI 3 "small_int_operand" "I,I"))))
+ (lshiftrt:DI
+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
+ (zero_extend:DI (match_operand:SI 2 "register_operand" "r,r")))
+ (match_operand:SI 3 "small_int_operand" "I,I"))))
(clobber (match_scratch:SI 4 "=X,h"))]
"TARGET_V8PLUS"
"@
@@ -4889,9 +4912,10 @@ (define_insn "umulsi3_highpart_v8plus"
(define_insn "const_umulsi3_highpart_v8plus"
[(set (match_operand:SI 0 "register_operand" "=h,r")
(truncate:SI
- (lshiftrt:DI (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
- (match_operand:DI 2 "uns_small_int_operand" ""))
- (match_operand:SI 3 "small_int_operand" "I,I"))))
+ (lshiftrt:DI
+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
+ (match_operand:DI 2 "uns_small_int_operand" ""))
+ (match_operand:SI 3 "small_int_operand" "I,I"))))
(clobber (match_scratch:SI 4 "=X,h"))]
"TARGET_V8PLUS"
"@
@@ -4903,9 +4927,10 @@ (define_insn "const_umulsi3_highpart_v8p
(define_insn "*umulsi3_highpart_sp32"
[(set (match_operand:SI 0 "register_operand" "=r")
(truncate:SI
- (lshiftrt:DI (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
- (zero_extend:DI (match_operand:SI 2 "register_operand" "r")))
- (const_int 32))))]
+ (lshiftrt:DI
+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
+ (zero_extend:DI (match_operand:SI 2 "register_operand" "r")))
+ (const_int 32))))]
"TARGET_HARD_MUL32"
"umul\t%1, %2, %%g0\n\trd\t%%y, %0"
[(set_attr "type" "multi")
@@ -4914,9 +4939,10 @@ (define_insn "*umulsi3_highpart_sp32"
(define_insn "const_umulsi3_highpart"
[(set (match_operand:SI 0 "register_operand" "=r")
(truncate:SI
- (lshiftrt:DI (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
- (match_operand:DI 2 "uns_small_int_operand" ""))
- (const_int 32))))]
+ (lshiftrt:DI
+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
+ (match_operand:DI 2 "uns_small_int_operand" ""))
+ (const_int 32))))]
"TARGET_HARD_MUL32"
"umul\t%1, %s2, %%g0\n\trd\t%%y, %0"
[(set_attr "type" "multi")
@@ -4925,16 +4951,14 @@ (define_insn "const_umulsi3_highpart"
(define_expand "umulxhi_vis"
[(set (match_operand:DI 0 "register_operand" "")
- (truncate:DI
- (lshiftrt:TI
- (mult:TI (zero_extend:TI
- (match_operand:DI 1 "arith_operand" ""))
- (zero_extend:TI
- (match_operand:DI 2 "arith_operand" "")))
- (const_int 64))))]
+ (truncate:DI
+ (lshiftrt:TI
+ (mult:TI (zero_extend:TI (match_operand:DI 1 "arith_operand" ""))
+ (zero_extend:TI (match_operand:DI 2 "arith_operand" "")))
+ (const_int 64))))]
"TARGET_VIS3"
{
- if (! TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
emit_insn (gen_umulxhi_v8plus (operands[0], operands[1], operands[2]));
DONE;
@@ -4943,44 +4967,40 @@ (define_expand "umulxhi_vis"
(define_insn "*umulxhi_sp64"
[(set (match_operand:DI 0 "register_operand" "=r")
- (truncate:DI
- (lshiftrt:TI
- (mult:TI (zero_extend:TI
- (match_operand:DI 1 "arith_operand" "%r"))
- (zero_extend:TI
- (match_operand:DI 2 "arith_operand" "rI")))
- (const_int 64))))]
+ (truncate:DI
+ (lshiftrt:TI
+ (mult:TI (zero_extend:TI (match_operand:DI 1 "arith_operand" "%r"))
+ (zero_extend:TI (match_operand:DI 2 "arith_operand" "rI")))
+ (const_int 64))))]
"TARGET_VIS3 && TARGET_ARCH64"
"umulxhi\t%1, %2, %0"
[(set_attr "type" "imul")])
(define_insn "umulxhi_v8plus"
[(set (match_operand:DI 0 "register_operand" "=r,h")
- (truncate:DI
- (lshiftrt:TI
- (mult:TI (zero_extend:TI
- (match_operand:DI 1 "arith_operand" "%r,0"))
- (zero_extend:TI
- (match_operand:DI 2 "arith_operand" "rI,rI")))
- (const_int 64))))
+ (truncate:DI
+ (lshiftrt:TI
+ (mult:TI (zero_extend:TI (match_operand:DI 1 "arith_operand" "%r,0"))
+ (zero_extend:TI (match_operand:DI 2 "arith_operand" "rI,rI")))
+ (const_int 64))))
(clobber (match_scratch:SI 3 "=&h,X"))
(clobber (match_scratch:SI 4 "=&h,X"))]
- "TARGET_VIS3 && ! TARGET_ARCH64"
- "* return output_v8plus_mult (insn, operands, \"umulxhi\");"
+ "TARGET_VIS3 && TARGET_ARCH32"
+{
+ return output_v8plus_mult (insn, operands, \"umulxhi\");
+}
[(set_attr "type" "imul")
(set_attr "length" "9,8")])
(define_expand "xmulx_vis"
[(set (match_operand:DI 0 "register_operand" "")
- (truncate:DI
- (unspec:TI [(zero_extend:TI
- (match_operand:DI 1 "arith_operand" ""))
- (zero_extend:TI
- (match_operand:DI 2 "arith_operand" ""))]
- UNSPEC_XMUL)))]
+ (truncate:DI
+ (unspec:TI [(zero_extend:TI (match_operand:DI 1 "arith_operand" ""))
+ (zero_extend:TI (match_operand:DI 2 "arith_operand" ""))]
+ UNSPEC_XMUL)))]
"TARGET_VIS3"
{
- if (! TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
emit_insn (gen_xmulx_v8plus (operands[0], operands[1], operands[2]));
DONE;
@@ -4989,44 +5009,40 @@ (define_expand "xmulx_vis"
(define_insn "*xmulx_sp64"
[(set (match_operand:DI 0 "register_operand" "=r")
- (truncate:DI
- (unspec:TI [(zero_extend:TI
- (match_operand:DI 1 "arith_operand" "%r"))
- (zero_extend:TI
- (match_operand:DI 2 "arith_operand" "rI"))]
- UNSPEC_XMUL)))]
+ (truncate:DI
+ (unspec:TI [(zero_extend:TI (match_operand:DI 1 "arith_operand" "%r"))
+ (zero_extend:TI (match_operand:DI 2 "arith_operand" "rI"))]
+ UNSPEC_XMUL)))]
"TARGET_VIS3 && TARGET_ARCH64"
"xmulx\t%1, %2, %0"
[(set_attr "type" "imul")])
(define_insn "xmulx_v8plus"
[(set (match_operand:DI 0 "register_operand" "=r,h")
- (truncate:DI
- (unspec:TI [(zero_extend:TI
- (match_operand:DI 1 "arith_operand" "%r,0"))
- (zero_extend:TI
- (match_operand:DI 2 "arith_operand" "rI,rI"))]
- UNSPEC_XMUL)))
+ (truncate:DI
+ (unspec:TI [(zero_extend:TI (match_operand:DI 1 "arith_operand" "%r,0"))
+ (zero_extend:TI (match_operand:DI 2 "arith_operand" "rI,rI"))]
+ UNSPEC_XMUL)))
(clobber (match_scratch:SI 3 "=&h,X"))
(clobber (match_scratch:SI 4 "=&h,X"))]
- "TARGET_VIS3 && ! TARGET_ARCH64"
- "* return output_v8plus_mult (insn, operands, \"xmulx\");"
+ "TARGET_VIS3 && TARGET_ARCH32"
+{
+ return output_v8plus_mult (insn, operands, \"xmulx\");
+}
[(set_attr "type" "imul")
(set_attr "length" "9,8")])
(define_expand "xmulxhi_vis"
[(set (match_operand:DI 0 "register_operand" "")
- (truncate:DI
- (lshiftrt:TI
- (unspec:TI [(zero_extend:TI
- (match_operand:DI 1 "arith_operand" ""))
- (zero_extend:TI
- (match_operand:DI 2 "arith_operand" ""))]
- UNSPEC_XMUL)
- (const_int 64))))]
+ (truncate:DI
+ (lshiftrt:TI
+ (unspec:TI [(zero_extend:TI (match_operand:DI 1 "arith_operand" ""))
+ (zero_extend:TI (match_operand:DI 2 "arith_operand" ""))]
+ UNSPEC_XMUL)
+ (const_int 64))))]
"TARGET_VIS3"
{
- if (! TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
emit_insn (gen_xmulxhi_v8plus (operands[0], operands[1], operands[2]));
DONE;
@@ -5035,32 +5051,30 @@ (define_expand "xmulxhi_vis"
(define_insn "*xmulxhi_sp64"
[(set (match_operand:DI 0 "register_operand" "=r")
- (truncate:DI
- (lshiftrt:TI
- (unspec:TI [(zero_extend:TI
- (match_operand:DI 1 "arith_operand" "%r"))
- (zero_extend:TI
- (match_operand:DI 2 "arith_operand" "rI"))]
- UNSPEC_XMUL)
- (const_int 64))))]
+ (truncate:DI
+ (lshiftrt:TI
+ (unspec:TI [(zero_extend:TI (match_operand:DI 1 "arith_operand" "%r"))
+ (zero_extend:TI (match_operand:DI 2 "arith_operand" "rI"))]
+ UNSPEC_XMUL)
+ (const_int 64))))]
"TARGET_VIS3 && TARGET_ARCH64"
"xmulxhi\t%1, %2, %0"
[(set_attr "type" "imul")])
(define_insn "xmulxhi_v8plus"
[(set (match_operand:DI 0 "register_operand" "=r,h")
- (truncate:DI
- (lshiftrt:TI
- (unspec:TI [(zero_extend:TI
- (match_operand:DI 1 "arith_operand" "%r,0"))
- (zero_extend:TI
- (match_operand:DI 2 "arith_operand" "rI,rI"))]
- UNSPEC_XMUL)
- (const_int 64))))
+ (truncate:DI
+ (lshiftrt:TI
+ (unspec:TI [(zero_extend:TI (match_operand:DI 1 "arith_operand" "%r,0"))
+ (zero_extend:TI (match_operand:DI 2 "arith_operand" "rI,rI"))]
+ UNSPEC_XMUL)
+ (const_int 64))))
(clobber (match_scratch:SI 3 "=&h,X"))
(clobber (match_scratch:SI 4 "=&h,X"))]
- "TARGET_VIS3 && !TARGET_ARCH64"
- "* return output_v8plus_mult (insn, operands, \"xmulxhi\");"
+ "TARGET_VIS3 && TARGET_ARCH32"
+{
+ return output_v8plus_mult (insn, operands, \"xmulxhi\");
+}
[(set_attr "type" "imul")
(set_attr "length" "9,8")])
@@ -5424,10 +5438,9 @@ (define_insn "*xor_not_si"
(define_insn "*cmp_cc_arith_op"
[(set (reg:CC CC_REG)
- (compare:CC
- (match_operator:SI 2 "cc_arith_operator"
- [(match_operand:SI 0 "arith_operand" "%r")
- (match_operand:SI 1 "arith_operand" "rI")])
+ (compare:CC (match_operator:SI 2 "cc_arith_operator"
+ [(match_operand:SI 0 "arith_operand" "%r")
+ (match_operand:SI 1 "arith_operand" "rI")])
(const_int 0)))]
""
"%A2cc\t%0, %1, %%g0"
@@ -5435,10 +5448,9 @@ (define_insn "*cmp_cc_arith_op"
(define_insn "*cmp_ccx_arith_op"
[(set (reg:CCX CC_REG)
- (compare:CCX
- (match_operator:DI 2 "cc_arith_operator"
- [(match_operand:DI 0 "arith_operand" "%r")
- (match_operand:DI 1 "arith_operand" "rI")])
+ (compare:CCX (match_operator:DI 2 "cc_arith_operator"
+ [(match_operand:DI 0 "arith_operand" "%r")
+ (match_operand:DI 1 "arith_operand" "rI")])
(const_int 0)))]
"TARGET_ARCH64"
"%A2cc\t%0, %1, %%g0"
@@ -5446,26 +5458,26 @@ (define_insn "*cmp_ccx_arith_op"
(define_insn "*cmp_cc_arith_op_set"
[(set (reg:CC CC_REG)
- (compare:CC
- (match_operator:SI 3 "cc_arith_operator"
- [(match_operand:SI 1 "arith_operand" "%r")
- (match_operand:SI 2 "arith_operand" "rI")])
+ (compare:CC (match_operator:SI 3 "cc_arith_operator"
+ [(match_operand:SI 1 "arith_operand" "%r")
+ (match_operand:SI 2 "arith_operand" "rI")])
(const_int 0)))
(set (match_operand:SI 0 "register_operand" "=r")
- (match_operator:SI 4 "cc_arith_operator" [(match_dup 1) (match_dup 2)]))]
+ (match_operator:SI 4 "cc_arith_operator"
+ [(match_dup 1) (match_dup 2)]))]
"GET_CODE (operands[3]) == GET_CODE (operands[4])"
"%A3cc\t%1, %2, %0"
[(set_attr "type" "compare")])
(define_insn "*cmp_ccx_arith_op_set"
[(set (reg:CCX CC_REG)
- (compare:CCX
- (match_operator:DI 3 "cc_arith_operator"
- [(match_operand:DI 1 "arith_operand" "%r")
- (match_operand:DI 2 "arith_operand" "rI")])
+ (compare:CCX (match_operator:DI 3 "cc_arith_operator"
+ [(match_operand:DI 1 "arith_operand" "%r")
+ (match_operand:DI 2 "arith_operand" "rI")])
(const_int 0)))
(set (match_operand:DI 0 "register_operand" "=r")
- (match_operator:DI 4 "cc_arith_operator" [(match_dup 1) (match_dup 2)]))]
+ (match_operator:DI 4 "cc_arith_operator"
+ [(match_dup 1) (match_dup 2)]))]
"TARGET_ARCH64 && GET_CODE (operands[3]) == GET_CODE (operands[4])"
"%A3cc\t%1, %2, %0"
[(set_attr "type" "compare")])
@@ -5516,10 +5528,9 @@ (define_insn "*cmp_ccx_xor_not_set"
(define_insn "*cmp_cc_arith_op_not"
[(set (reg:CC CC_REG)
- (compare:CC
- (match_operator:SI 2 "cc_arith_not_operator"
- [(not:SI (match_operand:SI 0 "arith_operand" "rI"))
- (match_operand:SI 1 "register_or_zero_operand" "rJ")])
+ (compare:CC (match_operator:SI 2 "cc_arith_not_operator"
+ [(not:SI (match_operand:SI 0 "arith_operand" "rI"))
+ (match_operand:SI 1 "register_or_zero_operand" "rJ")])
(const_int 0)))]
""
"%B2cc\t%r1, %0, %%g0"
@@ -5527,10 +5538,9 @@ (define_insn "*cmp_cc_arith_op_not"
(define_insn "*cmp_ccx_arith_op_not"
[(set (reg:CCX CC_REG)
- (compare:CCX
- (match_operator:DI 2 "cc_arith_not_operator"
- [(not:DI (match_operand:DI 0 "arith_operand" "rI"))
- (match_operand:DI 1 "register_or_zero_operand" "rJ")])
+ (compare:CCX (match_operator:DI 2 "cc_arith_not_operator"
+ [(not:DI (match_operand:DI 0 "arith_operand" "rI"))
+ (match_operand:DI 1 "register_or_zero_operand" "rJ")])
(const_int 0)))]
"TARGET_ARCH64"
"%B2cc\t%r1, %0, %%g0"
@@ -5538,28 +5548,26 @@ (define_insn "*cmp_ccx_arith_op_not"
(define_insn "*cmp_cc_arith_op_not_set"
[(set (reg:CC CC_REG)
- (compare:CC
- (match_operator:SI 3 "cc_arith_not_operator"
- [(not:SI (match_operand:SI 1 "arith_operand" "rI"))
- (match_operand:SI 2 "register_or_zero_operand" "rJ")])
+ (compare:CC (match_operator:SI 3 "cc_arith_not_operator"
+ [(not:SI (match_operand:SI 1 "arith_operand" "rI"))
+ (match_operand:SI 2 "register_or_zero_operand" "rJ")])
(const_int 0)))
(set (match_operand:SI 0 "register_operand" "=r")
(match_operator:SI 4 "cc_arith_not_operator"
- [(not:SI (match_dup 1)) (match_dup 2)]))]
+ [(not:SI (match_dup 1)) (match_dup 2)]))]
"GET_CODE (operands[3]) == GET_CODE (operands[4])"
"%B3cc\t%r2, %1, %0"
[(set_attr "type" "compare")])
(define_insn "*cmp_ccx_arith_op_not_set"
[(set (reg:CCX CC_REG)
- (compare:CCX
- (match_operator:DI 3 "cc_arith_not_operator"
- [(not:DI (match_operand:DI 1 "arith_operand" "rI"))
- (match_operand:DI 2 "register_or_zero_operand" "rJ")])
+ (compare:CCX (match_operator:DI 3 "cc_arith_not_operator"
+ [(not:DI (match_operand:DI 1 "arith_operand" "rI"))
+ (match_operand:DI 2 "register_or_zero_operand" "rJ")])
(const_int 0)))
(set (match_operand:DI 0 "register_operand" "=r")
(match_operator:DI 4 "cc_arith_not_operator"
- [(not:DI (match_dup 1)) (match_dup 2)]))]
+ [(not:DI (match_dup 1)) (match_dup 2)]))]
"TARGET_ARCH64 && GET_CODE (operands[3]) == GET_CODE (operands[4])"
"%B3cc\t%r2, %1, %0"
[(set_attr "type" "compare")])
@@ -5572,7 +5580,7 @@ (define_expand "negdi2"
(neg:DI (match_operand:DI 1 "register_operand" "r")))]
""
{
- if (!TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
emit_insn (gen_negdi2_sp32 (operands[0], operands[1]));
DONE;
@@ -5591,7 +5599,7 @@ (define_expand "unegvdi3"
(pc)))]
""
{
- if (!TARGET_64BIT)
+ if (TARGET_ARCH32)
{
emit_insn (gen_unegvdi3_sp32 (operands[0], operands[1]));
rtx x = gen_rtx_LTU (VOIDmode, gen_rtx_REG (CCCmode, SPARC_ICC_REG),
@@ -5613,7 +5621,7 @@ (define_expand "negvdi3"
(pc)))]
""
{
- if (!TARGET_64BIT)
+ if (TARGET_ARCH32)
{
emit_insn (gen_negvdi3_sp32 (operands[0], operands[1]));
rtx x = gen_rtx_NE (VOIDmode, gen_rtx_REG (CCVmode, SPARC_ICC_REG),
@@ -5627,7 +5635,7 @@ (define_insn_and_split "negdi2_sp32"
[(set (match_operand:DI 0 "register_operand" "=&r")
(neg:DI (match_operand:DI 1 "register_operand" "r")))
(clobber (reg:CC CC_REG))]
- "! TARGET_ARCH64"
+ "TARGET_ARCH32"
"#"
"&& reload_completed"
[(parallel [(set (reg:CCC CC_REG)
@@ -5647,7 +5655,7 @@ (define_insn_and_split "unegvdi3_sp32"
(const_int -1)))
(set (match_operand:DI 0 "register_operand" "=&r")
(neg:DI (match_dup 1)))]
- "!TARGET_ARCH64"
+ "TARGET_ARCH32"
"#"
"&& reload_completed"
[(parallel [(set (reg:CCC CC_REG)
@@ -5676,7 +5684,7 @@ (define_insn_and_split "negvdi3_sp32"
(unspec:DI [(match_dup 1)] UNSPEC_NEGV)))
(set (match_operand:DI 0 "register_operand" "=&r")
(neg:DI (match_dup 1)))]
- "!TARGET_ARCH64"
+ "TARGET_ARCH32"
"#"
"&& reload_completed"
[(parallel [(set (reg:CCC CC_REG)
@@ -6435,7 +6443,7 @@ (define_expand "ashldi3"
(match_operand:SI 2 "arith_operand" "rI")))]
"TARGET_ARCH64 || TARGET_V8PLUS"
{
- if (! TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
if (GET_CODE (operands[2]) == CONST_INT)
FAIL;
@@ -6462,7 +6470,9 @@ (define_insn "ashldi3_v8plus"
(match_operand:SI 2 "arith_operand" "rI,rI,rI")))
(clobber (match_scratch:SI 3 "=X,X,&h"))]
"TARGET_V8PLUS"
- "* return output_v8plus_shift (insn ,operands, \"sllx\");"
+{
+ return output_v8plus_shift (insn ,operands, \"sllx\");
+}
[(set_attr "type" "multi")
(set_attr "length" "5,5,6")])
@@ -6491,11 +6501,11 @@ (define_insn "ashrsi3"
(ashiftrt:SI (match_operand:SI 1 "register_operand" "r")
(match_operand:SI 2 "arith_operand" "rI")))]
""
- {
- if (GET_CODE (operands[2]) == CONST_INT)
- operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
- return "sra\t%1, %2, %0";
- }
+{
+ if (GET_CODE (operands[2]) == CONST_INT)
+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
+ return "sra\t%1, %2, %0";
+}
[(set_attr "type" "shift")])
(define_insn "*ashrsi3_extend"
@@ -6526,7 +6536,7 @@ (define_expand "ashrdi3"
(match_operand:SI 2 "arith_operand" "rI")))]
"TARGET_ARCH64 || TARGET_V8PLUS"
{
- if (! TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
if (GET_CODE (operands[2]) == CONST_INT)
FAIL; /* prefer generic code in this case */
@@ -6540,12 +6550,11 @@ (define_insn "*ashrdi3_sp64"
(ashiftrt:DI (match_operand:DI 1 "register_operand" "r")
(match_operand:SI 2 "arith_operand" "rI")))]
"TARGET_ARCH64"
-
- {
- if (GET_CODE (operands[2]) == CONST_INT)
- operands[2] = GEN_INT (INTVAL (operands[2]) & 0x3f);
- return "srax\t%1, %2, %0";
- }
+{
+ if (GET_CODE (operands[2]) == CONST_INT)
+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0x3f);
+ return "srax\t%1, %2, %0";
+}
[(set_attr "type" "shift")])
(define_insn "ashrdi3_v8plus"
@@ -6554,7 +6563,9 @@ (define_insn "ashrdi3_v8plus"
(match_operand:SI 2 "arith_operand" "rI,rI,rI")))
(clobber (match_scratch:SI 3 "=X,X,&h"))]
"TARGET_V8PLUS"
- "* return output_v8plus_shift (insn, operands, \"srax\");"
+{
+ return output_v8plus_shift (insn, operands, \"srax\");
+}
[(set_attr "type" "multi")
(set_attr "length" "5,5,6")])
@@ -6563,11 +6574,11 @@ (define_insn "lshrsi3"
(lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
(match_operand:SI 2 "arith_operand" "rI")))]
""
- {
- if (GET_CODE (operands[2]) == CONST_INT)
- operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
- return "srl\t%1, %2, %0";
- }
+{
+ if (GET_CODE (operands[2]) == CONST_INT)
+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
+ return "srl\t%1, %2, %0";
+}
[(set_attr "type" "shift")])
(define_insn "*lshrsi3_extend0"
@@ -6576,11 +6587,11 @@ (define_insn "*lshrsi3_extend0"
(lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
(match_operand:SI 2 "arith_operand" "rI"))))]
"TARGET_ARCH64"
- {
- if (GET_CODE (operands[2]) == CONST_INT)
- operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
- return "srl\t%1, %2, %0";
- }
+{
+ if (GET_CODE (operands[2]) == CONST_INT)
+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
+ return "srl\t%1, %2, %0";
+}
[(set_attr "type" "shift")])
;; This handles the case where
@@ -6616,7 +6627,7 @@ (define_expand "lshrdi3"
(match_operand:SI 2 "arith_operand" "rI")))]
"TARGET_ARCH64 || TARGET_V8PLUS"
{
- if (! TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
if (GET_CODE (operands[2]) == CONST_INT)
FAIL;
@@ -6630,11 +6641,11 @@ (define_insn "*lshrdi3_sp64"
(lshiftrt:DI (match_operand:DI 1 "register_operand" "r")
(match_operand:SI 2 "arith_operand" "rI")))]
"TARGET_ARCH64"
- {
- if (GET_CODE (operands[2]) == CONST_INT)
- operands[2] = GEN_INT (INTVAL (operands[2]) & 0x3f);
- return "srlx\t%1, %2, %0";
- }
+{
+ if (GET_CODE (operands[2]) == CONST_INT)
+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0x3f);
+ return "srlx\t%1, %2, %0";
+}
[(set_attr "type" "shift")])
(define_insn "lshrdi3_v8plus"
@@ -6643,7 +6654,9 @@ (define_insn "lshrdi3_v8plus"
(match_operand:SI 2 "arith_operand" "rI,rI,rI")))
(clobber (match_scratch:SI 3 "=X,X,&h"))]
"TARGET_V8PLUS"
- "* return output_v8plus_shift (insn, operands, \"srlx\");"
+{
+ return output_v8plus_shift (insn, operands, \"srlx\");
+}
[(set_attr "type" "multi")
(set_attr "length" "5,5,6")])
@@ -6712,14 +6725,18 @@ (define_expand "jump"
(define_insn "*jump_ubranch"
[(set (pc) (label_ref (match_operand 0 "" "")))]
- "! TARGET_CBCOND"
- "* return output_ubranch (operands[0], insn);"
+ "!TARGET_CBCOND"
+{
+ return output_ubranch (operands[0], insn);
+}
[(set_attr "type" "uncond_branch")])
(define_insn "*jump_cbcond"
[(set (pc) (label_ref (match_operand 0 "" "")))]
"TARGET_CBCOND"
- "* return output_ubranch (operands[0], insn);"
+{
+ return output_ubranch (operands[0], insn);
+}
[(set_attr "type" "uncond_cbcond")])
(define_expand "tablejump"
@@ -6747,7 +6764,7 @@ (define_expand "tablejump"
(define_insn "*tablejump_sp32"
[(set (pc) (match_operand:SI 0 "address_operand" "p"))
(use (label_ref (match_operand 1 "" "")))]
- "! TARGET_ARCH64"
+ "TARGET_ARCH32"
"jmp\t%a0%#"
[(set_attr "type" "uncond_branch")])
@@ -6786,7 +6803,7 @@ (define_expand "call"
Why cannot we have delay slots filled if it were a CALL? */
/* We accept negative sizes for untyped calls. */
- if (! TARGET_ARCH64 && INTVAL (operands[3]) != 0)
+ if (TARGET_ARCH32 && INTVAL (operands[3]) != 0)
emit_jump_insn
(gen_rtx_PARALLEL
(VOIDmode,
@@ -6807,7 +6824,7 @@ (define_expand "call"
fn_rtx = operands[0];
/* We accept negative sizes for untyped calls. */
- if (! TARGET_ARCH64 && INTVAL (operands[3]) != 0)
+ if (TARGET_ARCH32 && INTVAL (operands[3]) != 0)
sparc_emit_call_insn
(gen_rtx_PARALLEL
(VOIDmode,
@@ -6836,7 +6853,7 @@ (define_insn "*call_address_sp32"
(match_operand 1 "" ""))
(clobber (reg:SI O7_REG))]
;;- Do not use operand 1 for most machines.
- "! TARGET_ARCH64"
+ "TARGET_ARCH32"
"call\t%a0, %1%#"
[(set_attr "type" "call")])
@@ -6845,7 +6862,7 @@ (define_insn "*call_symbolic_sp32"
(match_operand 1 "" ""))
(clobber (reg:SI O7_REG))]
;;- Do not use operand 1 for most machines.
- "! TARGET_ARCH64"
+ "TARGET_ARCH32"
"call\t%a0, %1%#"
[(set_attr "type" "call")])
@@ -6875,7 +6892,7 @@ (define_insn "*call_address_struct_value
(match_operand 2 "immediate_operand" "")
(clobber (reg:SI O7_REG))]
;;- Do not use operand 1 for most machines.
- "! TARGET_ARCH64 && GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) > 0"
+ "TARGET_ARCH32 && GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) > 0"
{
operands[2] = GEN_INT (INTVAL (operands[2]) & 0xfff);
return "call\t%a0, %1\n\t nop\n\tunimp\t%2";
@@ -6891,7 +6908,7 @@ (define_insn "*call_symbolic_struct_valu
(match_operand 2 "immediate_operand" "")
(clobber (reg:SI O7_REG))]
;;- Do not use operand 1 for most machines.
- "! TARGET_ARCH64 && GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) > 0"
+ "TARGET_ARCH32 && GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) > 0"
{
operands[2] = GEN_INT (INTVAL (operands[2]) & 0xfff);
return "call\t%a0, %1\n\t nop\n\tunimp\t%2";
@@ -6907,7 +6924,7 @@ (define_insn "*call_address_untyped_stru
(match_operand 2 "immediate_operand" "")
(clobber (reg:SI O7_REG))]
;;- Do not use operand 1 for most machines.
- "! TARGET_ARCH64 && GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 0"
+ "TARGET_ARCH32 && GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 0"
"call\t%a0, %1\n\t nop\n\tnop"
[(set_attr "type" "call_no_delay_slot")
(set_attr "length" "3")])
@@ -6920,7 +6937,7 @@ (define_insn "*call_symbolic_untyped_str
(match_operand 2 "immediate_operand" "")
(clobber (reg:SI O7_REG))]
;;- Do not use operand 1 for most machines.
- "! TARGET_ARCH64 && GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 0"
+ "TARGET_ARCH32 && GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 0"
"call\t%a0, %1\n\t nop\n\tnop"
[(set_attr "type" "call_no_delay_slot")
(set_attr "length" "3")])
@@ -6958,7 +6975,7 @@ (define_insn "*call_value_address_sp32"
(match_operand 2 "" "")))
(clobber (reg:SI O7_REG))]
;;- Do not use operand 2 for most machines.
- "! TARGET_ARCH64"
+ "TARGET_ARCH32"
"call\t%a1, %2%#"
[(set_attr "type" "call")])
@@ -6968,7 +6985,7 @@ (define_insn "*call_value_symbolic_sp32"
(match_operand 2 "" "")))
(clobber (reg:SI O7_REG))]
;;- Do not use operand 2 for most machines.
- "! TARGET_ARCH64"
+ "TARGET_ARCH32"
"call\t%a1, %2%#"
[(set_attr "type" "call")])
@@ -7037,8 +7054,10 @@ (define_insn "*sibcall_symbolic_sp32"
[(call (mem:SI (match_operand:SI 0 "symbolic_operand" "s"))
(match_operand 1 "" ""))
(return)]
- "! TARGET_ARCH64"
- "* return output_sibcall(insn, operands[0]);"
+ "TARGET_ARCH32"
+{
+ return output_sibcall(insn, operands[0]);
+}
[(set_attr "type" "sibcall")])
(define_insn "*sibcall_symbolic_sp64"
@@ -7046,7 +7065,9 @@ (define_insn "*sibcall_symbolic_sp64"
(match_operand 1 "" ""))
(return)]
"TARGET_ARCH64"
- "* return output_sibcall(insn, operands[0]);"
+{
+ return output_sibcall(insn, operands[0]);
+}
[(set_attr "type" "sibcall")])
(define_expand "sibcall_value"
@@ -7061,8 +7082,10 @@ (define_insn "*sibcall_value_symbolic_sp
(call (mem:SI (match_operand:SI 1 "symbolic_operand" "s"))
(match_operand 2 "" "")))
(return)]
- "! TARGET_ARCH64"
- "* return output_sibcall(insn, operands[1]);"
+ "TARGET_ARCH32"
+{
+ return output_sibcall(insn, operands[1]);
+}
[(set_attr "type" "sibcall")])
(define_insn "*sibcall_value_symbolic_sp64"
@@ -7071,7 +7094,9 @@ (define_insn "*sibcall_value_symbolic_sp
(match_operand 2 "" "")))
(return)]
"TARGET_ARCH64"
- "* return output_sibcall(insn, operands[1]);"
+{
+ return output_sibcall(insn, operands[1]);
+}
[(set_attr "type" "sibcall")])
@@ -7151,7 +7176,9 @@ (define_expand "return"
(define_insn "*return_internal"
[(return)]
""
- "* return output_return (insn);"
+{
+ return output_return (insn);
+}
[(set_attr "type" "return")
(set (attr "length")
(cond [(eq_attr "calls_eh_return" "true")
@@ -7215,7 +7242,9 @@ (define_insn "probe_stack_range<P:mode>"
(match_operand:P 2 "register_operand" "r")]
UNSPECV_PROBE_STACK_RANGE))]
""
- "* return output_probe_stack_range (operands[0], operands[2]);"
+{
+ return output_probe_stack_range (operands[0], operands[2]);
+}
[(set_attr "type" "multi")])
;; Prepare to return any type including a structure value.
@@ -7228,7 +7257,7 @@ (define_expand "untyped_return"
rtx valreg1 = gen_rtx_REG (DImode, 24);
rtx result = operands[0];
- if (! TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
rtx rtnreg = gen_rtx_REG (SImode, RETURN_ADDR_REGNUM);
rtx value = gen_reg_rtx (SImode);
@@ -7272,7 +7301,7 @@ (define_expand "untyped_return"
(define_insn "update_return"
[(unspec:SI [(match_operand:SI 0 "register_operand" "r")
(match_operand:SI 1 "register_operand" "r")] UNSPEC_UPDATE_RETURN)]
- "! TARGET_ARCH64"
+ "TARGET_ARCH32"
{
if (flag_delayed_branch)
return "cmp\t%1, 0\n\tbe,a\t.+8\n\t add\t%0, 4, %0";
@@ -7297,7 +7326,7 @@ (define_expand "indirect_jump"
(define_insn "*branch_sp32"
[(set (pc) (match_operand:SI 0 "address_operand" "p"))]
- "! TARGET_ARCH64"
+ "TARGET_ARCH32"
"jmp\t%a0%#"
[(set_attr "type" "uncond_branch")])
@@ -7376,7 +7405,9 @@ (define_expand "builtin_setjmp_receiver"
(define_insn "flush_register_windows"
[(unspec_volatile [(const_int 0)] UNSPECV_FLUSHW)]
""
- { return TARGET_V9 ? "flushw" : "ta\t3"; }
+{
+ return TARGET_V9 ? "flushw" : "ta\t3";
+}
[(set_attr "type" "flushw")])
;; Special pattern for the FLUSH instruction.
@@ -7384,7 +7415,9 @@ (define_insn "flush_register_windows"
(define_insn "flush<P:mode>"
[(unspec_volatile [(match_operand:P 0 "memory_operand" "m")] UNSPECV_FLUSH)]
""
- { return TARGET_V9 ? "flush\t%f0" : "iflush\t%f0"; }
+{
+ return TARGET_V9 ? "flush\t%f0" : "iflush\t%f0";
+}
[(set_attr "type" "iflush")])
;; Special insns to load and store the 32-bit FP Status Register.
@@ -7405,29 +7438,12 @@ (define_insn "stfsr"
;; Find first set instructions.
-;; The scan instruction searches from the most significant bit while ffs
-;; searches from the least significant bit. The bit index and treatment of
-;; zero also differ. It takes at least 7 instructions to get the proper
-;; result. Here is an obvious 8 instruction sequence.
-
-;; XXX
-(define_insn "ffssi2"
- [(set (match_operand:SI 0 "register_operand" "=&r")
- (ffs:SI (match_operand:SI 1 "register_operand" "r")))
- (clobber (match_scratch:SI 2 "=&r"))]
- "TARGET_SPARCLITE || TARGET_SPARCLET"
-{
- return "sub\t%%g0, %1, %0\;and\t%0, %1, %0\;scan\t%0, 0, %0\;mov\t32, %2\;sub\t%2, %0, %0\;sra\t%0, 31, %2\;and\t%2, 31, %2\;add\t%2, %0, %0";
-}
- [(set_attr "type" "multi")
- (set_attr "length" "8")])
-
(define_expand "popcountdi2"
[(set (match_operand:DI 0 "register_operand" "")
(popcount:DI (match_operand:DI 1 "register_operand" "")))]
"TARGET_POPC"
{
- if (! TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
emit_insn (gen_popcountdi_v8plus (operands[0], operands[1]));
DONE;
@@ -7444,7 +7460,7 @@ (define_insn "popcountdi_v8plus"
[(set (match_operand:DI 0 "register_operand" "=r")
(popcount:DI (match_operand:DI 1 "register_operand" "r")))
(clobber (match_scratch:SI 2 "=&h"))]
- "TARGET_POPC && ! TARGET_ARCH64"
+ "TARGET_POPC && TARGET_ARCH32"
{
if (sparc_check_64 (operands[1], insn) <= 0)
output_asm_insn ("srl\t%L1, 0, %L1", operands);
@@ -7460,7 +7476,7 @@ (define_expand "popcountsi2"
(truncate:SI (popcount:DI (match_dup 2))))]
"TARGET_POPC"
{
- if (! TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
emit_insn (gen_popcountsi_v8plus (operands[0], operands[1]));
DONE;
@@ -7479,7 +7495,7 @@ (define_insn "*popcountsi_sp64"
(define_insn "popcountsi_v8plus"
[(set (match_operand:SI 0 "register_operand" "=r")
(popcount:SI (match_operand:SI 1 "register_operand" "r")))]
- "TARGET_POPC && ! TARGET_ARCH64"
+ "TARGET_POPC && TARGET_ARCH32"
{
if (sparc_check_64 (operands[1], insn) <= 0)
output_asm_insn ("srl\t%1, 0, %1", operands);
@@ -7493,7 +7509,7 @@ (define_expand "clzdi2"
(clz:DI (match_operand:DI 1 "register_operand" "")))]
"TARGET_VIS3"
{
- if (! TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
emit_insn (gen_clzdi_v8plus (operands[0], operands[1]));
DONE;
@@ -7511,7 +7527,7 @@ (define_insn "clzdi_v8plus"
[(set (match_operand:DI 0 "register_operand" "=r")
(clz:DI (match_operand:DI 1 "register_operand" "r")))
(clobber (match_scratch:SI 2 "=&h"))]
- "TARGET_VIS3 && ! TARGET_ARCH64"
+ "TARGET_VIS3 && TARGET_ARCH32"
{
if (sparc_check_64 (operands[1], insn) <= 0)
output_asm_insn ("srl\t%L1, 0, %L1", operands);
@@ -7529,7 +7545,7 @@ (define_expand "clzsi2"
(minus:SI (match_dup 3) (const_int 32)))]
"TARGET_VIS3"
{
- if (! TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
emit_insn (gen_clzsi_v8plus (operands[0], operands[1]));
DONE;
@@ -7552,7 +7568,7 @@ (define_insn "*clzsi_sp64"
(define_insn "clzsi_v8plus"
[(set (match_operand:SI 0 "register_operand" "=r")
(clz:SI (match_operand:SI 1 "register_operand" "r")))]
- "TARGET_VIS3 && ! TARGET_ARCH64"
+ "TARGET_VIS3 && TARGET_ARCH32"
{
if (sparc_check_64 (operands[1], insn) <= 0)
output_asm_insn ("srl\t%1, 0, %1", operands);
@@ -7708,8 +7724,8 @@ (define_peephole2
(const_int 0)))]
"(rtx_equal_p (operands[2], operands[0])
|| rtx_equal_p (operands[2], operands[1]))
- && ! SPARC_FP_REG_P (REGNO (operands[0]))
- && ! SPARC_FP_REG_P (REGNO (operands[1]))"
+ && !SPARC_FP_REG_P (REGNO (operands[0]))
+ && !SPARC_FP_REG_P (REGNO (operands[1]))"
[(parallel [(set (match_dup 0) (match_dup 1))
(set (reg:CC CC_REG)
(compare:CC (match_dup 1) (const_int 0)))])]
@@ -7724,8 +7740,8 @@ (define_peephole2
"TARGET_ARCH64
&& (rtx_equal_p (operands[2], operands[0])
|| rtx_equal_p (operands[2], operands[1]))
- && ! SPARC_FP_REG_P (REGNO (operands[0]))
- && ! SPARC_FP_REG_P (REGNO (operands[1]))"
+ && !SPARC_FP_REG_P (REGNO (operands[0]))
+ && !SPARC_FP_REG_P (REGNO (operands[1]))"
[(parallel [(set (match_dup 0) (match_dup 1))
(set (reg:CCX CC_REG)
(compare:CCX (match_dup 1) (const_int 0)))])]
@@ -7734,10 +7750,10 @@ (define_peephole2
;; Prefetch instructions.
-;; ??? UltraSPARC-III note: A memory operation loading into the floating point register
-;; ??? file, if it hits the prefetch cache, has a chance to dual-issue with other memory
-;; ??? operations. With DFA we might be able to model this, but it requires a lot of
-;; ??? state.
+;; ??? UltraSPARC-III note: A memory operation loading into the floating point
+;; register file, if it hits the prefetch cache, has a chance to dual-issue
+;; with other memory operations. With DFA we might be able to model this,
+;; but it requires a lot of state.
(define_expand "prefetch"
[(match_operand 0 "address_operand" "")
(match_operand 1 "const_int_operand" "")
@@ -7814,7 +7830,7 @@ (define_expand "ctrapsi4"
[(trap_if (match_operator 0 "comparison_operator"
[(match_operand:SI 1 "compare_operand" "")
(match_operand:SI 2 "arith_operand" "")])
- (match_operand 3 "arith_operand"))]
+ (match_operand 3 "arith_operand"))]
""
{
operands[1] = gen_compare_reg (operands[0]);
@@ -7827,7 +7843,7 @@ (define_expand "ctrapdi4"
[(trap_if (match_operator 0 "comparison_operator"
[(match_operand:DI 1 "compare_operand" "")
(match_operand:DI 2 "arith_operand" "")])
- (match_operand 3 "arith_operand"))]
+ (match_operand 3 "arith_operand"))]
"TARGET_ARCH64"
{
operands[1] = gen_compare_reg (operands[0]);
@@ -7838,7 +7854,7 @@ (define_expand "ctrapdi4"
(define_insn "*trapsi_insn"
[(trap_if (match_operator 0 "icc_comparison_operator"
- [(reg:CC CC_REG) (const_int 0)])
+ [(reg:CC CC_REG) (const_int 0)])
(match_operand:SI 1 "arith_operand" "rM"))]
""
{
@@ -7851,7 +7867,7 @@ (define_insn "*trapsi_insn"
(define_insn "*trapdi_insn"
[(trap_if (match_operator 0 "icc_comparison_operator"
- [(reg:CCX CC_REG) (const_int 0)])
+ [(reg:CCX CC_REG) (const_int 0)])
(match_operand:SI 1 "arith_operand" "rM"))]
"TARGET_V9"
"t%C0\t%%xcc, %1"
@@ -8094,10 +8110,11 @@ (define_insn "*tldo_ldub_sp32"
(define_insn "*tldo_ldub1_sp32"
[(set (match_operand:HI 0 "register_operand" "=r")
- (zero_extend:HI (mem:QI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:SI 1 "register_operand" "r")))))]
+ (zero_extend:HI
+ (mem:QI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:SI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH32"
"ldub\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "load")
@@ -8105,10 +8122,11 @@ (define_insn "*tldo_ldub1_sp32"
(define_insn "*tldo_ldub2_sp32"
[(set (match_operand:SI 0 "register_operand" "=r")
- (zero_extend:SI (mem:QI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:SI 1 "register_operand" "r")))))]
+ (zero_extend:SI
+ (mem:QI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:SI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH32"
"ldub\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "load")
@@ -8116,10 +8134,11 @@ (define_insn "*tldo_ldub2_sp32"
(define_insn "*tldo_ldsb1_sp32"
[(set (match_operand:HI 0 "register_operand" "=r")
- (sign_extend:HI (mem:QI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:SI 1 "register_operand" "r")))))]
+ (sign_extend:HI
+ (mem:QI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:SI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH32"
"ldsb\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "sload")
@@ -8127,10 +8146,11 @@ (define_insn "*tldo_ldsb1_sp32"
(define_insn "*tldo_ldsb2_sp32"
[(set (match_operand:SI 0 "register_operand" "=r")
- (sign_extend:SI (mem:QI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:SI 1 "register_operand" "r")))))]
+ (sign_extend:SI
+ (mem:QI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:SI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH32"
"ldsb\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "sload")
@@ -8149,10 +8169,11 @@ (define_insn "*tldo_ldub_sp64"
(define_insn "*tldo_ldub1_sp64"
[(set (match_operand:HI 0 "register_operand" "=r")
- (zero_extend:HI (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:DI 1 "register_operand" "r")))))]
+ (zero_extend:HI
+ (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:DI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH64"
"ldub\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "load")
@@ -8160,10 +8181,11 @@ (define_insn "*tldo_ldub1_sp64"
(define_insn "*tldo_ldub2_sp64"
[(set (match_operand:SI 0 "register_operand" "=r")
- (zero_extend:SI (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:DI 1 "register_operand" "r")))))]
+ (zero_extend:SI
+ (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:DI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH64"
"ldub\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "load")
@@ -8171,10 +8193,11 @@ (define_insn "*tldo_ldub2_sp64"
(define_insn "*tldo_ldub3_sp64"
[(set (match_operand:DI 0 "register_operand" "=r")
- (zero_extend:DI (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:DI 1 "register_operand" "r")))))]
+ (zero_extend:DI
+ (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:DI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH64"
"ldub\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "load")
@@ -8182,10 +8205,11 @@ (define_insn "*tldo_ldub3_sp64"
(define_insn "*tldo_ldsb1_sp64"
[(set (match_operand:HI 0 "register_operand" "=r")
- (sign_extend:HI (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:DI 1 "register_operand" "r")))))]
+ (sign_extend:HI
+ (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:DI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH64"
"ldsb\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "sload")
@@ -8193,10 +8217,11 @@ (define_insn "*tldo_ldsb1_sp64"
(define_insn "*tldo_ldsb2_sp64"
[(set (match_operand:SI 0 "register_operand" "=r")
- (sign_extend:SI (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:DI 1 "register_operand" "r")))))]
+ (sign_extend:SI
+ (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:DI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH64"
"ldsb\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "sload")
@@ -8204,10 +8229,11 @@ (define_insn "*tldo_ldsb2_sp64"
(define_insn "*tldo_ldsb3_sp64"
[(set (match_operand:DI 0 "register_operand" "=r")
- (sign_extend:DI (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:DI 1 "register_operand" "r")))))]
+ (sign_extend:DI
+ (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:DI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH64"
"ldsb\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "sload")
@@ -8226,10 +8252,11 @@ (define_insn "*tldo_lduh_sp32"
(define_insn "*tldo_lduh1_sp32"
[(set (match_operand:SI 0 "register_operand" "=r")
- (zero_extend:SI (mem:HI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:SI 1 "register_operand" "r")))))]
+ (zero_extend:SI
+ (mem:HI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:SI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH32"
"lduh\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "load")
@@ -8237,10 +8264,11 @@ (define_insn "*tldo_lduh1_sp32"
(define_insn "*tldo_ldsh1_sp32"
[(set (match_operand:SI 0 "register_operand" "=r")
- (sign_extend:SI (mem:HI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:SI 1 "register_operand" "r")))))]
+ (sign_extend:SI
+ (mem:HI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:SI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH32"
"ldsh\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "sload")
@@ -8259,10 +8287,11 @@ (define_insn "*tldo_lduh_sp64"
(define_insn "*tldo_lduh1_sp64"
[(set (match_operand:SI 0 "register_operand" "=r")
- (zero_extend:SI (mem:HI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:DI 1 "register_operand" "r")))))]
+ (zero_extend:SI
+ (mem:HI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:DI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH64"
"lduh\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "load")
@@ -8270,10 +8299,11 @@ (define_insn "*tldo_lduh1_sp64"
(define_insn "*tldo_lduh2_sp64"
[(set (match_operand:DI 0 "register_operand" "=r")
- (zero_extend:DI (mem:HI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:DI 1 "register_operand" "r")))))]
+ (zero_extend:DI
+ (mem:HI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:DI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH64"
"lduh\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "load")
@@ -8281,10 +8311,11 @@ (define_insn "*tldo_lduh2_sp64"
(define_insn "*tldo_ldsh1_sp64"
[(set (match_operand:SI 0 "register_operand" "=r")
- (sign_extend:SI (mem:HI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:DI 1 "register_operand" "r")))))]
+ (sign_extend:SI
+ (mem:HI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:DI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH64"
"ldsh\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "sload")
@@ -8292,10 +8323,11 @@ (define_insn "*tldo_ldsh1_sp64"
(define_insn "*tldo_ldsh2_sp64"
[(set (match_operand:DI 0 "register_operand" "=r")
- (sign_extend:DI (mem:HI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:DI 1 "register_operand" "r")))))]
+ (sign_extend:DI
+ (mem:HI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:DI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH64"
"ldsh\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "sload")
@@ -8323,20 +8355,22 @@ (define_insn "*tldo_lduw_sp64"
(define_insn "*tldo_lduw1_sp64"
[(set (match_operand:DI 0 "register_operand" "=r")
- (zero_extend:DI (mem:SI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:DI 1 "register_operand" "r")))))]
+ (zero_extend:DI
+ (mem:SI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:DI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH64"
"lduw\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "load")])
(define_insn "*tldo_ldsw1_sp64"
[(set (match_operand:DI 0 "register_operand" "=r")
- (sign_extend:DI (mem:SI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
- (match_operand 3 "tld_symbolic_operand" "")]
- UNSPEC_TLSLDO)
- (match_operand:DI 1 "register_operand" "r")))))]
+ (sign_extend:DI
+ (mem:SI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r")
+ (match_operand 3 "tld_symbolic_operand" "")]
+ UNSPEC_TLSLDO)
+ (match_operand:DI 1 "register_operand" "r")))))]
"TARGET_TLS && TARGET_ARCH64"
"ldsw\t[%1 + %2], %0, %%tldo_add(%3)"
[(set_attr "type" "sload")
@@ -8585,7 +8619,7 @@ (define_insn "*mov<VM64:mode>_insn_sp32"
[(set (match_operand:VM64 0 "nonimmediate_operand" "=e,e,e,*r, f,e,m,m,U,T, o,*r")
(match_operand:VM64 1 "input_operand" "Y,C,e, f,*r,m,e,Y,T,U,*r,*r"))]
"TARGET_VIS
- && ! TARGET_ARCH64
+ && TARGET_ARCH32
&& (register_operand (operands[0], <VM64:MODE>mode)
|| register_or_zero_or_all_ones_operand (operands[1], <VM64:MODE>mode))"
"@
@@ -8611,9 +8645,9 @@ (define_split
(match_operand:VM64 1 "register_operand" ""))]
"reload_completed
&& TARGET_VIS
- && ! TARGET_ARCH64
+ && TARGET_ARCH32
&& (((REGNO (operands[1]) % 2) != 0)
- || ! mem_min_alignment (operands[0], 8))
+ || !mem_min_alignment (operands[0], 8))
&& offsettable_memref_p (operands[0])"
[(clobber (const_int 0))]
{
@@ -8632,7 +8666,7 @@ (define_split
(match_operand:VM64 1 "register_operand" ""))]
"reload_completed
&& TARGET_VIS
- && ! TARGET_ARCH64
+ && TARGET_ARCH32
&& sparc_split_regreg_legitimate (operands[0], operands[1])"
[(clobber (const_int 0))]
{
@@ -8661,7 +8695,7 @@ (define_split
DONE;
})
-(define_expand "vec_init<mode>"
+(define_expand "vec_init<VMALL:mode>"
[(match_operand:VMALL 0 "register_operand" "")
(match_operand:VMALL 1 "" "")]
"TARGET_VIS"
@@ -8675,7 +8709,7 @@ (define_code_attr plusminus_insn [(plus
(define_mode_iterator VADDSUB [V1SI V2SI V2HI V4HI])
-(define_insn "<plusminus_insn><mode>3"
+(define_insn "<plusminus_insn><VADDSUB:mode>3"
[(set (match_operand:VADDSUB 0 "register_operand" "=<vconstr>")
(plusminus:VADDSUB (match_operand:VADDSUB 1 "register_operand" "<vconstr>")
(match_operand:VADDSUB 2 "register_operand" "<vconstr>")))]
@@ -8692,7 +8726,7 @@ (define_code_iterator vlop [ior and xor]
(define_code_attr vlinsn [(ior "or") (and "and") (xor "xor")])
(define_code_attr vlninsn [(ior "nor") (and "nand") (xor "xnor")])
-(define_insn "<code><mode>3"
+(define_insn "*<vlop:code><VL:mode>3"
[(set (match_operand:VL 0 "register_operand" "=<vconstr>")
(vlop:VL (match_operand:VL 1 "register_operand" "<vconstr>")
(match_operand:VL 2 "register_operand" "<vconstr>")))]
@@ -8702,7 +8736,7 @@ (define_insn "<code><mode>3"
(set_attr "fptype" "<vfptype>")
(set_attr "v3pipe" "true")])
-(define_insn "*not_<code><mode>3"
+(define_insn "*not_<vlop:code><VL:mode>3"
[(set (match_operand:VL 0 "register_operand" "=<vconstr>")
(not:VL (vlop:VL (match_operand:VL 1 "register_operand" "<vconstr>")
(match_operand:VL 2 "register_operand" "<vconstr>"))))]
@@ -8713,7 +8747,7 @@ (define_insn "*not_<code><mode>3"
(set_attr "v3pipe" "true")])
;; (ior (not (op1)) (not (op2))) is the canonical form of NAND.
-(define_insn "*nand<mode>_vis"
+(define_insn "*nand<VL:mode>_vis"
[(set (match_operand:VL 0 "register_operand" "=<vconstr>")
(ior:VL (not:VL (match_operand:VL 1 "register_operand" "<vconstr>"))
(not:VL (match_operand:VL 2 "register_operand" "<vconstr>"))))]
@@ -8725,7 +8759,7 @@ (define_insn "*nand<mode>_vis"
(define_code_iterator vlnotop [ior and])
-(define_insn "*<code>_not1<mode>_vis"
+(define_insn "*<vlnotop:code>_not1<VL:mode>_vis"
[(set (match_operand:VL 0 "register_operand" "=<vconstr>")
(vlnotop:VL (not:VL (match_operand:VL 1 "register_operand" "<vconstr>"))
(match_operand:VL 2 "register_operand" "<vconstr>")))]
@@ -8735,7 +8769,7 @@ (define_insn "*<code>_not1<mode>_vis"
(set_attr "fptype" "<vfptype>")
(set_attr "v3pipe" "true")])
-(define_insn "*<code>_not2<mode>_vis"
+(define_insn "*<vlnotop:code>_not2<VL:mode>_vis"
[(set (match_operand:VL 0 "register_operand" "=<vconstr>")
(vlnotop:VL (match_operand:VL 1 "register_operand" "<vconstr>")
(not:VL (match_operand:VL 2 "register_operand" "<vconstr>"))))]
@@ -8745,7 +8779,7 @@ (define_insn "*<code>_not2<mode>_vis"
(set_attr "fptype" "<vfptype>")
(set_attr "v3pipe" "true")])
-(define_insn "one_cmpl<mode>2"
+(define_insn "one_cmpl<VL:mode>2"
[(set (match_operand:VL 0 "register_operand" "=<vconstr>")
(not:VL (match_operand:VL 1 "register_operand" "<vconstr>")))]
"TARGET_VIS"
@@ -8913,7 +8947,7 @@ (define_expand "wrgsr_vis"
[(set (reg:DI GSR_REG) (match_operand:DI 0 "arith_operand" ""))]
"TARGET_VIS"
{
- if (! TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
emit_insn (gen_wrgsr_v8plus (operands[0]));
DONE;
@@ -8929,7 +8963,7 @@ (define_insn "*wrgsr_sp64"
(define_insn "wrgsr_v8plus"
[(set (reg:DI GSR_REG) (match_operand:DI 0 "arith_operand" "I,r"))
(clobber (match_scratch:SI 1 "=X,&h"))]
- "TARGET_VIS && ! TARGET_ARCH64"
+ "TARGET_VIS && TARGET_ARCH32"
{
if (GET_CODE (operands[0]) == CONST_INT
|| sparc_check_64 (operands[0], insn))
@@ -8944,7 +8978,7 @@ (define_expand "rdgsr_vis"
[(set (match_operand:DI 0 "register_operand" "") (reg:DI GSR_REG))]
"TARGET_VIS"
{
- if (! TARGET_ARCH64)
+ if (TARGET_ARCH32)
{
emit_insn (gen_rdgsr_v8plus (operands[0]));
DONE;
@@ -8960,7 +8994,7 @@ (define_insn "*rdgsr_sp64"
(define_insn "rdgsr_v8plus"
[(set (match_operand:DI 0 "register_operand" "=r") (reg:DI GSR_REG))
(clobber (match_scratch:SI 1 "=&h"))]
- "TARGET_VIS && ! TARGET_ARCH64"
+ "TARGET_VIS && TARGET_ARCH32"
{
return "rd\t%%gsr, %1\n\tsrlx\t%1, 32, %H0\n\tmov %1, %L0";
}
@@ -9110,28 +9144,28 @@ (define_code_iterator gcond [le ne gt eq
(define_mode_iterator GCM [V4HI V2SI])
(define_mode_attr gcm_name [(V4HI "16") (V2SI "32")])
-(define_insn "fcmp<code><GCM:gcm_name><P:mode>_vis"
+(define_insn "fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"
[(set (match_operand:P 0 "register_operand" "=r")
(unspec:P [(gcond:GCM (match_operand:GCM 1 "register_operand" "e")
(match_operand:GCM 2 "register_operand" "e"))]
UNSPEC_FCMP))]
"TARGET_VIS"
- "fcmp<code><GCM:gcm_name>\t%1, %2, %0"
+ "fcmp<gcond:code><GCM:gcm_name>\t%1, %2, %0"
[(set_attr "type" "visl")
(set_attr "fptype" "double")
(set_attr "v3pipe" "true")])
-(define_insn "fpcmp<code>8<P:mode>_vis"
+(define_insn "fpcmp<gcond:code>8<P:mode>_vis"
[(set (match_operand:P 0 "register_operand" "=r")
(unspec:P [(gcond:V8QI (match_operand:V8QI 1 "register_operand" "e")
(match_operand:V8QI 2 "register_operand" "e"))]
UNSPEC_FCMP))]
"TARGET_VIS4"
- "fpcmp<code>8\t%1, %2, %0"
+ "fpcmp<gcond:code>8\t%1, %2, %0"
[(set_attr "type" "visl")
(set_attr "fptype" "double")])
-(define_expand "vcond<mode><mode>"
+(define_expand "vcond<GCM:mode><GCM:mode>"
[(match_operand:GCM 0 "register_operand" "")
(match_operand:GCM 1 "register_operand" "")
(match_operand:GCM 2 "register_operand" "")
@@ -9140,9 +9174,7 @@ (define_expand "vcond<mode><mode>"
(match_operand:GCM 5 "register_operand" "")])]
"TARGET_VIS3"
{
- sparc_expand_vcond (<MODE>mode, operands,
- UNSPEC_CMASK<gcm_name>,
- UNSPEC_FCMP);
+ sparc_expand_vcond (<MODE>mode, operands, UNSPEC_CMASK<gcm_name>, UNSPEC_FCMP);
DONE;
})
@@ -9155,9 +9187,7 @@ (define_expand "vconduv8qiv8qi"
(match_operand:V8QI 5 "register_operand" "")])]
"TARGET_VIS3"
{
- sparc_expand_vcond (V8QImode, operands,
- UNSPEC_CMASK8,
- UNSPEC_FUCMP);
+ sparc_expand_vcond (V8QImode, operands, UNSPEC_CMASK8, UNSPEC_FUCMP);
DONE;
})
@@ -9247,7 +9277,7 @@ (define_expand "vec_perm_constv8qi"
;; Unlike constant permutation, we can vastly simplify the compression of
;; the 64-bit selector input to the 32-bit %gsr value by knowing what the
;; width of the input is.
-(define_expand "vec_perm<mode>"
+(define_expand "vec_perm<VM64:mode>"
[(match_operand:VM64 0 "register_operand" "")
(match_operand:VM64 1 "register_operand" "")
(match_operand:VM64 2 "register_operand" "")
@@ -9255,7 +9285,7 @@ (define_expand "vec_perm<mode>"
"TARGET_VIS2"
{
sparc_expand_vec_perm_bmask (<MODE>mode, operands[3]);
- emit_insn (gen_bshuffle<mode>_vis (operands[0], operands[1], operands[2]));
+ emit_insn (gen_bshuffle<VM64:mode>_vis (operands[0], operands[1], operands[2]));
DONE;
})
@@ -9360,7 +9390,7 @@ (define_code_attr vis3_shift_insn
(define_code_attr vis3_shift_patname
[(ashift "ashl") (ss_ashift "ssashl") (lshiftrt "lshr") (ashiftrt "ashr")])
-(define_insn "v<vis3_shift_patname><mode>3"
+(define_insn "v<vis3_shift_patname><GCM:mode>3"
[(set (match_operand:GCM 0 "register_operand" "=<vconstr>")
(vis3_shift:GCM (match_operand:GCM 1 "register_operand" "<vconstr>")
(match_operand:GCM 2 "register_operand" "<vconstr>")))]
@@ -9368,7 +9398,7 @@ (define_insn "v<vis3_shift_patname><mode
"<vis3_shift_insn><vbits>\t%1, %2, %0"
[(set_attr "type" "fga")])
-(define_insn "pdistn<mode>_vis"
+(define_insn "pdistn<P:mode>_vis"
[(set (match_operand:P 0 "register_operand" "=r")
(unspec:P [(match_operand:V8QI 1 "register_operand" "e")
(match_operand:V8QI 2 "register_operand" "e")]
@@ -9419,7 +9449,7 @@ (define_code_attr vis3_addsub_ss_insn
(define_code_attr vis3_addsub_ss_patname
[(ss_plus "ssadd") (ss_minus "sssub")])
-(define_insn "<vis3_addsub_ss_patname><mode>3"
+(define_insn "<vis3_addsub_ss_patname><VASS:mode>3"
[(set (match_operand:VASS 0 "register_operand" "=<vconstr>")
(vis3_addsub_ss:VASS (match_operand:VASS 1 "register_operand" "<vconstr>")
(match_operand:VASS 2 "register_operand" "<vconstr>")))]
@@ -9435,7 +9465,7 @@ (define_code_attr vis4_minmax_insn
(define_code_attr vis4_minmax_patname
[(smin "min") (smax "max")])
-(define_insn "<vis4_minmax_patname><mode>3"
+(define_insn "<vis4_minmax_patname><VMMAX:mode>3"
[(set (match_operand:VMMAX 0 "register_operand" "=<vconstr>")
(vis4_minmax:VMMAX (match_operand:VMMAX 1 "register_operand" "<vconstr>")
(match_operand:VMMAX 2 "register_operand" "<vconstr>")))]
@@ -9449,7 +9479,7 @@ (define_code_attr vis4_uminmax_insn
(define_code_attr vis4_uminmax_patname
[(umin "minu") (umax "maxu")])
-(define_insn "<vis4_uminmax_patname><mode>3"
+(define_insn "<vis4_uminmax_patname><VMMAX:mode>3"
[(set (match_operand:VMMAX 0 "register_operand" "=<vconstr>")
(vis4_uminmax:VMMAX (match_operand:VMMAX 1 "register_operand" "<vconstr>")
(match_operand:VMMAX 2 "register_operand" "<vconstr>")))]
@@ -9474,7 +9504,7 @@ (define_code_attr vis4_addsub_us_insn
(define_code_attr vis4_addsub_us_patname
[(us_plus "usadd") (us_minus "ussub")])
-(define_insn "<vis4_addsub_us_patname><mode>3"
+(define_insn "<vis4_addsub_us_patname><VAUS:mode>3"
[(set (match_operand:VAUS 0 "register_operand" "=<vconstr>")
(vis4_addsub_us:VAUS (match_operand:VAUS 1 "register_operand" "<vconstr>")
(match_operand:VAUS 2 "register_operand" "<vconstr>")))]
@@ -9482,23 +9512,23 @@ (define_insn "<vis4_addsub_us_patname><m
"<vis4_addsub_us_insn><vbits>\t%1, %2, %0"
[(set_attr "type" "fga")])
-(define_insn "fucmp<code>8<P:mode>_vis"
+(define_insn "fucmp<gcond:code>8<P:mode>_vis"
[(set (match_operand:P 0 "register_operand" "=r")
- (unspec:P [(gcond:V8QI (match_operand:V8QI 1 "register_operand" "e")
+ (unspec:P [(gcond:V8QI (match_operand:V8QI 1 "register_operand" "e")
(match_operand:V8QI 2 "register_operand" "e"))]
UNSPEC_FUCMP))]
"TARGET_VIS3"
- "fucmp<code>8\t%1, %2, %0"
+ "fucmp<gcond:code>8\t%1, %2, %0"
[(set_attr "type" "visl")
(set_attr "v3pipe" "true")])
-(define_insn "fpcmpu<code><GCM:gcm_name><P:mode>_vis"
+(define_insn "fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis"
[(set (match_operand:P 0 "register_operand" "=r")
- (unspec:P [(gcond:GCM (match_operand:GCM 1 "register_operand" "e")
+ (unspec:P [(gcond:GCM (match_operand:GCM 1 "register_operand" "e")
(match_operand:GCM 2 "register_operand" "e"))]
UNSPEC_FUCMP))]
"TARGET_VIS4"
- "fpcmpu<code><GCM:gcm_name>\t%1, %2, %0"
+ "fpcmpu<gcond:code><GCM:gcm_name>\t%1, %2, %0"
[(set_attr "type" "visl")
(set_attr "fptype" "double")])