QFull.ssa 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. # QBE IR generated by the SimpleQ backend
  2. data $Limit = { w 20 }
  3. data $k = { w 0 }
  4. data $n = { w 0 }
  5. data $s = { w 0 }
  6. data $ExitCode = { w 0 }
  7. export function w $main() {
  8. @start
  9. %t0 =w loadw $n
  10. storew 0, $n
  11. %t1 =w loadw $s
  12. storew 0, $s
  13. storew 1, $k
  14. jmp @L1
  15. @L0
  16. %t2 =w loadw $s
  17. %t3 =w loadw $s
  18. %t4 =w loadw $k
  19. %t5 =w add %t3, %t4
  20. storew %t5, $s
  21. %t6 =w loadw $k
  22. %t7 =w add %t6, 1
  23. storew %t7, $k
  24. @L1
  25. %t8 =w loadw $k
  26. %t9 =w cslew %t8, 10
  27. jnz %t9, @L0, @L2
  28. @L2
  29. %t10 =w loadw $n
  30. %t11 =w loadw $s
  31. %t12 =w loadw $Limit
  32. %t13 =w rem %t11, %t12
  33. storew %t13, $n
  34. @L3
  35. %t14 =w loadw $n
  36. %t15 =w csltw %t14, 0
  37. jnz %t15, @L4, @L5
  38. @L4
  39. %t16 =w loadw $n
  40. %t17 =w loadw $n
  41. %t18 =w add %t17, 1
  42. storew %t18, $n
  43. jmp @L3
  44. @L5
  45. @L6
  46. %t19 =w loadw $n
  47. %t20 =w loadw $n
  48. %t21 =w add %t20, 1
  49. storew %t21, $n
  50. %t22 =w loadw $n
  51. %t23 =w csgew %t22, 17
  52. jnz %t23, @L7, @L6
  53. @L7
  54. @L8
  55. %t24 =w loadw $n
  56. %t25 =w csgtw %t24, 100
  57. jnz %t25, @L10, @L11
  58. @L10
  59. jmp @L9
  60. @L11
  61. @L12
  62. %t26 =w loadw $n
  63. %t27 =w loadw $n
  64. %t28 =w add %t27, 1
  65. storew %t28, $n
  66. %t29 =w loadw $n
  67. %t30 =w csgew %t29, 19
  68. jnz %t30, @L13, @L14
  69. @L13
  70. jmp @L9
  71. @L14
  72. @L15
  73. jmp @L8
  74. @L9
  75. %t31 =w loadw $n
  76. %t32 =w ceqw %t31, 19
  77. jnz %t32, @L17, @L19
  78. @L19
  79. jmp @L18
  80. @L17
  81. %t33 =w loadw $ExitCode
  82. %t34 =w loadw $s
  83. %t35 =w loadw $n
  84. %t36 =w add %t34, %t35
  85. storew %t36, $ExitCode
  86. jmp @L16
  87. @L18
  88. %t37 =w loadw $ExitCode
  89. storew 0, $ExitCode
  90. @L16
  91. %ec =w loadw $ExitCode
  92. ret %ec
  93. }