i386.md (@cmp<mode>_1): Rename from cmp<mode>_1.

* config/i386/i386.md (@cmp<mode>_1): Rename from cmp<mode>_1.
	(@add<mode>3_carry): Rename from add<mode>3_carry.
	(@sub<mode>3_carry_ccc): Rename from sub<mode>3_carry_ccc.
	(@sub<mode>3_carry_ccgz): Rename form sub<mode>3_carry_ccgz.
	(@copysign<mode>3_const): Rename from copysign<mode>3_const.
	(@copysign<mode>3_var): Rename from copysign<mode>3_var.
	(@xorsign<mode>3_1): Rename from xorsign<mode>3_1.
	(@x86_shift<mode>_adj_1): Rename from x86_shift<mode>_adj_1.
	(@x86_shift<mode>_adj_2): Rename from x86_shift<mode>_adj_2.
	(@x86_shift<mode>_adj_3): Rename from x86_shift<mode>_adj_3.
	(cmpstrnsi): Use gen_cmp_1.
	(lwp_slwpcb): Use gen_lwp_slwpcb_1.
	(@lwp_slwpcb<mode>_1): Rename from lwp_slwpcb<mode>_1.
	(@umonitor_<mode>): Rename from umonitor_<mode>.
	* config/i386/i386-expand.c (ix86_expand_copysign):
	Use gen_copysign3_const and gen_copysign3_var.
	(ix86_expand_xorsign): Use gen_xorsign3_1.
	(ix86_expand_branch): Use gen_sub3_carry_ccc,
	gen_sub3_carry_ccgz and gen_cmp1.
	(ix86_expand_int_addcc): Use gen_sub3_carry and gen_add3_carry.
	(ix86_split_ashl): Use gen_x86_shift_adj_1 and gen_x86_shift_adj_2.
	(ix86_split_ashr): Use gen_x86_shift_adj_1 and gen_x86_shift_adj_3.
	(ix86_split_lshr): Ditto.
	(ix86_expand_builtin) <case IX86_BUILTIN_UMONITOR>: Use gen_umonitor.

From-SVN: r272432
This commit is contained in:
Uros Bizjak 2019-06-18 18:55:10 +02:00
parent d0aa42d276
commit 987a3082f1
3 changed files with 88 additions and 165 deletions

View File

@ -1,3 +1,30 @@
2019-06-18 Uroš Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (@cmp<mode>_1): Rename from cmp<mode>_1.
(@add<mode>3_carry): Rename from add<mode>3_carry.
(@sub<mode>3_carry_ccc): Rename from sub<mode>3_carry_ccc.
(@sub<mode>3_carry_ccgz): Rename form sub<mode>3_carry_ccgz.
(@copysign<mode>3_const): Rename from copysign<mode>3_const.
(@copysign<mode>3_var): Rename from copysign<mode>3_var.
(@xorsign<mode>3_1): Rename from xorsign<mode>3_1.
(@x86_shift<mode>_adj_1): Rename from x86_shift<mode>_adj_1.
(@x86_shift<mode>_adj_2): Rename from x86_shift<mode>_adj_2.
(@x86_shift<mode>_adj_3): Rename from x86_shift<mode>_adj_3.
(cmpstrnsi): Use gen_cmp_1.
(lwp_slwpcb): Use gen_lwp_slwpcb_1.
(@lwp_slwpcb<mode>_1): Rename from lwp_slwpcb<mode>_1.
(@umonitor_<mode>): Rename from umonitor_<mode>.
* config/i386/i386-expand.c (ix86_expand_copysign):
Use gen_copysign3_const and gen_copysign3_var.
(ix86_expand_xorsign): Use gen_xorsign3_1.
(ix86_expand_branch): Use gen_sub3_carry_ccc,
gen_sub3_carry_ccgz and gen_cmp1.
(ix86_expand_int_addcc): Use gen_sub3_carry and gen_add3_carry.
(ix86_split_ashl): Use gen_x86_shift_adj_1 and gen_x86_shift_adj_2.
(ix86_split_ashr): Use gen_x86_shift_adj_1 and gen_x86_shift_adj_3.
(ix86_split_lshr): Ditto.
(ix86_expand_builtin) <case IX86_BUILTIN_UMONITOR>: Use gen_umonitor.
2019-06-18 Jason Merrill <jason@redhat.com>
* tree.c (build_constructor): Add MEM_STAT_DECL.
@ -55,7 +82,8 @@
* config/nvptx/nvptx-protos.h (gen_set_softstack_insn): Remove.
* config/nvptx/nvptx.c (gen_set_softstack_insn): Remove.
* config/nvptx/nvptx.md (define_insn "set_softstack_<mode>"): Rename to ...
* config/nvptx/nvptx.md (define_insn "set_softstack_<mode>"):
Rename to ...
(define_insn "@set_softstack_<mode>"): ... this.
(define_insn "omp_simt_enter_<mode>"): Rename to ...
(define_insn "@omp_simt_enter_<mode>"): ... this.

View File

@ -1850,7 +1850,7 @@ void
ix86_expand_copysign (rtx operands[])
{
machine_mode mode, vmode;
rtx dest, op0, op1, mask, nmask;
rtx dest, op0, op1, mask;
dest = operands[0];
op0 = operands[1];
@ -1862,13 +1862,15 @@ ix86_expand_copysign (rtx operands[])
vmode = V4SFmode;
else if (mode == DFmode)
vmode = V2DFmode;
else
else if (mode == TFmode)
vmode = mode;
else
gcc_unreachable ();
mask = ix86_build_signbit_mask (vmode, 0, 0);
if (CONST_DOUBLE_P (op0))
{
rtx (*copysign_insn)(rtx, rtx, rtx, rtx);
if (real_isneg (CONST_DOUBLE_REAL_VALUE (op0)))
op0 = simplify_unary_operation (ABS, mode, op0, mode);
@ -1886,32 +1888,14 @@ ix86_expand_copysign (rtx operands[])
else if (op0 != CONST0_RTX (mode))
op0 = force_reg (mode, op0);
mask = ix86_build_signbit_mask (vmode, 0, 0);
if (mode == SFmode)
copysign_insn = gen_copysignsf3_const;
else if (mode == DFmode)
copysign_insn = gen_copysigndf3_const;
else
copysign_insn = gen_copysigntf3_const;
emit_insn (copysign_insn (dest, op0, op1, mask));
emit_insn (gen_copysign3_const (mode, dest, op0, op1, mask));
}
else
{
rtx (*copysign_insn)(rtx, rtx, rtx, rtx, rtx, rtx);
rtx nmask = ix86_build_signbit_mask (vmode, 0, 1);
nmask = ix86_build_signbit_mask (vmode, 0, 1);
mask = ix86_build_signbit_mask (vmode, 0, 0);
if (mode == SFmode)
copysign_insn = gen_copysignsf3_var;
else if (mode == DFmode)
copysign_insn = gen_copysigndf3_var;
else
copysign_insn = gen_copysigntf3_var;
emit_insn (copysign_insn (dest, NULL_RTX, op0, op1, nmask, mask));
emit_insn (gen_copysign3_var
(mode, dest, NULL_RTX, op0, op1, nmask, mask));
}
}
@ -2020,7 +2004,6 @@ ix86_split_copysign_var (rtx operands[])
void
ix86_expand_xorsign (rtx operands[])
{
rtx (*xorsign_insn)(rtx, rtx, rtx, rtx);
machine_mode mode, vmode;
rtx dest, op0, op1, mask;
@ -2031,21 +2014,15 @@ ix86_expand_xorsign (rtx operands[])
mode = GET_MODE (dest);
if (mode == SFmode)
{
xorsign_insn = gen_xorsignsf3_1;
vmode = V4SFmode;
}
vmode = V4SFmode;
else if (mode == DFmode)
{
xorsign_insn = gen_xorsigndf3_1;
vmode = V2DFmode;
}
vmode = V2DFmode;
else
gcc_unreachable ();
mask = ix86_build_signbit_mask (vmode, 0, 0);
emit_insn (xorsign_insn (dest, op0, op1, mask));
emit_insn (gen_xorsign3_1 (mode, dest, op0, op1, mask));
}
/* Deconstruct an xorsign operation into bit masks. */
@ -2224,22 +2201,9 @@ ix86_expand_branch (enum rtx_code code, rtx op0, rtx op1, rtx label)
case LT: case LTU: case GE: case GEU:
{
rtx (*cmp_insn) (rtx, rtx);
rtx (*sbb_insn) (rtx, rtx, rtx);
bool uns = (code == LTU || code == GEU);
if (TARGET_64BIT)
{
cmp_insn = gen_cmpdi_1;
sbb_insn
= uns ? gen_subdi3_carry_ccc : gen_subdi3_carry_ccgz;
}
else
{
cmp_insn = gen_cmpsi_1;
sbb_insn
= uns ? gen_subsi3_carry_ccc : gen_subsi3_carry_ccgz;
}
rtx (*sbb_insn) (machine_mode, rtx, rtx, rtx)
= uns ? gen_sub3_carry_ccc : gen_sub3_carry_ccgz;
if (!nonimmediate_operand (lo[0], submode))
lo[0] = force_reg (submode, lo[0]);
@ -2252,11 +2216,12 @@ ix86_expand_branch (enum rtx_code code, rtx op0, rtx op1, rtx label)
|| (!uns && !x86_64_general_operand (hi[1], submode)))
hi[1] = force_reg (submode, hi[1]);
emit_insn (cmp_insn (lo[0], lo[1]));
emit_insn (sbb_insn (gen_rtx_SCRATCH (submode), hi[0], hi[1]));
emit_insn (gen_cmp_1 (submode, lo[0], lo[1]));
tmp = gen_rtx_SCRATCH (submode);
emit_insn (sbb_insn (submode, tmp, hi[0], hi[1]));
tmp = gen_rtx_REG (uns ? CCCmode : CCGZmode, FLAGS_REG);
ix86_expand_branch (code, tmp, const0_rtx, label);
return;
}
@ -2848,7 +2813,7 @@ ix86_expand_int_addcc (rtx operands[])
{
enum rtx_code code = GET_CODE (operands[1]);
rtx flags;
rtx (*insn)(rtx, rtx, rtx, rtx, rtx);
rtx (*insn) (machine_mode, rtx, rtx, rtx, rtx, rtx);
rtx compare_op;
rtx val = const0_rtx;
bool fpcmp = false;
@ -2886,46 +2851,11 @@ ix86_expand_int_addcc (rtx operands[])
/* Construct either adc or sbb insn. */
if ((code == LTU) == (operands[3] == constm1_rtx))
{
switch (mode)
{
case E_QImode:
insn = gen_subqi3_carry;
break;
case E_HImode:
insn = gen_subhi3_carry;
break;
case E_SImode:
insn = gen_subsi3_carry;
break;
case E_DImode:
insn = gen_subdi3_carry;
break;
default:
gcc_unreachable ();
}
}
insn = gen_sub3_carry;
else
{
switch (mode)
{
case E_QImode:
insn = gen_addqi3_carry;
break;
case E_HImode:
insn = gen_addhi3_carry;
break;
case E_SImode:
insn = gen_addsi3_carry;
break;
case E_DImode:
insn = gen_adddi3_carry;
break;
default:
gcc_unreachable ();
}
}
emit_insn (insn (operands[0], operands[2], val, flags, compare_op));
insn = gen_add3_carry;
emit_insn (insn (mode, operands[0], operands[2], val, flags, compare_op));
return true;
}
@ -5571,6 +5501,7 @@ ix86_split_ashl (rtx *operands, rtx scratch, machine_mode mode)
rtx (*gen_ashl3)(rtx, rtx, rtx);
rtx (*gen_shld)(rtx, rtx, rtx);
int half_width = GET_MODE_BITSIZE (mode) >> 1;
machine_mode half_mode;
rtx low[2], high[2];
int count;
@ -5602,6 +5533,7 @@ ix86_split_ashl (rtx *operands, rtx scratch, machine_mode mode)
}
split_double_mode (mode, operands, 1, low, high);
half_mode = mode == DImode ? SImode : DImode;
gen_ashl3 = mode == DImode ? gen_ashlsi3 : gen_ashldi3;
@ -5635,7 +5567,6 @@ ix86_split_ashl (rtx *operands, rtx scratch, machine_mode mode)
pentium4 a bit; no one else seems to care much either way. */
else
{
machine_mode half_mode;
rtx (*gen_lshr3)(rtx, rtx, rtx);
rtx (*gen_and3)(rtx, rtx, rtx);
rtx (*gen_xor3)(rtx, rtx, rtx);
@ -5644,7 +5575,6 @@ ix86_split_ashl (rtx *operands, rtx scratch, machine_mode mode)
if (mode == DImode)
{
half_mode = SImode;
gen_lshr3 = gen_lshrsi3;
gen_and3 = gen_andsi3;
gen_xor3 = gen_xorsi3;
@ -5652,7 +5582,6 @@ ix86_split_ashl (rtx *operands, rtx scratch, machine_mode mode)
}
else
{
half_mode = DImode;
gen_lshr3 = gen_lshrdi3;
gen_and3 = gen_anddi3;
gen_xor3 = gen_xordi3;
@ -5701,19 +5630,12 @@ ix86_split_ashl (rtx *operands, rtx scratch, machine_mode mode)
if (TARGET_CMOVE && scratch)
{
rtx (*gen_x86_shift_adj_1)(rtx, rtx, rtx, rtx)
= mode == DImode ? gen_x86_shiftsi_adj_1 : gen_x86_shiftdi_adj_1;
ix86_expand_clear (scratch);
emit_insn (gen_x86_shift_adj_1 (high[0], low[0], operands[2], scratch));
emit_insn (gen_x86_shift_adj_1
(half_mode, high[0], low[0], operands[2], scratch));
}
else
{
rtx (*gen_x86_shift_adj_2)(rtx, rtx, rtx)
= mode == DImode ? gen_x86_shiftsi_adj_2 : gen_x86_shiftdi_adj_2;
emit_insn (gen_x86_shift_adj_2 (high[0], low[0], operands[2]));
}
emit_insn (gen_x86_shift_adj_2 (half_mode, high[0], low[0], operands[2]));
}
void
@ -5764,34 +5686,30 @@ ix86_split_ashr (rtx *operands, rtx scratch, machine_mode mode)
}
else
{
machine_mode half_mode;
gen_shrd = mode == DImode ? gen_x86_shrd : gen_x86_64_shrd;
if (!rtx_equal_p (operands[0], operands[1]))
emit_move_insn (operands[0], operands[1]);
split_double_mode (mode, operands, 1, low, high);
half_mode = mode == DImode ? SImode : DImode;
emit_insn (gen_shrd (low[0], high[0], operands[2]));
emit_insn (gen_ashr3 (high[0], high[0], operands[2]));
if (TARGET_CMOVE && scratch)
{
rtx (*gen_x86_shift_adj_1)(rtx, rtx, rtx, rtx)
= mode == DImode ? gen_x86_shiftsi_adj_1 : gen_x86_shiftdi_adj_1;
emit_move_insn (scratch, high[0]);
emit_insn (gen_ashr3 (scratch, scratch,
GEN_INT (half_width - 1)));
emit_insn (gen_x86_shift_adj_1 (low[0], high[0], operands[2],
scratch));
emit_insn (gen_x86_shift_adj_1
(half_mode, low[0], high[0], operands[2], scratch));
}
else
{
rtx (*gen_x86_shift_adj_3)(rtx, rtx, rtx)
= mode == DImode ? gen_x86_shiftsi_adj_3 : gen_x86_shiftdi_adj_3;
emit_insn (gen_x86_shift_adj_3 (low[0], high[0], operands[2]));
}
emit_insn (gen_x86_shift_adj_3
(half_mode, low[0], high[0], operands[2]));
}
}
@ -5833,32 +5751,28 @@ ix86_split_lshr (rtx *operands, rtx scratch, machine_mode mode)
}
else
{
machine_mode half_mode;
gen_shrd = mode == DImode ? gen_x86_shrd : gen_x86_64_shrd;
if (!rtx_equal_p (operands[0], operands[1]))
emit_move_insn (operands[0], operands[1]);
split_double_mode (mode, operands, 1, low, high);
half_mode = mode == DImode ? SImode : DImode;
emit_insn (gen_shrd (low[0], high[0], operands[2]));
emit_insn (gen_lshr3 (high[0], high[0], operands[2]));
if (TARGET_CMOVE && scratch)
{
rtx (*gen_x86_shift_adj_1)(rtx, rtx, rtx, rtx)
= mode == DImode ? gen_x86_shiftsi_adj_1 : gen_x86_shiftdi_adj_1;
ix86_expand_clear (scratch);
emit_insn (gen_x86_shift_adj_1 (low[0], high[0], operands[2],
scratch));
emit_insn (gen_x86_shift_adj_1
(half_mode, low[0], high[0], operands[2], scratch));
}
else
{
rtx (*gen_x86_shift_adj_2)(rtx, rtx, rtx)
= mode == DImode ? gen_x86_shiftsi_adj_2 : gen_x86_shiftdi_adj_2;
emit_insn (gen_x86_shift_adj_2 (low[0], high[0], operands[2]));
}
emit_insn (gen_x86_shift_adj_2
(half_mode, low[0], high[0], operands[2]));
}
}
@ -11293,12 +11207,7 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
op0 = expand_normal (arg0);
op0 = ix86_zero_extend_to_Pmode (op0);
insn = (TARGET_64BIT
? gen_umonitor_di (op0)
: gen_umonitor_si (op0));
emit_insn (insn);
emit_insn (gen_umonitor (Pmode, op0));
return 0;
case IX86_BUILTIN_UMWAIT:

View File

@ -1268,7 +1268,7 @@
DONE;
})
(define_expand "cmp<mode>_1"
(define_expand "@cmp<mode>_1"
[(set (reg:CC FLAGS_REG)
(compare:CC (match_operand:SWI48 0 "nonimmediate_operand")
(match_operand:SWI48 1 "<general_operand>")))])
@ -6503,7 +6503,7 @@
;; Add with carry and subtract with borrow
(define_insn "add<mode>3_carry"
(define_insn "@add<mode>3_carry"
[(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>")
(plus:SWI
(plus:SWI
@ -6665,7 +6665,7 @@
(set_attr "pent_pair" "pu")
(set_attr "mode" "SI")])
(define_insn "sub<mode>3_carry_ccc"
(define_insn "@sub<mode>3_carry_ccc"
[(set (reg:CCC FLAGS_REG)
(compare:CCC
(zero_extend:<DWI> (match_operand:DWIH 1 "register_operand" "0"))
@ -6699,7 +6699,7 @@
;; (compare (match_dup 1) (plus:DWIH (ltu:DWIH ...) (match_dup 2)))
;; result, the overflow flag likewise, but the overflow flag is also
;; set if the (plus:DWIH (ltu:DWIH ...) (match_dup 2)) overflows.
(define_insn "sub<mode>3_carry_ccgz"
(define_insn "@sub<mode>3_carry_ccgz"
[(set (reg:CCGZ FLAGS_REG)
(unspec:CCGZ [(match_operand:DWIH 1 "register_operand" "0")
(match_operand:DWIH 2 "x86_64_general_operand" "rme")
@ -9626,7 +9626,7 @@
|| (TARGET_SSE && (<MODE>mode == TFmode))"
"ix86_expand_copysign (operands); DONE;")
(define_insn_and_split "copysign<mode>3_const"
(define_insn_and_split "@copysign<mode>3_const"
[(set (match_operand:SSEMODEF 0 "register_operand" "=Yv")
(unspec:SSEMODEF
[(match_operand:<ssevecmodef> 1 "nonimm_or_0_operand" "YvmC")
@ -9640,7 +9640,7 @@
[(const_int 0)]
"ix86_split_copysign_const (operands); DONE;")
(define_insn "copysign<mode>3_var"
(define_insn "@copysign<mode>3_var"
[(set (match_operand:SSEMODEF 0 "register_operand" "=Yv,Yv,Yv,Yv,Yv")
(unspec:SSEMODEF
[(match_operand:SSEMODEF 2 "register_operand" "Yv,0,0,Yv,Yv")
@ -9677,7 +9677,7 @@
"SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH"
"ix86_expand_xorsign (operands); DONE;")
(define_insn_and_split "xorsign<mode>3_1"
(define_insn_and_split "@xorsign<mode>3_1"
[(set (match_operand:MODEF 0 "register_operand" "=Yv")
(unspec:MODEF
[(match_operand:MODEF 1 "register_operand" "Yv")
@ -9977,7 +9977,7 @@
(set_attr "amdfam10_decode" "vector")
(set_attr "bdver1_decode" "vector")])
(define_expand "x86_shift<mode>_adj_1"
(define_expand "@x86_shift<mode>_adj_1"
[(set (reg:CCZ FLAGS_REG)
(compare:CCZ (and:QI (match_operand:QI 2 "register_operand")
(match_dup 4))
@ -9993,7 +9993,7 @@
"TARGET_CMOVE"
"operands[4] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode));")
(define_expand "x86_shift<mode>_adj_2"
(define_expand "@x86_shift<mode>_adj_2"
[(use (match_operand:SWI48 0 "register_operand"))
(use (match_operand:SWI48 1 "register_operand"))
(use (match_operand:QI 2 "register_operand"))]
@ -10773,7 +10773,7 @@
(set_attr "modrm" "0,1")
(set_attr "mode" "SI")])
(define_expand "x86_shift<mode>_adj_3"
(define_expand "@x86_shift<mode>_adj_3"
[(use (match_operand:SWI48 0 "register_operand"))
(use (match_operand:SWI48 1 "register_operand"))
(use (match_operand:QI 2 "register_operand"))]
@ -17059,12 +17059,7 @@
}
else
{
rtx (*gen_cmp) (rtx, rtx);
gen_cmp = (TARGET_64BIT
? gen_cmpdi_1 : gen_cmpsi_1);
emit_insn (gen_cmp (countreg, countreg));
emit_insn (gen_cmp_1 (Pmode, countreg, countreg));
emit_insn (gen_cmpstrnqi_1 (addr1, addr2, countreg, align,
operands[1], operands[2]));
}
@ -19819,7 +19814,7 @@
UNSPECV_LLWP_INTRINSIC)]
"TARGET_LWP")
(define_insn "*lwp_llwpcb<mode>1"
(define_insn "*lwp_llwpcb<mode>_1"
[(unspec_volatile [(match_operand:P 0 "register_operand" "r")]
UNSPECV_LLWP_INTRINSIC)]
"TARGET_LWP"
@ -19832,18 +19827,9 @@
[(set (match_operand 0 "register_operand")
(unspec_volatile [(const_int 0)] UNSPECV_SLWP_INTRINSIC))]
"TARGET_LWP"
{
rtx (*insn)(rtx);
"emit_insn (gen_lwp_slwpcb_1 (Pmode, operands[0])); DONE;")
insn = (Pmode == DImode
? gen_lwp_slwpcbdi
: gen_lwp_slwpcbsi);
emit_insn (insn (operands[0]));
DONE;
})
(define_insn "lwp_slwpcb<mode>"
(define_insn "@lwp_slwpcb<mode>_1"
[(set (match_operand:P 0 "register_operand" "=r")
(unspec_volatile:P [(const_int 0)] UNSPECV_SLWP_INTRINSIC))]
"TARGET_LWP"
@ -20305,7 +20291,7 @@
"umwait\t%0"
[(set_attr "length" "3")])
(define_insn "umonitor_<mode>"
(define_insn "@umonitor_<mode>"
[(unspec_volatile [(match_operand:P 0 "register_operand" "r")]
UNSPECV_UMONITOR)]
"TARGET_WAITPKG"