diff --git a/Changes.md b/Changes.md
--- a/Changes.md
+++ b/Changes.md
@@ -1,5 +1,9 @@
 # Change log for the `llvm-tf` package
 
+## 3.1.2
+
+* `Instructions`: setters for FastMath flags
+
 ## 3.1.0.1
 
 * `addFunctionMapping` checks for functions
diff --git a/llvm-tf.cabal b/llvm-tf.cabal
--- a/llvm-tf.cabal
+++ b/llvm-tf.cabal
@@ -1,5 +1,5 @@
 Name:          llvm-tf
-Version:       3.1.1.1
+Version:       3.1.2
 License:       BSD3
 License-File:  LICENSE
 Synopsis:      Bindings to the LLVM compiler toolkit using type families.
@@ -39,7 +39,7 @@
   Location: http://code.haskell.org/~thielema/llvm-tf/
 
 Source-Repository this
-  Tag:      3.1.1.1
+  Tag:      3.1.2
   Type:     darcs
   Location: http://code.haskell.org/~thielema/llvm-tf/
 
@@ -59,7 +59,7 @@
     tfp >=1.0 && <1.1,
     transformers >=0.3 && <0.6,
     storable-record >=0.0.2 && <0.1,
-    enumset >=0.0.4 && <0.1,
+    enumset >=0.0.5 && <0.1,
     fixed-length >=0.2 && <0.3,
     non-empty >=0.2 && <0.4,
     semigroups >=0.1 && <1.0,
diff --git a/src/LLVM/Core/Instructions.hs b/src/LLVM/Core/Instructions.hs
--- a/src/LLVM/Core/Instructions.hs
+++ b/src/LLVM/Core/Instructions.hs
@@ -56,6 +56,12 @@
     CmpOp, CmpRet, CmpResult, CmpValueResult,
     cmp, pcmp, icmp, fcmp,
     select,
+    -- * Fast math
+    setHasNoNaNs,
+    setHasNoInfs,
+    setHasNoSignedZeros,
+    setHasAllowReciprocal,
+    setFastMath,
     -- * Other
     phi, addPhiInputs,
     call, callWithConv,
@@ -942,6 +948,22 @@
     cmpop
         (FFI.constFCmp (fromFPPredicate p))
         (flip FFI.buildFCmp (fromFPPredicate p))
+
+--------------------------------------
+
+setHasNoNaNs, setHasNoInfs, setHasNoSignedZeros, setHasAllowReciprocal,
+    setFastMath :: (IsFloating a) => Bool -> Value a -> CodeGenFunction r ()
+setHasNoNaNs          = fastMath FFI.setHasNoNaNs
+setHasNoInfs          = fastMath FFI.setHasNoInfs
+setHasNoSignedZeros   = fastMath FFI.setHasNoSignedZeros
+setHasAllowReciprocal = fastMath FFI.setHasAllowReciprocal
+setFastMath           = fastMath FFI.setHasUnsafeAlgebra
+
+fastMath ::
+    (IsFloating a) =>
+    (FFI.ValueRef -> CUInt -> IO ()) -> Bool -> Value a -> CodeGenFunction r ()
+fastMath setter b (Value v) = liftIO $ setter v $ fromIntegral $ fromEnum b
+
 
 --------------------------------------
 
diff --git a/src/LLVM/ExecutionEngine/Engine.hs b/src/LLVM/ExecutionEngine/Engine.hs
--- a/src/LLVM/ExecutionEngine/Engine.hs
+++ b/src/LLVM/ExecutionEngine/Engine.hs
@@ -35,7 +35,7 @@
 import Control.Monad (liftM, )
 import Control.Applicative (Applicative, pure, (<*>), (<$>), )
 
-import qualified Data.EnumSet as EnumSet
+import qualified Data.EnumBitSet as EnumSet
 import Data.Int (Int8, Int16, Int32, Int64)
 import Data.Word (Word8, Word16, Word32, Word64)
 
