mirror of
git://c9x.me/qbe.git
synced 2026-05-26 15:34:41 +00:00
no cmpneg() for float comparisons
This commit is contained in:
parent
0454fa259b
commit
bef981e9a1
@ -710,7 +710,7 @@ amd64_sysv_emitfn(Fn *fn, FILE *f)
|
||||
default:
|
||||
c = b->jmp.type - Jjf;
|
||||
if (0 <= c && c <= NCmp) {
|
||||
if (b->link == b->s2) {
|
||||
if (b->link == b->s2 || c >= NCmpI) {
|
||||
s = b->s1;
|
||||
b->s1 = b->s2;
|
||||
b->s2 = s;
|
||||
@ -827,7 +827,7 @@ amd64_winabi_emitfn(Fn *fn, FILE *f)
|
||||
default:
|
||||
c = b->jmp.type - Jjf;
|
||||
if (0 <= c && c <= NCmp) {
|
||||
if (b->link == b->s2) {
|
||||
if (b->link == b->s2 || c >= NCmpI) {
|
||||
s = b->s1;
|
||||
b->s1 = b->s2;
|
||||
b->s2 = s;
|
||||
|
||||
18
util.c
18
util.c
@ -354,20 +354,20 @@ static int cmptab[][2] ={
|
||||
[Cisge] = {Cislt, Cisle},
|
||||
[Cieq] = {Cine, Cieq},
|
||||
[Cine] = {Cieq, Cine},
|
||||
[NCmpI+Cfle] = {NCmpI+Cfgt, NCmpI+Cfge},
|
||||
[NCmpI+Cflt] = {NCmpI+Cfge, NCmpI+Cfgt},
|
||||
[NCmpI+Cfgt] = {NCmpI+Cfle, NCmpI+Cflt},
|
||||
[NCmpI+Cfge] = {NCmpI+Cflt, NCmpI+Cfle},
|
||||
[NCmpI+Cfeq] = {NCmpI+Cfne, NCmpI+Cfeq},
|
||||
[NCmpI+Cfne] = {NCmpI+Cfeq, NCmpI+Cfne},
|
||||
[NCmpI+Cfo] = {NCmpI+Cfuo, NCmpI+Cfo},
|
||||
[NCmpI+Cfuo] = {NCmpI+Cfo, NCmpI+Cfuo},
|
||||
[NCmpI+Cfle] = {-1, NCmpI+Cfge},
|
||||
[NCmpI+Cflt] = {-1, NCmpI+Cfgt},
|
||||
[NCmpI+Cfgt] = {-1, NCmpI+Cflt},
|
||||
[NCmpI+Cfge] = {-1, NCmpI+Cfle},
|
||||
[NCmpI+Cfeq] = {-1, NCmpI+Cfeq},
|
||||
[NCmpI+Cfne] = {-1, NCmpI+Cfne},
|
||||
[NCmpI+Cfo] = {-1, NCmpI+Cfo},
|
||||
[NCmpI+Cfuo] = {-1, NCmpI+Cfuo},
|
||||
};
|
||||
|
||||
int
|
||||
cmpneg(int c)
|
||||
{
|
||||
assert(0 <= c && c < NCmp);
|
||||
assert(0 <= c && c < NCmpI);
|
||||
return cmptab[c][0];
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user