- Sep 19, 2005
-
-
Chris Lattner authored
llvm-svn: 23387
-
- Sep 18, 2005
-
-
Chris Lattner authored
struct S { unsigned int i : 6, j : 11, k : 15; } b; void plus2 (unsigned int x) { b.j += x; } To: _plus2: lis r2, ha16(L_b$non_lazy_ptr) lwz r2, lo16(L_b$non_lazy_ptr)(r2) lwz r4, 0(r2) slwi r3, r3, 6 add r3, r4, r3 rlwimi r3, r4, 0, 26, 14 stw r3, 0(r2) blr instead of: _plus2: lis r2, ha16(L_b$non_lazy_ptr) lwz r2, lo16(L_b$non_lazy_ptr)(r2) lwz r4, 0(r2) rlwinm r5, r4, 26, 21, 31 add r3, r5, r3 rlwimi r4, r3, 6, 15, 25 stw r4, 0(r2) blr by eliminating an 'and'. I'm pretty sure this is as small as we can go :) llvm-svn: 23386
-
Chris Lattner authored
struct S { unsigned int i : 6, j : 11, k : 15; } b; void plus2 (unsigned int x) { b.j += x; } to: plus2: mov %EAX, DWORD PTR [b] mov %ECX, %EAX and %ECX, 131008 mov %EDX, DWORD PTR [%ESP + 4] shl %EDX, 6 add %EDX, %ECX and %EDX, 131008 and %EAX, -131009 or %EDX, %EAX mov DWORD PTR [b], %EDX ret instead of: plus2: mov %EAX, DWORD PTR [b] mov %ECX, %EAX shr %ECX, 6 and %ECX, 2047 add %ECX, DWORD PTR [%ESP + 4] shl %ECX, 6 and %ECX, 131008 and %EAX, -131009 or %ECX, %EAX mov DWORD PTR [b], %ECX ret llvm-svn: 23385
-
Chris Lattner authored
struct S { unsigned int i : 6, j : 11, k : 15; } b; void plus3 (unsigned int x) { b.k += x; } To: plus3: mov %EAX, DWORD PTR [%ESP + 4] shl %EAX, 17 add DWORD PTR [b], %EAX ret instead of: plus3: mov %EAX, DWORD PTR [%ESP + 4] shl %EAX, 17 mov %ECX, DWORD PTR [b] add %EAX, %ECX and %EAX, -131072 and %ECX, 131071 or %ECX, %EAX mov DWORD PTR [b], %ECX ret llvm-svn: 23384
-
Chris Lattner authored
llvm-svn: 23383
-
Chris Lattner authored
llvm-svn: 23382
-
Chris Lattner authored
struct S { unsigned int i : 6, j : 11, k : 15; } b; void plus3 (unsigned int x) { b.k += x; } to: _plus3: lis r2, ha16(L_b$non_lazy_ptr) lwz r2, lo16(L_b$non_lazy_ptr)(r2) lwz r3, 0(r2) rlwinm r4, r3, 0, 0, 14 add r4, r4, r3 rlwimi r4, r3, 0, 15, 31 stw r4, 0(r2) blr instead of: _plus3: lis r2, ha16(L_b$non_lazy_ptr) lwz r2, lo16(L_b$non_lazy_ptr)(r2) lwz r4, 0(r2) srwi r5, r4, 17 add r3, r5, r3 slwi r3, r3, 17 rlwimi r3, r4, 0, 15, 31 stw r3, 0(r2) blr llvm-svn: 23381
-
Chris Lattner authored
llvm-svn: 23380
-
Chris Lattner authored
struct S { unsigned int i : 6, j : 11, k : 15; } b; void plus1 (unsigned int x) { b.i += x; } as: _plus1: lis r2, ha16(L_b$non_lazy_ptr) lwz r2, lo16(L_b$non_lazy_ptr)(r2) lwz r4, 0(r2) add r3, r4, r3 rlwimi r3, r4, 0, 0, 25 stw r3, 0(r2) blr instead of: _plus1: lis r2, ha16(L_b$non_lazy_ptr) lwz r2, lo16(L_b$non_lazy_ptr)(r2) lwz r4, 0(r2) rlwinm r5, r4, 0, 26, 31 add r3, r5, r3 rlwimi r3, r4, 0, 0, 25 stw r3, 0(r2) blr llvm-svn: 23379
-
Chris Lattner authored
llvm-svn: 23378
-
Chris Lattner authored
llvm-svn: 23377
-
Chris Lattner authored
struct { unsigned int bit0:1; unsigned int ubyte:31; } sdata; void foo() { sdata.ubyte++; } into this: foo: add DWORD PTR [sdata], 2 ret instead of this: foo: mov %EAX, DWORD PTR [sdata] mov %ECX, %EAX add %ECX, 2 and %ECX, -2 and %EAX, 1 or %EAX, %ECX mov DWORD PTR [sdata], %EAX ret llvm-svn: 23376
-
Chris Lattner authored
llvm-svn: 23375
-
- Sep 17, 2005
-
-
Chris Lattner authored
llvm-svn: 23374
-
Chris Lattner authored
llvm-svn: 23373
-
- Sep 16, 2005
-
-
Nate Begeman authored
llvm-svn: 23371
-
Chris Lattner authored
llvm-svn: 23370
-
Chris Lattner authored
xforms. Run type inference on result patterns, so we always have fully typed results (and to catch errors in .td files). llvm-svn: 23369
-
- Sep 15, 2005
-
-
Chris Lattner authored
llvm-svn: 23368
-
Chris Lattner authored
returned. llvm-svn: 23367
-
Chris Lattner authored
llvm-svn: 23366
-
Chris Lattner authored
llvm-svn: 23365
-
Chris Lattner authored
llvm-svn: 23364
-
Chris Lattner authored
llvm-svn: 23363
-
Chris Lattner authored
predicates since they will have already matched at this point. llvm-svn: 23362
-
Chris Lattner authored
functions to preserve the Record for the xform instead of making it into a function name. llvm-svn: 23361
-
Chris Lattner authored
llvm-svn: 23360
-
- Sep 14, 2005
-
-
Chris Lattner authored
llvm-svn: 23359
-
Chris Lattner authored
llvm-svn: 23358
-
Chris Lattner authored
llvm-svn: 23357
-
Chris Lattner authored
llvm-svn: 23356
-
Chris Lattner authored
lists: only don't parse them if they are entirely missing (sparcv9). llvm-svn: 23355
-
Chris Lattner authored
llvm-svn: 23354
-
Chris Lattner authored
verifying information about the operands. llvm-svn: 23353
-
Chris Lattner authored
specified. The various *imm operands defined by PPC are really all i32, even though the actual immediate is restricted to a smaller value in it. llvm-svn: 23352
-
Chris Lattner authored
llvm-svn: 23351
-
Chris Lattner authored
llvm-svn: 23350
-
Chris Lattner authored
llvm-svn: 23349
-
Chris Lattner authored
llvm-svn: 23348
-
Chris Lattner authored
llvm-svn: 23347
-