atomic_opcodes.wat 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. (module
  2. ;; Memory definition: 4 GB = 65536
  3. ;; 8 GB = 131072
  4. ;; 16 GB = 262144
  5. ;; 20 GB = 327680
  6. (memory (;0;) i64 200 200 shared)
  7. ;; Initialize memory with some values
  8. (data (i64.const 0) "\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F\10")
  9. ;; Function to test i32.atomic.store with i64 address
  10. (func (export "i32_atomic_store") (param $addr i64) (param $value i32)
  11. (i32.atomic.store (local.get $addr) (local.get $value))
  12. )
  13. ;; Function to test i32.atomic.store8 with i64 address
  14. (func (export "i32_atomic_store8") (param $addr i64) (param $value i32)
  15. (i32.atomic.store8 (local.get $addr) (local.get $value))
  16. )
  17. ;; Function to test i32.atomic.store16 with i64 address
  18. (func (export "i32_atomic_store16") (param $addr i64) (param $value i32)
  19. (i32.atomic.store16 (local.get $addr) (local.get $value))
  20. )
  21. ;; Function to test i64.atomic.store with i64 address
  22. (func (export "i64_atomic_store") (param $addr i64) (param $value i64)
  23. (i64.atomic.store (local.get $addr) (local.get $value))
  24. )
  25. ;; Function to test i64.atomic.store8 with i64 address
  26. (func (export "i64_atomic_store8") (param $addr i64) (param $value i64)
  27. (i64.atomic.store8 (local.get $addr) (local.get $value))
  28. )
  29. ;; Function to test i64.atomic.store16 with i64 address
  30. (func (export "i64_atomic_store16") (param $addr i64) (param $value i64)
  31. (i64.atomic.store16 (local.get $addr) (local.get $value))
  32. )
  33. ;; Function to test i64.atomic.store32 with i64 address
  34. (func (export "i64_atomic_store32") (param $addr i64) (param $value i64)
  35. (i64.atomic.store32 (local.get $addr) (local.get $value))
  36. )
  37. ;; Function to test i32.atomic.load with i64 address
  38. (func (export "i32_atomic_load") (param $addr i64) (result i32)
  39. (i32.atomic.load (local.get $addr))
  40. )
  41. ;; Function to test i32.atomic.load8_u with i64 address
  42. (func (export "i32_atomic_load8_u") (param $addr i64) (result i32)
  43. (i32.atomic.load8_u (local.get $addr))
  44. )
  45. ;; Function to test i32.atomic.load16_u with i64 address
  46. (func (export "i32_atomic_load16_u") (param $addr i64) (result i32)
  47. (i32.atomic.load16_u (local.get $addr))
  48. )
  49. ;; Function to test i64.atomic.load with i64 address
  50. (func (export "i64_atomic_load") (param $addr i64) (result i64)
  51. (i64.atomic.load (local.get $addr))
  52. )
  53. ;; Function to test i64.atomic.load8_u with i64 address
  54. (func (export "i64_atomic_load8_u") (param $addr i64) (result i64)
  55. (i64.atomic.load8_u (local.get $addr))
  56. )
  57. ;; Function to test i64.atomic.load16_u with i64 address
  58. (func (export "i64_atomic_load16_u") (param $addr i64) (result i64)
  59. (i64.atomic.load16_u (local.get $addr))
  60. )
  61. ;; Function to test i64.atomic.load32_u with i64 address
  62. (func (export "i64_atomic_load32_u") (param $addr i64) (result i64)
  63. (i64.atomic.load32_u (local.get $addr))
  64. )
  65. ;; Function to test i32.atomic.rmw.add with i64 address
  66. (func (export "i32_atomic_rmw_add") (param $addr i64) (param $value i32) (result i32)
  67. (i32.atomic.rmw.add (local.get $addr) (local.get $value))
  68. )
  69. ;; Function to test i32.atomic.rmw8.add_u with i64 address
  70. (func (export "i32_atomic_rmw8_add_u") (param $addr i64) (param $value i32) (result i32)
  71. (i32.atomic.rmw8.add_u (local.get $addr) (local.get $value))
  72. )
  73. ;; Function to test i32.atomic.rmw16.add_u with i64 address
  74. (func (export "i32_atomic_rmw16_add_u") (param $addr i64) (param $value i32) (result i32)
  75. (i32.atomic.rmw16.add_u (local.get $addr) (local.get $value))
  76. )
  77. ;; Function to test i64.atomic.rmw.add with i64 address
  78. (func (export "i64_atomic_rmw_add") (param $addr i64) (param $value i64) (result i64)
  79. (i64.atomic.rmw.add (local.get $addr) (local.get $value))
  80. )
  81. ;; Function to test i64.atomic.rmw8.add_u with i64 address
  82. (func (export "i64_atomic_rmw8_add_u") (param $addr i64) (param $value i64) (result i64)
  83. (i64.atomic.rmw8.add_u (local.get $addr) (local.get $value))
  84. )
  85. ;; Function to test i64.atomic.rmw16.add_u with i64 address
  86. (func (export "i64_atomic_rmw16_add_u") (param $addr i64) (param $value i64) (result i64)
  87. (i64.atomic.rmw16.add_u (local.get $addr) (local.get $value))
  88. )
  89. ;; Function to test i64.atomic.rmw32.add_u with i64 address
  90. (func (export "i64_atomic_rmw32_add_u") (param $addr i64) (param $value i64) (result i64)
  91. (i64.atomic.rmw32.add_u (local.get $addr) (local.get $value))
  92. )
  93. (func (export "i64_atomic_rmw_cmpxchg") (param $addr i64) (param $old i64) (param $new i64) (result i64)
  94. (i64.atomic.rmw.cmpxchg (local.get $addr) (local.get $old) (local.get $new))
  95. )
  96. )