Quick Search:

Mode

Context

Displaying 6 lines of context. None | Less | More | Full

Other Diffs

Ignore

Blank Lines Whitespace: Expand:

Diff

1.21
 
1.22
 
MAIN:ragge:20110714170210
 
local2.c
_>255255 
 256256         case MZC:
 257257                 expand(p, INAREG|INBREG, "\tmovzZLl\tAL,A1\n");
 258258                 expand(p, INAREG|INBREG, "\tcvtlZR\tA1,A1\n");
 259259                 break;
 260260 
<> 261+        case 'I': /* unsigned to double */
  262+                expand(p, INAREG|INBREG, "\tcvtld\tAL,A1\n");
  263+                printf("\tjgeq\t1f\n");
  264+                expand(p, INAREG|INBREG, "\taddd2\t$0d4.294967296e+9,A1\n");
  265+                printf("1:\n");
  266+                break;
261267         default:
 262268                 comperr("unsupported conversion %d", o);
 263269         }
 264270         switch (o) {
 265271         case MLE:
 266272         case CSE:
     
 !
541547                 expand(p, FOREFF, "\tmovq       AR,-(%sp)\n");
 542548                 expand(p, FOREFF, "\tmovq       AL,-(%sp)\n");
 543549                 if (p->n_op == DIV && p->n_type == ULONGLONG) ch = "udiv";
 544550                 else if (p->n_op == DIV) ch = "div";
 545551                 else if (p->n_op == MOD && p->n_type == ULONGLONG) ch = "umod";
 546552                 else if (p->n_op == MOD) ch = "mod";
<>547 -                else ch = 0, comperr("ZO");
  553+                else if (p->n_op == MUL) ch = "mul";
  554+                else ch = 0, comperr("ZO %d", p->n_op);
548555                 printf("\tcalls $4,__%sdi3\n", ch);
 549556                 break;
 550557 
 551558 
 552559         case 'Z':       /* complement mask for bit instr */
 553560                 printf("$%Ld", ~p->n_right->n_lval);
     
 !
11811188                         if (lt == LONGLONG)
 11821189                                 mkcall(p, "__floatdisf");
 11831190                         else if (lt == ULONGLONG) {
 11841191                                 p->n_left = mkunode(SCONV, p->n_left,0, DOUBLE);
 11851192                                 p->n_type = FLOAT;
 11861193                                 mkcall(p->n_left, "__floatunsdidf");
<> 1194+                        } else if (lt == UNSIGNED) {
  1195+                                /* insert an extra double-to-float sconv */
  1196+                                p->n_left = mkunode(SCONV, p->n_left,0, DOUBLE);
<_11871197                         }
 11881198                         break;
 11891199                 case DOUBLE:
 11901200                         if (lt == LONGLONG)
 11911201                                 mkcall(p, "__floatdidf");
 11921202                         else if (lt == ULONGLONG)
FishEye: Open Source License registered to PCC.
Your maintenance has expired. You can renew your license at http://www.atlassian.com/fisheye/renew
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-10-02 16:32 +0200