load2.ssa 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # blit & load elimination
  2. export
  3. function $f() {
  4. @start
  5. %x =l alloc4 12
  6. %y =l alloc4 12
  7. %x1 =l add 1, %x
  8. %x2 =l add 1, %x1
  9. %x3 =l add 1, %x2
  10. %x4 =l add 1, %x3
  11. %x5 =l add 1, %x4
  12. %x6 =l add 1, %x5
  13. %x7 =l add 1, %x6
  14. %x8 =l add 1, %x7
  15. %x9 =l add 1, %x8
  16. %xa =l add 1, %x9
  17. %xb =l add 1, %xa
  18. %y1 =l add 1, %y
  19. %y4 =l add 4, %y
  20. storew 287454020, %x4 # 0x11223344
  21. storew 1432778632, %y # 0x55667788
  22. blit %y, %x5, 1
  23. %n =w load %x4
  24. call $px(w %n) # 0x11228844
  25. storew 287454020, %x4 # 0x11223344
  26. storew 1432778632, %y # 0x55667788
  27. blit %y, %x5, 2
  28. %n =w load %x4
  29. call $px(w %n) # 0x11778844
  30. storew 287454020, %x4 # 0x11223344
  31. storew 1432778632, %y # 0x55667788
  32. blit %y, %x5, 4
  33. %n =w load %x4
  34. call $px(w %n) # 0x66778844
  35. storew 287454020, %x4 # 0x11223344
  36. storew 1432778632, %y # 0x55667788
  37. blit %y, %x2, 4
  38. %n =w load %x4
  39. call $px(w %n) # 0x11225566
  40. storew 287454020, %x4 # 0x11223344
  41. storew 0, %y
  42. storew 1432778632, %y4 # 0x55667788
  43. blit %y1, %x2, 7
  44. %n =w load %x4
  45. call $px(w %n) # 0x66778800
  46. ret
  47. }
  48. # >>> driver
  49. # #include <stdio.h>
  50. # void px(unsigned n) {
  51. # printf("0x%08x\n", n);
  52. # }
  53. # int main() {
  54. # extern void f(void);
  55. # f();
  56. # }
  57. # <<<
  58. # >>> output
  59. # 0x11228844
  60. # 0x11778844
  61. # 0x66778844
  62. # 0x11225566
  63. # 0x66778800
  64. # <<<