diff options
Diffstat (limited to 'results/classifier/semantic-bugs/1267955')
| -rw-r--r-- | results/classifier/semantic-bugs/1267955 | 147 |
1 files changed, 2 insertions, 145 deletions
diff --git a/results/classifier/semantic-bugs/1267955 b/results/classifier/semantic-bugs/1267955 index fe1635901..e9cb6da8b 100644 --- a/results/classifier/semantic-bugs/1267955 +++ b/results/classifier/semantic-bugs/1267955 @@ -1,15 +1,4 @@ -other: 0.979 -assembly: 0.959 -device: 0.954 -KVM: 0.953 -vnc: 0.950 -instruction: 0.947 -semantic: 0.945 -graphic: 0.944 -network: 0.942 -mistranslation: 0.913 -socket: 0.912 -boot: 0.895 + [i386] Parity Flag Not Set On xor %eax,%eax @@ -52,136 +41,4 @@ $ qemu-i386 ./prog | hexdump -vC 00000000 42 02 00 00 |B...| 00000004 -On the other hand if [xor %eax, %eax] (31 c0) is replaced with sub %eax,%eax (29 c0), then the parity flag is set correctly. - -Parity should be set for a zero result. - -Signed-off-by: Richard Henderson <email address hidden> ---- - target-i386/cc_helper.c | 2 +- - target-i386/translate.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/target-i386/cc_helper.c b/target-i386/cc_helper.c -index ee04092..05dd12b 100644 ---- a/target-i386/cc_helper.c -+++ b/target-i386/cc_helper.c -@@ -103,7 +103,7 @@ target_ulong helper_cc_compute_all(target_ulong dst, target_ulong src1, - case CC_OP_EFLAGS: - return src1; - case CC_OP_CLR: -- return CC_Z; -+ return CC_Z | CC_P; - - case CC_OP_MULB: - return compute_all_mulb(dst, src1); -diff --git a/target-i386/translate.c b/target-i386/translate.c -index b0f2279..34f35e7 100644 ---- a/target-i386/translate.c -+++ b/target-i386/translate.c -@@ -748,7 +748,7 @@ static void gen_compute_eflags(DisasContext *s) - return; - } - if (s->cc_op == CC_OP_CLR) { -- tcg_gen_movi_tl(cpu_cc_src, CC_Z); -+ tcg_gen_movi_tl(cpu_cc_src, CC_Z | CC_P); - set_cc_op(s, CC_OP_EFLAGS); - return; - } --- -1.8.4.2 - - - -On Fri, Jan 10, 2014 at 12:39:56PM -0800, Richard Henderson wrote: -> Parity should be set for a zero result. -> -> Signed-off-by: Richard Henderson <email address hidden> - -Reviewed-by: Edgar E. Iglesias <email address hidden> - - -> --- -> target-i386/cc_helper.c | 2 +- -> target-i386/translate.c | 2 +- -> 2 files changed, 2 insertions(+), 2 deletions(-) -> -> diff --git a/target-i386/cc_helper.c b/target-i386/cc_helper.c -> index ee04092..05dd12b 100644 -> --- a/target-i386/cc_helper.c -> +++ b/target-i386/cc_helper.c -> @@ -103,7 +103,7 @@ target_ulong helper_cc_compute_all(target_ulong dst, target_ulong src1, -> case CC_OP_EFLAGS: -> return src1; -> case CC_OP_CLR: -> - return CC_Z; -> + return CC_Z | CC_P; -> -> case CC_OP_MULB: -> return compute_all_mulb(dst, src1); -> diff --git a/target-i386/translate.c b/target-i386/translate.c -> index b0f2279..34f35e7 100644 -> --- a/target-i386/translate.c -> +++ b/target-i386/translate.c -> @@ -748,7 +748,7 @@ static void gen_compute_eflags(DisasContext *s) -> return; -> } -> if (s->cc_op == CC_OP_CLR) { -> - tcg_gen_movi_tl(cpu_cc_src, CC_Z); -> + tcg_gen_movi_tl(cpu_cc_src, CC_Z | CC_P); -> set_cc_op(s, CC_OP_EFLAGS); -> return; -> } -> -- -> 1.8.4.2 -> -> - - -Quoting Richard Henderson (2014-01-10 14:39:56) -> Parity should be set for a zero result. -> -> Signed-off-by: Richard Henderson <email address hidden> - -ping for 1.7.1 - -> --- -> target-i386/cc_helper.c | 2 +- -> target-i386/translate.c | 2 +- -> 2 files changed, 2 insertions(+), 2 deletions(-) -> -> diff --git a/target-i386/cc_helper.c b/target-i386/cc_helper.c -> index ee04092..05dd12b 100644 -> --- a/target-i386/cc_helper.c -> +++ b/target-i386/cc_helper.c -> @@ -103,7 +103,7 @@ target_ulong helper_cc_compute_all(target_ulong dst, target_ulong src1, -> case CC_OP_EFLAGS: -> return src1; -> case CC_OP_CLR: -> - return CC_Z; -> + return CC_Z | CC_P; -> -> case CC_OP_MULB: -> return compute_all_mulb(dst, src1); -> diff --git a/target-i386/translate.c b/target-i386/translate.c -> index b0f2279..34f35e7 100644 -> --- a/target-i386/translate.c -> +++ b/target-i386/translate.c -> @@ -748,7 +748,7 @@ static void gen_compute_eflags(DisasContext *s) -> return; -> } -> if (s->cc_op == CC_OP_CLR) { -> - tcg_gen_movi_tl(cpu_cc_src, CC_Z); -> + tcg_gen_movi_tl(cpu_cc_src, CC_Z | CC_P); -> set_cc_op(s, CC_OP_EFLAGS); -> return; -> } -> -- -> 1.8.4.2 - - - -Fix had been included here: -http://git.qemu.org/?p=qemu.git;a=commitdiff;h=d2fe51bda8adf33d07c21 -==> Closing - +On the other hand if [xor %eax, %eax] (31 c0) is replaced with sub %eax,%eax (29 c0), then the parity flag is set correctly. \ No newline at end of file |