diff options
author | Mikhail Skvortcov <m.skvortcov@partner.samsung.com> | 2017-05-15 13:23:12 +0300 |
---|---|---|
committer | Mikhail Skvortcov <m.skvortcov@partner.samsung.com> | 2017-05-15 13:34:02 +0300 |
commit | 247f215eb97f0a28fadb1859fbc99404e996c4e5 (patch) | |
tree | cf372e6a0ae3b2f0280658a9d9affda8d55865f4 /src/jit/gtlist.h | |
parent | 76cbc581382ebbcf745dd2b79ac02c419970808c (diff) | |
download | coreclr-247f215eb97f0a28fadb1859fbc99404e996c4e5.tar.gz coreclr-247f215eb97f0a28fadb1859fbc99404e996c4e5.tar.bz2 coreclr-247f215eb97f0a28fadb1859fbc99404e996c4e5.zip |
RyuJIT/ARM32: Enable GT_MUL_LONG codegen.
Diffstat (limited to 'src/jit/gtlist.h')
-rw-r--r-- | src/jit/gtlist.h | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/jit/gtlist.h b/src/jit/gtlist.h index 826eaf1207..5af2f5bb78 100644 --- a/src/jit/gtlist.h +++ b/src/jit/gtlist.h @@ -175,7 +175,7 @@ GTNODE(LEA , "lea" ,GenTreeAddrMode ,0,GTK_BINOP|GTK_EX // nodes such as calls, returns and stores of long lclVars. GTNODE(LONG , "gt_long" ,GenTreeOp ,0,GTK_BINOP) -// The following are nodes representing x86 specific long operators, including +// The following are nodes representing x86/arm32 specific long operators, including // high operators of a 64-bit operations that requires a carry/borrow, which are // named GT_XXX_HI for consistency, low operators of 64-bit operations that need // to not be modified in phases post-decompose, and operators that return 64-bit @@ -186,12 +186,17 @@ GTNODE(SUB_LO , "-Lo" ,GenTreeOp ,0,GTK_BINOP) GTNODE(SUB_HI , "-Hi" ,GenTreeOp ,0,GTK_BINOP) GTNODE(DIV_HI , "/Hi" ,GenTreeOp ,0,GTK_BINOP) GTNODE(MOD_HI , "%Hi" ,GenTreeOp ,0,GTK_BINOP) -GTNODE(MUL_LONG , "*long" ,GenTreeOp ,1,GTK_BINOP) // A mul that returns the 2N bit result of an NxN multiply. This op - // is used for x86 multiplies that take two ints and return a long - // result. All other multiplies with long results are morphed into - // helper calls. It is similar to GT_MULHI, the difference being that - // GT_MULHI drops the lo part of the result, whereas GT_MUL_LONG keeps - // both parts of the result. + +// A mul that returns the 2N bit result of an NxN multiply. This op is used for +// multiplies that take two ints and return a long result. All other multiplies +// with long results are morphed into helper calls. It is similar to GT_MULHI, +// the difference being that GT_MULHI drops the lo part of the result, whereas +// GT_MUL_LONG keeps both parts of the result. +#if defined(_TARGET_X86_) +GTNODE(MUL_LONG , "*long" ,GenTreeOp ,1,GTK_BINOP) +#elif defined (_TARGET_ARM_) +GTNODE(MUL_LONG , "*long" ,GenTreeMulLong ,1,GTK_BINOP) +#endif // The following are nodes that specify shifts that take a GT_LONG op1. The GT_LONG // contains the hi and lo parts of three operand shift form where one op will be |