@@ -168,14 +168,19 @@ Based on a patch originally by Claude Heiland-Allen <claude@mathr.co.uk>
168
168
default:
169
169
gcc_unreachable ();
170
170
}
171
- --- a/gcc/config/i386/i386.c
172
- +++ b/gcc/config/i386/i386.c
173
- @@ -4981,13 +4981,13 @@
174
- switch (type)
171
+ --- a/gcc/config/i386/i386.cc
172
+ +++ b/gcc/config/i386/i386.cc
173
+ @@ -5418,17 +5418,15 @@ ix86_get_ssemov (rtx *operands, unsigned size,
175
174
{
176
175
case opcode_int:
177
- - opcode = misaligned_p ? "vmovdqu32" : "vmovdqa32";
178
- + opcode = "vmovdqu32";
176
+ if (scalar_mode == E_HFmode)
177
+ - opcode = (misaligned_p
178
+ - ? (TARGET_AVX512BW ? "vmovdqu16" : "vmovdqu64")
179
+ - : "vmovdqa64");
180
+ + opcode = TARGET_AVX512BW ? "vmovdqu16" : "vmovdqu64";
181
+ else
182
+ - opcode = misaligned_p ? "vmovdqu32" : "vmovdqa32";
183
+ + opcode = "vmovdqu32";
179
184
break;
180
185
case opcode_float:
181
186
- opcode = misaligned_p ? "vmovups" : "vmovaps";
@@ -187,9 +192,24 @@ Based on a patch originally by Claude Heiland-Allen <claude@mathr.co.uk>
187
192
break;
188
193
}
189
194
}
190
- @@ -4996,16 +4996,16 @@
191
- switch (scalar_mode)
195
+ @@ -5438,29 +5436,21 @@ ix86_get_ssemov (rtx *operands, unsigned size,
192
196
{
197
+ case E_HFmode:
198
+ if (evex_reg_p)
199
+ - opcode = (misaligned_p
200
+ - ? (TARGET_AVX512BW
201
+ - ? "vmovdqu16"
202
+ - : "vmovdqu64")
203
+ - : "vmovdqa64");
204
+ + opcode = TARGET_AVX512BW ? "vmovdqu16" : "vmovdqu64";
205
+ else
206
+ - opcode = (misaligned_p
207
+ - ? (TARGET_AVX512BW
208
+ - ? "vmovdqu16"
209
+ - : "%vmovdqu")
210
+ - : "%vmovdqa");
211
+ + opcode = TARGET_AVX512BW ? "vmovdqu16" : "%vmovdqu";
212
+ break;
193
213
case E_SFmode:
194
214
- opcode = misaligned_p ? "%vmovups" : "%vmovaps";
195
215
+ opcode = "%vmovups";
@@ -208,7 +228,7 @@ Based on a patch originally by Claude Heiland-Allen <claude@mathr.co.uk>
208
228
break;
209
229
default:
210
230
gcc_unreachable ();
211
- @@ -5017 ,48 +5017 ,32 @@
231
+ @@ -5472 ,48 +5462 ,32 @@ ix86_get_ssemov (rtx *operands, unsigned size,
212
232
{
213
233
case E_QImode:
214
234
if (evex_reg_p)
0 commit comments