Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
6f76d88f
D
dragonwell8_hotspot
项目概览
openanolis
/
dragonwell8_hotspot
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_hotspot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
6f76d88f
编写于
5月 09, 2008
作者:
R
rasbold
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
ca698d05
b4704c43
变更
7
展开全部
隐藏空白更改
内联
并排
Showing
7 changed file
with
484 addition
and
208 deletion
+484
-208
src/cpu/x86/vm/x86_64.ad
src/cpu/x86/vm/x86_64.ad
+12
-0
src/share/vm/opto/classes.hpp
src/share/vm/opto/classes.hpp
+1
-0
src/share/vm/opto/divnode.cpp
src/share/vm/opto/divnode.cpp
+440
-207
src/share/vm/opto/mulnode.cpp
src/share/vm/opto/mulnode.cpp
+19
-0
src/share/vm/opto/mulnode.hpp
src/share/vm/opto/mulnode.hpp
+10
-0
src/share/vm/opto/type.hpp
src/share/vm/opto/type.hpp
+1
-0
src/share/vm/utilities/globalDefinitions.hpp
src/share/vm/utilities/globalDefinitions.hpp
+1
-1
未找到文件。
src/cpu/x86/vm/x86_64.ad
浏览文件 @
6f76d88f
...
...
@@ -8075,6 +8075,18 @@ instruct mulL_mem_imm(rRegL dst, memory src, immL32 imm, rFlagsReg cr)
ins_pipe(ialu_reg_mem_alu0);
%}
instruct mulHiL_rReg(rdx_RegL dst, no_rax_RegL src, rax_RegL rax, rFlagsReg cr)
%{
match(Set dst (MulHiL src rax));
effect(USE_KILL rax, KILL cr);
ins_cost(300);
format %{ "imulq RDX:RAX, RAX, $src\t# mulhi" %}
opcode(0xF7, 0x5); /* Opcode F7 /5 */
ins_encode(REX_reg_wide(src), OpcP, reg_opc(src));
ins_pipe(ialu_reg_reg_alu0);
%}
instruct divI_rReg(rax_RegI rax, rdx_RegI rdx, no_rax_rdx_RegI div,
rFlagsReg cr)
%{
...
...
src/share/vm/opto/classes.hpp
浏览文件 @
6f76d88f
...
...
@@ -164,6 +164,7 @@ macro(MoveL2D)
macro
(
MoveD2L
)
macro
(
MulD
)
macro
(
MulF
)
macro
(
MulHiL
)
macro
(
MulI
)
macro
(
MulL
)
macro
(
Multi
)
...
...
src/share/vm/opto/divnode.cpp
浏览文件 @
6f76d88f
此差异已折叠。
点击以展开。
src/share/vm/opto/mulnode.cpp
浏览文件 @
6f76d88f
...
...
@@ -364,6 +364,25 @@ const Type *MulDNode::mul_ring(const Type *t0, const Type *t1) const {
return
TypeD
::
make
(
t0
->
getd
()
*
t1
->
getd
()
);
}
//=============================================================================
//------------------------------Value------------------------------------------
const
Type
*
MulHiLNode
::
Value
(
PhaseTransform
*
phase
)
const
{
// Either input is TOP ==> the result is TOP
const
Type
*
t1
=
phase
->
type
(
in
(
1
)
);
const
Type
*
t2
=
phase
->
type
(
in
(
2
)
);
if
(
t1
==
Type
::
TOP
)
return
Type
::
TOP
;
if
(
t2
==
Type
::
TOP
)
return
Type
::
TOP
;
// Either input is BOTTOM ==> the result is the local BOTTOM
const
Type
*
bot
=
bottom_type
();
if
(
(
t1
==
bot
)
||
(
t2
==
bot
)
||
(
t1
==
Type
::
BOTTOM
)
||
(
t2
==
Type
::
BOTTOM
)
)
return
bot
;
// It is not worth trying to constant fold this stuff!
return
TypeLong
::
LONG
;
}
//=============================================================================
//------------------------------mul_ring---------------------------------------
// Supplied function returns the product of the inputs IN THE CURRENT RING.
...
...
src/share/vm/opto/mulnode.hpp
浏览文件 @
6f76d88f
...
...
@@ -133,6 +133,16 @@ public:
virtual
uint
ideal_reg
()
const
{
return
Op_RegD
;
}
};
//-------------------------------MulHiLNode------------------------------------
// Upper 64 bits of a 64 bit by 64 bit multiply
class
MulHiLNode
:
public
Node
{
public:
MulHiLNode
(
Node
*
in1
,
Node
*
in2
)
:
Node
(
0
,
in1
,
in2
)
{}
virtual
int
Opcode
()
const
;
virtual
const
Type
*
Value
(
PhaseTransform
*
phase
)
const
;
const
Type
*
bottom_type
()
const
{
return
TypeLong
::
LONG
;
}
virtual
uint
ideal_reg
()
const
{
return
Op_RegL
;
}
};
//------------------------------AndINode---------------------------------------
// Logically AND 2 integers. Included with the MUL nodes because it inherits
...
...
src/share/vm/opto/type.hpp
浏览文件 @
6f76d88f
...
...
@@ -442,6 +442,7 @@ public:
// Check for single integer
int
is_con
()
const
{
return
_lo
==
_hi
;
}
bool
is_con
(
int
i
)
const
{
return
is_con
()
&&
_lo
==
i
;
}
jlong
get_con
()
const
{
assert
(
is_con
(),
""
);
return
_lo
;
}
virtual
bool
is_finite
()
const
;
// Has a finite value
...
...
src/share/vm/utilities/globalDefinitions.hpp
浏览文件 @
6f76d88f
...
...
@@ -890,7 +890,7 @@ inline int log2_long(jlong x) {
i
++
;
p
*=
2
;
}
// p = 2^(i+1) && x < p (i.e., 2^i <= x < 2^(i+1))
// (if p = 0 then overflow occured and i =
31
)
// (if p = 0 then overflow occured and i =
63
)
return
i
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录