summaryrefslogtreecommitdiff
path: root/src/jit/emitfmtsxarch.h
diff options
context:
space:
mode:
authorTanner Gooding <tagoo@outlook.com>2018-06-06 18:24:04 -0700
committerGitHub <noreply@github.com>2018-06-06 18:24:04 -0700
commitf7993ddfc19ccce311df69b32f675bd076935e7f (patch)
tree87921d580a0a4f22a7838aa426488f73347ce2ee /src/jit/emitfmtsxarch.h
parentdce3234ecd057e7332140e137e23b0fe2aca9919 (diff)
downloadcoreclr-f7993ddfc19ccce311df69b32f675bd076935e7f.tar.gz
coreclr-f7993ddfc19ccce311df69b32f675bd076935e7f.tar.bz2
coreclr-f7993ddfc19ccce311df69b32f675bd076935e7f.zip
Adding containment support for more x86 hardware intrinsics (#18297)
* Adding containment support to one-operand scalar HWIntrinsics (x86) * Adding containment support to two-operand imm HWIntrinsics (x86) * Adding containment support to three-operand imm HWIntrinsics (x86) * Updating hwintrinsiccodegenxarch to properly mask Sse41.Insert for TYP_FLOAT * Updating the Sse41.Insert tests for TYP_FLOAT * Adding containment support for Sse2.CompareLessThan and BlendVariable (Sse41/Avx/Avx2) * Fixing `genHWIntrinsic_R_RM_I` to call `emitIns_SIMD_R_R_I`, rather than `emitIns_R_R_I` * Updating emitOutputSV to not modify the code for IF_RWR_RRD_SRD_CNS * Cleaning up some of the emitxarch code. * Moving roundps and roundpd into the IsDstSrcImm check
Diffstat (limited to 'src/jit/emitfmtsxarch.h')
-rw-r--r--src/jit/emitfmtsxarch.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/jit/emitfmtsxarch.h b/src/jit/emitfmtsxarch.h
index a2814f86ce..84bc0f8aec 100644
--- a/src/jit/emitfmtsxarch.h
+++ b/src/jit/emitfmtsxarch.h
@@ -129,6 +129,7 @@ IF_DEF(RRW_MRD_CNS, IS_GM_RD|IS_R1_RW, DSP_CNS) // r/w reg , read [
IF_DEF(RWR_RRD_MRD, IS_GM_RD|IS_R1_WR|IS_R2_RD, DSP) // write reg , read reg2 , read [mem]
IF_DEF(RWR_MRD_CNS, IS_GM_RD|IS_R1_WR, DSP_CNS) // write reg , read [mem], const
IF_DEF(RWR_RRD_MRD_CNS, IS_GM_RD|IS_R1_WR|IS_R2_RD, DSP_CNS) // write reg , read reg2 , read [mem], const
+IF_DEF(RWR_RRD_MRD_RRD, IS_GM_RD|IS_R1_WR|IS_R2_RD|IS_R3_RD, DSP_CNS) // write reg , read reg2 , read [mem], read reg3
IF_DEF(RWR_MRD_OFF, IS_GM_RD|IS_R1_WR, DSP) // write reg , offset mem
IF_DEF(MRD_RRD, IS_GM_RD|IS_R1_RD, DSP) // read [mem], read reg
@@ -159,6 +160,7 @@ IF_DEF(RRW_SRD_CNS, IS_SF_RD|IS_R1_RW, CNS ) // r/w reg , read [
IF_DEF(RWR_RRD_SRD, IS_SF_RD|IS_R1_WR|IS_R2_RD, NONE) // write reg , read reg2, read [stk]
IF_DEF(RWR_SRD_CNS, IS_SF_RD|IS_R1_WR, CNS ) // write reg , read [stk], const
IF_DEF(RWR_RRD_SRD_CNS, IS_SF_RD|IS_R1_WR|IS_R2_RD, CNS ) // write reg , read reg2, read [stk], const
+IF_DEF(RWR_RRD_SRD_RRD, IS_SF_RD|IS_R1_WR|IS_R2_RD|IS_R3_RD, CNS ) // write reg , read reg2, read [stk], read reg3
IF_DEF(SRD_RRD, IS_SF_RD|IS_R1_RD, NONE) // read [stk], read reg
IF_DEF(SWR_RRD, IS_SF_WR|IS_R1_RD, NONE) // write [stk], read reg
@@ -187,6 +189,7 @@ IF_DEF(RRW_ARD_CNS, IS_AM_RD|IS_R1_RW, AMD_CNS) // r/w reg , read [
IF_DEF(RWR_RRD_ARD, IS_AM_RD|IS_R1_WR|IS_R2_RD, AMD ) // write reg , read reg2, read [adr]
IF_DEF(RWR_ARD_CNS, IS_AM_RD|IS_R1_WR, AMD_CNS) // write reg , read [adr], const
IF_DEF(RWR_RRD_ARD_CNS, IS_AM_RD|IS_R1_WR|IS_R2_RD, AMD_CNS) // write reg , read reg2, read [adr], const
+IF_DEF(RWR_RRD_ARD_RRD, IS_AM_RD|IS_R1_WR|IS_R2_RD|IS_R3_RD, AMD_CNS) // write reg , read reg2, read [adr], read reg3
IF_DEF(ARD_RRD, IS_AM_RD|IS_R1_RD, AMD ) // read [adr], read reg
IF_DEF(AWR_RRD, IS_AM_WR|IS_R1_RD, AMD ) // write [adr], read reg