summaryrefslogtreecommitdiff
path: root/src/jit/gtlist.h
diff options
context:
space:
mode:
authorMikhail Skvortcov <m.skvortcov@partner.samsung.com>2017-05-15 13:23:12 +0300
committerMikhail Skvortcov <m.skvortcov@partner.samsung.com>2017-05-15 13:34:02 +0300
commit247f215eb97f0a28fadb1859fbc99404e996c4e5 (patch)
treecf372e6a0ae3b2f0280658a9d9affda8d55865f4 /src/jit/gtlist.h
parent76cbc581382ebbcf745dd2b79ac02c419970808c (diff)
downloadcoreclr-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.h19
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