packages feed

inline-asm-0.2.0.0: app/Main.hs

{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
{-# LANGUAGE GHCForeignImportPrim, UnliftedFFITypes, UnboxedTuples #-}

module Main where

import Language.Asm.Inline
import Language.Asm.Inline.QQ

defineAsmFun "swap" [t| Int -> Int -> (Int, Int) |] "xchg %rbx, %r14"

defineAsmFun "swap2p1"
  [t| Int -> Int -> (Int, Int) |]
  [asm| a b |
  xchg ${a}, ${b}
  add $1, ${b}
  |]

defineAsmFun "testInt" [t| Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int |] "int $3"
defineAsmFun "testDouble" [t| Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double |] "int $3"

main :: IO ()
main = do
  print $ testInt 0 1 2 3 4 5 6
  print $ testDouble 1 1 0 0 0 0 1