Commit eda328bf by Pat Haugen Committed by Pat Haugen

rs6000.md ('type' attribute): Add htmsimple/dfp types.

	* config/rs6000/rs6000.md ('type' attribute): Add htmsimple/dfp types.
	('size' attribute): Add '128'.
	Include power9.md.
	(*mov<mode>_hardfloat32, *mov<mode>_hardfloat64, *movdi_internal32,
	*movdi_internal64, *movdf_update1): Set size attribute to '64'.
	(add<mode>3, sub<mode>3, mul<mode>3, div<mode>3, sqrt<mode>2,
	copysign<mode>3, neg<mode>2_hw, abs<mode>2_hw, *nabs<mode>2_hw,
	*fma<mode>4_hw, *fms<mode>4_hw, *nfma<mode>4_hw, *nfms<mode>4_hw,
	extend<SFDF:mode><IEEE128:mode>2_hw, trunc<mode>df2_hw,
	*xscvqp<su>wz_<mode>, *xscvqp<su>dz_<mode>, *xscv<su>dqp_<mode>,
	*trunc<mode>df2_odd): Set size attribute to '128'.
	(*cmp<mode>_hw): Change type to veccmp and set size attribute to '128'.
	* config/rs6000/power6.md (power6-fp): Include dfp type.
	* config/rs6000/power7.md (power7-fp): Likewise.
	* config/rs6000/power8.md (power8-fp): Likewise.
	* config/rs6000/power9.md: New file.
	* config/rs6000/t-rs6000 (MD_INCLUDES): Add power9.md.
	* config/rs6000/htm.md (*tabort, *tabort<wd>c, *tabort<wd>ci,
	*trechkpt, *treclaim, *tsr, *ttest): Change type attribute to
	htmsimple.
	* config/rs6000/dfp.md (extendsddd2, truncddsd2, extendddtd2,
	trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
	divtd3, *cmpdd_internal1, *cmptd_internal1, floatdidd2, floatditd2,
	ftruncdd2, fixdddi2, ftrunctd2, fixtddi2, dfp_ddedpd_<mode>,
	dfp_denbcd_<mode>, dfp_dxex_<mode>, dfp_diex_<mode>, dfp_dscli_<mode>,
	dfp_dscri_<mode>): Change type attribute to dfp.
	* config/rs6000/crypto.md (crypto_vshasigma<CR_char>): Change type
	attribute to vecsimple.
	* config/rs6000/rs6000.c (power9_cost): Update costs, cache size
	and prefetch streams.
	(rs6000_option_override_internal): Remove temporary code setting
	tuning to power8.  Don't set rs6000_sched_groups for power9.
	(last_scheduled_insn): Change to rtx_insn *.
	(divide_cnt, vec_load_pendulum): New variables.
	(rs6000_adjust_cost): Add Power9 to test for store->load separation.
	(rs6000_issue_rate): Set issue rate for Power9.
	(is_power9_pairable_vec_type): New.
	(power9_sched_reorder2): New.
	(rs6000_sched_reorder2): Call new function for Power9 specific
	reordering.
	(insn_must_be_first_in_group): Remove Power9.
	(insn_must_be_last_in_group): Likewise.
	(force_new_group): Likewise.
	(rs6000_sched_init): Fix initialization of last_scheduled_insn.
	Initialize divide_cnt/vec_load_pendulum.
	(_rs6000_sched_context, rs6000_init_sched_context,
	rs6000_set_sched_context): Handle context save/restore of new
	variables.

From-SVN: r237820
parent 7d4cdbd4
2016-06-28 Pat Haugen <pthaugen@us.ibm.com>
* config/rs6000/rs6000.md ('type' attribute): Add htmsimple/dfp types.
('size' attribute): Add '128'.
Include power9.md.
(*mov<mode>_hardfloat32, *mov<mode>_hardfloat64, *movdi_internal32,
*movdi_internal64, *movdf_update1): Set size attribute to '64'.
(add<mode>3, sub<mode>3, mul<mode>3, div<mode>3, sqrt<mode>2,
copysign<mode>3, neg<mode>2_hw, abs<mode>2_hw, *nabs<mode>2_hw,
*fma<mode>4_hw, *fms<mode>4_hw, *nfma<mode>4_hw, *nfms<mode>4_hw,
extend<SFDF:mode><IEEE128:mode>2_hw, trunc<mode>df2_hw,
*xscvqp<su>wz_<mode>, *xscvqp<su>dz_<mode>, *xscv<su>dqp_<mode>,
*trunc<mode>df2_odd): Set size attribute to '128'.
(*cmp<mode>_hw): Change type to veccmp and set size attribute to '128'.
* config/rs6000/power6.md (power6-fp): Include dfp type.
* config/rs6000/power7.md (power7-fp): Likewise.
* config/rs6000/power8.md (power8-fp): Likewise.
* config/rs6000/power9.md: New file.
* config/rs6000/t-rs6000 (MD_INCLUDES): Add power9.md.
* config/rs6000/htm.md (*tabort, *tabort<wd>c, *tabort<wd>ci,
*trechkpt, *treclaim, *tsr, *ttest): Change type attribute to
htmsimple.
* config/rs6000/dfp.md (extendsddd2, truncddsd2, extendddtd2,
trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
divtd3, *cmpdd_internal1, *cmptd_internal1, floatdidd2, floatditd2,
ftruncdd2, fixdddi2, ftrunctd2, fixtddi2, dfp_ddedpd_<mode>,
dfp_denbcd_<mode>, dfp_dxex_<mode>, dfp_diex_<mode>, dfp_dscli_<mode>,
dfp_dscri_<mode>): Change type attribute to dfp.
* config/rs6000/crypto.md (crypto_vshasigma<CR_char>): Change type
attribute to vecsimple.
* config/rs6000/rs6000.c (power9_cost): Update costs, cache size
and prefetch streams.
(rs6000_option_override_internal): Remove temporary code setting
tuning to power8. Don't set rs6000_sched_groups for power9.
(last_scheduled_insn): Change to rtx_insn *.
(divide_cnt, vec_load_pendulum): New variables.
(rs6000_adjust_cost): Add Power9 to test for store->load separation.
(rs6000_issue_rate): Set issue rate for Power9.
(is_power9_pairable_vec_type): New.
(power9_sched_reorder2): New.
(rs6000_sched_reorder2): Call new function for Power9 specific
reordering.
(insn_must_be_first_in_group): Remove Power9.
(insn_must_be_last_in_group): Likewise.
(force_new_group): Likewise.
(rs6000_sched_init): Fix initialization of last_scheduled_insn.
Initialize divide_cnt/vec_load_pendulum.
(_rs6000_sched_context, rs6000_init_sched_context,
rs6000_set_sched_context): Handle context save/restore of new
variables.
2016-06-28 Richard Biener <rguenther@suse.de> 2016-06-28 Richard Biener <rguenther@suse.de>
* tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p): * tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p):
......
...@@ -107,4 +107,4 @@ ...@@ -107,4 +107,4 @@
UNSPEC_VSHASIGMA))] UNSPEC_VSHASIGMA))]
"TARGET_CRYPTO" "TARGET_CRYPTO"
"vshasigma<CR_char> %0,%1,%2,%3" "vshasigma<CR_char> %0,%1,%2,%3"
[(set_attr "type" "crypto")]) [(set_attr "type" "vecsimple")])
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
(float_extend:DD (match_operand:SD 1 "gpc_reg_operand" "f")))] (float_extend:DD (match_operand:SD 1 "gpc_reg_operand" "f")))]
"TARGET_DFP" "TARGET_DFP"
"dctdp %0,%1" "dctdp %0,%1"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_expand "extendsdtd2" (define_expand "extendsdtd2"
[(set (match_operand:TD 0 "gpc_reg_operand" "=d") [(set (match_operand:TD 0 "gpc_reg_operand" "=d")
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
(float_truncate:SD (match_operand:DD 1 "gpc_reg_operand" "d")))] (float_truncate:SD (match_operand:DD 1 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"drsp %0,%1" "drsp %0,%1"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_expand "negdd2" (define_expand "negdd2"
[(set (match_operand:DD 0 "gpc_reg_operand" "") [(set (match_operand:DD 0 "gpc_reg_operand" "")
...@@ -160,7 +160,7 @@ ...@@ -160,7 +160,7 @@
(float_extend:TD (match_operand:DD 1 "gpc_reg_operand" "d")))] (float_extend:TD (match_operand:DD 1 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"dctqpq %0,%1" "dctqpq %0,%1"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
;; The result of drdpq is an even/odd register pair with the converted ;; The result of drdpq is an even/odd register pair with the converted
;; value in the even register and zero in the odd register. ;; value in the even register and zero in the odd register.
...@@ -173,7 +173,7 @@ ...@@ -173,7 +173,7 @@
(clobber (match_scratch:TD 2 "=d"))] (clobber (match_scratch:TD 2 "=d"))]
"TARGET_DFP" "TARGET_DFP"
"drdpq %2,%1\;fmr %0,%2" "drdpq %2,%1\;fmr %0,%2"
[(set_attr "type" "fp") [(set_attr "type" "dfp")
(set_attr "length" "8")]) (set_attr "length" "8")])
(define_insn "adddd3" (define_insn "adddd3"
...@@ -182,7 +182,7 @@ ...@@ -182,7 +182,7 @@
(match_operand:DD 2 "gpc_reg_operand" "d")))] (match_operand:DD 2 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"dadd %0,%1,%2" "dadd %0,%1,%2"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_insn "addtd3" (define_insn "addtd3"
[(set (match_operand:TD 0 "gpc_reg_operand" "=d") [(set (match_operand:TD 0 "gpc_reg_operand" "=d")
...@@ -190,7 +190,7 @@ ...@@ -190,7 +190,7 @@
(match_operand:TD 2 "gpc_reg_operand" "d")))] (match_operand:TD 2 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"daddq %0,%1,%2" "daddq %0,%1,%2"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_insn "subdd3" (define_insn "subdd3"
[(set (match_operand:DD 0 "gpc_reg_operand" "=d") [(set (match_operand:DD 0 "gpc_reg_operand" "=d")
...@@ -198,7 +198,7 @@ ...@@ -198,7 +198,7 @@
(match_operand:DD 2 "gpc_reg_operand" "d")))] (match_operand:DD 2 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"dsub %0,%1,%2" "dsub %0,%1,%2"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_insn "subtd3" (define_insn "subtd3"
[(set (match_operand:TD 0 "gpc_reg_operand" "=d") [(set (match_operand:TD 0 "gpc_reg_operand" "=d")
...@@ -206,7 +206,7 @@ ...@@ -206,7 +206,7 @@
(match_operand:TD 2 "gpc_reg_operand" "d")))] (match_operand:TD 2 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"dsubq %0,%1,%2" "dsubq %0,%1,%2"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_insn "muldd3" (define_insn "muldd3"
[(set (match_operand:DD 0 "gpc_reg_operand" "=d") [(set (match_operand:DD 0 "gpc_reg_operand" "=d")
...@@ -214,7 +214,7 @@ ...@@ -214,7 +214,7 @@
(match_operand:DD 2 "gpc_reg_operand" "d")))] (match_operand:DD 2 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"dmul %0,%1,%2" "dmul %0,%1,%2"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_insn "multd3" (define_insn "multd3"
[(set (match_operand:TD 0 "gpc_reg_operand" "=d") [(set (match_operand:TD 0 "gpc_reg_operand" "=d")
...@@ -222,7 +222,7 @@ ...@@ -222,7 +222,7 @@
(match_operand:TD 2 "gpc_reg_operand" "d")))] (match_operand:TD 2 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"dmulq %0,%1,%2" "dmulq %0,%1,%2"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_insn "divdd3" (define_insn "divdd3"
[(set (match_operand:DD 0 "gpc_reg_operand" "=d") [(set (match_operand:DD 0 "gpc_reg_operand" "=d")
...@@ -230,7 +230,7 @@ ...@@ -230,7 +230,7 @@
(match_operand:DD 2 "gpc_reg_operand" "d")))] (match_operand:DD 2 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"ddiv %0,%1,%2" "ddiv %0,%1,%2"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_insn "divtd3" (define_insn "divtd3"
[(set (match_operand:TD 0 "gpc_reg_operand" "=d") [(set (match_operand:TD 0 "gpc_reg_operand" "=d")
...@@ -238,7 +238,7 @@ ...@@ -238,7 +238,7 @@
(match_operand:TD 2 "gpc_reg_operand" "d")))] (match_operand:TD 2 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"ddivq %0,%1,%2" "ddivq %0,%1,%2"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_insn "*cmpdd_internal1" (define_insn "*cmpdd_internal1"
[(set (match_operand:CCFP 0 "cc_reg_operand" "=y") [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
...@@ -246,7 +246,7 @@ ...@@ -246,7 +246,7 @@
(match_operand:DD 2 "gpc_reg_operand" "d")))] (match_operand:DD 2 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"dcmpu %0,%1,%2" "dcmpu %0,%1,%2"
[(set_attr "type" "fpcompare")]) [(set_attr "type" "dfp")])
(define_insn "*cmptd_internal1" (define_insn "*cmptd_internal1"
[(set (match_operand:CCFP 0 "cc_reg_operand" "=y") [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
...@@ -254,21 +254,21 @@ ...@@ -254,21 +254,21 @@
(match_operand:TD 2 "gpc_reg_operand" "d")))] (match_operand:TD 2 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"dcmpuq %0,%1,%2" "dcmpuq %0,%1,%2"
[(set_attr "type" "fpcompare")]) [(set_attr "type" "dfp")])
(define_insn "floatdidd2" (define_insn "floatdidd2"
[(set (match_operand:DD 0 "gpc_reg_operand" "=d") [(set (match_operand:DD 0 "gpc_reg_operand" "=d")
(float:DD (match_operand:DI 1 "gpc_reg_operand" "d")))] (float:DD (match_operand:DI 1 "gpc_reg_operand" "d")))]
"TARGET_DFP && TARGET_POPCNTD" "TARGET_DFP && TARGET_POPCNTD"
"dcffix %0,%1" "dcffix %0,%1"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_insn "floatditd2" (define_insn "floatditd2"
[(set (match_operand:TD 0 "gpc_reg_operand" "=d") [(set (match_operand:TD 0 "gpc_reg_operand" "=d")
(float:TD (match_operand:DI 1 "gpc_reg_operand" "d")))] (float:TD (match_operand:DI 1 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"dcffixq %0,%1" "dcffixq %0,%1"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
;; Convert a decimal64 to a decimal64 whose value is an integer. ;; Convert a decimal64 to a decimal64 whose value is an integer.
;; This is the first stage of converting it to an integer type. ;; This is the first stage of converting it to an integer type.
...@@ -278,7 +278,7 @@ ...@@ -278,7 +278,7 @@
(fix:DD (match_operand:DD 1 "gpc_reg_operand" "d")))] (fix:DD (match_operand:DD 1 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"drintn. 0,%0,%1,1" "drintn. 0,%0,%1,1"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
;; Convert a decimal64 whose value is an integer to an actual integer. ;; Convert a decimal64 whose value is an integer to an actual integer.
;; This is the second stage of converting decimal float to integer type. ;; This is the second stage of converting decimal float to integer type.
...@@ -288,7 +288,7 @@ ...@@ -288,7 +288,7 @@
(fix:DI (match_operand:DD 1 "gpc_reg_operand" "d")))] (fix:DI (match_operand:DD 1 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"dctfix %0,%1" "dctfix %0,%1"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
;; Convert a decimal128 to a decimal128 whose value is an integer. ;; Convert a decimal128 to a decimal128 whose value is an integer.
;; This is the first stage of converting it to an integer type. ;; This is the first stage of converting it to an integer type.
...@@ -298,7 +298,7 @@ ...@@ -298,7 +298,7 @@
(fix:TD (match_operand:TD 1 "gpc_reg_operand" "d")))] (fix:TD (match_operand:TD 1 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"drintnq. 0,%0,%1,1" "drintnq. 0,%0,%1,1"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
;; Convert a decimal128 whose value is an integer to an actual integer. ;; Convert a decimal128 whose value is an integer to an actual integer.
;; This is the second stage of converting decimal float to integer type. ;; This is the second stage of converting decimal float to integer type.
...@@ -308,7 +308,7 @@ ...@@ -308,7 +308,7 @@
(fix:DI (match_operand:TD 1 "gpc_reg_operand" "d")))] (fix:DI (match_operand:TD 1 "gpc_reg_operand" "d")))]
"TARGET_DFP" "TARGET_DFP"
"dctfixq %0,%1" "dctfixq %0,%1"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
;; Decimal builtin support ;; Decimal builtin support
...@@ -333,7 +333,7 @@ ...@@ -333,7 +333,7 @@
UNSPEC_DDEDPD))] UNSPEC_DDEDPD))]
"TARGET_DFP" "TARGET_DFP"
"ddedpd<dfp_suffix> %1,%0,%2" "ddedpd<dfp_suffix> %1,%0,%2"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_insn "dfp_denbcd_<mode>" (define_insn "dfp_denbcd_<mode>"
[(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d") [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
...@@ -342,7 +342,7 @@ ...@@ -342,7 +342,7 @@
UNSPEC_DENBCD))] UNSPEC_DENBCD))]
"TARGET_DFP" "TARGET_DFP"
"denbcd<dfp_suffix> %1,%0,%2" "denbcd<dfp_suffix> %1,%0,%2"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_insn "dfp_dxex_<mode>" (define_insn "dfp_dxex_<mode>"
[(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d") [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
...@@ -350,7 +350,7 @@ ...@@ -350,7 +350,7 @@
UNSPEC_DXEX))] UNSPEC_DXEX))]
"TARGET_DFP" "TARGET_DFP"
"dxex<dfp_suffix> %0,%1" "dxex<dfp_suffix> %0,%1"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_insn "dfp_diex_<mode>" (define_insn "dfp_diex_<mode>"
[(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d") [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
...@@ -359,7 +359,7 @@ ...@@ -359,7 +359,7 @@
UNSPEC_DXEX))] UNSPEC_DXEX))]
"TARGET_DFP" "TARGET_DFP"
"diex<dfp_suffix> %0,%1,%2" "diex<dfp_suffix> %0,%1,%2"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_insn "dfp_dscli_<mode>" (define_insn "dfp_dscli_<mode>"
[(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d") [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
...@@ -368,7 +368,7 @@ ...@@ -368,7 +368,7 @@
UNSPEC_DSCLI))] UNSPEC_DSCLI))]
"TARGET_DFP" "TARGET_DFP"
"dscli<dfp_suffix> %0,%1,%2" "dscli<dfp_suffix> %0,%1,%2"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
(define_insn "dfp_dscri_<mode>" (define_insn "dfp_dscri_<mode>"
[(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d") [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
...@@ -377,4 +377,4 @@ ...@@ -377,4 +377,4 @@
UNSPEC_DSCRI))] UNSPEC_DSCRI))]
"TARGET_DFP" "TARGET_DFP"
"dscri<dfp_suffix> %0,%1,%2" "dscri<dfp_suffix> %0,%1,%2"
[(set_attr "type" "fp")]) [(set_attr "type" "dfp")])
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
(set (match_operand:BLK 2) (unspec:BLK [(match_dup 2)] UNSPEC_HTM_FENCE))] (set (match_operand:BLK 2) (unspec:BLK [(match_dup 2)] UNSPEC_HTM_FENCE))]
"TARGET_HTM" "TARGET_HTM"
"tabort. %0" "tabort. %0"
[(set_attr "type" "htm") [(set_attr "type" "htmsimple")
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_expand "tabort<wd>c" (define_expand "tabort<wd>c"
...@@ -98,7 +98,7 @@ ...@@ -98,7 +98,7 @@
(set (match_operand:BLK 4) (unspec:BLK [(match_dup 4)] UNSPEC_HTM_FENCE))] (set (match_operand:BLK 4) (unspec:BLK [(match_dup 4)] UNSPEC_HTM_FENCE))]
"TARGET_HTM" "TARGET_HTM"
"tabort<wd>c. %0,%1,%2" "tabort<wd>c. %0,%1,%2"
[(set_attr "type" "htm") [(set_attr "type" "htmsimple")
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_expand "tabort<wd>ci" (define_expand "tabort<wd>ci"
...@@ -124,7 +124,7 @@ ...@@ -124,7 +124,7 @@
(set (match_operand:BLK 4) (unspec:BLK [(match_dup 4)] UNSPEC_HTM_FENCE))] (set (match_operand:BLK 4) (unspec:BLK [(match_dup 4)] UNSPEC_HTM_FENCE))]
"TARGET_HTM" "TARGET_HTM"
"tabort<wd>ci. %0,%1,%2" "tabort<wd>ci. %0,%1,%2"
[(set_attr "type" "htm") [(set_attr "type" "htmsimple")
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_expand "tbegin" (define_expand "tbegin"
...@@ -208,7 +208,7 @@ ...@@ -208,7 +208,7 @@
(set (match_operand:BLK 1) (unspec:BLK [(match_dup 1)] UNSPEC_HTM_FENCE))] (set (match_operand:BLK 1) (unspec:BLK [(match_dup 1)] UNSPEC_HTM_FENCE))]
"TARGET_HTM" "TARGET_HTM"
"trechkpt." "trechkpt."
[(set_attr "type" "htm") [(set_attr "type" "htmsimple")
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_expand "treclaim" (define_expand "treclaim"
...@@ -230,7 +230,7 @@ ...@@ -230,7 +230,7 @@
(set (match_operand:BLK 2) (unspec:BLK [(match_dup 2)] UNSPEC_HTM_FENCE))] (set (match_operand:BLK 2) (unspec:BLK [(match_dup 2)] UNSPEC_HTM_FENCE))]
"TARGET_HTM" "TARGET_HTM"
"treclaim. %0" "treclaim. %0"
[(set_attr "type" "htm") [(set_attr "type" "htmsimple")
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_expand "tsr" (define_expand "tsr"
...@@ -252,7 +252,7 @@ ...@@ -252,7 +252,7 @@
(set (match_operand:BLK 2) (unspec:BLK [(match_dup 2)] UNSPEC_HTM_FENCE))] (set (match_operand:BLK 2) (unspec:BLK [(match_dup 2)] UNSPEC_HTM_FENCE))]
"TARGET_HTM" "TARGET_HTM"
"tsr. %0" "tsr. %0"
[(set_attr "type" "htm") [(set_attr "type" "htmsimple")
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_expand "ttest" (define_expand "ttest"
...@@ -272,7 +272,7 @@ ...@@ -272,7 +272,7 @@
(set (match_operand:BLK 1) (unspec:BLK [(match_dup 1)] UNSPEC_HTM_FENCE))] (set (match_operand:BLK 1) (unspec:BLK [(match_dup 1)] UNSPEC_HTM_FENCE))]
"TARGET_HTM" "TARGET_HTM"
"tabortwci. 0,1,0" "tabortwci. 0,1,0"
[(set_attr "type" "htm") [(set_attr "type" "htmsimple")
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_insn "htm_mfspr_<mode>" (define_insn "htm_mfspr_<mode>"
......
...@@ -500,7 +500,7 @@ ...@@ -500,7 +500,7 @@
(define_bypass 9 "power6-mtcr" "power6-branch") (define_bypass 9 "power6-mtcr" "power6-branch")
(define_insn_reservation "power6-fp" 6 (define_insn_reservation "power6-fp" 6
(and (eq_attr "type" "fp,fpsimple,dmul") (and (eq_attr "type" "fp,fpsimple,dmul,dfp")
(eq_attr "cpu" "power6")) (eq_attr "cpu" "power6"))
"FPU_power6") "FPU_power6")
......
...@@ -292,7 +292,7 @@ ...@@ -292,7 +292,7 @@
; VS Unit (includes FP/VSX/VMX/DFP) ; VS Unit (includes FP/VSX/VMX/DFP)
(define_insn_reservation "power7-fp" 6 (define_insn_reservation "power7-fp" 6
(and (eq_attr "type" "fp,fpsimple,dmul") (and (eq_attr "type" "fp,fpsimple,dmul,dfp")
(eq_attr "cpu" "power7")) (eq_attr "cpu" "power7"))
"DU_power7,VSU_power7") "DU_power7,VSU_power7")
......
...@@ -317,7 +317,7 @@ ...@@ -317,7 +317,7 @@
; VS Unit (includes FP/VSX/VMX/DFP/Crypto) ; VS Unit (includes FP/VSX/VMX/DFP/Crypto)
(define_insn_reservation "power8-fp" 6 (define_insn_reservation "power8-fp" 6
(and (eq_attr "type" "fp,fpsimple,dmul") (and (eq_attr "type" "fp,fpsimple,dmul,dfp")
(eq_attr "cpu" "power8")) (eq_attr "cpu" "power8"))
"DU_any_power8,VSU_power8") "DU_any_power8,VSU_power8")
......
...@@ -50,6 +50,7 @@ MD_INCLUDES = $(srcdir)/config/rs6000/rs64.md \ ...@@ -50,6 +50,7 @@ MD_INCLUDES = $(srcdir)/config/rs6000/rs64.md \
$(srcdir)/config/rs6000/power6.md \ $(srcdir)/config/rs6000/power6.md \
$(srcdir)/config/rs6000/power7.md \ $(srcdir)/config/rs6000/power7.md \
$(srcdir)/config/rs6000/power8.md \ $(srcdir)/config/rs6000/power8.md \
$(srcdir)/config/rs6000/power9.md \
$(srcdir)/config/rs6000/cell.md \ $(srcdir)/config/rs6000/cell.md \
$(srcdir)/config/rs6000/xfpu.md \ $(srcdir)/config/rs6000/xfpu.md \
$(srcdir)/config/rs6000/a2.md \ $(srcdir)/config/rs6000/a2.md \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment