| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- export
- function w $ifmv(w %p1, w %p2, w %p3) {
- @start
- @entry
- %rt =w add %p2, %p3 # gcm moves to @true
- %rf =w sub %p2, %p3 # gcm moves to @false
- jnz %p1, @true, @false
- @true
- %r =w copy %rt
- jmp @exit
- @false
- %r =w copy %rf
- jmp @exit
- @exit
- ret %r
- }
- export
- function w $hoist1(w %p1, w %p2, w %p3) {
- @start
- @entry
- %n =w copy 0
- %i =w copy %p1
- @loop
- %base =w add %p2, %p3 # gcm moves to @exit
- %i =w sub %i, 1
- %n =w add %n, 1
- jnz %i, @loop, @exit
- @exit
- %r =w add %base, %n
- ret %r
- }
- export
- function w $hoist2(w %p1, w %p2, w %p3) {
- @start
- @entry
- %n =w copy 0
- %i =w copy %p1
- @loop
- %base =w add %p2, %p3 # gcm moves to @entry
- %i =w sub %i, 1
- %n =w add %n, %base
- jnz %i, @loop, @exit
- @exit
- %r =w add %base, %n
- ret %r
- }
|