Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit 916466b

Browse files
committed
Merge SSE intrinsics into the table-driven framework
1 parent f2d5c1d commit 916466b

9 files changed

+227
-446
lines changed

src/jit/emitxarch.cpp

+21-22
Original file line numberDiff line numberDiff line change
@@ -5220,24 +5220,23 @@ void emitter::emitIns_SIMD_R_R_A(instruction ins, emitAttr attr, regNumber reg,
52205220
{
52215221
emitIns_R_R(INS_movaps, attr, reg, reg1);
52225222
}
5223-
emitIns_R_A(ins, emitTypeSize(simdtype), reg, indir, IF_RWR_ARD);
5224-
// emitIns_R_A(ins, attr, reg, indir, IF_RRW_ARD);
5223+
emitIns_R_A(ins, attr, reg, indir, IF_RWR_ARD);
52255224
}
52265225
}
52275226

5228-
void emitter::emitIns_SIMD_R_R_AR(instruction ins, regNumber reg, regNumber reg1, regNumber base, var_types simdtype)
5227+
void emitter::emitIns_SIMD_R_R_AR(instruction ins, emitAttr attr, regNumber reg, regNumber reg1, regNumber base)
52295228
{
52305229
if (UseVEXEncoding())
52315230
{
5232-
emitIns_R_R_AR(ins, emitTypeSize(simdtype), reg, reg1, base, 0);
5231+
emitIns_R_R_AR(ins, attr, reg, reg1, base, 0);
52335232
}
52345233
else
52355234
{
52365235
if (reg1 != reg)
52375236
{
5238-
emitIns_R_R(INS_movaps, emitTypeSize(simdtype), reg, reg1);
5237+
emitIns_R_R(INS_movaps, attr, reg, reg1);
52395238
}
5240-
emitIns_R_AR(ins, emitTypeSize(simdtype), reg, base, 0);
5239+
emitIns_R_AR(ins, attr, reg, base, 0);
52415240
}
52425241
}
52435242

@@ -5330,70 +5329,70 @@ void emitter::emitIns_SIMD_R_R_S(instruction ins, emitAttr attr, regNumber reg,
53305329
}
53315330

53325331
void emitter::emitIns_SIMD_R_R_A_I(
5333-
instruction ins, regNumber reg, regNumber reg1, GenTreeIndir* indir, int ival, var_types simdtype)
5332+
instruction ins, emitAttr attr, regNumber reg, regNumber reg1, GenTreeIndir* indir, int ival)
53345333
{
53355334
if (UseVEXEncoding())
53365335
{
5337-
emitIns_R_R_A_I(ins, emitTypeSize(simdtype), reg, reg1, indir, ival, IF_RWR_RRD_ARD_CNS);
5336+
emitIns_R_R_A_I(ins, attr, reg, reg1, indir, ival, IF_RWR_RRD_ARD_CNS);
53385337
}
53395338
else
53405339
{
53415340
if (reg1 != reg)
53425341
{
5343-
emitIns_R_R(INS_movaps, emitTypeSize(simdtype), reg, reg1);
5342+
emitIns_R_R(INS_movaps, attr, reg, reg1);
53445343
}
5345-
emitIns_R_A_I(ins, emitTypeSize(simdtype), reg, indir, ival);
5344+
emitIns_R_A_I(ins, attr, reg, indir, ival);
53465345
}
53475346
}
53485347

53495348
void emitter::emitIns_SIMD_R_R_C_I(
5350-
instruction ins, regNumber reg, regNumber reg1, CORINFO_FIELD_HANDLE fldHnd, int offs, int ival, var_types simdtype)
5349+
instruction ins, emitAttr attr, regNumber reg, regNumber reg1, CORINFO_FIELD_HANDLE fldHnd, int offs, int ival)
53515350
{
53525351
if (UseVEXEncoding())
53535352
{
5354-
emitIns_R_R_C_I(ins, emitTypeSize(simdtype), reg, reg1, fldHnd, offs, ival);
5353+
emitIns_R_R_C_I(ins, attr, reg, reg1, fldHnd, offs, ival);
53555354
}
53565355
else
53575356
{
53585357
if (reg1 != reg)
53595358
{
5360-
emitIns_R_R(INS_movaps, emitTypeSize(simdtype), reg, reg1);
5359+
emitIns_R_R(INS_movaps, attr, reg, reg1);
53615360
}
5362-
emitIns_R_C_I(ins, emitTypeSize(simdtype), reg, fldHnd, offs, ival);
5361+
emitIns_R_C_I(ins, attr, reg, fldHnd, offs, ival);
53635362
}
53645363
}
53655364

53665365
void emitter::emitIns_SIMD_R_R_R_I(
5367-
instruction ins, regNumber reg, regNumber reg1, regNumber reg2, int ival, var_types simdtype)
5366+
instruction ins, emitAttr attr, regNumber reg, regNumber reg1, regNumber reg2, int ival)
53685367
{
53695368
if (UseVEXEncoding())
53705369
{
5371-
emitIns_R_R_R_I(ins, emitTypeSize(simdtype), reg, reg1, reg2, ival);
5370+
emitIns_R_R_R_I(ins, attr, reg, reg1, reg2, ival);
53725371
}
53735372
else
53745373
{
53755374
if (reg1 != reg)
53765375
{
5377-
emitIns_R_R(INS_movaps, emitTypeSize(simdtype), reg, reg1);
5376+
emitIns_R_R(INS_movaps, attr, reg, reg1);
53785377
}
5379-
emitIns_R_R_I(ins, emitTypeSize(simdtype), reg, reg2, ival);
5378+
emitIns_R_R_I(ins, attr, reg, reg2, ival);
53805379
}
53815380
}
53825381

53835382
void emitter::emitIns_SIMD_R_R_S_I(
5384-
instruction ins, regNumber reg, regNumber reg1, int varx, int offs, int ival, var_types simdtype)
5383+
instruction ins, emitAttr attr, regNumber reg, regNumber reg1, int varx, int offs, int ival)
53855384
{
53865385
if (UseVEXEncoding())
53875386
{
5388-
emitIns_R_R_S_I(ins, emitTypeSize(simdtype), reg, reg1, varx, offs, ival);
5387+
emitIns_R_R_S_I(ins, attr, reg, reg1, varx, offs, ival);
53895388
}
53905389
else
53915390
{
53925391
if (reg1 != reg)
53935392
{
5394-
emitIns_R_R(INS_movaps, emitTypeSize(simdtype), reg, reg1);
5393+
emitIns_R_R(INS_movaps, attr, reg, reg1);
53955394
}
5396-
emitIns_R_S_I(ins, emitTypeSize(simdtype), reg, varx, offs, ival);
5395+
emitIns_R_S_I(ins, attr, reg, varx, offs, ival);
53975396
}
53985397
}
53995398
#endif

src/jit/emitxarch.h

+6-13
Original file line numberDiff line numberDiff line change
@@ -453,19 +453,12 @@ void emitIns_R_AX(instruction ins, emitAttr attr, regNumber ireg, regNumber reg,
453453
void emitIns_AX_R(instruction ins, emitAttr attr, regNumber ireg, regNumber reg, unsigned mul, int disp);
454454

455455
#if FEATURE_HW_INTRINSICS
456-
void emitIns_SIMD_R_R_AR(instruction ins, regNumber reg, regNumber reg1, regNumber base, var_types simdtype);
457-
void emitIns_SIMD_R_R_A_I(
458-
instruction ins, regNumber reg, regNumber reg1, GenTreeIndir* indir, int ival, var_types simdtype);
459-
void emitIns_SIMD_R_R_C_I(instruction ins,
460-
regNumber reg,
461-
regNumber reg1,
462-
CORINFO_FIELD_HANDLE fldHnd,
463-
int offs,
464-
int ival,
465-
var_types simdtype);
466-
void emitIns_SIMD_R_R_R_I(instruction ins, regNumber reg, regNumber reg1, regNumber reg2, int ival, var_types simdtype);
467-
void emitIns_SIMD_R_R_S_I(
468-
instruction ins, regNumber reg, regNumber reg1, int varx, int offs, int ival, var_types simdtype);
456+
void emitIns_SIMD_R_R_AR(instruction ins, emitAttr attr, regNumber reg, regNumber reg1, regNumber base);
457+
void emitIns_SIMD_R_R_A_I(instruction ins, emitAttr attr, regNumber reg, regNumber reg1, GenTreeIndir* indir, int ival);
458+
void emitIns_SIMD_R_R_C_I(
459+
instruction ins, emitAttr attr, regNumber reg, regNumber reg1, CORINFO_FIELD_HANDLE fldHnd, int offs, int ival);
460+
void emitIns_SIMD_R_R_R_I(instruction ins, emitAttr attr, regNumber reg, regNumber reg1, regNumber reg2, int ival);
461+
void emitIns_SIMD_R_R_S_I(instruction ins, emitAttr attr, regNumber reg, regNumber reg1, int varx, int offs, int ival);
469462
void emitIns_SIMD_R_R_A(instruction ins, emitAttr attr, regNumber reg, regNumber reg1, GenTreeIndir* indir);
470463
void emitIns_SIMD_R_R_C(
471464
instruction ins, emitAttr attr, regNumber reg, regNumber reg1, CORINFO_FIELD_HANDLE fldHnd, int offs);

0 commit comments

Comments
 (0)