QCase.ssa 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # QBE IR generated by the SimpleQ backend
  2. data $x = { w 0 }
  3. data $ExitCode = { w 0 }
  4. export function w $main() {
  5. @start
  6. %t0 =w loadw $x
  7. storew 7, $x
  8. %t1 =w loadw $x
  9. %t2 =w ceqw %t1, 1
  10. jnz %t2, @L1, @L3
  11. @L3
  12. %t3 =w ceqw %t1, 2
  13. jnz %t3, @L1, @L4
  14. @L4
  15. jmp @L2
  16. @L1
  17. %t4 =w loadw $ExitCode
  18. storew 1, $ExitCode
  19. jmp @L0
  20. @L2
  21. %t5 =w csgew %t1, 3
  22. %t6 =w cslew %t1, 6
  23. %t7 =w and %t5, %t6
  24. jnz %t7, @L5, @L7
  25. @L7
  26. jmp @L6
  27. @L5
  28. %t8 =w loadw $ExitCode
  29. storew 2, $ExitCode
  30. jmp @L0
  31. @L6
  32. %t9 =w csgew %t1, 7
  33. %t10 =w cslew %t1, 10
  34. %t11 =w and %t9, %t10
  35. jnz %t11, @L8, @L10
  36. @L10
  37. jmp @L9
  38. @L8
  39. %t12 =w loadw $ExitCode
  40. storew 3, $ExitCode
  41. jmp @L0
  42. @L9
  43. %t13 =w loadw $ExitCode
  44. storew 9, $ExitCode
  45. @L0
  46. %t14 =w loadw $x
  47. %t15 =w add %t14, 1
  48. %t16 =w ceqw %t15, 8
  49. jnz %t16, @L12, @L14
  50. @L14
  51. jmp @L13
  52. @L12
  53. %t17 =w loadw $ExitCode
  54. %t18 =w loadw $ExitCode
  55. %t19 =w add %t18, 100
  56. storew %t19, $ExitCode
  57. jmp @L11
  58. @L13
  59. %t20 =w loadw $ExitCode
  60. storew 0, $ExitCode
  61. @L11
  62. %ec =w loadw $ExitCode
  63. ret %ec
  64. }