mirror of
https://github.com/python/cpython.git
synced 2025-11-01 06:01:29 +00:00
gh-131798: Optimize _UNARY_NEGATIVE (GH-135223)
This commit is contained in:
parent
569fc6870f
commit
bda121862e
4 changed files with 33 additions and 2 deletions
|
|
@ -2432,6 +2432,24 @@ def testfunc(n):
|
||||||
self.assertIn("_POP_TOP_FLOAT", uops)
|
self.assertIn("_POP_TOP_FLOAT", uops)
|
||||||
|
|
||||||
|
|
||||||
|
def test_unary_negative_long_float_type(self):
|
||||||
|
def testfunc(n):
|
||||||
|
for _ in range(n):
|
||||||
|
a = 9397
|
||||||
|
f = 9397.0
|
||||||
|
x = -a + -a
|
||||||
|
y = -f + -f
|
||||||
|
|
||||||
|
testfunc(TIER2_THRESHOLD)
|
||||||
|
|
||||||
|
ex = get_first_executor(testfunc)
|
||||||
|
self.assertIsNotNone(ex)
|
||||||
|
uops = get_opnames(ex)
|
||||||
|
|
||||||
|
self.assertNotIn("_GUARD_TOS_INT", uops)
|
||||||
|
self.assertNotIn("_GUARD_NOS_INT", uops)
|
||||||
|
self.assertNotIn("_GUARD_TOS_FLOAT", uops)
|
||||||
|
self.assertNotIn("_GUARD_NOS_FLOAT", uops)
|
||||||
|
|
||||||
def global_identity(x):
|
def global_identity(x):
|
||||||
return x
|
return x
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Optimize ``_UNARY_NEGATIVE`` in JIT-compiled code.
|
||||||
|
|
@ -452,7 +452,13 @@ dummy_func(void) {
|
||||||
res = sym_new_compact_int(ctx);
|
res = sym_new_compact_int(ctx);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
res = sym_new_not_null(ctx);
|
PyTypeObject *type = sym_get_type(value);
|
||||||
|
if (type == &PyLong_Type || type == &PyFloat_Type) {
|
||||||
|
res = sym_new_type(ctx, type);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
res = sym_new_not_null(ctx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
8
Python/optimizer_cases.c.h
generated
8
Python/optimizer_cases.c.h
generated
|
|
@ -190,7 +190,13 @@
|
||||||
res = sym_new_compact_int(ctx);
|
res = sym_new_compact_int(ctx);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
res = sym_new_not_null(ctx);
|
PyTypeObject *type = sym_get_type(value);
|
||||||
|
if (type == &PyLong_Type || type == &PyFloat_Type) {
|
||||||
|
res = sym_new_type(ctx, type);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
res = sym_new_not_null(ctx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
stack_pointer[-1] = res;
|
stack_pointer[-1] = res;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue