diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,11 @@
 project adheres to the [Haskell Package Versioning
 Policy (PVP)](https://pvp.haskell.org)
 
+
+## [1.1.0.1] - 2018-01-08
+### Fixed
+ * add support for building with CUDA-9.x
+
 ## [1.1.0.0] - 2017-09-21
 ### Added
  * support for GHC-8.2
@@ -27,7 +32,8 @@
   * initial release
 
 
-[1.1.0.0]:              https://github.com/AccelerateHS/accelerate-llvm/compare/1.0.0.0...HEAD
+[1.1.0.1]:              https://github.com/AccelerateHS/accelerate-llvm/compare/1.1.0.0...1.1.0.1-ptx
+[1.1.0.0]:              https://github.com/AccelerateHS/accelerate-llvm/compare/1.0.0.0...1.1.0.0
 [1.0.0.1]:              https://github.com/AccelerateHS/accelerate-llvm/compare/1.0.0.0...1.0.0.1
 [1.0.0.0]:              https://github.com/AccelerateHS/accelerate-llvm/compare/be7f91295f77434b2103c70aa1cabb6a4f2b09a8...1.0.0.0
 
diff --git a/Data/Array/Accelerate/LLVM/PTX/Compile/Libdevice/Load.hs b/Data/Array/Accelerate/LLVM/PTX/Compile/Libdevice/Load.hs
--- a/Data/Array/Accelerate/LLVM/PTX/Compile/Libdevice/Load.hs
+++ b/Data/Array/Accelerate/LLVM/PTX/Compile/Libdevice/Load.hs
@@ -33,6 +33,7 @@
 
 -- cuda
 import Foreign.CUDA.Analysis
+import qualified Foreign.CUDA.Driver                                as CUDA
 
 -- standard library
 import Data.ByteString                                              ( ByteString )
@@ -64,6 +65,10 @@
   libdevice :: Compute -> a
 
 instance Libdevice AST.Module where
+  libdevice _
+    | CUDA.libraryVersion >= 9000
+    = libdevice_50_mdl
+  --
   libdevice (Compute n m) =
     case (n,m) of
       (2,_)             -> libdevice_20_mdl   -- 2.0, 2.1
@@ -74,6 +79,10 @@
       _                 -> $internalError "libdevice" "no binary for this architecture"
 
 instance Libdevice (String, ByteString) where
+  libdevice _
+    | CUDA.libraryVersion >= 9000
+    = libdevice_50_bc
+  --
   libdevice (Compute n m) =
     case (n,m) of
       (2,_)             -> libdevice_20_bc    -- 2.0, 2.1
@@ -87,6 +96,13 @@
 -- Load the libdevice bitcode files as an LLVM AST module. The top-level
 -- unsafePerformIO ensures that the data is only read from disk once per program
 -- execution.
+--
+-- TLM: As of CUDA-9.0, libdevice is no longer split into multiple files
+-- depending on the target compute architecture. The function 'libdeviceBitcode'
+-- knows this and ignores the architecture parameter, and in the above instances
+-- we only refer to the 5.0 module below. Although the TH splices will be run
+-- 4 times (and read in the same file 4 times) hopefully GHC is smart enough to
+-- remove the unused bindings as dead code...
 --
 {-# NOINLINE libdevice_20_mdl #-}
 {-# NOINLINE libdevice_30_mdl #-}
diff --git a/Data/Array/Accelerate/LLVM/PTX/Compile/Libdevice/TH.hs b/Data/Array/Accelerate/LLVM/PTX/Compile/Libdevice/TH.hs
--- a/Data/Array/Accelerate/LLVM/PTX/Compile/Libdevice/TH.hs
+++ b/Data/Array/Accelerate/LLVM/PTX/Compile/Libdevice/TH.hs
@@ -32,6 +32,7 @@
 
 import Foreign.CUDA.Path
 import Foreign.CUDA.Analysis
+import qualified Foreign.CUDA.Driver                                as CUDA
 
 import Data.ByteString                                              ( ByteString )
 import Data.FileEmbed
@@ -105,9 +106,12 @@
 --
 libdeviceBitcode :: Compute -> Q (TExp (String, ByteString))
 libdeviceBitcode (Compute m n) = do
-  let arch    = printf "libdevice.compute_%d%d" m n
-      err     = $internalError "libdevice" (printf "not found: %s.YY.bc" arch)
-      best f  = arch `isPrefixOf` f && takeExtension f == ".bc"
+  let basename
+        | CUDA.libraryVersion < 9000 = printf "libdevice.compute_%d%d" m n
+        | otherwise                  = "libdevice"
+      --
+      err     = $internalError "libdevice" (printf "not found: %s.YY.bc" basename)
+      best f  = basename `isPrefixOf` f && takeExtension f == ".bc"
       base    = cudaInstallPath </> "nvvm" </> "libdevice"
   --
   files <- runIO $ getDirectoryContents base
diff --git a/Data/Array/Accelerate/LLVM/PTX/Target.hs b/Data/Array/Accelerate/LLVM/PTX/Target.hs
--- a/Data/Array/Accelerate/LLVM/PTX/Target.hs
+++ b/Data/Array/Accelerate/LLVM/PTX/Target.hs
@@ -165,6 +165,7 @@
 ptxISAVersion 5 2 = "ptx41"
 ptxISAVersion 5 3 = "ptx42"
 ptxISAVersion 6 _ = "ptx50"
+ptxISAVersion 7 _ = "ptx60"
 ptxISAVersion _ _ = "ptx40"
 
 
diff --git a/accelerate-llvm-ptx.cabal b/accelerate-llvm-ptx.cabal
--- a/accelerate-llvm-ptx.cabal
+++ b/accelerate-llvm-ptx.cabal
@@ -1,5 +1,5 @@
 name:                   accelerate-llvm-ptx
-version:                1.1.0.0
+version:                1.1.0.1
 cabal-version:          >= 1.10
 tested-with:            GHC >= 7.10
 build-type:             Simple
@@ -164,7 +164,7 @@
         , accelerate-llvm               == 1.1.*
         , bytestring                    >= 0.10.4
         , containers                    >= 0.5 && <0.6
-        , cuda                          >= 0.8
+        , cuda                          >= 0.9
         , deepseq                       >= 1.3
         , directory                     >= 1.0
         , dlist                         >= 0.6
@@ -172,8 +172,8 @@
         , file-embed                    >= 0.0.8
         , filepath                      >= 1.0
         , hashable                      >= 1.2
-        , llvm-hs                       >= 4.1 && < 5.1
-        , llvm-hs-pure                  >= 4.1 && < 5.1
+        , llvm-hs                       >= 4.1 && < 5.2
+        , llvm-hs-pure                  >= 4.1 && < 5.2
         , mtl                           >= 2.2.1
         , nvvm                          >= 0.7.5
         , pretty                        >= 1.1
@@ -212,7 +212,7 @@
 
 source-repository this
   type:                 git
-  tag:                  1.1.0.0
+  tag:                  1.1.0.1-ptx
   location:             https://github.com/AccelerateHS/accelerate-llvm.git
 
 -- vim: nospell
