summaryrefslogtreecommitdiff
path: root/op-i386.c
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2003-03-19 00:00:28 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2003-03-19 00:00:28 +0000
commitdc99065b5f97cc0410f88e3f90c7440531a55f9f (patch)
treea0566030175ea990f8aeeec662b3fa2e6b704bcf /op-i386.c
parentca735206e0f223d75894260fb98c0c605f590817 (diff)
downloadqemu-dc99065b5f97cc0410f88e3f90c7440531a55f9f.tar.gz
added flags computation optimization
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@34 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'op-i386.c')
-rw-r--r--op-i386.c54
1 files changed, 48 insertions, 6 deletions
diff --git a/op-i386.c b/op-i386.c
index f8188e3ea4..002ce96928 100644
--- a/op-i386.c
+++ b/op-i386.c
@@ -177,7 +177,7 @@ void raise_exception(int exception_index)
#undef REG
#undef REGNAME
-/* operations */
+/* operations with flags */
void OPPROTO op_addl_T0_T1_cc(void)
{
@@ -217,11 +217,6 @@ void OPPROTO op_cmpl_T0_T1_cc(void)
CC_DST = T0 - T1;
}
-void OPPROTO op_notl_T0(void)
-{
- T0 = ~T0;
-}
-
void OPPROTO op_negl_T0_cc(void)
{
CC_SRC = 0;
@@ -248,6 +243,53 @@ void OPPROTO op_testl_T0_T1_cc(void)
CC_DST = T0 & T1;
}
+/* operations without flags */
+
+void OPPROTO op_addl_T0_T1(void)
+{
+ T0 += T1;
+}
+
+void OPPROTO op_orl_T0_T1(void)
+{
+ T0 |= T1;
+}
+
+void OPPROTO op_andl_T0_T1(void)
+{
+ T0 &= T1;
+}
+
+void OPPROTO op_subl_T0_T1(void)
+{
+ T0 -= T1;
+}
+
+void OPPROTO op_xorl_T0_T1(void)
+{
+ T0 ^= T1;
+}
+
+void OPPROTO op_negl_T0(void)
+{
+ T0 = -T0;
+}
+
+void OPPROTO op_incl_T0(void)
+{
+ T0++;
+}
+
+void OPPROTO op_decl_T0(void)
+{
+ T0--;
+}
+
+void OPPROTO op_notl_T0(void)
+{
+ T0 = ~T0;
+}
+
void OPPROTO op_bswapl_T0(void)
{
T0 = bswap32(T0);