aboutsummaryrefslogtreecommitdiff
path: root/gcc/ChangeLog.meissner
blob: 596f33629868c17dae6569923e3d393cfa467f1e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
2018-10-30  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/predicates.md (easy_fp_direct_move_constant):
	Allow SFmode constants once again.
	* config/rs6000/rs6000.md (movsf_const_direct_move): Allow SFmode
	constants, but only allow targetting a VSX register.
	(movsf_const_mem): Add combiner pattern to store constants in
	memory.
	(movsf_const_mem2): Likewise.

2018-10-30  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/predicates.md (easy_fp_direct_move_constant):
	Disable SFmode constants.
	* config/rs6000/rs6000.md (movsf_const_direct_move): Likewise.

2018-10-30  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/rs6000.md (UNSPEC_SF_CONST_MEM): New unspecs.
	(UNSPEC_SF_CONST_GPR): Likewise.
	(movsf_const_direct_move): Rework yet again, don't alais results,
	use helper functions instead.
	(movsf_const_mem): Likewise.
	(movsf_const_gpr): Likewise.

2018-10-28  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/rs6000.c (rs6000_emit_move): Don't bother testing
	if the destination of moving a SFmode constant is not a GPR.
	* config/rs6000/rs6000.md (movsf_const_direct_move): Churn, churn,
	churn.  Combine vsx, gpr, memory cases.

2018-10-28  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/predicates.md (easy_fp_direct_move_constant): Use
	TARGET_DIRECT_MOVE_FP_CONSTANT.
	* config/rs6000/rs6000.h (TARGET_DIRECT_MOVE_FP_CONSTANT): New
	macro to say whether we should optimize loading up floating point
	constants by loading them in the GPRs and using direct move to
	transfer them over.
	* config/rs6000/rs6000.md (UNSPEC_SF_CONSTANT_VSX): Delete.
	(movsf_const_direct_move): Use TARGET_DIRECT_MOVE_FP_CONSTANT.
	Use p8_mtvsrd_sf to do the direct move.
	(movsf_const_internal): Delete, no longer used.

2018-10-28  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/rs6000.md (UNSPEC_SF_CONSTANT_MEM): Delete.
	(movsf_const_direct_move): Rework again, and move before movsf.
	(movsf_const_internal): Likewise.

2018-10-28  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/rs6000.md (UNSPEC_SF_CONSTANT): Split into 2
	separate unspecs.
	(UNSPEC_SF_CONSTANT_VSX): Likewise.
	(UNSPEC_SF_CONSTANT_MEM): Likewise.
	(movsf_const_direct_move): Go back to just handling VSX
	registers.  Change UNSPEC.
	(movsf_const_internal1): Likewise.
	(movsf_const_memory): Rework optimizing storing constant to
	memory.
	(movsf_const_internal2): Likewise.

2018-10-28  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/rs6000.md (movsf_const_direct_move): Rework move
	to GPR and memory.
	(movsf_const_internal1): Likewise.
	(movsf_const_internal2): Likewise.

2018-10-28  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/rs6000.md (movsf_const_direct_move): Re-add
	support for loading up GPRs.  Add support for storing constants to
	memory.
	(movsf_const_direct_move_internal): Likewise.
	(movsf_const_store): Delete, folded into the above functions.

2018-10-27  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/rs6000.md (movsf_const_direct_move): Delete
	loading up GPRs.

2018-10-27  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/rs6000.md (UNSPEC_SF_CONSTANT): New unspec for
	moving SFmode constants from GPRs to VSX registers.
	(movsf constant splitter): Use int_reg_operand.
	(movsf_hardfloat): Don't allow moving SFmode constants that are
	generated in the GPR registers to be used in the general move.
	(movsf_const_direct_move): Rework.
	(movsf_const_direct_move_internal): New insn to move SFmode
	constants from GPRs to VSX registers after splitting.
	(movsf_const_store): Optimize creating a SFmode constant and
	storing it not to move the constant to the VSX registers.

2018-10-26  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/rs6000.md (movsf_const_direct_move): Always
	allocate a scratch register due to loop unrolling where things
	might move between the GPR registers and VSX registers in the
	later stages.

2018-10-26  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/predicates.md (easy_fp_direct_move_constant): Add
	support for SFmode.
	* config/rs6000/rs6000.c (rs6000_emit_move): Add support to load
	up SFmode values into a GPR and moving them to a either a VSX
	register using the double format or a GPR register using the
	single format.
	* config/rs6000/rs6000.md (movsf_const_direct_move): Likewise.

2018-10-26  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/constraints.md (wG constraint): New constraint for
	floating point constants that can be loaded quickly in a GPR and
	transfered over to a vector register quickly.
	* config/rs6000/predicates.md (easy_fp_direct_move_constant): New
	predicate to determine which constants can be loaded without
	loading them from memory.
	(easy_fp_constant): If easy_fp_mtvsrd_constant is true, the
	constant is easy.
	* config/rs6000/rs6000.md (movdf constant splitter): Use
	int_reg_operand instead of extra code to make sure we are
	splitting loading up constants to GPRs.
	(mov<mode>_hardfloat64): Add support for loading FP constants into
	GPRs and using direct move to move them over.
	* doc/md.texi (PowerPC constraints): Document wG constraint.

2018-10-26   Michael Meissner  <meissner@linux.ibm.com>

	Clone branch subversion id 265537