diff --git a/llvm-extra.cabal b/llvm-extra.cabal
--- a/llvm-extra.cabal
+++ b/llvm-extra.cabal
@@ -1,5 +1,5 @@
 Name:           llvm-extra
-Version:        0.6.0.2
+Version:        0.7
 License:        BSD3
 License-File:   LICENSE
 Author:         Henning Thielemann <haskell@henning-thielemann.de>
@@ -71,7 +71,7 @@
   default:     True
 
 Source-Repository this
-  Tag:         0.6.0.2
+  Tag:         0.7
   Type:        darcs
   Location:    http://code.haskell.org/~thielema/llvm-extra/
 
@@ -112,13 +112,11 @@
     LLVM.Extra.Arithmetic
     LLVM.Extra.Monad
     LLVM.Extra.Memory
-    LLVM.Extra.ForeignPtr
     LLVM.Extra.Maybe
     LLVM.Extra.MaybeContinuation
     LLVM.Extra.Either
     LLVM.Extra.Class
     LLVM.Extra.Control
-    LLVM.Extra.Execution
     LLVM.Extra.Extension
     LLVM.Extra.Extension.X86
     LLVM.Extra.ExtensionCheck.X86
diff --git a/src/LLVM/Extra/Arithmetic.hs b/src/LLVM/Extra/Arithmetic.hs
--- a/src/LLVM/Extra/Arithmetic.hs
+++ b/src/LLVM/Extra/Arithmetic.hs
@@ -174,6 +174,9 @@
 
 
 
+{- |
+In Haskell terms this is a 'quot'.
+-}
 idiv ::
    (IsInteger a) =>
    Value a -> Value a -> CodeGenFunction r (Value a)
diff --git a/src/LLVM/Extra/Execution.hs b/src/LLVM/Extra/Execution.hs
deleted file mode 100644
--- a/src/LLVM/Extra/Execution.hs
+++ /dev/null
@@ -1,35 +0,0 @@
-{-# LANGUAGE TypeFamilies #-}
-module LLVM.Extra.Execution
-   {-# DEPRECATED "It is based on ExecutionEngine.getPointerToFunction which is error-prone since llvm-tf-3.1." #-}
-   where
-
-import qualified LLVM.ExecutionEngine as EE
-import qualified LLVM.Core as LLVM
-
-import Foreign.Ptr (FunPtr, )
-
-import Control.Monad (liftM2, liftM3, )
-
-
-class Compile externFunction where
-   type LLVMFunction externFunction :: *
-   compile :: LLVMFunction externFunction -> EE.EngineAccess externFunction
-
-instance Compile (FunPtr f) where
-   type LLVMFunction (FunPtr f) = (LLVM.Function f)
-   compile = EE.getPointerToFunction
-
-instance (Compile fa, Compile fb) => Compile (fa,fb) where
-   type LLVMFunction (fa,fb) = (LLVMFunction fa, LLVMFunction fb)
-   compile (fa,fb) =
-      liftM2 (,)
-         (compile fa)
-         (compile fb)
-
-instance (Compile fa, Compile fb, Compile fc) => Compile (fa,fb,fc) where
-   type LLVMFunction (fa,fb,fc) = (LLVMFunction fa, LLVMFunction fb, LLVMFunction fc)
-   compile (fa,fb,fc) =
-      liftM3 (,,)
-         (compile fa)
-         (compile fb)
-         (compile fc)
diff --git a/src/LLVM/Extra/Extension/X86Auto.hs b/src/LLVM/Extra/Extension/X86Auto.hs
--- a/src/LLVM/Extra/Extension/X86Auto.hs
+++ b/src/LLVM/Extra/Extension/X86Auto.hs
@@ -10,1521 +10,2690 @@
 import Foreign.Ptr (Ptr, )
 
 type MMX = LLVM.Value (LLVM.Vector TypeNum.D8 W.Word8)
-type V16Int16 = LLVM.Value (LLVM.Vector TypeNum.D16 I.Int16)
-type V16Int8 = LLVM.Value (LLVM.Vector TypeNum.D16 I.Int8)
-type V16Word16 = LLVM.Value (LLVM.Vector TypeNum.D16 W.Word16)
-type V16Word8 = LLVM.Value (LLVM.Vector TypeNum.D16 W.Word8)
-type V2Double = LLVM.Value (LLVM.Vector TypeNum.D2 Double)
-type V2Int64 = LLVM.Value (LLVM.Vector TypeNum.D2 I.Int64)
-type V2Word64 = LLVM.Value (LLVM.Vector TypeNum.D2 W.Word64)
-type V32Int8 = LLVM.Value (LLVM.Vector TypeNum.D32 I.Int8)
-type V32Word8 = LLVM.Value (LLVM.Vector TypeNum.D32 W.Word8)
-type V4Double = LLVM.Value (LLVM.Vector TypeNum.D4 Double)
-type V4Float = LLVM.Value (LLVM.Vector TypeNum.D4 Float)
-type V4Int32 = LLVM.Value (LLVM.Vector TypeNum.D4 I.Int32)
-type V4Int64 = LLVM.Value (LLVM.Vector TypeNum.D4 I.Int64)
-type V4Word32 = LLVM.Value (LLVM.Vector TypeNum.D4 W.Word32)
-type V4Word64 = LLVM.Value (LLVM.Vector TypeNum.D4 W.Word64)
-type V8Float = LLVM.Value (LLVM.Vector TypeNum.D8 Float)
-type V8Int16 = LLVM.Value (LLVM.Vector TypeNum.D8 I.Int16)
-type V8Int32 = LLVM.Value (LLVM.Vector TypeNum.D8 I.Int32)
-type V8Word16 = LLVM.Value (LLVM.Vector TypeNum.D8 W.Word16)
-type V8Word32 = LLVM.Value (LLVM.Vector TypeNum.D8 W.Word32)
-
-pavgusb :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pavgusb = Ext.intrinsic ExtX86.amd3dnow "pavgusb"
-
-pf2id :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
-pf2id = Ext.intrinsic ExtX86.amd3dnow "pf2id"
-
-pfacc :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pfacc = Ext.intrinsic ExtX86.amd3dnow "pfacc"
-
-pfadd :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pfadd = Ext.intrinsic ExtX86.amd3dnow "pfadd"
-
-pfcmpeq :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pfcmpeq = Ext.intrinsic ExtX86.amd3dnow "pfcmpeq"
-
-pfcmpge :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pfcmpge = Ext.intrinsic ExtX86.amd3dnow "pfcmpge"
-
-pfcmpgt :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pfcmpgt = Ext.intrinsic ExtX86.amd3dnow "pfcmpgt"
-
-pfmax :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pfmax = Ext.intrinsic ExtX86.amd3dnow "pfmax"
-
-pfmin :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pfmin = Ext.intrinsic ExtX86.amd3dnow "pfmin"
-
-pfmul :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pfmul = Ext.intrinsic ExtX86.amd3dnow "pfmul"
-
-pfrcp :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
-pfrcp = Ext.intrinsic ExtX86.amd3dnow "pfrcp"
-
-pfrcpit1 :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pfrcpit1 = Ext.intrinsic ExtX86.amd3dnow "pfrcpit1"
-
-pfrcpit2 :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pfrcpit2 = Ext.intrinsic ExtX86.amd3dnow "pfrcpit2"
-
-pfrsqrt :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
-pfrsqrt = Ext.intrinsic ExtX86.amd3dnow "pfrsqrt"
-
-pfrsqit1 :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pfrsqit1 = Ext.intrinsic ExtX86.amd3dnow "pfrsqit1"
-
-pfsub :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pfsub = Ext.intrinsic ExtX86.amd3dnow "pfsub"
-
-pfsubr :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pfsubr = Ext.intrinsic ExtX86.amd3dnow "pfsubr"
-
-pi2fd :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
-pi2fd = Ext.intrinsic ExtX86.amd3dnow "pi2fd"
-
-pmulhrw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pmulhrw = Ext.intrinsic ExtX86.amd3dnow "pmulhrw"
-
-pf2iw :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
-pf2iw = Ext.intrinsic ExtX86.amd3dnowa "pf2iw"
-
-pfnacc :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pfnacc = Ext.intrinsic ExtX86.amd3dnowa "pfnacc"
-
-pfpnacc :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pfpnacc = Ext.intrinsic ExtX86.amd3dnowa "pfpnacc"
-
-pi2fw :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
-pi2fw = Ext.intrinsic ExtX86.amd3dnowa "pi2fw"
-
-addss :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-addss = Ext.intrinsic ExtX86.sse1 "add.ss"
-
-subss :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-subss = Ext.intrinsic ExtX86.sse1 "sub.ss"
-
-mulss :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-mulss = Ext.intrinsic ExtX86.sse1 "mul.ss"
-
-divss :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-divss = Ext.intrinsic ExtX86.sse1 "div.ss"
-
-sqrtss :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Float))
-sqrtss = Ext.intrinsic ExtX86.sse1 "sqrt.ss"
-
-sqrtps :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Float))
-sqrtps = Ext.intrinsic ExtX86.sse1 "sqrt.ps"
-
-rcpss :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Float))
-rcpss = Ext.intrinsic ExtX86.sse1 "rcp.ss"
-
-rcpps :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Float))
-rcpps = Ext.intrinsic ExtX86.sse1 "rcp.ps"
-
-rsqrtss :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Float))
-rsqrtss = Ext.intrinsic ExtX86.sse1 "rsqrt.ss"
-
-rsqrtps :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Float))
-rsqrtps = Ext.intrinsic ExtX86.sse1 "rsqrt.ps"
-
-minss :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-minss = Ext.intrinsic ExtX86.sse1 "min.ss"
-
-minps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-minps = Ext.intrinsic ExtX86.sse1 "min.ps"
-
-maxss :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-maxss = Ext.intrinsic ExtX86.sse1 "max.ss"
-
-maxps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-maxps = Ext.intrinsic ExtX86.sse1 "max.ps"
-
-cmpss :: Ext.T (V4Float -> V4Float -> LLVM.Value W.Word8 -> LLVM.CodeGenFunction r (V4Float))
-cmpss = Ext.intrinsic ExtX86.sse1 "cmp.ss"
-
-cmpps :: Ext.T (V4Float -> V4Float -> LLVM.Value W.Word8 -> LLVM.CodeGenFunction r (V4Float))
-cmpps = Ext.intrinsic ExtX86.sse1 "cmp.ps"
-
-comieq :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-comieq = Ext.intrinsic ExtX86.sse1 "comieq.ss"
-
-comilt :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-comilt = Ext.intrinsic ExtX86.sse1 "comilt.ss"
-
-comile :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-comile = Ext.intrinsic ExtX86.sse1 "comile.ss"
-
-comigt :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-comigt = Ext.intrinsic ExtX86.sse1 "comigt.ss"
-
-comige :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-comige = Ext.intrinsic ExtX86.sse1 "comige.ss"
-
-comineq :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-comineq = Ext.intrinsic ExtX86.sse1 "comineq.ss"
-
-ucomieq :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ucomieq = Ext.intrinsic ExtX86.sse1 "ucomieq.ss"
-
-ucomilt :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ucomilt = Ext.intrinsic ExtX86.sse1 "ucomilt.ss"
-
-ucomile :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ucomile = Ext.intrinsic ExtX86.sse1 "ucomile.ss"
-
-ucomigt :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ucomigt = Ext.intrinsic ExtX86.sse1 "ucomigt.ss"
-
-ucomige :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ucomige = Ext.intrinsic ExtX86.sse1 "ucomige.ss"
-
-ucomineq :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ucomineq = Ext.intrinsic ExtX86.sse1 "ucomineq.ss"
-
-cvtss2si :: Ext.T (V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-cvtss2si = Ext.intrinsic ExtX86.sse1 "cvtss2si"
-
-cvtss2si64 :: Ext.T (V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int64))
-cvtss2si64 = Ext.intrinsic ExtX86.sse1 "cvtss2si64"
-
-cvttss2si :: Ext.T (V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-cvttss2si = Ext.intrinsic ExtX86.sse1 "cvttss2si"
-
-cvttss2si64 :: Ext.T (V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int64))
-cvttss2si64 = Ext.intrinsic ExtX86.sse1 "cvttss2si64"
-
-cvtsi2ss :: Ext.T (V4Float -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Float))
-cvtsi2ss = Ext.intrinsic ExtX86.sse1 "cvtsi2ss"
-
-cvtsi642ss :: Ext.T (V4Float -> LLVM.Value I.Int64 -> LLVM.CodeGenFunction r (V4Float))
-cvtsi642ss = Ext.intrinsic ExtX86.sse1 "cvtsi642ss"
-
-cvtps2pi :: Ext.T (V4Float -> LLVM.CodeGenFunction r (MMX))
-cvtps2pi = Ext.intrinsic ExtX86.sse1 "cvtps2pi"
-
-cvttps2pi :: Ext.T (V4Float -> LLVM.CodeGenFunction r (MMX))
-cvttps2pi = Ext.intrinsic ExtX86.sse1 "cvttps2pi"
-
-cvtpi2ps :: Ext.T (V4Float -> MMX -> LLVM.CodeGenFunction r (V4Float))
-cvtpi2ps = Ext.intrinsic ExtX86.sse1 "cvtpi2ps"
-
-storeups :: Ext.T (LLVM.Value (Ptr ()) -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value ()))
-storeups = Ext.intrinsic ExtX86.sse1 "storeu.ps"
-
-sfence :: Ext.T (LLVM.CodeGenFunction r (LLVM.Value ()))
-sfence = Ext.intrinsic ExtX86.sse1 "sfence"
-
-movmskps :: Ext.T (V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-movmskps = Ext.intrinsic ExtX86.sse1 "movmsk.ps"
-
-addsd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-addsd = Ext.intrinsic ExtX86.sse2 "add.sd"
-
-subsd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-subsd = Ext.intrinsic ExtX86.sse2 "sub.sd"
-
-mulsd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-mulsd = Ext.intrinsic ExtX86.sse2 "mul.sd"
-
-divsd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-divsd = Ext.intrinsic ExtX86.sse2 "div.sd"
-
-sqrtsd :: Ext.T (V2Double -> LLVM.CodeGenFunction r (V2Double))
-sqrtsd = Ext.intrinsic ExtX86.sse2 "sqrt.sd"
-
-sqrtpd :: Ext.T (V2Double -> LLVM.CodeGenFunction r (V2Double))
-sqrtpd = Ext.intrinsic ExtX86.sse2 "sqrt.pd"
-
-minsd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-minsd = Ext.intrinsic ExtX86.sse2 "min.sd"
-
-minpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-minpd = Ext.intrinsic ExtX86.sse2 "min.pd"
-
-maxsd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-maxsd = Ext.intrinsic ExtX86.sse2 "max.sd"
-
-maxpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-maxpd = Ext.intrinsic ExtX86.sse2 "max.pd"
-
-cmpsd :: Ext.T (V2Double -> V2Double -> LLVM.Value W.Word8 -> LLVM.CodeGenFunction r (V2Double))
-cmpsd = Ext.intrinsic ExtX86.sse2 "cmp.sd"
-
-cmppd :: Ext.T (V2Double -> V2Double -> LLVM.Value W.Word8 -> LLVM.CodeGenFunction r (V2Double))
-cmppd = Ext.intrinsic ExtX86.sse2 "cmp.pd"
-
-comisdeq :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-comisdeq = Ext.intrinsic ExtX86.sse2 "comieq.sd"
-
-comisdlt :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-comisdlt = Ext.intrinsic ExtX86.sse2 "comilt.sd"
-
-comisdle :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-comisdle = Ext.intrinsic ExtX86.sse2 "comile.sd"
-
-comisdgt :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-comisdgt = Ext.intrinsic ExtX86.sse2 "comigt.sd"
-
-comisdge :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-comisdge = Ext.intrinsic ExtX86.sse2 "comige.sd"
-
-comisdneq :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-comisdneq = Ext.intrinsic ExtX86.sse2 "comineq.sd"
-
-ucomisdeq :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ucomisdeq = Ext.intrinsic ExtX86.sse2 "ucomieq.sd"
-
-ucomisdlt :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ucomisdlt = Ext.intrinsic ExtX86.sse2 "ucomilt.sd"
-
-ucomisdle :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ucomisdle = Ext.intrinsic ExtX86.sse2 "ucomile.sd"
-
-ucomisdgt :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ucomisdgt = Ext.intrinsic ExtX86.sse2 "ucomigt.sd"
-
-ucomisdge :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ucomisdge = Ext.intrinsic ExtX86.sse2 "ucomige.sd"
-
-ucomisdneq :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ucomisdneq = Ext.intrinsic ExtX86.sse2 "ucomineq.sd"
-
-paddsb128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
-paddsb128 = Ext.intrinsic ExtX86.sse2 "padds.b"
-
-paddsw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-paddsw128 = Ext.intrinsic ExtX86.sse2 "padds.w"
-
-paddusb128 :: Ext.T (V16Word8 -> V16Word8 -> LLVM.CodeGenFunction r (V16Word8))
-paddusb128 = Ext.intrinsic ExtX86.sse2 "paddus.b"
-
-paddusw128 :: Ext.T (V8Word16 -> V8Word16 -> LLVM.CodeGenFunction r (V8Word16))
-paddusw128 = Ext.intrinsic ExtX86.sse2 "paddus.w"
-
-psubsb128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
-psubsb128 = Ext.intrinsic ExtX86.sse2 "psubs.b"
-
-psubsw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-psubsw128 = Ext.intrinsic ExtX86.sse2 "psubs.w"
-
-psubusb128 :: Ext.T (V16Word8 -> V16Word8 -> LLVM.CodeGenFunction r (V16Word8))
-psubusb128 = Ext.intrinsic ExtX86.sse2 "psubus.b"
-
-psubusw128 :: Ext.T (V8Word16 -> V8Word16 -> LLVM.CodeGenFunction r (V8Word16))
-psubusw128 = Ext.intrinsic ExtX86.sse2 "psubus.w"
-
-pmulhuw128 :: Ext.T (V8Word16 -> V8Word16 -> LLVM.CodeGenFunction r (V8Word16))
-pmulhuw128 = Ext.intrinsic ExtX86.sse2 "pmulhu.w"
-
-pmulhw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-pmulhw128 = Ext.intrinsic ExtX86.sse2 "pmulh.w"
-
-pmuludq128 :: Ext.T (V4Word32 -> V4Word32 -> LLVM.CodeGenFunction r (V2Word64))
-pmuludq128 = Ext.intrinsic ExtX86.sse2 "pmulu.dq"
-
-pmaddwd128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V4Int32))
-pmaddwd128 = Ext.intrinsic ExtX86.sse2 "pmadd.wd"
-
-pavgb128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
-pavgb128 = Ext.intrinsic ExtX86.sse2 "pavg.b"
-
-pavgw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-pavgw128 = Ext.intrinsic ExtX86.sse2 "pavg.w"
-
-pmaxub128 :: Ext.T (V16Word8 -> V16Word8 -> LLVM.CodeGenFunction r (V16Word8))
-pmaxub128 = Ext.intrinsic ExtX86.sse2 "pmaxu.b"
-
-pmaxsw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-pmaxsw128 = Ext.intrinsic ExtX86.sse2 "pmaxs.w"
-
-pminub128 :: Ext.T (V16Word8 -> V16Word8 -> LLVM.CodeGenFunction r (V16Word8))
-pminub128 = Ext.intrinsic ExtX86.sse2 "pminu.b"
-
-pminsw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-pminsw128 = Ext.intrinsic ExtX86.sse2 "pmins.w"
-
-psadbw128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V2Int64))
-psadbw128 = Ext.intrinsic ExtX86.sse2 "psad.bw"
-
-psllw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-psllw128 = Ext.intrinsic ExtX86.sse2 "psll.w"
-
-pslld128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
-pslld128 = Ext.intrinsic ExtX86.sse2 "psll.d"
-
-psllq128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
-psllq128 = Ext.intrinsic ExtX86.sse2 "psll.q"
-
-psrlw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-psrlw128 = Ext.intrinsic ExtX86.sse2 "psrl.w"
-
-psrld128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
-psrld128 = Ext.intrinsic ExtX86.sse2 "psrl.d"
-
-psrlq128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
-psrlq128 = Ext.intrinsic ExtX86.sse2 "psrl.q"
-
-psraw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-psraw128 = Ext.intrinsic ExtX86.sse2 "psra.w"
-
-psrad128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
-psrad128 = Ext.intrinsic ExtX86.sse2 "psra.d"
-
-psllwi128 :: Ext.T (V8Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int16))
-psllwi128 = Ext.intrinsic ExtX86.sse2 "pslli.w"
-
-pslldi128 :: Ext.T (V4Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Int32))
-pslldi128 = Ext.intrinsic ExtX86.sse2 "pslli.d"
-
-psllqi128 :: Ext.T (V2Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V2Int64))
-psllqi128 = Ext.intrinsic ExtX86.sse2 "pslli.q"
-
-psrlwi128 :: Ext.T (V8Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int16))
-psrlwi128 = Ext.intrinsic ExtX86.sse2 "psrli.w"
-
-psrldi128 :: Ext.T (V4Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Int32))
-psrldi128 = Ext.intrinsic ExtX86.sse2 "psrli.d"
-
-psrlqi128 :: Ext.T (V2Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V2Int64))
-psrlqi128 = Ext.intrinsic ExtX86.sse2 "psrli.q"
-
-psrawi128 :: Ext.T (V8Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int16))
-psrawi128 = Ext.intrinsic ExtX86.sse2 "psrai.w"
-
-psradi128 :: Ext.T (V4Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Int32))
-psradi128 = Ext.intrinsic ExtX86.sse2 "psrai.d"
-
-pslldqi128 :: Ext.T (V2Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V2Int64))
-pslldqi128 = Ext.intrinsic ExtX86.sse2 "psll.dq"
-
-psrldqi128 :: Ext.T (V2Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V2Int64))
-psrldqi128 = Ext.intrinsic ExtX86.sse2 "psrl.dq"
-
-pslldqi128_byteshift :: Ext.T (V2Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V2Int64))
-pslldqi128_byteshift = Ext.intrinsic ExtX86.sse2 "psll.dq.bs"
-
-psrldqi128_byteshift :: Ext.T (V2Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V2Int64))
-psrldqi128_byteshift = Ext.intrinsic ExtX86.sse2 "psrl.dq.bs"
-
-cvtdq2pd :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V2Double))
-cvtdq2pd = Ext.intrinsic ExtX86.sse2 "cvtdq2pd"
-
-cvtdq2ps :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V4Float))
-cvtdq2ps = Ext.intrinsic ExtX86.sse2 "cvtdq2ps"
-
-cvtpd2dq :: Ext.T (V2Double -> LLVM.CodeGenFunction r (V4Int32))
-cvtpd2dq = Ext.intrinsic ExtX86.sse2 "cvtpd2dq"
-
-cvttpd2dq :: Ext.T (V2Double -> LLVM.CodeGenFunction r (V4Int32))
-cvttpd2dq = Ext.intrinsic ExtX86.sse2 "cvttpd2dq"
-
-cvtpd2ps :: Ext.T (V2Double -> LLVM.CodeGenFunction r (V4Float))
-cvtpd2ps = Ext.intrinsic ExtX86.sse2 "cvtpd2ps"
-
-cvtps2dq :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Int32))
-cvtps2dq = Ext.intrinsic ExtX86.sse2 "cvtps2dq"
-
-cvttps2dq :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Int32))
-cvttps2dq = Ext.intrinsic ExtX86.sse2 "cvttps2dq"
-
-cvtps2pd :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V2Double))
-cvtps2pd = Ext.intrinsic ExtX86.sse2 "cvtps2pd"
-
-cvtsd2si :: Ext.T (V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-cvtsd2si = Ext.intrinsic ExtX86.sse2 "cvtsd2si"
-
-cvtsd2si64 :: Ext.T (V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int64))
-cvtsd2si64 = Ext.intrinsic ExtX86.sse2 "cvtsd2si64"
-
-cvttsd2si :: Ext.T (V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-cvttsd2si = Ext.intrinsic ExtX86.sse2 "cvttsd2si"
-
-cvttsd2si64 :: Ext.T (V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int64))
-cvttsd2si64 = Ext.intrinsic ExtX86.sse2 "cvttsd2si64"
-
-cvtsi2sd :: Ext.T (V2Double -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V2Double))
-cvtsi2sd = Ext.intrinsic ExtX86.sse2 "cvtsi2sd"
-
-cvtsi642sd :: Ext.T (V2Double -> LLVM.Value I.Int64 -> LLVM.CodeGenFunction r (V2Double))
-cvtsi642sd = Ext.intrinsic ExtX86.sse2 "cvtsi642sd"
-
-cvtsd2ss :: Ext.T (V4Float -> V2Double -> LLVM.CodeGenFunction r (V4Float))
-cvtsd2ss = Ext.intrinsic ExtX86.sse2 "cvtsd2ss"
-
-cvtss2sd :: Ext.T (V2Double -> V4Float -> LLVM.CodeGenFunction r (V2Double))
-cvtss2sd = Ext.intrinsic ExtX86.sse2 "cvtss2sd"
-
-cvtpd2pi :: Ext.T (V2Double -> LLVM.CodeGenFunction r (MMX))
-cvtpd2pi = Ext.intrinsic ExtX86.sse1 "cvtpd2pi"
-
-cvttpd2pi :: Ext.T (V2Double -> LLVM.CodeGenFunction r (MMX))
-cvttpd2pi = Ext.intrinsic ExtX86.sse1 "cvttpd2pi"
-
-cvtpi2pd :: Ext.T (MMX -> LLVM.CodeGenFunction r (V2Double))
-cvtpi2pd = Ext.intrinsic ExtX86.sse1 "cvtpi2pd"
-
-storeupd :: Ext.T (LLVM.Value (Ptr ()) -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value ()))
-storeupd = Ext.intrinsic ExtX86.sse2 "storeu.pd"
-
-storedqu :: Ext.T (LLVM.Value (Ptr ()) -> V16Int8 -> LLVM.CodeGenFunction r (LLVM.Value ()))
-storedqu = Ext.intrinsic ExtX86.sse2 "storeu.dq"
-
-storelv4si :: Ext.T (LLVM.Value (Ptr ()) -> V4Int32 -> LLVM.CodeGenFunction r (LLVM.Value ()))
-storelv4si = Ext.intrinsic ExtX86.sse2 "storel.dq"
-
-packsswb128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V16Int8))
-packsswb128 = Ext.intrinsic ExtX86.sse2 "packsswb.128"
-
-packssdw128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V8Int16))
-packssdw128 = Ext.intrinsic ExtX86.sse2 "packssdw.128"
-
-packuswb128 :: Ext.T (V8Word16 -> V8Word16 -> LLVM.CodeGenFunction r (V16Word8))
-packuswb128 = Ext.intrinsic ExtX86.sse2 "packuswb.128"
-
-movmskpd :: Ext.T (V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-movmskpd = Ext.intrinsic ExtX86.sse2 "movmsk.pd"
-
-pmovmskb128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-pmovmskb128 = Ext.intrinsic ExtX86.sse2 "pmovmskb.128"
-
-maskmovdqu :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (LLVM.Value ()))
-maskmovdqu = Ext.intrinsic ExtX86.sse2 "maskmov.dqu"
-
-clflush :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (LLVM.Value ()))
-clflush = Ext.intrinsic ExtX86.sse2 "clflush"
-
-lfence :: Ext.T (LLVM.CodeGenFunction r (LLVM.Value ()))
-lfence = Ext.intrinsic ExtX86.sse2 "lfence"
-
-mfence :: Ext.T (LLVM.CodeGenFunction r (LLVM.Value ()))
-mfence = Ext.intrinsic ExtX86.sse2 "mfence"
-
-addsubps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-addsubps = Ext.intrinsic ExtX86.sse3 "addsub.ps"
-
-addsubpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-addsubpd = Ext.intrinsic ExtX86.sse3 "addsub.pd"
-
-haddps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-haddps = Ext.intrinsic ExtX86.sse3 "hadd.ps"
-
-haddpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-haddpd = Ext.intrinsic ExtX86.sse3 "hadd.pd"
-
-hsubps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-hsubps = Ext.intrinsic ExtX86.sse3 "hsub.ps"
-
-hsubpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-hsubpd = Ext.intrinsic ExtX86.sse3 "hsub.pd"
-
-lddqu :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V16Int8))
-lddqu = Ext.intrinsic ExtX86.sse3 "ldu.dq"
-
-monitor :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.Value I.Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (LLVM.Value ()))
-monitor = Ext.intrinsic ExtX86.sse3 "monitor"
-
-mwait :: Ext.T (LLVM.Value I.Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (LLVM.Value ()))
-mwait = Ext.intrinsic ExtX86.sse3 "mwait"
-
-phaddw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-phaddw = Ext.intrinsic ExtX86.ssse3 "phadd.w"
-
-phaddw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-phaddw128 = Ext.intrinsic ExtX86.ssse3 "phadd.w.128"
-
-phaddd :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-phaddd = Ext.intrinsic ExtX86.ssse3 "phadd.d"
-
-phaddd128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
-phaddd128 = Ext.intrinsic ExtX86.ssse3 "phadd.d.128"
-
-phaddsw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-phaddsw = Ext.intrinsic ExtX86.ssse3 "phadd.sw"
-
-phaddsw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-phaddsw128 = Ext.intrinsic ExtX86.ssse3 "phadd.sw.128"
-
-phsubw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-phsubw = Ext.intrinsic ExtX86.ssse3 "phsub.w"
-
-phsubw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-phsubw128 = Ext.intrinsic ExtX86.ssse3 "phsub.w.128"
-
-phsubd :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-phsubd = Ext.intrinsic ExtX86.ssse3 "phsub.d"
-
-phsubd128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
-phsubd128 = Ext.intrinsic ExtX86.ssse3 "phsub.d.128"
-
-phsubsw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-phsubsw = Ext.intrinsic ExtX86.ssse3 "phsub.sw"
-
-phsubsw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-phsubsw128 = Ext.intrinsic ExtX86.ssse3 "phsub.sw.128"
-
-pmaddubsw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pmaddubsw = Ext.intrinsic ExtX86.ssse3 "pmadd.ub.sw"
-
-pmaddubsw128 :: Ext.T (V16Word8 -> V16Word8 -> LLVM.CodeGenFunction r (V8Word16))
-pmaddubsw128 = Ext.intrinsic ExtX86.ssse3 "pmadd.ub.sw.128"
-
-pmulhrsw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pmulhrsw = Ext.intrinsic ExtX86.ssse3 "pmul.hr.sw"
-
-pmulhrsw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-pmulhrsw128 = Ext.intrinsic ExtX86.ssse3 "pmul.hr.sw.128"
-
-pshufb :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-pshufb = Ext.intrinsic ExtX86.ssse3 "pshuf.b"
-
-pshufb128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
-pshufb128 = Ext.intrinsic ExtX86.ssse3 "pshuf.b.128"
-
-pshufw :: Ext.T (MMX -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (MMX))
-pshufw = Ext.intrinsic ExtX86.sse1 "pshuf.w"
-
-psignb :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-psignb = Ext.intrinsic ExtX86.ssse3 "psign.b"
-
-psignb128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
-psignb128 = Ext.intrinsic ExtX86.ssse3 "psign.b.128"
-
-psignw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-psignw = Ext.intrinsic ExtX86.ssse3 "psign.w"
-
-psignw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-psignw128 = Ext.intrinsic ExtX86.ssse3 "psign.w.128"
-
-psignd :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
-psignd = Ext.intrinsic ExtX86.ssse3 "psign.d"
-
-psignd128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
-psignd128 = Ext.intrinsic ExtX86.ssse3 "psign.d.128"
-
-pabsb :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
-pabsb = Ext.intrinsic ExtX86.ssse3 "pabs.b"
-
-pabsb128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
-pabsb128 = Ext.intrinsic ExtX86.ssse3 "pabs.b.128"
-
-pabsw :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
-pabsw = Ext.intrinsic ExtX86.ssse3 "pabs.w"
-
-pabsw128 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-pabsw128 = Ext.intrinsic ExtX86.ssse3 "pabs.w.128"
-
-pabsd :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
-pabsd = Ext.intrinsic ExtX86.ssse3 "pabs.d"
-
-pabsd128 :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
-pabsd128 = Ext.intrinsic ExtX86.ssse3 "pabs.d.128"
-
-roundss :: Ext.T (V4Float -> V4Float -> LLVM.Value W.Word32 -> LLVM.CodeGenFunction r (V4Float))
-roundss = Ext.intrinsic ExtX86.sse41 "round.ss"
-
-roundps :: Ext.T (V4Float -> LLVM.Value W.Word32 -> LLVM.CodeGenFunction r (V4Float))
-roundps = Ext.intrinsic ExtX86.sse41 "round.ps"
-
-roundsd :: Ext.T (V2Double -> V2Double -> LLVM.Value W.Word32 -> LLVM.CodeGenFunction r (V2Double))
-roundsd = Ext.intrinsic ExtX86.sse41 "round.sd"
-
-roundpd :: Ext.T (V2Double -> LLVM.Value W.Word32 -> LLVM.CodeGenFunction r (V2Double))
-roundpd = Ext.intrinsic ExtX86.sse41 "round.pd"
-
-pmovsxbd128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V4Int32))
-pmovsxbd128 = Ext.intrinsic ExtX86.sse41 "pmovsxbd"
-
-pmovsxbq128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V2Int64))
-pmovsxbq128 = Ext.intrinsic ExtX86.sse41 "pmovsxbq"
-
-pmovsxbw128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V8Int16))
-pmovsxbw128 = Ext.intrinsic ExtX86.sse41 "pmovsxbw"
-
-pmovsxdq128 :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V2Int64))
-pmovsxdq128 = Ext.intrinsic ExtX86.sse41 "pmovsxdq"
-
-pmovsxwd128 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V4Int32))
-pmovsxwd128 = Ext.intrinsic ExtX86.sse41 "pmovsxwd"
-
-pmovsxwq128 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V2Int64))
-pmovsxwq128 = Ext.intrinsic ExtX86.sse41 "pmovsxwq"
-
-pmovzxbd128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V4Int32))
-pmovzxbd128 = Ext.intrinsic ExtX86.sse41 "pmovzxbd"
-
-pmovzxbq128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V2Int64))
-pmovzxbq128 = Ext.intrinsic ExtX86.sse41 "pmovzxbq"
-
-pmovzxbw128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V8Int16))
-pmovzxbw128 = Ext.intrinsic ExtX86.sse41 "pmovzxbw"
-
-pmovzxdq128 :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V2Int64))
-pmovzxdq128 = Ext.intrinsic ExtX86.sse41 "pmovzxdq"
-
-pmovzxwd128 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V4Int32))
-pmovzxwd128 = Ext.intrinsic ExtX86.sse41 "pmovzxwd"
-
-pmovzxwq128 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V2Int64))
-pmovzxwq128 = Ext.intrinsic ExtX86.sse41 "pmovzxwq"
-
-phminposuw128 :: Ext.T (V8Word16 -> LLVM.CodeGenFunction r (V8Word16))
-phminposuw128 = Ext.intrinsic ExtX86.sse41 "phminposuw"
-
-pmaxsb128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
-pmaxsb128 = Ext.intrinsic ExtX86.sse41 "pmaxsb"
-
-pmaxsd128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
-pmaxsd128 = Ext.intrinsic ExtX86.sse41 "pmaxsd"
-
-pmaxud128 :: Ext.T (V4Word32 -> V4Word32 -> LLVM.CodeGenFunction r (V4Word32))
-pmaxud128 = Ext.intrinsic ExtX86.sse41 "pmaxud"
-
-pmaxuw128 :: Ext.T (V8Word16 -> V8Word16 -> LLVM.CodeGenFunction r (V8Word16))
-pmaxuw128 = Ext.intrinsic ExtX86.sse41 "pmaxuw"
-
-pminsb128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
-pminsb128 = Ext.intrinsic ExtX86.sse41 "pminsb"
-
-pminsd128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
-pminsd128 = Ext.intrinsic ExtX86.sse41 "pminsd"
-
-pminud128 :: Ext.T (V4Word32 -> V4Word32 -> LLVM.CodeGenFunction r (V4Word32))
-pminud128 = Ext.intrinsic ExtX86.sse41 "pminud"
-
-pminuw128 :: Ext.T (V8Word16 -> V8Word16 -> LLVM.CodeGenFunction r (V8Word16))
-pminuw128 = Ext.intrinsic ExtX86.sse41 "pminuw"
-
-aesimc128 :: Ext.T (V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
-aesimc128 = Ext.intrinsic ExtX86.aes "aesimc"
-
-aesenc128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
-aesenc128 = Ext.intrinsic ExtX86.aes "aesenc"
-
-aesenclast128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
-aesenclast128 = Ext.intrinsic ExtX86.aes "aesenclast"
-
-aesdec128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
-aesdec128 = Ext.intrinsic ExtX86.aes "aesdec"
-
-aesdeclast128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
-aesdeclast128 = Ext.intrinsic ExtX86.aes "aesdeclast"
-
-aeskeygenassist128 :: Ext.T (V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
-aeskeygenassist128 = Ext.intrinsic ExtX86.aes "aeskeygenassist"
-
-packusdw128 :: Ext.T (V4Word32 -> V4Word32 -> LLVM.CodeGenFunction r (V8Word16))
-packusdw128 = Ext.intrinsic ExtX86.sse41 "packusdw"
-
-pmuldq128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V2Int64))
-pmuldq128 = Ext.intrinsic ExtX86.sse41 "pmuldq"
-
-extractps128 :: Ext.T (V4Float -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-extractps128 = Ext.intrinsic ExtX86.sse41 "extractps"
-
-insertps128 :: Ext.T (V4Float -> V4Float -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Float))
-insertps128 = Ext.intrinsic ExtX86.sse41 "insertps"
-
-pblendvb128 :: Ext.T (V16Int8 -> V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
-pblendvb128 = Ext.intrinsic ExtX86.sse41 "pblendvb"
-
-pblendw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int16))
-pblendw128 = Ext.intrinsic ExtX86.sse41 "pblendw"
-
-blendpd :: Ext.T (V2Double -> V2Double -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V2Double))
-blendpd = Ext.intrinsic ExtX86.sse41 "blendpd"
-
-blendps :: Ext.T (V4Float -> V4Float -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Float))
-blendps = Ext.intrinsic ExtX86.sse41 "blendps"
-
-blendvpd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-blendvpd = Ext.intrinsic ExtX86.sse41 "blendvpd"
-
-blendvps :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-blendvps = Ext.intrinsic ExtX86.sse41 "blendvps"
-
-dppd :: Ext.T (V2Double -> V2Double -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V2Double))
-dppd = Ext.intrinsic ExtX86.sse41 "dppd"
-
-dpps :: Ext.T (V4Float -> V4Float -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Float))
-dpps = Ext.intrinsic ExtX86.sse41 "dpps"
-
-mpsadbw128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int16))
-mpsadbw128 = Ext.intrinsic ExtX86.sse41 "mpsadbw"
-
-movntdqa :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V2Int64))
-movntdqa = Ext.intrinsic ExtX86.sse41 "movntdqa"
-
-ptestz128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ptestz128 = Ext.intrinsic ExtX86.sse41 "ptestz"
-
-ptestc128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ptestc128 = Ext.intrinsic ExtX86.sse41 "ptestc"
-
-ptestnzc128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ptestnzc128 = Ext.intrinsic ExtX86.sse41 "ptestnzc"
-
-crc32qi :: Ext.T (LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-crc32qi = Ext.intrinsic ExtX86.sse42 "crc32.32.8"
-
-crc32hi :: Ext.T (LLVM.Value I.Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-crc32hi = Ext.intrinsic ExtX86.sse42 "crc32.32.16"
-
-crc32si :: Ext.T (LLVM.Value I.Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-crc32si = Ext.intrinsic ExtX86.sse42 "crc32.32.32"
-
-crc32di :: Ext.T (LLVM.Value I.Int64 -> LLVM.Value I.Int64 -> LLVM.CodeGenFunction r (LLVM.Value I.Int64))
-crc32di = Ext.intrinsic ExtX86.sse42 "crc32.64.64"
-
-pcmpistrm128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V16Int8))
-pcmpistrm128 = Ext.intrinsic ExtX86.sse42 "pcmpistrm128"
-
-pcmpistri128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-pcmpistri128 = Ext.intrinsic ExtX86.sse42 "pcmpistri128"
-
-pcmpistria128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-pcmpistria128 = Ext.intrinsic ExtX86.sse42 "pcmpistria128"
-
-pcmpistric128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-pcmpistric128 = Ext.intrinsic ExtX86.sse42 "pcmpistric128"
-
-pcmpistrio128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-pcmpistrio128 = Ext.intrinsic ExtX86.sse42 "pcmpistrio128"
-
-pcmpistris128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-pcmpistris128 = Ext.intrinsic ExtX86.sse42 "pcmpistris128"
-
-pcmpistriz128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-pcmpistriz128 = Ext.intrinsic ExtX86.sse42 "pcmpistriz128"
-
-pcmpestrm128 :: Ext.T (V16Int8 -> LLVM.Value I.Int32 -> V16Int8 -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V16Int8))
-pcmpestrm128 = Ext.intrinsic ExtX86.sse42 "pcmpestrm128"
-
-pcmpestri128 :: Ext.T (V16Int8 -> LLVM.Value I.Int32 -> V16Int8 -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-pcmpestri128 = Ext.intrinsic ExtX86.sse42 "pcmpestri128"
-
-pcmpestria128 :: Ext.T (V16Int8 -> LLVM.Value I.Int32 -> V16Int8 -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-pcmpestria128 = Ext.intrinsic ExtX86.sse42 "pcmpestria128"
-
-pcmpestric128 :: Ext.T (V16Int8 -> LLVM.Value I.Int32 -> V16Int8 -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-pcmpestric128 = Ext.intrinsic ExtX86.sse42 "pcmpestric128"
-
-pcmpestrio128 :: Ext.T (V16Int8 -> LLVM.Value I.Int32 -> V16Int8 -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-pcmpestrio128 = Ext.intrinsic ExtX86.sse42 "pcmpestrio128"
-
-pcmpestris128 :: Ext.T (V16Int8 -> LLVM.Value I.Int32 -> V16Int8 -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-pcmpestris128 = Ext.intrinsic ExtX86.sse42 "pcmpestris128"
-
-pcmpestriz128 :: Ext.T (V16Int8 -> LLVM.Value I.Int32 -> V16Int8 -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-pcmpestriz128 = Ext.intrinsic ExtX86.sse42 "pcmpestriz128"
-
-addsubpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
-addsubpd256 = Ext.intrinsic ExtX86.avx "addsub.pd.256"
-
-addsubps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
-addsubps256 = Ext.intrinsic ExtX86.avx "addsub.ps.256"
-
-maxpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
-maxpd256 = Ext.intrinsic ExtX86.avx "max.pd.256"
-
-maxps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
-maxps256 = Ext.intrinsic ExtX86.avx "max.ps.256"
-
-minpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
-minpd256 = Ext.intrinsic ExtX86.avx "min.pd.256"
-
-minps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
-minps256 = Ext.intrinsic ExtX86.avx "min.ps.256"
-
-sqrtpd256 :: Ext.T (V4Double -> LLVM.CodeGenFunction r (V4Double))
-sqrtpd256 = Ext.intrinsic ExtX86.avx "sqrt.pd.256"
-
-sqrtps256 :: Ext.T (V8Float -> LLVM.CodeGenFunction r (V8Float))
-sqrtps256 = Ext.intrinsic ExtX86.avx "sqrt.ps.256"
-
-rsqrtps256 :: Ext.T (V8Float -> LLVM.CodeGenFunction r (V8Float))
-rsqrtps256 = Ext.intrinsic ExtX86.avx "rsqrt.ps.256"
-
-rcpps256 :: Ext.T (V8Float -> LLVM.CodeGenFunction r (V8Float))
-rcpps256 = Ext.intrinsic ExtX86.avx "rcp.ps.256"
-
-roundpd256 :: Ext.T (V4Double -> LLVM.Value W.Word32 -> LLVM.CodeGenFunction r (V4Double))
-roundpd256 = Ext.intrinsic ExtX86.avx "round.pd.256"
-
-roundps256 :: Ext.T (V8Float -> LLVM.Value W.Word32 -> LLVM.CodeGenFunction r (V8Float))
-roundps256 = Ext.intrinsic ExtX86.avx "round.ps.256"
-
-haddpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
-haddpd256 = Ext.intrinsic ExtX86.avx "hadd.pd.256"
-
-hsubps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
-hsubps256 = Ext.intrinsic ExtX86.avx "hsub.ps.256"
-
-hsubpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
-hsubpd256 = Ext.intrinsic ExtX86.avx "hsub.pd.256"
-
-haddps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
-haddps256 = Ext.intrinsic ExtX86.avx "hadd.ps.256"
-
-vpermilvarpd :: Ext.T (V2Double -> V2Int64 -> LLVM.CodeGenFunction r (V2Double))
-vpermilvarpd = Ext.intrinsic ExtX86.avx "vpermilvar.pd"
-
-vpermilvarps :: Ext.T (V4Float -> V4Int32 -> LLVM.CodeGenFunction r (V4Float))
-vpermilvarps = Ext.intrinsic ExtX86.avx "vpermilvar.ps"
-
-vpermilvarpd256 :: Ext.T (V4Double -> V4Int64 -> LLVM.CodeGenFunction r (V4Double))
-vpermilvarpd256 = Ext.intrinsic ExtX86.avx "vpermilvar.pd.256"
-
-vpermilvarps256 :: Ext.T (V8Float -> V8Int32 -> LLVM.CodeGenFunction r (V8Float))
-vpermilvarps256 = Ext.intrinsic ExtX86.avx "vpermilvar.ps.256"
-
-vperm2f128_pd256 :: Ext.T (V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
-vperm2f128_pd256 = Ext.intrinsic ExtX86.avx "vperm2f128.pd.256"
-
-vperm2f128_ps256 :: Ext.T (V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
-vperm2f128_ps256 = Ext.intrinsic ExtX86.avx "vperm2f128.ps.256"
-
-vperm2f128_si256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
-vperm2f128_si256 = Ext.intrinsic ExtX86.avx "vperm2f128.si.256"
-
-blendpd256 :: Ext.T (V4Double -> V4Double -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Double))
-blendpd256 = Ext.intrinsic ExtX86.avx "blend.pd.256"
-
-blendps256 :: Ext.T (V8Float -> V8Float -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Float))
-blendps256 = Ext.intrinsic ExtX86.avx "blend.ps.256"
-
-blendvpd256 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
-blendvpd256 = Ext.intrinsic ExtX86.avx "blendv.pd.256"
-
-blendvps256 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
-blendvps256 = Ext.intrinsic ExtX86.avx "blendv.ps.256"
-
-dpps256 :: Ext.T (V8Float -> V8Float -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Float))
-dpps256 = Ext.intrinsic ExtX86.avx "dp.ps.256"
-
-cmppd256 :: Ext.T (V4Double -> V4Double -> LLVM.Value W.Word8 -> LLVM.CodeGenFunction r (V4Double))
-cmppd256 = Ext.intrinsic ExtX86.avx "cmp.pd.256"
-
-cmpps256 :: Ext.T (V8Float -> V8Float -> LLVM.Value W.Word8 -> LLVM.CodeGenFunction r (V8Float))
-cmpps256 = Ext.intrinsic ExtX86.avx "cmp.ps.256"
-
-vextractf128_pd256 :: Ext.T (V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
-vextractf128_pd256 = Ext.intrinsic ExtX86.avx "vextractf128.pd.256"
-
-vextractf128_ps256 :: Ext.T (V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
-vextractf128_ps256 = Ext.intrinsic ExtX86.avx "vextractf128.ps.256"
-
-vextractf128_si256 :: Ext.T (V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
-vextractf128_si256 = Ext.intrinsic ExtX86.avx "vextractf128.si.256"
-
-vinsertf128_pd256 :: Ext.T (V4Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
-vinsertf128_pd256 = Ext.intrinsic ExtX86.avx "vinsertf128.pd.256"
-
-vinsertf128_ps256 :: Ext.T (V8Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
-vinsertf128_ps256 = Ext.intrinsic ExtX86.avx "vinsertf128.ps.256"
-
-vinsertf128_si256 :: Ext.T (V8Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
-vinsertf128_si256 = Ext.intrinsic ExtX86.avx "vinsertf128.si.256"
-
-cvtdq2pd256 :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V4Double))
-cvtdq2pd256 = Ext.intrinsic ExtX86.avx "cvtdq2.pd.256"
-
-cvtdq2ps256 :: Ext.T (V8Int32 -> LLVM.CodeGenFunction r (V8Float))
-cvtdq2ps256 = Ext.intrinsic ExtX86.avx "cvtdq2.ps.256"
-
-cvtpd2ps256 :: Ext.T (V4Double -> LLVM.CodeGenFunction r (V4Float))
-cvtpd2ps256 = Ext.intrinsic ExtX86.avx "cvt.pd2.ps.256"
-
-cvtps2dq256 :: Ext.T (V8Float -> LLVM.CodeGenFunction r (V8Int32))
-cvtps2dq256 = Ext.intrinsic ExtX86.avx "cvt.ps2dq.256"
-
-cvtps2pd256 :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Double))
-cvtps2pd256 = Ext.intrinsic ExtX86.avx "cvt.ps2.pd.256"
-
-cvttpd2dq256 :: Ext.T (V4Double -> LLVM.CodeGenFunction r (V4Int32))
-cvttpd2dq256 = Ext.intrinsic ExtX86.avx "cvtt.pd2dq.256"
-
-cvtpd2dq256 :: Ext.T (V4Double -> LLVM.CodeGenFunction r (V4Int32))
-cvtpd2dq256 = Ext.intrinsic ExtX86.avx "cvt.pd2dq.256"
-
-cvttps2dq256 :: Ext.T (V8Float -> LLVM.CodeGenFunction r (V8Int32))
-cvttps2dq256 = Ext.intrinsic ExtX86.avx "cvtt.ps2dq.256"
-
-vtestzpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-vtestzpd = Ext.intrinsic ExtX86.avx "vtestz.pd"
-
-vtestcpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-vtestcpd = Ext.intrinsic ExtX86.avx "vtestc.pd"
-
-vtestnzcpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-vtestnzcpd = Ext.intrinsic ExtX86.avx "vtestnzc.pd"
-
-vtestzps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-vtestzps = Ext.intrinsic ExtX86.avx "vtestz.ps"
-
-vtestcps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-vtestcps = Ext.intrinsic ExtX86.avx "vtestc.ps"
-
-vtestnzcps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-vtestnzcps = Ext.intrinsic ExtX86.avx "vtestnzc.ps"
-
-vtestzpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-vtestzpd256 = Ext.intrinsic ExtX86.avx "vtestz.pd.256"
-
-vtestcpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-vtestcpd256 = Ext.intrinsic ExtX86.avx "vtestc.pd.256"
-
-vtestnzcpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-vtestnzcpd256 = Ext.intrinsic ExtX86.avx "vtestnzc.pd.256"
-
-vtestzps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-vtestzps256 = Ext.intrinsic ExtX86.avx "vtestz.ps.256"
-
-vtestcps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-vtestcps256 = Ext.intrinsic ExtX86.avx "vtestc.ps.256"
-
-vtestnzcps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-vtestnzcps256 = Ext.intrinsic ExtX86.avx "vtestnzc.ps.256"
-
-ptestz256 :: Ext.T (V4Int64 -> V4Int64 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ptestz256 = Ext.intrinsic ExtX86.avx "ptestz.256"
-
-ptestc256 :: Ext.T (V4Int64 -> V4Int64 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ptestc256 = Ext.intrinsic ExtX86.avx "ptestc.256"
-
-ptestnzc256 :: Ext.T (V4Int64 -> V4Int64 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-ptestnzc256 = Ext.intrinsic ExtX86.avx "ptestnzc.256"
-
-movmskpd256 :: Ext.T (V4Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-movmskpd256 = Ext.intrinsic ExtX86.avx "movmsk.pd.256"
-
-movmskps256 :: Ext.T (V8Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-movmskps256 = Ext.intrinsic ExtX86.avx "movmsk.ps.256"
-
-vzeroall :: Ext.T (LLVM.CodeGenFunction r (LLVM.Value ()))
-vzeroall = Ext.intrinsic ExtX86.avx "vzeroall"
-
-vzeroupper :: Ext.T (LLVM.CodeGenFunction r (LLVM.Value ()))
-vzeroupper = Ext.intrinsic ExtX86.avx "vzeroupper"
-
-vbroadcastss :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V4Float))
-vbroadcastss = Ext.intrinsic ExtX86.avx "vbroadcast.ss"
-
-vbroadcastsd256 :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V4Double))
-vbroadcastsd256 = Ext.intrinsic ExtX86.avx "vbroadcast.sd.256"
-
-vbroadcastss256 :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V8Float))
-vbroadcastss256 = Ext.intrinsic ExtX86.avx "vbroadcast.ss.256"
-
-vbroadcastf128_pd256 :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V4Double))
-vbroadcastf128_pd256 = Ext.intrinsic ExtX86.avx "vbroadcastf128.pd.256"
-
-vbroadcastf128_ps256 :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V8Float))
-vbroadcastf128_ps256 = Ext.intrinsic ExtX86.avx "vbroadcastf128.ps.256"
-
-lddqu256 :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V32Int8))
-lddqu256 = Ext.intrinsic ExtX86.avx "ldu.dq.256"
-
-storeupd256 :: Ext.T (LLVM.Value (Ptr ()) -> V4Double -> LLVM.CodeGenFunction r (LLVM.Value ()))
-storeupd256 = Ext.intrinsic ExtX86.avx "storeu.pd.256"
-
-storeups256 :: Ext.T (LLVM.Value (Ptr ()) -> V8Float -> LLVM.CodeGenFunction r (LLVM.Value ()))
-storeups256 = Ext.intrinsic ExtX86.avx "storeu.ps.256"
-
-storedqu256 :: Ext.T (LLVM.Value (Ptr ()) -> V32Int8 -> LLVM.CodeGenFunction r (LLVM.Value ()))
-storedqu256 = Ext.intrinsic ExtX86.avx "storeu.dq.256"
-
-movntdq256 :: Ext.T (LLVM.Value (Ptr ()) -> V4Int64 -> LLVM.CodeGenFunction r (LLVM.Value ()))
-movntdq256 = Ext.intrinsic ExtX86.avx "movnt.dq.256"
-
-movntpd256 :: Ext.T (LLVM.Value (Ptr ()) -> V4Double -> LLVM.CodeGenFunction r (LLVM.Value ()))
-movntpd256 = Ext.intrinsic ExtX86.avx "movnt.pd.256"
-
-movntps256 :: Ext.T (LLVM.Value (Ptr ()) -> V8Float -> LLVM.CodeGenFunction r (LLVM.Value ()))
-movntps256 = Ext.intrinsic ExtX86.avx "movnt.ps.256"
-
-maskloadpd :: Ext.T (LLVM.Value (Ptr ()) -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-maskloadpd = Ext.intrinsic ExtX86.avx "maskload.pd"
-
-maskloadps :: Ext.T (LLVM.Value (Ptr ()) -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-maskloadps = Ext.intrinsic ExtX86.avx "maskload.ps"
-
-maskloadpd256 :: Ext.T (LLVM.Value (Ptr ()) -> V4Double -> LLVM.CodeGenFunction r (V4Double))
-maskloadpd256 = Ext.intrinsic ExtX86.avx "maskload.pd.256"
-
-maskloadps256 :: Ext.T (LLVM.Value (Ptr ()) -> V8Float -> LLVM.CodeGenFunction r (V8Float))
-maskloadps256 = Ext.intrinsic ExtX86.avx "maskload.ps.256"
-
-maskstorepd :: Ext.T (LLVM.Value (Ptr ()) -> V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value ()))
-maskstorepd = Ext.intrinsic ExtX86.avx "maskstore.pd"
-
-maskstoreps :: Ext.T (LLVM.Value (Ptr ()) -> V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value ()))
-maskstoreps = Ext.intrinsic ExtX86.avx "maskstore.ps"
-
-maskstorepd256 :: Ext.T (LLVM.Value (Ptr ()) -> V4Double -> V4Double -> LLVM.CodeGenFunction r (LLVM.Value ()))
-maskstorepd256 = Ext.intrinsic ExtX86.avx "maskstore.pd.256"
-
-maskstoreps256 :: Ext.T (LLVM.Value (Ptr ()) -> V8Float -> V8Float -> LLVM.CodeGenFunction r (LLVM.Value ()))
-maskstoreps256 = Ext.intrinsic ExtX86.avx "maskstore.ps.256"
-
-paddsb256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
-paddsb256 = Ext.intrinsic ExtX86.avx2 "padds.b"
-
-paddsw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
-paddsw256 = Ext.intrinsic ExtX86.avx2 "padds.w"
-
-paddusb256 :: Ext.T (V32Word8 -> V32Word8 -> LLVM.CodeGenFunction r (V32Word8))
-paddusb256 = Ext.intrinsic ExtX86.avx2 "paddus.b"
-
-paddusw256 :: Ext.T (V16Word16 -> V16Word16 -> LLVM.CodeGenFunction r (V16Word16))
-paddusw256 = Ext.intrinsic ExtX86.avx2 "paddus.w"
-
-psubsb256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
-psubsb256 = Ext.intrinsic ExtX86.avx2 "psubs.b"
-
-psubsw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
-psubsw256 = Ext.intrinsic ExtX86.avx2 "psubs.w"
-
-psubusb256 :: Ext.T (V32Word8 -> V32Word8 -> LLVM.CodeGenFunction r (V32Word8))
-psubusb256 = Ext.intrinsic ExtX86.avx2 "psubus.b"
-
-psubusw256 :: Ext.T (V16Word16 -> V16Word16 -> LLVM.CodeGenFunction r (V16Word16))
-psubusw256 = Ext.intrinsic ExtX86.avx2 "psubus.w"
-
-pmulhuw256 :: Ext.T (V16Word16 -> V16Word16 -> LLVM.CodeGenFunction r (V16Word16))
-pmulhuw256 = Ext.intrinsic ExtX86.avx2 "pmulhu.w"
-
-pmulhw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
-pmulhw256 = Ext.intrinsic ExtX86.avx2 "pmulh.w"
-
-pmuludq256 :: Ext.T (V8Word32 -> V8Word32 -> LLVM.CodeGenFunction r (V4Word64))
-pmuludq256 = Ext.intrinsic ExtX86.avx2 "pmulu.dq"
-
-pmuldq256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V4Int64))
-pmuldq256 = Ext.intrinsic ExtX86.avx2 "pmul.dq"
-
-pmaddwd256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V8Int32))
-pmaddwd256 = Ext.intrinsic ExtX86.avx2 "pmadd.wd"
-
-pavgb256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
-pavgb256 = Ext.intrinsic ExtX86.avx2 "pavg.b"
-
-pavgw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
-pavgw256 = Ext.intrinsic ExtX86.avx2 "pavg.w"
-
-psadbw256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V4Int64))
-psadbw256 = Ext.intrinsic ExtX86.avx2 "psad.bw"
-
-pmaxub256 :: Ext.T (V32Word8 -> V32Word8 -> LLVM.CodeGenFunction r (V32Word8))
-pmaxub256 = Ext.intrinsic ExtX86.avx2 "pmaxu.b"
-
-pmaxuw256 :: Ext.T (V16Word16 -> V16Word16 -> LLVM.CodeGenFunction r (V16Word16))
-pmaxuw256 = Ext.intrinsic ExtX86.avx2 "pmaxu.w"
-
-pmaxud256 :: Ext.T (V8Word32 -> V8Word32 -> LLVM.CodeGenFunction r (V8Word32))
-pmaxud256 = Ext.intrinsic ExtX86.avx2 "pmaxu.d"
-
-pmaxsb256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
-pmaxsb256 = Ext.intrinsic ExtX86.avx2 "pmaxs.b"
-
-pmaxsw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
-pmaxsw256 = Ext.intrinsic ExtX86.avx2 "pmaxs.w"
-
-pmaxsd256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
-pmaxsd256 = Ext.intrinsic ExtX86.avx2 "pmaxs.d"
-
-pminub256 :: Ext.T (V32Word8 -> V32Word8 -> LLVM.CodeGenFunction r (V32Word8))
-pminub256 = Ext.intrinsic ExtX86.avx2 "pminu.b"
-
-pminuw256 :: Ext.T (V16Word16 -> V16Word16 -> LLVM.CodeGenFunction r (V16Word16))
-pminuw256 = Ext.intrinsic ExtX86.avx2 "pminu.w"
-
-pminud256 :: Ext.T (V8Word32 -> V8Word32 -> LLVM.CodeGenFunction r (V8Word32))
-pminud256 = Ext.intrinsic ExtX86.avx2 "pminu.d"
-
-pminsb256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
-pminsb256 = Ext.intrinsic ExtX86.avx2 "pmins.b"
-
-pminsw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
-pminsw256 = Ext.intrinsic ExtX86.avx2 "pmins.w"
-
-pminsd256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
-pminsd256 = Ext.intrinsic ExtX86.avx2 "pmins.d"
-
-psllw256 :: Ext.T (V16Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V16Int16))
-psllw256 = Ext.intrinsic ExtX86.avx2 "psll.w"
-
-pslld256 :: Ext.T (V8Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V8Int32))
-pslld256 = Ext.intrinsic ExtX86.avx2 "psll.d"
-
-psllq256 :: Ext.T (V4Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V4Int64))
-psllq256 = Ext.intrinsic ExtX86.avx2 "psll.q"
-
-psrlw256 :: Ext.T (V16Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V16Int16))
-psrlw256 = Ext.intrinsic ExtX86.avx2 "psrl.w"
-
-psrld256 :: Ext.T (V8Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V8Int32))
-psrld256 = Ext.intrinsic ExtX86.avx2 "psrl.d"
-
-psrlq256 :: Ext.T (V4Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V4Int64))
-psrlq256 = Ext.intrinsic ExtX86.avx2 "psrl.q"
-
-psraw256 :: Ext.T (V16Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V16Int16))
-psraw256 = Ext.intrinsic ExtX86.avx2 "psra.w"
-
-psrad256 :: Ext.T (V8Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V8Int32))
-psrad256 = Ext.intrinsic ExtX86.avx2 "psra.d"
-
-psllwi256 :: Ext.T (V16Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Int16))
-psllwi256 = Ext.intrinsic ExtX86.avx2 "pslli.w"
-
-pslldi256 :: Ext.T (V8Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int32))
-pslldi256 = Ext.intrinsic ExtX86.avx2 "pslli.d"
-
-psllqi256 :: Ext.T (V4Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Int64))
-psllqi256 = Ext.intrinsic ExtX86.avx2 "pslli.q"
-
-psrlwi256 :: Ext.T (V16Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Int16))
-psrlwi256 = Ext.intrinsic ExtX86.avx2 "psrli.w"
-
-psrldi256 :: Ext.T (V8Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int32))
-psrldi256 = Ext.intrinsic ExtX86.avx2 "psrli.d"
-
-psrlqi256 :: Ext.T (V4Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Int64))
-psrlqi256 = Ext.intrinsic ExtX86.avx2 "psrli.q"
-
-psrawi256 :: Ext.T (V16Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Int16))
-psrawi256 = Ext.intrinsic ExtX86.avx2 "psrai.w"
-
-psradi256 :: Ext.T (V8Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int32))
-psradi256 = Ext.intrinsic ExtX86.avx2 "psrai.d"
-
-pslldqi256 :: Ext.T (V4Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Int64))
-pslldqi256 = Ext.intrinsic ExtX86.avx2 "psll.dq"
-
-psrldqi256 :: Ext.T (V4Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Int64))
-psrldqi256 = Ext.intrinsic ExtX86.avx2 "psrl.dq"
-
-pslldqi256_byteshift :: Ext.T (V4Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Int64))
-pslldqi256_byteshift = Ext.intrinsic ExtX86.avx2 "psll.dq.bs"
-
-psrldqi256_byteshift :: Ext.T (V4Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Int64))
-psrldqi256_byteshift = Ext.intrinsic ExtX86.avx2 "psrl.dq.bs"
-
-packsswb256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V32Int8))
-packsswb256 = Ext.intrinsic ExtX86.avx2 "packsswb"
-
-packssdw256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V16Int16))
-packssdw256 = Ext.intrinsic ExtX86.avx2 "packssdw"
-
-packuswb256 :: Ext.T (V16Word16 -> V16Word16 -> LLVM.CodeGenFunction r (V32Word8))
-packuswb256 = Ext.intrinsic ExtX86.avx2 "packuswb"
-
-packusdw256 :: Ext.T (V8Word32 -> V8Word32 -> LLVM.CodeGenFunction r (V16Word16))
-packusdw256 = Ext.intrinsic ExtX86.avx2 "packusdw"
-
-pabsb256 :: Ext.T (V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
-pabsb256 = Ext.intrinsic ExtX86.avx2 "pabs.b"
-
-pabsw256 :: Ext.T (V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
-pabsw256 = Ext.intrinsic ExtX86.avx2 "pabs.w"
-
-pabsd256 :: Ext.T (V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
-pabsd256 = Ext.intrinsic ExtX86.avx2 "pabs.d"
-
-phaddw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
-phaddw256 = Ext.intrinsic ExtX86.avx2 "phadd.w"
-
-phaddd256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
-phaddd256 = Ext.intrinsic ExtX86.avx2 "phadd.d"
-
-phaddsw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
-phaddsw256 = Ext.intrinsic ExtX86.avx2 "phadd.sw"
-
-phsubw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
-phsubw256 = Ext.intrinsic ExtX86.avx2 "phsub.w"
-
-phsubd256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
-phsubd256 = Ext.intrinsic ExtX86.avx2 "phsub.d"
-
-phsubsw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
-phsubsw256 = Ext.intrinsic ExtX86.avx2 "phsub.sw"
-
-pmaddubsw256 :: Ext.T (V32Word8 -> V32Word8 -> LLVM.CodeGenFunction r (V16Word16))
-pmaddubsw256 = Ext.intrinsic ExtX86.avx2 "pmadd.ub.sw"
-
-psignb256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
-psignb256 = Ext.intrinsic ExtX86.avx2 "psign.b"
-
-psignw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
-psignw256 = Ext.intrinsic ExtX86.avx2 "psign.w"
-
-psignd256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
-psignd256 = Ext.intrinsic ExtX86.avx2 "psign.d"
-
-pmulhrsw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
-pmulhrsw256 = Ext.intrinsic ExtX86.avx2 "pmul.hr.sw"
-
-pmovsxbd256 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V8Int32))
-pmovsxbd256 = Ext.intrinsic ExtX86.avx2 "pmovsxbd"
-
-pmovsxbq256 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V4Int64))
-pmovsxbq256 = Ext.intrinsic ExtX86.avx2 "pmovsxbq"
-
-pmovsxbw256 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V16Int16))
-pmovsxbw256 = Ext.intrinsic ExtX86.avx2 "pmovsxbw"
-
-pmovsxdq256 :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V4Int64))
-pmovsxdq256 = Ext.intrinsic ExtX86.avx2 "pmovsxdq"
-
-pmovsxwd256 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V8Int32))
-pmovsxwd256 = Ext.intrinsic ExtX86.avx2 "pmovsxwd"
-
-pmovsxwq256 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V4Int64))
-pmovsxwq256 = Ext.intrinsic ExtX86.avx2 "pmovsxwq"
-
-pmovzxbd256 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V8Int32))
-pmovzxbd256 = Ext.intrinsic ExtX86.avx2 "pmovzxbd"
-
-pmovzxbq256 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V4Int64))
-pmovzxbq256 = Ext.intrinsic ExtX86.avx2 "pmovzxbq"
-
-pmovzxbw256 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V16Int16))
-pmovzxbw256 = Ext.intrinsic ExtX86.avx2 "pmovzxbw"
-
-pmovzxdq256 :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V4Int64))
-pmovzxdq256 = Ext.intrinsic ExtX86.avx2 "pmovzxdq"
-
-pmovzxwd256 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V8Int32))
-pmovzxwd256 = Ext.intrinsic ExtX86.avx2 "pmovzxwd"
-
-pmovzxwq256 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V4Int64))
-pmovzxwq256 = Ext.intrinsic ExtX86.avx2 "pmovzxwq"
-
-pblendvb256 :: Ext.T (V32Int8 -> V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
-pblendvb256 = Ext.intrinsic ExtX86.avx2 "pblendvb"
-
-pblendw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Int16))
-pblendw256 = Ext.intrinsic ExtX86.avx2 "pblendw"
-
-pblendd128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Int32))
-pblendd128 = Ext.intrinsic ExtX86.avx2 "pblendd.128"
-
-pblendd256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int32))
-pblendd256 = Ext.intrinsic ExtX86.avx2 "pblendd.256"
-
-vbroadcastss_ps :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Float))
-vbroadcastss_ps = Ext.intrinsic ExtX86.avx2 "vbroadcast.ss.ps"
-
-vbroadcastsd_pd256 :: Ext.T (V2Double -> LLVM.CodeGenFunction r (V4Double))
-vbroadcastsd_pd256 = Ext.intrinsic ExtX86.avx2 "vbroadcast.sd.pd.256"
-
-vbroadcastss_ps256 :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V8Float))
-vbroadcastss_ps256 = Ext.intrinsic ExtX86.avx2 "vbroadcast.ss.ps.256"
-
-vbroadcastsi256 :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V4Int64))
-vbroadcastsi256 = Ext.intrinsic ExtX86.avx2 "vbroadcasti128"
-
-pbroadcastb128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
-pbroadcastb128 = Ext.intrinsic ExtX86.avx2 "pbroadcastb.128"
-
-pbroadcastb256 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V32Int8))
-pbroadcastb256 = Ext.intrinsic ExtX86.avx2 "pbroadcastb.256"
-
-pbroadcastw128 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
-pbroadcastw128 = Ext.intrinsic ExtX86.avx2 "pbroadcastw.128"
-
-pbroadcastw256 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V16Int16))
-pbroadcastw256 = Ext.intrinsic ExtX86.avx2 "pbroadcastw.256"
-
-pbroadcastd128 :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
-pbroadcastd128 = Ext.intrinsic ExtX86.avx2 "pbroadcastd.128"
-
-pbroadcastd256 :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V8Int32))
-pbroadcastd256 = Ext.intrinsic ExtX86.avx2 "pbroadcastd.256"
-
-pbroadcastq128 :: Ext.T (V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
-pbroadcastq128 = Ext.intrinsic ExtX86.avx2 "pbroadcastq.128"
-
-pbroadcastq256 :: Ext.T (V2Int64 -> LLVM.CodeGenFunction r (V4Int64))
-pbroadcastq256 = Ext.intrinsic ExtX86.avx2 "pbroadcastq.256"
-
-permvarsi256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
-permvarsi256 = Ext.intrinsic ExtX86.avx2 "permd"
-
-permvarsf256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
-permvarsf256 = Ext.intrinsic ExtX86.avx2 "permps"
-
-permti256 :: Ext.T (V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
-permti256 = Ext.intrinsic ExtX86.avx2 "vperm2i128"
-
-extract128i256 :: Ext.T (V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
-extract128i256 = Ext.intrinsic ExtX86.avx2 "vextracti128"
-
-insert128i256 :: Ext.T (V4Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
-insert128i256 = Ext.intrinsic ExtX86.avx2 "vinserti128"
-
-maskloadd :: Ext.T (LLVM.Value (Ptr ()) -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
-maskloadd = Ext.intrinsic ExtX86.avx2 "maskload.d"
-
-maskloadq :: Ext.T (LLVM.Value (Ptr ()) -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
-maskloadq = Ext.intrinsic ExtX86.avx2 "maskload.q"
-
-maskloadd256 :: Ext.T (LLVM.Value (Ptr ()) -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
-maskloadd256 = Ext.intrinsic ExtX86.avx2 "maskload.d.256"
-
-maskloadq256 :: Ext.T (LLVM.Value (Ptr ()) -> V4Int64 -> LLVM.CodeGenFunction r (V4Int64))
-maskloadq256 = Ext.intrinsic ExtX86.avx2 "maskload.q.256"
-
-maskstored :: Ext.T (LLVM.Value (Ptr ()) -> V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (LLVM.Value ()))
-maskstored = Ext.intrinsic ExtX86.avx2 "maskstore.d"
-
-maskstoreq :: Ext.T (LLVM.Value (Ptr ()) -> V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (LLVM.Value ()))
-maskstoreq = Ext.intrinsic ExtX86.avx2 "maskstore.q"
-
-maskstored256 :: Ext.T (LLVM.Value (Ptr ()) -> V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (LLVM.Value ()))
-maskstored256 = Ext.intrinsic ExtX86.avx2 "maskstore.d.256"
-
-maskstoreq256 :: Ext.T (LLVM.Value (Ptr ()) -> V4Int64 -> V4Int64 -> LLVM.CodeGenFunction r (LLVM.Value ()))
-maskstoreq256 = Ext.intrinsic ExtX86.avx2 "maskstore.q.256"
-
-psllv4si :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
-psllv4si = Ext.intrinsic ExtX86.avx2 "psllv.d"
-
-psllv8si :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
-psllv8si = Ext.intrinsic ExtX86.avx2 "psllv.d.256"
-
-psllv2di :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
-psllv2di = Ext.intrinsic ExtX86.avx2 "psllv.q"
-
-psllv4di :: Ext.T (V4Int64 -> V4Int64 -> LLVM.CodeGenFunction r (V4Int64))
-psllv4di = Ext.intrinsic ExtX86.avx2 "psllv.q.256"
-
-psrlv4si :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
-psrlv4si = Ext.intrinsic ExtX86.avx2 "psrlv.d"
-
-psrlv8si :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
-psrlv8si = Ext.intrinsic ExtX86.avx2 "psrlv.d.256"
-
-psrlv2di :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
-psrlv2di = Ext.intrinsic ExtX86.avx2 "psrlv.q"
-
-psrlv4di :: Ext.T (V4Int64 -> V4Int64 -> LLVM.CodeGenFunction r (V4Int64))
-psrlv4di = Ext.intrinsic ExtX86.avx2 "psrlv.q.256"
-
-psrav4si :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
-psrav4si = Ext.intrinsic ExtX86.avx2 "psrav.d"
-
-psrav8si :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
-psrav8si = Ext.intrinsic ExtX86.avx2 "psrav.d.256"
-
-pmovmskb256 :: Ext.T (V32Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
-pmovmskb256 = Ext.intrinsic ExtX86.avx2 "pmovmskb"
-
-pshufb256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
-pshufb256 = Ext.intrinsic ExtX86.avx2 "pshuf.b"
-
-mpsadbw256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Int16))
-mpsadbw256 = Ext.intrinsic ExtX86.avx2 "mpsadbw"
-
-movntdqa256 :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V4Int64))
-movntdqa256 = Ext.intrinsic ExtX86.avx2 "movntdqa"
-
-vfmaddss :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-vfmaddss = Ext.intrinsic ExtX86.fma4 "vfmadd.ss"
-
-vfmaddsd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-vfmaddsd = Ext.intrinsic ExtX86.fma4 "vfmadd.sd"
-
-vfmaddps :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-vfmaddps = Ext.intrinsic ExtX86.fma4 "vfmadd.ps"
-
-vfmaddpd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-vfmaddpd = Ext.intrinsic ExtX86.fma4 "vfmadd.pd"
-
-vfmaddps256 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
-vfmaddps256 = Ext.intrinsic ExtX86.fma4 "vfmadd.ps.256"
-
-vfmaddpd256 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
-vfmaddpd256 = Ext.intrinsic ExtX86.fma4 "vfmadd.pd.256"
-
-vfmsubss :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-vfmsubss = Ext.intrinsic ExtX86.fma4 "vfmsub.ss"
-
-vfmsubsd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-vfmsubsd = Ext.intrinsic ExtX86.fma4 "vfmsub.sd"
-
-vfmsubps :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-vfmsubps = Ext.intrinsic ExtX86.fma4 "vfmsub.ps"
-
-vfmsubpd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-vfmsubpd = Ext.intrinsic ExtX86.fma4 "vfmsub.pd"
-
-vfmsubps256 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
-vfmsubps256 = Ext.intrinsic ExtX86.fma4 "vfmsub.ps.256"
-
-vfmsubpd256 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
-vfmsubpd256 = Ext.intrinsic ExtX86.fma4 "vfmsub.pd.256"
-
-vfnmaddss :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-vfnmaddss = Ext.intrinsic ExtX86.fma4 "vfnmadd.ss"
-
-vfnmaddsd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-vfnmaddsd = Ext.intrinsic ExtX86.fma4 "vfnmadd.sd"
-
-vfnmaddps :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-vfnmaddps = Ext.intrinsic ExtX86.fma4 "vfnmadd.ps"
-
-vfnmaddpd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-vfnmaddpd = Ext.intrinsic ExtX86.fma4 "vfnmadd.pd"
-
-vfnmaddps256 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
-vfnmaddps256 = Ext.intrinsic ExtX86.fma4 "vfnmadd.ps.256"
-
-vfnmaddpd256 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
-vfnmaddpd256 = Ext.intrinsic ExtX86.fma4 "vfnmadd.pd.256"
-
-vfnmsubss :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-vfnmsubss = Ext.intrinsic ExtX86.fma4 "vfnmsub.ss"
-
-vfnmsubsd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-vfnmsubsd = Ext.intrinsic ExtX86.fma4 "vfnmsub.sd"
-
-vfnmsubps :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-vfnmsubps = Ext.intrinsic ExtX86.fma4 "vfnmsub.ps"
-
-vfnmsubpd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-vfnmsubpd = Ext.intrinsic ExtX86.fma4 "vfnmsub.pd"
-
-vfnmsubps256 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
-vfnmsubps256 = Ext.intrinsic ExtX86.fma4 "vfnmsub.ps.256"
-
-vfnmsubpd256 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
-vfnmsubpd256 = Ext.intrinsic ExtX86.fma4 "vfnmsub.pd.256"
-
-vfmaddsubps :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-vfmaddsubps = Ext.intrinsic ExtX86.fma4 "vfmaddsub.ps"
-
-vfmaddsubpd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-vfmaddsubpd = Ext.intrinsic ExtX86.fma4 "vfmaddsub.pd"
-
-vfmaddsubps256 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
-vfmaddsubps256 = Ext.intrinsic ExtX86.fma4 "vfmaddsub.ps.256"
-
-vfmaddsubpd256 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
-vfmaddsubpd256 = Ext.intrinsic ExtX86.fma4 "vfmaddsub.pd.256"
-
-vfmsubaddps :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
-vfmsubaddps = Ext.intrinsic ExtX86.fma4 "vfmsubadd.ps"
-
-vfmsubaddpd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
-vfmsubaddpd = Ext.intrinsic ExtX86.fma4 "vfmsubadd.pd"
-
-vfmsubaddps256 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
-vfmsubaddps256 = Ext.intrinsic ExtX86.fma4 "vfmsubadd.ps.256"
-
-vfmsubaddpd256 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
-vfmsubaddpd256 = Ext.intrinsic ExtX86.fma4 "vfmsubadd.pd.256"
+type V16Float = LLVM.Value (LLVM.Vector TypeNum.D16 Float)
+type V16Int16 = LLVM.Value (LLVM.Vector TypeNum.D16 I.Int16)
+type V16Int32 = LLVM.Value (LLVM.Vector TypeNum.D16 I.Int32)
+type V16Int8 = LLVM.Value (LLVM.Vector TypeNum.D16 I.Int8)
+type V16Word16 = LLVM.Value (LLVM.Vector TypeNum.D16 W.Word16)
+type V16Word8 = LLVM.Value (LLVM.Vector TypeNum.D16 W.Word8)
+type V2Double = LLVM.Value (LLVM.Vector TypeNum.D2 Double)
+type V2Int64 = LLVM.Value (LLVM.Vector TypeNum.D2 I.Int64)
+type V2Word64 = LLVM.Value (LLVM.Vector TypeNum.D2 W.Word64)
+type V32Int16 = LLVM.Value (LLVM.Vector TypeNum.D32 I.Int16)
+type V32Int8 = LLVM.Value (LLVM.Vector TypeNum.D32 I.Int8)
+type V32Word8 = LLVM.Value (LLVM.Vector TypeNum.D32 W.Word8)
+type V4Double = LLVM.Value (LLVM.Vector TypeNum.D4 Double)
+type V4Float = LLVM.Value (LLVM.Vector TypeNum.D4 Float)
+type V4Int32 = LLVM.Value (LLVM.Vector TypeNum.D4 I.Int32)
+type V4Int64 = LLVM.Value (LLVM.Vector TypeNum.D4 I.Int64)
+type V4Word32 = LLVM.Value (LLVM.Vector TypeNum.D4 W.Word32)
+type V4Word64 = LLVM.Value (LLVM.Vector TypeNum.D4 W.Word64)
+type V64Int8 = LLVM.Value (LLVM.Vector TypeNum.D64 I.Int8)
+type V8Double = LLVM.Value (LLVM.Vector TypeNum.D8 Double)
+type V8Float = LLVM.Value (LLVM.Vector TypeNum.D8 Float)
+type V8Int16 = LLVM.Value (LLVM.Vector TypeNum.D8 I.Int16)
+type V8Int32 = LLVM.Value (LLVM.Vector TypeNum.D8 I.Int32)
+type V8Int64 = LLVM.Value (LLVM.Vector TypeNum.D8 I.Int64)
+type V8Word16 = LLVM.Value (LLVM.Vector TypeNum.D8 W.Word16)
+type V8Word32 = LLVM.Value (LLVM.Vector TypeNum.D8 W.Word32)
+
+{-
+readeflags_u32 :: Ext.T (LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+readeflags_u32 = Ext.intrinsic ExtX86.flags "read.u32"
+
+readeflags_u64 :: Ext.T (LLVM.CodeGenFunction r (LLVM.Value I.Int64))
+readeflags_u64 = Ext.intrinsic ExtX86.flags "read.u64"
+
+writeeflags_u32 :: Ext.T (LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+writeeflags_u32 = Ext.intrinsic ExtX86.flags "write.u32"
+
+writeeflags_u64 :: Ext.T (LLVM.Value I.Int64 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+writeeflags_u64 = Ext.intrinsic ExtX86.flags "write.u64"
+
+rdtsc :: Ext.T (LLVM.CodeGenFunction r (LLVM.Value I.Int64))
+rdtsc = Ext.intrinsic ExtX86. "int.x86.rdtsc"
+
+rdtscp :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (LLVM.Value I.Int64))
+rdtscp = Ext.intrinsic ExtX86. "int.x86.rdtscp"
+
+rdpmc :: Ext.T (LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (LLVM.Value I.Int64))
+rdpmc = Ext.intrinsic ExtX86. "int.x86.rdpmc"
+-}
+
+pavgusb :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pavgusb = Ext.intrinsic ExtX86.amd3dnow "pavgusb"
+
+pf2id :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
+pf2id = Ext.intrinsic ExtX86.amd3dnow "pf2id"
+
+pfacc :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pfacc = Ext.intrinsic ExtX86.amd3dnow "pfacc"
+
+pfadd :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pfadd = Ext.intrinsic ExtX86.amd3dnow "pfadd"
+
+pfcmpeq :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pfcmpeq = Ext.intrinsic ExtX86.amd3dnow "pfcmpeq"
+
+pfcmpge :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pfcmpge = Ext.intrinsic ExtX86.amd3dnow "pfcmpge"
+
+pfcmpgt :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pfcmpgt = Ext.intrinsic ExtX86.amd3dnow "pfcmpgt"
+
+pfmax :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pfmax = Ext.intrinsic ExtX86.amd3dnow "pfmax"
+
+pfmin :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pfmin = Ext.intrinsic ExtX86.amd3dnow "pfmin"
+
+pfmul :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pfmul = Ext.intrinsic ExtX86.amd3dnow "pfmul"
+
+pfrcp :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
+pfrcp = Ext.intrinsic ExtX86.amd3dnow "pfrcp"
+
+pfrcpit1 :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pfrcpit1 = Ext.intrinsic ExtX86.amd3dnow "pfrcpit1"
+
+pfrcpit2 :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pfrcpit2 = Ext.intrinsic ExtX86.amd3dnow "pfrcpit2"
+
+pfrsqrt :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
+pfrsqrt = Ext.intrinsic ExtX86.amd3dnow "pfrsqrt"
+
+pfrsqit1 :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pfrsqit1 = Ext.intrinsic ExtX86.amd3dnow "pfrsqit1"
+
+pfsub :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pfsub = Ext.intrinsic ExtX86.amd3dnow "pfsub"
+
+pfsubr :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pfsubr = Ext.intrinsic ExtX86.amd3dnow "pfsubr"
+
+pi2fd :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
+pi2fd = Ext.intrinsic ExtX86.amd3dnow "pi2fd"
+
+pmulhrw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pmulhrw = Ext.intrinsic ExtX86.amd3dnow "pmulhrw"
+
+pf2iw :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
+pf2iw = Ext.intrinsic ExtX86.amd3dnowa "pf2iw"
+
+pfnacc :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pfnacc = Ext.intrinsic ExtX86.amd3dnowa "pfnacc"
+
+pfpnacc :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pfpnacc = Ext.intrinsic ExtX86.amd3dnowa "pfpnacc"
+
+pi2fw :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
+pi2fw = Ext.intrinsic ExtX86.amd3dnowa "pi2fw"
+
+addss :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+addss = Ext.intrinsic ExtX86.sse1 "add.ss"
+
+subss :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+subss = Ext.intrinsic ExtX86.sse1 "sub.ss"
+
+mulss :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+mulss = Ext.intrinsic ExtX86.sse1 "mul.ss"
+
+divss :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+divss = Ext.intrinsic ExtX86.sse1 "div.ss"
+
+sqrtss :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Float))
+sqrtss = Ext.intrinsic ExtX86.sse1 "sqrt.ss"
+
+sqrtps :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Float))
+sqrtps = Ext.intrinsic ExtX86.sse1 "sqrt.ps"
+
+rcpss :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Float))
+rcpss = Ext.intrinsic ExtX86.sse1 "rcp.ss"
+
+rcpps :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Float))
+rcpps = Ext.intrinsic ExtX86.sse1 "rcp.ps"
+
+rsqrtss :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Float))
+rsqrtss = Ext.intrinsic ExtX86.sse1 "rsqrt.ss"
+
+rsqrtps :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Float))
+rsqrtps = Ext.intrinsic ExtX86.sse1 "rsqrt.ps"
+
+minss :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+minss = Ext.intrinsic ExtX86.sse1 "min.ss"
+
+minps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+minps = Ext.intrinsic ExtX86.sse1 "min.ps"
+
+maxss :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+maxss = Ext.intrinsic ExtX86.sse1 "max.ss"
+
+maxps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+maxps = Ext.intrinsic ExtX86.sse1 "max.ps"
+
+cmpss :: Ext.T (V4Float -> V4Float -> LLVM.Value W.Word8 -> LLVM.CodeGenFunction r (V4Float))
+cmpss = Ext.intrinsic ExtX86.sse1 "cmp.ss"
+
+cmpps :: Ext.T (V4Float -> V4Float -> LLVM.Value W.Word8 -> LLVM.CodeGenFunction r (V4Float))
+cmpps = Ext.intrinsic ExtX86.sse1 "cmp.ps"
+
+comieq :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+comieq = Ext.intrinsic ExtX86.sse1 "comieq.ss"
+
+comilt :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+comilt = Ext.intrinsic ExtX86.sse1 "comilt.ss"
+
+comile :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+comile = Ext.intrinsic ExtX86.sse1 "comile.ss"
+
+comigt :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+comigt = Ext.intrinsic ExtX86.sse1 "comigt.ss"
+
+comige :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+comige = Ext.intrinsic ExtX86.sse1 "comige.ss"
+
+comineq :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+comineq = Ext.intrinsic ExtX86.sse1 "comineq.ss"
+
+ucomieq :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ucomieq = Ext.intrinsic ExtX86.sse1 "ucomieq.ss"
+
+ucomilt :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ucomilt = Ext.intrinsic ExtX86.sse1 "ucomilt.ss"
+
+ucomile :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ucomile = Ext.intrinsic ExtX86.sse1 "ucomile.ss"
+
+ucomigt :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ucomigt = Ext.intrinsic ExtX86.sse1 "ucomigt.ss"
+
+ucomige :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ucomige = Ext.intrinsic ExtX86.sse1 "ucomige.ss"
+
+ucomineq :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ucomineq = Ext.intrinsic ExtX86.sse1 "ucomineq.ss"
+
+cvtss2si :: Ext.T (V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+cvtss2si = Ext.intrinsic ExtX86.sse1 "cvtss2si"
+
+cvtss2si64 :: Ext.T (V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int64))
+cvtss2si64 = Ext.intrinsic ExtX86.sse1 "cvtss2si64"
+
+cvttss2si :: Ext.T (V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+cvttss2si = Ext.intrinsic ExtX86.sse1 "cvttss2si"
+
+cvttss2si64 :: Ext.T (V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int64))
+cvttss2si64 = Ext.intrinsic ExtX86.sse1 "cvttss2si64"
+
+cvtsi2ss :: Ext.T (V4Float -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Float))
+cvtsi2ss = Ext.intrinsic ExtX86.sse1 "cvtsi2ss"
+
+cvtsi642ss :: Ext.T (V4Float -> LLVM.Value I.Int64 -> LLVM.CodeGenFunction r (V4Float))
+cvtsi642ss = Ext.intrinsic ExtX86.sse1 "cvtsi642ss"
+
+cvtps2pi :: Ext.T (V4Float -> LLVM.CodeGenFunction r (MMX))
+cvtps2pi = Ext.intrinsic ExtX86.sse1 "cvtps2pi"
+
+cvttps2pi :: Ext.T (V4Float -> LLVM.CodeGenFunction r (MMX))
+cvttps2pi = Ext.intrinsic ExtX86.sse1 "cvttps2pi"
+
+cvtpi2ps :: Ext.T (V4Float -> MMX -> LLVM.CodeGenFunction r (V4Float))
+cvtpi2ps = Ext.intrinsic ExtX86.sse1 "cvtpi2ps"
+
+storeups :: Ext.T (LLVM.Value (Ptr ()) -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value ()))
+storeups = Ext.intrinsic ExtX86.sse1 "storeu.ps"
+
+sfence :: Ext.T (LLVM.CodeGenFunction r (LLVM.Value ()))
+sfence = Ext.intrinsic ExtX86.sse1 "sfence"
+
+movmskps :: Ext.T (V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+movmskps = Ext.intrinsic ExtX86.sse1 "movmsk.ps"
+
+addsd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+addsd = Ext.intrinsic ExtX86.sse2 "add.sd"
+
+subsd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+subsd = Ext.intrinsic ExtX86.sse2 "sub.sd"
+
+mulsd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+mulsd = Ext.intrinsic ExtX86.sse2 "mul.sd"
+
+divsd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+divsd = Ext.intrinsic ExtX86.sse2 "div.sd"
+
+sqrtsd :: Ext.T (V2Double -> LLVM.CodeGenFunction r (V2Double))
+sqrtsd = Ext.intrinsic ExtX86.sse2 "sqrt.sd"
+
+sqrtpd :: Ext.T (V2Double -> LLVM.CodeGenFunction r (V2Double))
+sqrtpd = Ext.intrinsic ExtX86.sse2 "sqrt.pd"
+
+minsd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+minsd = Ext.intrinsic ExtX86.sse2 "min.sd"
+
+minpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+minpd = Ext.intrinsic ExtX86.sse2 "min.pd"
+
+maxsd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+maxsd = Ext.intrinsic ExtX86.sse2 "max.sd"
+
+maxpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+maxpd = Ext.intrinsic ExtX86.sse2 "max.pd"
+
+cmpsd :: Ext.T (V2Double -> V2Double -> LLVM.Value W.Word8 -> LLVM.CodeGenFunction r (V2Double))
+cmpsd = Ext.intrinsic ExtX86.sse2 "cmp.sd"
+
+cmppd :: Ext.T (V2Double -> V2Double -> LLVM.Value W.Word8 -> LLVM.CodeGenFunction r (V2Double))
+cmppd = Ext.intrinsic ExtX86.sse2 "cmp.pd"
+
+comisdeq :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+comisdeq = Ext.intrinsic ExtX86.sse2 "comieq.sd"
+
+comisdlt :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+comisdlt = Ext.intrinsic ExtX86.sse2 "comilt.sd"
+
+comisdle :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+comisdle = Ext.intrinsic ExtX86.sse2 "comile.sd"
+
+comisdgt :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+comisdgt = Ext.intrinsic ExtX86.sse2 "comigt.sd"
+
+comisdge :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+comisdge = Ext.intrinsic ExtX86.sse2 "comige.sd"
+
+comisdneq :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+comisdneq = Ext.intrinsic ExtX86.sse2 "comineq.sd"
+
+ucomisdeq :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ucomisdeq = Ext.intrinsic ExtX86.sse2 "ucomieq.sd"
+
+ucomisdlt :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ucomisdlt = Ext.intrinsic ExtX86.sse2 "ucomilt.sd"
+
+ucomisdle :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ucomisdle = Ext.intrinsic ExtX86.sse2 "ucomile.sd"
+
+ucomisdgt :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ucomisdgt = Ext.intrinsic ExtX86.sse2 "ucomigt.sd"
+
+ucomisdge :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ucomisdge = Ext.intrinsic ExtX86.sse2 "ucomige.sd"
+
+ucomisdneq :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ucomisdneq = Ext.intrinsic ExtX86.sse2 "ucomineq.sd"
+
+paddsb128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
+paddsb128 = Ext.intrinsic ExtX86.sse2 "padds.b"
+
+paddsw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+paddsw128 = Ext.intrinsic ExtX86.sse2 "padds.w"
+
+paddusb128 :: Ext.T (V16Word8 -> V16Word8 -> LLVM.CodeGenFunction r (V16Word8))
+paddusb128 = Ext.intrinsic ExtX86.sse2 "paddus.b"
+
+paddusw128 :: Ext.T (V8Word16 -> V8Word16 -> LLVM.CodeGenFunction r (V8Word16))
+paddusw128 = Ext.intrinsic ExtX86.sse2 "paddus.w"
+
+psubsb128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
+psubsb128 = Ext.intrinsic ExtX86.sse2 "psubs.b"
+
+psubsw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+psubsw128 = Ext.intrinsic ExtX86.sse2 "psubs.w"
+
+psubusb128 :: Ext.T (V16Word8 -> V16Word8 -> LLVM.CodeGenFunction r (V16Word8))
+psubusb128 = Ext.intrinsic ExtX86.sse2 "psubus.b"
+
+psubusw128 :: Ext.T (V8Word16 -> V8Word16 -> LLVM.CodeGenFunction r (V8Word16))
+psubusw128 = Ext.intrinsic ExtX86.sse2 "psubus.w"
+
+pmulhuw128 :: Ext.T (V8Word16 -> V8Word16 -> LLVM.CodeGenFunction r (V8Word16))
+pmulhuw128 = Ext.intrinsic ExtX86.sse2 "pmulhu.w"
+
+pmulhw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+pmulhw128 = Ext.intrinsic ExtX86.sse2 "pmulh.w"
+
+pmuludq128 :: Ext.T (V4Word32 -> V4Word32 -> LLVM.CodeGenFunction r (V2Word64))
+pmuludq128 = Ext.intrinsic ExtX86.sse2 "pmulu.dq"
+
+pmaddwd128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V4Int32))
+pmaddwd128 = Ext.intrinsic ExtX86.sse2 "pmadd.wd"
+
+pavgb128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
+pavgb128 = Ext.intrinsic ExtX86.sse2 "pavg.b"
+
+pavgw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+pavgw128 = Ext.intrinsic ExtX86.sse2 "pavg.w"
+
+pmaxub128 :: Ext.T (V16Word8 -> V16Word8 -> LLVM.CodeGenFunction r (V16Word8))
+pmaxub128 = Ext.intrinsic ExtX86.sse2 "pmaxu.b"
+
+pmaxsw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+pmaxsw128 = Ext.intrinsic ExtX86.sse2 "pmaxs.w"
+
+pminub128 :: Ext.T (V16Word8 -> V16Word8 -> LLVM.CodeGenFunction r (V16Word8))
+pminub128 = Ext.intrinsic ExtX86.sse2 "pminu.b"
+
+pminsw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+pminsw128 = Ext.intrinsic ExtX86.sse2 "pmins.w"
+
+psadbw128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V2Int64))
+psadbw128 = Ext.intrinsic ExtX86.sse2 "psad.bw"
+
+psllw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+psllw128 = Ext.intrinsic ExtX86.sse2 "psll.w"
+
+pslld128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
+pslld128 = Ext.intrinsic ExtX86.sse2 "psll.d"
+
+psllq128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
+psllq128 = Ext.intrinsic ExtX86.sse2 "psll.q"
+
+psrlw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+psrlw128 = Ext.intrinsic ExtX86.sse2 "psrl.w"
+
+psrld128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
+psrld128 = Ext.intrinsic ExtX86.sse2 "psrl.d"
+
+psrlq128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
+psrlq128 = Ext.intrinsic ExtX86.sse2 "psrl.q"
+
+psraw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+psraw128 = Ext.intrinsic ExtX86.sse2 "psra.w"
+
+psrad128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
+psrad128 = Ext.intrinsic ExtX86.sse2 "psra.d"
+
+psllwi128 :: Ext.T (V8Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int16))
+psllwi128 = Ext.intrinsic ExtX86.sse2 "pslli.w"
+
+pslldi128 :: Ext.T (V4Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Int32))
+pslldi128 = Ext.intrinsic ExtX86.sse2 "pslli.d"
+
+psllqi128 :: Ext.T (V2Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V2Int64))
+psllqi128 = Ext.intrinsic ExtX86.sse2 "pslli.q"
+
+psrlwi128 :: Ext.T (V8Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int16))
+psrlwi128 = Ext.intrinsic ExtX86.sse2 "psrli.w"
+
+psrldi128 :: Ext.T (V4Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Int32))
+psrldi128 = Ext.intrinsic ExtX86.sse2 "psrli.d"
+
+psrlqi128 :: Ext.T (V2Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V2Int64))
+psrlqi128 = Ext.intrinsic ExtX86.sse2 "psrli.q"
+
+psrawi128 :: Ext.T (V8Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int16))
+psrawi128 = Ext.intrinsic ExtX86.sse2 "psrai.w"
+
+psradi128 :: Ext.T (V4Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Int32))
+psradi128 = Ext.intrinsic ExtX86.sse2 "psrai.d"
+
+cvtdq2pd :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V2Double))
+cvtdq2pd = Ext.intrinsic ExtX86.sse2 "cvtdq2pd"
+
+cvtdq2ps :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V4Float))
+cvtdq2ps = Ext.intrinsic ExtX86.sse2 "cvtdq2ps"
+
+cvtpd2dq :: Ext.T (V2Double -> LLVM.CodeGenFunction r (V4Int32))
+cvtpd2dq = Ext.intrinsic ExtX86.sse2 "cvtpd2dq"
+
+cvttpd2dq :: Ext.T (V2Double -> LLVM.CodeGenFunction r (V4Int32))
+cvttpd2dq = Ext.intrinsic ExtX86.sse2 "cvttpd2dq"
+
+cvtpd2ps :: Ext.T (V2Double -> LLVM.CodeGenFunction r (V4Float))
+cvtpd2ps = Ext.intrinsic ExtX86.sse2 "cvtpd2ps"
+
+cvtps2dq :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Int32))
+cvtps2dq = Ext.intrinsic ExtX86.sse2 "cvtps2dq"
+
+cvttps2dq :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Int32))
+cvttps2dq = Ext.intrinsic ExtX86.sse2 "cvttps2dq"
+
+cvtps2pd :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V2Double))
+cvtps2pd = Ext.intrinsic ExtX86.sse2 "cvtps2pd"
+
+cvtsd2si :: Ext.T (V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+cvtsd2si = Ext.intrinsic ExtX86.sse2 "cvtsd2si"
+
+cvtsd2si64 :: Ext.T (V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int64))
+cvtsd2si64 = Ext.intrinsic ExtX86.sse2 "cvtsd2si64"
+
+cvttsd2si :: Ext.T (V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+cvttsd2si = Ext.intrinsic ExtX86.sse2 "cvttsd2si"
+
+cvttsd2si64 :: Ext.T (V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int64))
+cvttsd2si64 = Ext.intrinsic ExtX86.sse2 "cvttsd2si64"
+
+cvtsi2sd :: Ext.T (V2Double -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V2Double))
+cvtsi2sd = Ext.intrinsic ExtX86.sse2 "cvtsi2sd"
+
+cvtsi642sd :: Ext.T (V2Double -> LLVM.Value I.Int64 -> LLVM.CodeGenFunction r (V2Double))
+cvtsi642sd = Ext.intrinsic ExtX86.sse2 "cvtsi642sd"
+
+cvtsd2ss :: Ext.T (V4Float -> V2Double -> LLVM.CodeGenFunction r (V4Float))
+cvtsd2ss = Ext.intrinsic ExtX86.sse2 "cvtsd2ss"
+
+cvtss2sd :: Ext.T (V2Double -> V4Float -> LLVM.CodeGenFunction r (V2Double))
+cvtss2sd = Ext.intrinsic ExtX86.sse2 "cvtss2sd"
+
+cvtpd2pi :: Ext.T (V2Double -> LLVM.CodeGenFunction r (MMX))
+cvtpd2pi = Ext.intrinsic ExtX86.sse1 "cvtpd2pi"
+
+cvttpd2pi :: Ext.T (V2Double -> LLVM.CodeGenFunction r (MMX))
+cvttpd2pi = Ext.intrinsic ExtX86.sse1 "cvttpd2pi"
+
+cvtpi2pd :: Ext.T (MMX -> LLVM.CodeGenFunction r (V2Double))
+cvtpi2pd = Ext.intrinsic ExtX86.sse1 "cvtpi2pd"
+
+storeupd :: Ext.T (LLVM.Value (Ptr ()) -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value ()))
+storeupd = Ext.intrinsic ExtX86.sse2 "storeu.pd"
+
+storedqu :: Ext.T (LLVM.Value (Ptr ()) -> V16Int8 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+storedqu = Ext.intrinsic ExtX86.sse2 "storeu.dq"
+
+storelv4si :: Ext.T (LLVM.Value (Ptr ()) -> V4Int32 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+storelv4si = Ext.intrinsic ExtX86.sse2 "storel.dq"
+
+packsswb128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V16Int8))
+packsswb128 = Ext.intrinsic ExtX86.sse2 "packsswb.128"
+
+packssdw128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V8Int16))
+packssdw128 = Ext.intrinsic ExtX86.sse2 "packssdw.128"
+
+packuswb128 :: Ext.T (V8Word16 -> V8Word16 -> LLVM.CodeGenFunction r (V16Word8))
+packuswb128 = Ext.intrinsic ExtX86.sse2 "packuswb.128"
+
+movmskpd :: Ext.T (V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+movmskpd = Ext.intrinsic ExtX86.sse2 "movmsk.pd"
+
+pmovmskb128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+pmovmskb128 = Ext.intrinsic ExtX86.sse2 "pmovmskb.128"
+
+maskmovdqu :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (LLVM.Value ()))
+maskmovdqu = Ext.intrinsic ExtX86.sse2 "maskmov.dqu"
+
+clflush :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (LLVM.Value ()))
+clflush = Ext.intrinsic ExtX86.sse2 "clflush"
+
+lfence :: Ext.T (LLVM.CodeGenFunction r (LLVM.Value ()))
+lfence = Ext.intrinsic ExtX86.sse2 "lfence"
+
+mfence :: Ext.T (LLVM.CodeGenFunction r (LLVM.Value ()))
+mfence = Ext.intrinsic ExtX86.sse2 "mfence"
+
+pause :: Ext.T (LLVM.CodeGenFunction r (LLVM.Value ()))
+pause = Ext.intrinsic ExtX86.sse2 "pause"
+
+addsubps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+addsubps = Ext.intrinsic ExtX86.sse3 "addsub.ps"
+
+addsubpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+addsubpd = Ext.intrinsic ExtX86.sse3 "addsub.pd"
+
+haddps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+haddps = Ext.intrinsic ExtX86.sse3 "hadd.ps"
+
+haddpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+haddpd = Ext.intrinsic ExtX86.sse3 "hadd.pd"
+
+hsubps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+hsubps = Ext.intrinsic ExtX86.sse3 "hsub.ps"
+
+hsubpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+hsubpd = Ext.intrinsic ExtX86.sse3 "hsub.pd"
+
+lddqu :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V16Int8))
+lddqu = Ext.intrinsic ExtX86.sse3 "ldu.dq"
+
+monitor :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.Value I.Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+monitor = Ext.intrinsic ExtX86.sse3 "monitor"
+
+mwait :: Ext.T (LLVM.Value I.Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+mwait = Ext.intrinsic ExtX86.sse3 "mwait"
+
+phaddw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+phaddw = Ext.intrinsic ExtX86.ssse3 "phadd.w"
+
+phaddw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+phaddw128 = Ext.intrinsic ExtX86.ssse3 "phadd.w.128"
+
+phaddd :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+phaddd = Ext.intrinsic ExtX86.ssse3 "phadd.d"
+
+phaddd128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
+phaddd128 = Ext.intrinsic ExtX86.ssse3 "phadd.d.128"
+
+phaddsw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+phaddsw = Ext.intrinsic ExtX86.ssse3 "phadd.sw"
+
+phaddsw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+phaddsw128 = Ext.intrinsic ExtX86.ssse3 "phadd.sw.128"
+
+phsubw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+phsubw = Ext.intrinsic ExtX86.ssse3 "phsub.w"
+
+phsubw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+phsubw128 = Ext.intrinsic ExtX86.ssse3 "phsub.w.128"
+
+phsubd :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+phsubd = Ext.intrinsic ExtX86.ssse3 "phsub.d"
+
+phsubd128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
+phsubd128 = Ext.intrinsic ExtX86.ssse3 "phsub.d.128"
+
+phsubsw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+phsubsw = Ext.intrinsic ExtX86.ssse3 "phsub.sw"
+
+phsubsw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+phsubsw128 = Ext.intrinsic ExtX86.ssse3 "phsub.sw.128"
+
+pmaddubsw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pmaddubsw = Ext.intrinsic ExtX86.ssse3 "pmadd.ub.sw"
+
+pmaddubsw128 :: Ext.T (V16Word8 -> V16Word8 -> LLVM.CodeGenFunction r (V8Word16))
+pmaddubsw128 = Ext.intrinsic ExtX86.ssse3 "pmadd.ub.sw.128"
+
+pmulhrsw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pmulhrsw = Ext.intrinsic ExtX86.ssse3 "pmul.hr.sw"
+
+pmulhrsw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+pmulhrsw128 = Ext.intrinsic ExtX86.ssse3 "pmul.hr.sw.128"
+
+pshufb :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+pshufb = Ext.intrinsic ExtX86.ssse3 "pshuf.b"
+
+pshufb128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
+pshufb128 = Ext.intrinsic ExtX86.ssse3 "pshuf.b.128"
+
+pshufd :: Ext.T (V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+pshufd = Ext.intrinsic ExtX86.sse2 "pshuf.d"
+
+pshuflw :: Ext.T (V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+pshuflw = Ext.intrinsic ExtX86.sse2 "pshufl.w"
+
+pshufhw :: Ext.T (V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+pshufhw = Ext.intrinsic ExtX86.sse2 "pshufh.w"
+
+pshufw :: Ext.T (MMX -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (MMX))
+pshufw = Ext.intrinsic ExtX86.sse1 "pshuf.w"
+
+psignb :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+psignb = Ext.intrinsic ExtX86.ssse3 "psign.b"
+
+psignb128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
+psignb128 = Ext.intrinsic ExtX86.ssse3 "psign.b.128"
+
+psignw :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+psignw = Ext.intrinsic ExtX86.ssse3 "psign.w"
+
+psignw128 :: Ext.T (V8Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+psignw128 = Ext.intrinsic ExtX86.ssse3 "psign.w.128"
+
+psignd :: Ext.T (MMX -> MMX -> LLVM.CodeGenFunction r (MMX))
+psignd = Ext.intrinsic ExtX86.ssse3 "psign.d"
+
+psignd128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
+psignd128 = Ext.intrinsic ExtX86.ssse3 "psign.d.128"
+
+pabsb :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
+pabsb = Ext.intrinsic ExtX86.ssse3 "pabs.b"
+
+pabsb128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
+pabsb128 = Ext.intrinsic ExtX86.ssse3 "pabs.b.128"
+
+pabsw :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
+pabsw = Ext.intrinsic ExtX86.ssse3 "pabs.w"
+
+pabsw128 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V8Int16))
+pabsw128 = Ext.intrinsic ExtX86.ssse3 "pabs.w.128"
+
+pabsd :: Ext.T (MMX -> LLVM.CodeGenFunction r (MMX))
+pabsd = Ext.intrinsic ExtX86.ssse3 "pabs.d"
+
+pabsd128 :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
+pabsd128 = Ext.intrinsic ExtX86.ssse3 "pabs.d.128"
+
+roundss :: Ext.T (V4Float -> V4Float -> LLVM.Value W.Word32 -> LLVM.CodeGenFunction r (V4Float))
+roundss = Ext.intrinsic ExtX86.sse41 "round.ss"
+
+roundps :: Ext.T (V4Float -> LLVM.Value W.Word32 -> LLVM.CodeGenFunction r (V4Float))
+roundps = Ext.intrinsic ExtX86.sse41 "round.ps"
+
+roundsd :: Ext.T (V2Double -> V2Double -> LLVM.Value W.Word32 -> LLVM.CodeGenFunction r (V2Double))
+roundsd = Ext.intrinsic ExtX86.sse41 "round.sd"
+
+roundpd :: Ext.T (V2Double -> LLVM.Value W.Word32 -> LLVM.CodeGenFunction r (V2Double))
+roundpd = Ext.intrinsic ExtX86.sse41 "round.pd"
+
+pmovsxbd128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V4Int32))
+pmovsxbd128 = Ext.intrinsic ExtX86.sse41 "pmovsxbd"
+
+pmovsxbq128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V2Int64))
+pmovsxbq128 = Ext.intrinsic ExtX86.sse41 "pmovsxbq"
+
+pmovsxbw128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V8Int16))
+pmovsxbw128 = Ext.intrinsic ExtX86.sse41 "pmovsxbw"
+
+pmovsxdq128 :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V2Int64))
+pmovsxdq128 = Ext.intrinsic ExtX86.sse41 "pmovsxdq"
+
+pmovsxwd128 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V4Int32))
+pmovsxwd128 = Ext.intrinsic ExtX86.sse41 "pmovsxwd"
+
+pmovsxwq128 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V2Int64))
+pmovsxwq128 = Ext.intrinsic ExtX86.sse41 "pmovsxwq"
+
+pmovzxbd128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V4Int32))
+pmovzxbd128 = Ext.intrinsic ExtX86.sse41 "pmovzxbd"
+
+pmovzxbq128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V2Int64))
+pmovzxbq128 = Ext.intrinsic ExtX86.sse41 "pmovzxbq"
+
+pmovzxbw128 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V8Int16))
+pmovzxbw128 = Ext.intrinsic ExtX86.sse41 "pmovzxbw"
+
+pmovzxdq128 :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V2Int64))
+pmovzxdq128 = Ext.intrinsic ExtX86.sse41 "pmovzxdq"
+
+pmovzxwd128 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V4Int32))
+pmovzxwd128 = Ext.intrinsic ExtX86.sse41 "pmovzxwd"
+
+pmovzxwq128 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V2Int64))
+pmovzxwq128 = Ext.intrinsic ExtX86.sse41 "pmovzxwq"
+
+phminposuw128 :: Ext.T (V8Word16 -> LLVM.CodeGenFunction r (V8Word16))
+phminposuw128 = Ext.intrinsic ExtX86.sse41 "phminposuw"
+
+pmaxsb128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
+pmaxsb128 = Ext.intrinsic ExtX86.sse41 "pmaxsb"
+
+pmaxsd128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
+pmaxsd128 = Ext.intrinsic ExtX86.sse41 "pmaxsd"
+
+pmaxud128 :: Ext.T (V4Word32 -> V4Word32 -> LLVM.CodeGenFunction r (V4Word32))
+pmaxud128 = Ext.intrinsic ExtX86.sse41 "pmaxud"
+
+pmaxuw128 :: Ext.T (V8Word16 -> V8Word16 -> LLVM.CodeGenFunction r (V8Word16))
+pmaxuw128 = Ext.intrinsic ExtX86.sse41 "pmaxuw"
+
+pminsb128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
+pminsb128 = Ext.intrinsic ExtX86.sse41 "pminsb"
+
+pminsd128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
+pminsd128 = Ext.intrinsic ExtX86.sse41 "pminsd"
+
+pminud128 :: Ext.T (V4Word32 -> V4Word32 -> LLVM.CodeGenFunction r (V4Word32))
+pminud128 = Ext.intrinsic ExtX86.sse41 "pminud"
+
+pminuw128 :: Ext.T (V8Word16 -> V8Word16 -> LLVM.CodeGenFunction r (V8Word16))
+pminuw128 = Ext.intrinsic ExtX86.sse41 "pminuw"
+
+aesimc128 :: Ext.T (V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
+aesimc128 = Ext.intrinsic ExtX86.aes "aesimc"
+
+aesenc128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
+aesenc128 = Ext.intrinsic ExtX86.aes "aesenc"
+
+aesenclast128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
+aesenclast128 = Ext.intrinsic ExtX86.aes "aesenclast"
+
+aesdec128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
+aesdec128 = Ext.intrinsic ExtX86.aes "aesdec"
+
+aesdeclast128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
+aesdeclast128 = Ext.intrinsic ExtX86.aes "aesdeclast"
+
+aeskeygenassist128 :: Ext.T (V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+aeskeygenassist128 = Ext.intrinsic ExtX86.aes "aeskeygenassist"
+
+{-
+pclmulqdq128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+pclmulqdq128 = Ext.intrinsic ExtX86. "int.x86.pclmulqdq"
+-}
+
+packusdw128 :: Ext.T (V4Word32 -> V4Word32 -> LLVM.CodeGenFunction r (V8Word16))
+packusdw128 = Ext.intrinsic ExtX86.sse41 "packusdw"
+
+pmuldq128 :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V2Int64))
+pmuldq128 = Ext.intrinsic ExtX86.sse41 "pmuldq"
+
+extractps128 :: Ext.T (V4Float -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+extractps128 = Ext.intrinsic ExtX86.sse41 "extractps"
+
+insertps128 :: Ext.T (V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+insertps128 = Ext.intrinsic ExtX86.sse41 "insertps"
+
+pblendvb128 :: Ext.T (V16Int8 -> V16Int8 -> V16Int8 -> LLVM.CodeGenFunction r (V16Int8))
+pblendvb128 = Ext.intrinsic ExtX86.sse41 "pblendvb"
+
+blendvpd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+blendvpd = Ext.intrinsic ExtX86.sse41 "blendvpd"
+
+blendvps :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+blendvps = Ext.intrinsic ExtX86.sse41 "blendvps"
+
+dppd :: Ext.T (V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+dppd = Ext.intrinsic ExtX86.sse41 "dppd"
+
+dpps :: Ext.T (V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+dpps = Ext.intrinsic ExtX86.sse41 "dpps"
+
+mpsadbw128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+mpsadbw128 = Ext.intrinsic ExtX86.sse41 "mpsadbw"
+
+movntdqa :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V2Int64))
+movntdqa = Ext.intrinsic ExtX86.sse41 "movntdqa"
+
+ptestz128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ptestz128 = Ext.intrinsic ExtX86.sse41 "ptestz"
+
+ptestc128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ptestc128 = Ext.intrinsic ExtX86.sse41 "ptestc"
+
+ptestnzc128 :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ptestnzc128 = Ext.intrinsic ExtX86.sse41 "ptestnzc"
+
+crc32qi :: Ext.T (LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+crc32qi = Ext.intrinsic ExtX86.sse42 "crc32.32.8"
+
+crc32hi :: Ext.T (LLVM.Value I.Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+crc32hi = Ext.intrinsic ExtX86.sse42 "crc32.32.16"
+
+crc32si :: Ext.T (LLVM.Value I.Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+crc32si = Ext.intrinsic ExtX86.sse42 "crc32.32.32"
+
+crc32di :: Ext.T (LLVM.Value I.Int64 -> LLVM.Value I.Int64 -> LLVM.CodeGenFunction r (LLVM.Value I.Int64))
+crc32di = Ext.intrinsic ExtX86.sse42 "crc32.64.64"
+
+pcmpistrm128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V16Int8))
+pcmpistrm128 = Ext.intrinsic ExtX86.sse42 "pcmpistrm128"
+
+pcmpistri128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+pcmpistri128 = Ext.intrinsic ExtX86.sse42 "pcmpistri128"
+
+pcmpistria128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+pcmpistria128 = Ext.intrinsic ExtX86.sse42 "pcmpistria128"
+
+pcmpistric128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+pcmpistric128 = Ext.intrinsic ExtX86.sse42 "pcmpistric128"
+
+pcmpistrio128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+pcmpistrio128 = Ext.intrinsic ExtX86.sse42 "pcmpistrio128"
+
+pcmpistris128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+pcmpistris128 = Ext.intrinsic ExtX86.sse42 "pcmpistris128"
+
+pcmpistriz128 :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+pcmpistriz128 = Ext.intrinsic ExtX86.sse42 "pcmpistriz128"
+
+pcmpestrm128 :: Ext.T (V16Int8 -> LLVM.Value I.Int32 -> V16Int8 -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V16Int8))
+pcmpestrm128 = Ext.intrinsic ExtX86.sse42 "pcmpestrm128"
+
+pcmpestri128 :: Ext.T (V16Int8 -> LLVM.Value I.Int32 -> V16Int8 -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+pcmpestri128 = Ext.intrinsic ExtX86.sse42 "pcmpestri128"
+
+pcmpestria128 :: Ext.T (V16Int8 -> LLVM.Value I.Int32 -> V16Int8 -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+pcmpestria128 = Ext.intrinsic ExtX86.sse42 "pcmpestria128"
+
+pcmpestric128 :: Ext.T (V16Int8 -> LLVM.Value I.Int32 -> V16Int8 -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+pcmpestric128 = Ext.intrinsic ExtX86.sse42 "pcmpestric128"
+
+pcmpestrio128 :: Ext.T (V16Int8 -> LLVM.Value I.Int32 -> V16Int8 -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+pcmpestrio128 = Ext.intrinsic ExtX86.sse42 "pcmpestrio128"
+
+pcmpestris128 :: Ext.T (V16Int8 -> LLVM.Value I.Int32 -> V16Int8 -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+pcmpestris128 = Ext.intrinsic ExtX86.sse42 "pcmpestris128"
+
+pcmpestriz128 :: Ext.T (V16Int8 -> LLVM.Value I.Int32 -> V16Int8 -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+pcmpestriz128 = Ext.intrinsic ExtX86.sse42 "pcmpestriz128"
+
+extrqi :: Ext.T (V2Int64 -> LLVM.Value I.Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+extrqi = Ext.intrinsic ExtX86.sse4a "extrqi"
+
+extrq :: Ext.T (V2Int64 -> V16Int8 -> LLVM.CodeGenFunction r (V2Int64))
+extrq = Ext.intrinsic ExtX86.sse4a "extrq"
+
+insertqi :: Ext.T (V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+insertqi = Ext.intrinsic ExtX86.sse4a "insertqi"
+
+insertq :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
+insertq = Ext.intrinsic ExtX86.sse4a "insertq"
+
+movntss :: Ext.T (LLVM.Value (Ptr ()) -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value ()))
+movntss = Ext.intrinsic ExtX86.sse4a "movnt.ss"
+
+movntsd :: Ext.T (LLVM.Value (Ptr ()) -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value ()))
+movntsd = Ext.intrinsic ExtX86.sse4a "movnt.sd"
+
+addsubpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
+addsubpd256 = Ext.intrinsic ExtX86.avx "addsub.pd.256"
+
+addsubps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
+addsubps256 = Ext.intrinsic ExtX86.avx "addsub.ps.256"
+
+maxpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
+maxpd256 = Ext.intrinsic ExtX86.avx "max.pd.256"
+
+maxps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
+maxps256 = Ext.intrinsic ExtX86.avx "max.ps.256"
+
+minpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
+minpd256 = Ext.intrinsic ExtX86.avx "min.pd.256"
+
+minps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
+minps256 = Ext.intrinsic ExtX86.avx "min.ps.256"
+
+sqrtpd256 :: Ext.T (V4Double -> LLVM.CodeGenFunction r (V4Double))
+sqrtpd256 = Ext.intrinsic ExtX86.avx "sqrt.pd.256"
+
+sqrtps256 :: Ext.T (V8Float -> LLVM.CodeGenFunction r (V8Float))
+sqrtps256 = Ext.intrinsic ExtX86.avx "sqrt.ps.256"
+
+rsqrtps256 :: Ext.T (V8Float -> LLVM.CodeGenFunction r (V8Float))
+rsqrtps256 = Ext.intrinsic ExtX86.avx "rsqrt.ps.256"
+
+rcpps256 :: Ext.T (V8Float -> LLVM.CodeGenFunction r (V8Float))
+rcpps256 = Ext.intrinsic ExtX86.avx "rcp.ps.256"
+
+roundpd256 :: Ext.T (V4Double -> LLVM.Value W.Word32 -> LLVM.CodeGenFunction r (V4Double))
+roundpd256 = Ext.intrinsic ExtX86.avx "round.pd.256"
+
+roundps256 :: Ext.T (V8Float -> LLVM.Value W.Word32 -> LLVM.CodeGenFunction r (V8Float))
+roundps256 = Ext.intrinsic ExtX86.avx "round.ps.256"
+
+haddpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
+haddpd256 = Ext.intrinsic ExtX86.avx "hadd.pd.256"
+
+hsubps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
+hsubps256 = Ext.intrinsic ExtX86.avx "hsub.ps.256"
+
+hsubpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
+hsubpd256 = Ext.intrinsic ExtX86.avx "hsub.pd.256"
+
+haddps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
+haddps256 = Ext.intrinsic ExtX86.avx "hadd.ps.256"
+
+vpermilvarpd :: Ext.T (V2Double -> V2Int64 -> LLVM.CodeGenFunction r (V2Double))
+vpermilvarpd = Ext.intrinsic ExtX86.avx "vpermilvar.pd"
+
+vpermilvarps :: Ext.T (V4Float -> V4Int32 -> LLVM.CodeGenFunction r (V4Float))
+vpermilvarps = Ext.intrinsic ExtX86.avx "vpermilvar.ps"
+
+vpermilvarpd256 :: Ext.T (V4Double -> V4Int64 -> LLVM.CodeGenFunction r (V4Double))
+vpermilvarpd256 = Ext.intrinsic ExtX86.avx "vpermilvar.pd.256"
+
+vpermilvarps256 :: Ext.T (V8Float -> V8Int32 -> LLVM.CodeGenFunction r (V8Float))
+vpermilvarps256 = Ext.intrinsic ExtX86.avx "vpermilvar.ps.256"
+
+vperm2f128_pd256 :: Ext.T (V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vperm2f128_pd256 = Ext.intrinsic ExtX86.avx "vperm2f128.pd.256"
+
+vperm2f128_ps256 :: Ext.T (V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vperm2f128_ps256 = Ext.intrinsic ExtX86.avx "vperm2f128.ps.256"
+
+vperm2f128_si256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+vperm2f128_si256 = Ext.intrinsic ExtX86.avx "vperm2f128.si.256"
+
+vpermi2vard128_mask :: Ext.T (V4Int32 -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+vpermi2vard128_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermi2var.d.128"
+
+vpermi2vard256_mask :: Ext.T (V8Int32 -> V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+vpermi2vard256_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermi2var.d.256"
+
+vpermi2vard512_mask :: Ext.T (V16Int32 -> V16Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+vpermi2vard512_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermi2var.d.512"
+
+vpermi2varhi128_mask :: Ext.T (V8Int16 -> V8Int16 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+vpermi2varhi128_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermi2var.hi.128"
+
+vpermi2varhi256_mask :: Ext.T (V16Int16 -> V16Int16 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+vpermi2varhi256_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermi2var.hi.256"
+
+vpermi2varhi512_mask :: Ext.T (V32Int16 -> V32Int16 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+vpermi2varhi512_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermi2var.hi.512"
+
+vpermi2varpd128_mask :: Ext.T (V2Double -> V2Int64 -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vpermi2varpd128_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermi2var.pd.128"
+
+vpermi2varpd256_mask :: Ext.T (V4Double -> V4Int64 -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vpermi2varpd256_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermi2var.pd.256"
+
+vpermi2varpd512_mask :: Ext.T (V8Double -> V8Int64 -> V8Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Double))
+vpermi2varpd512_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermi2var.pd.512"
+
+vpermi2varps128_mask :: Ext.T (V4Float -> V4Int32 -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vpermi2varps128_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermi2var.ps.128"
+
+vpermi2varps256_mask :: Ext.T (V8Float -> V8Int32 -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vpermi2varps256_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermi2var.ps.256"
+
+vpermi2varps512_mask :: Ext.T (V16Float -> V16Int32 -> V16Float -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Float))
+vpermi2varps512_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermi2var.ps.512"
+
+vpermi2varq128_mask :: Ext.T (V2Int64 -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+vpermi2varq128_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermi2var.q.128"
+
+vpermi2varq256_mask :: Ext.T (V4Int64 -> V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+vpermi2varq256_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermi2var.q.256"
+
+vpermi2varq512_mask :: Ext.T (V8Int64 -> V8Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+vpermi2varq512_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermi2var.q.512"
+
+vpermt2vard512_mask :: Ext.T (V16Int32 -> V16Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+vpermt2vard512_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermt2var.d.512"
+
+vpermt2varq512_mask :: Ext.T (V8Int64 -> V8Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+vpermt2varq512_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermt2var.q.512"
+
+vpermt2varps512_mask :: Ext.T (V16Int32 -> V16Float -> V16Float -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Float))
+vpermt2varps512_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermt2var.ps.512"
+
+vpermt2varpd512_mask :: Ext.T (V8Int64 -> V8Double -> V8Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Double))
+vpermt2varpd512_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermt2var.pd.512"
+
+vpermt2vard128_mask :: Ext.T (V4Int32 -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+vpermt2vard128_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermt2var.d.128"
+
+vpermt2vard128_maskz :: Ext.T (V4Int32 -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+vpermt2vard128_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vpermt2var.d.128"
+
+vpermt2vard256_mask :: Ext.T (V8Int32 -> V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+vpermt2vard256_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermt2var.d.256"
+
+vpermt2vard256_maskz :: Ext.T (V8Int32 -> V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+vpermt2vard256_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vpermt2var.d.256"
+
+vpermt2vard512_maskz :: Ext.T (V16Int32 -> V16Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+vpermt2vard512_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vpermt2var.d.512"
+
+vpermt2varhi128_mask :: Ext.T (V8Int16 -> V8Int16 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+vpermt2varhi128_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermt2var.hi.128"
+
+vpermt2varhi128_maskz :: Ext.T (V8Int16 -> V8Int16 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+vpermt2varhi128_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vpermt2var.hi.128"
+
+vpermt2varhi256_mask :: Ext.T (V16Int16 -> V16Int16 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+vpermt2varhi256_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermt2var.hi.256"
+
+vpermt2varhi256_maskz :: Ext.T (V16Int16 -> V16Int16 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+vpermt2varhi256_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vpermt2var.hi.256"
+
+vpermt2varhi512_mask :: Ext.T (V32Int16 -> V32Int16 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+vpermt2varhi512_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermt2var.hi.512"
+
+vpermt2varhi512_maskz :: Ext.T (V32Int16 -> V32Int16 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+vpermt2varhi512_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vpermt2var.hi.512"
+
+vpermt2varpd128_mask :: Ext.T (V2Int64 -> V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vpermt2varpd128_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermt2var.pd.128"
+
+vpermt2varpd128_maskz :: Ext.T (V2Int64 -> V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vpermt2varpd128_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vpermt2var.pd.128"
+
+vpermt2varpd256_mask :: Ext.T (V4Int64 -> V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vpermt2varpd256_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermt2var.pd.256"
+
+vpermt2varpd256_maskz :: Ext.T (V4Int64 -> V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vpermt2varpd256_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vpermt2var.pd.256"
+
+vpermt2varpd512_maskz :: Ext.T (V8Int64 -> V8Double -> V8Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Double))
+vpermt2varpd512_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vpermt2var.pd.512"
+
+vpermt2varps128_mask :: Ext.T (V4Int32 -> V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vpermt2varps128_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermt2var.ps.128"
+
+vpermt2varps128_maskz :: Ext.T (V4Int32 -> V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vpermt2varps128_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vpermt2var.ps.128"
+
+vpermt2varps256_mask :: Ext.T (V8Int32 -> V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vpermt2varps256_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermt2var.ps.256"
+
+vpermt2varps256_maskz :: Ext.T (V8Int32 -> V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vpermt2varps256_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vpermt2var.ps.256"
+
+vpermt2varps512_maskz :: Ext.T (V16Int32 -> V16Float -> V16Float -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Float))
+vpermt2varps512_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vpermt2var.ps.512"
+
+vpermt2varq128_mask :: Ext.T (V2Int64 -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+vpermt2varq128_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermt2var.q.128"
+
+vpermt2varq128_maskz :: Ext.T (V2Int64 -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+vpermt2varq128_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vpermt2var.q.128"
+
+vpermt2varq256_mask :: Ext.T (V4Int64 -> V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+vpermt2varq256_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermt2var.q.256"
+
+vpermt2varq256_maskz :: Ext.T (V4Int64 -> V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+vpermt2varq256_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vpermt2var.q.256"
+
+vpermt2varq512_maskz :: Ext.T (V8Int64 -> V8Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+vpermt2varq512_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vpermt2var.q.512"
+
+vpermilpd_mask :: Ext.T (V2Double -> LLVM.Value I.Int32 -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vpermilpd_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermil.pd.128"
+
+vpermilpd256_mask :: Ext.T (V4Double -> LLVM.Value I.Int32 -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vpermilpd256_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermil.pd.256"
+
+vpermilpd512_mask :: Ext.T (V8Double -> LLVM.Value I.Int32 -> V8Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Double))
+vpermilpd512_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermil.pd.512"
+
+vpermilps_mask :: Ext.T (V4Float -> LLVM.Value I.Int32 -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vpermilps_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermil.ps.128"
+
+vpermilps256_mask :: Ext.T (V8Float -> LLVM.Value I.Int32 -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vpermilps256_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermil.ps.256"
+
+vpermilps512_mask :: Ext.T (V16Float -> LLVM.Value I.Int32 -> V16Float -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Float))
+vpermilps512_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermil.ps.512"
+
+vpermilvarpd256_mask :: Ext.T (V4Double -> V4Int64 -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vpermilvarpd256_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermilvar.pd.256"
+
+vpermilvarpd512_mask :: Ext.T (V8Double -> V8Int64 -> V8Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Double))
+vpermilvarpd512_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermilvar.pd.512"
+
+vpermilvarpd_mask :: Ext.T (V2Double -> V2Int64 -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vpermilvarpd_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermilvar.pd.128"
+
+vpermilvarps256_mask :: Ext.T (V8Float -> V8Int32 -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vpermilvarps256_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermilvar.ps.256"
+
+vpermilvarps512_mask :: Ext.T (V16Float -> V16Int32 -> V16Float -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Float))
+vpermilvarps512_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermilvar.ps.512"
+
+vpermilvarps_mask :: Ext.T (V4Float -> V4Int32 -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vpermilvarps_mask = Ext.intrinsic ExtX86.avx512 "mask.vpermilvar.ps.128"
+
+pshufb128_mask :: Ext.T (V16Int8 -> V16Int8 -> V16Int8 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int8))
+pshufb128_mask = Ext.intrinsic ExtX86.avx512 "mask.pshuf.b.128"
+
+pshufb256_mask :: Ext.T (V32Int8 -> V32Int8 -> V32Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int8))
+pshufb256_mask = Ext.intrinsic ExtX86.avx512 "mask.pshuf.b.256"
+
+pshufb512_mask :: Ext.T (V64Int8 -> V64Int8 -> V64Int8 -> LLVM.Value I.Int64 -> LLVM.CodeGenFunction r (V64Int8))
+pshufb512_mask = Ext.intrinsic ExtX86.avx512 "mask.pshuf.b.512"
+
+pshufd128_mask :: Ext.T (V4Int32 -> LLVM.Value I.Int16 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+pshufd128_mask = Ext.intrinsic ExtX86.avx512 "mask.pshuf.d.128"
+
+pshufd256_mask :: Ext.T (V8Int32 -> LLVM.Value I.Int16 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+pshufd256_mask = Ext.intrinsic ExtX86.avx512 "mask.pshuf.d.256"
+
+pshufd512_mask :: Ext.T (V16Int32 -> LLVM.Value I.Int16 -> V16Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V16Int32))
+pshufd512_mask = Ext.intrinsic ExtX86.avx512 "mask.pshuf.d.512"
+
+pshufhw128_mask :: Ext.T (V8Int16 -> LLVM.Value I.Int8 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+pshufhw128_mask = Ext.intrinsic ExtX86.avx512 "mask.pshufh.w.128"
+
+pshufhw256_mask :: Ext.T (V16Int16 -> LLVM.Value I.Int8 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+pshufhw256_mask = Ext.intrinsic ExtX86.avx512 "mask.pshufh.w.256"
+
+pshufhw512_mask :: Ext.T (V32Int16 -> LLVM.Value I.Int8 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+pshufhw512_mask = Ext.intrinsic ExtX86.avx512 "mask.pshufh.w.512"
+
+pshuflw128_mask :: Ext.T (V8Int16 -> LLVM.Value I.Int8 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+pshuflw128_mask = Ext.intrinsic ExtX86.avx512 "mask.pshufl.w.128"
+
+pshuflw256_mask :: Ext.T (V16Int16 -> LLVM.Value I.Int8 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+pshuflw256_mask = Ext.intrinsic ExtX86.avx512 "mask.pshufl.w.256"
+
+pshuflw512_mask :: Ext.T (V32Int16 -> LLVM.Value I.Int8 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+pshuflw512_mask = Ext.intrinsic ExtX86.avx512 "mask.pshufl.w.512"
+
+shuf_f32x4_256_mask :: Ext.T (V8Float -> V8Float -> LLVM.Value I.Int32 -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+shuf_f32x4_256_mask = Ext.intrinsic ExtX86.avx512 "mask.shuf.f32x4.256"
+
+shuf_f32x4_mask :: Ext.T (V16Float -> V16Float -> LLVM.Value I.Int32 -> V16Float -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Float))
+shuf_f32x4_mask = Ext.intrinsic ExtX86.avx512 "mask.shuf.f32x4"
+
+shuf_f64x2_256_mask :: Ext.T (V4Double -> V4Double -> LLVM.Value I.Int32 -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+shuf_f64x2_256_mask = Ext.intrinsic ExtX86.avx512 "mask.shuf.f64x2.256"
+
+shuf_f64x2_mask :: Ext.T (V8Double -> V8Double -> LLVM.Value I.Int32 -> V8Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Double))
+shuf_f64x2_mask = Ext.intrinsic ExtX86.avx512 "mask.shuf.f64x2"
+
+shuf_i32x4_256_mask :: Ext.T (V8Int32 -> V8Int32 -> LLVM.Value I.Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+shuf_i32x4_256_mask = Ext.intrinsic ExtX86.avx512 "mask.shuf.i32x4.256"
+
+shuf_i32x4_mask :: Ext.T (V16Int32 -> V16Int32 -> LLVM.Value I.Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+shuf_i32x4_mask = Ext.intrinsic ExtX86.avx512 "mask.shuf.i32x4"
+
+shuf_i64x2_256_mask :: Ext.T (V4Int64 -> V4Int64 -> LLVM.Value I.Int32 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+shuf_i64x2_256_mask = Ext.intrinsic ExtX86.avx512 "mask.shuf.i64x2.256"
+
+shuf_i64x2_mask :: Ext.T (V8Int64 -> V8Int64 -> LLVM.Value I.Int32 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+shuf_i64x2_mask = Ext.intrinsic ExtX86.avx512 "mask.shuf.i64x2"
+
+shufpd128_mask :: Ext.T (V2Double -> V2Double -> LLVM.Value I.Int32 -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+shufpd128_mask = Ext.intrinsic ExtX86.avx512 "mask.shuf.pd.128"
+
+shufpd256_mask :: Ext.T (V4Double -> V4Double -> LLVM.Value I.Int32 -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+shufpd256_mask = Ext.intrinsic ExtX86.avx512 "mask.shuf.pd.256"
+
+shufpd512_mask :: Ext.T (V8Double -> V8Double -> LLVM.Value I.Int32 -> V8Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Double))
+shufpd512_mask = Ext.intrinsic ExtX86.avx512 "mask.shuf.pd.512"
+
+shufps128_mask :: Ext.T (V4Float -> V4Float -> LLVM.Value I.Int32 -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+shufps128_mask = Ext.intrinsic ExtX86.avx512 "mask.shuf.ps.128"
+
+shufps256_mask :: Ext.T (V8Float -> V8Float -> LLVM.Value I.Int32 -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+shufps256_mask = Ext.intrinsic ExtX86.avx512 "mask.shuf.ps.256"
+
+shufps512_mask :: Ext.T (V16Float -> V16Float -> LLVM.Value I.Int32 -> V16Float -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Float))
+shufps512_mask = Ext.intrinsic ExtX86.avx512 "mask.shuf.ps.512"
+
+movshdup128_mask :: Ext.T (V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+movshdup128_mask = Ext.intrinsic ExtX86.avx512 "mask.movshdup.128"
+
+movshdup256_mask :: Ext.T (V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+movshdup256_mask = Ext.intrinsic ExtX86.avx512 "mask.movshdup.256"
+
+movshdup512_mask :: Ext.T (V16Float -> V16Float -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Float))
+movshdup512_mask = Ext.intrinsic ExtX86.avx512 "mask.movshdup.512"
+
+movsldup128_mask :: Ext.T (V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+movsldup128_mask = Ext.intrinsic ExtX86.avx512 "mask.movsldup.128"
+
+movsldup256_mask :: Ext.T (V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+movsldup256_mask = Ext.intrinsic ExtX86.avx512 "mask.movsldup.256"
+
+movsldup512_mask :: Ext.T (V16Float -> V16Float -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Float))
+movsldup512_mask = Ext.intrinsic ExtX86.avx512 "mask.movsldup.512"
+
+movddup128_mask :: Ext.T (V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+movddup128_mask = Ext.intrinsic ExtX86.avx512 "mask.movddup.128"
+
+movddup256_mask :: Ext.T (V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+movddup256_mask = Ext.intrinsic ExtX86.avx512 "mask.movddup.256"
+
+movddup512_mask :: Ext.T (V8Double -> V8Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Double))
+movddup512_mask = Ext.intrinsic ExtX86.avx512 "mask.movddup.512"
+
+blendvpd256 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
+blendvpd256 = Ext.intrinsic ExtX86.avx "blendv.pd.256"
+
+blendvps256 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
+blendvps256 = Ext.intrinsic ExtX86.avx "blendv.ps.256"
+
+dpps256 :: Ext.T (V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+dpps256 = Ext.intrinsic ExtX86.avx "dp.ps.256"
+
+cmppd256 :: Ext.T (V4Double -> V4Double -> LLVM.Value W.Word8 -> LLVM.CodeGenFunction r (V4Double))
+cmppd256 = Ext.intrinsic ExtX86.avx "cmp.pd.256"
+
+cmpps256 :: Ext.T (V8Float -> V8Float -> LLVM.Value W.Word8 -> LLVM.CodeGenFunction r (V8Float))
+cmpps256 = Ext.intrinsic ExtX86.avx "cmp.ps.256"
+
+cvtdq2pd256 :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V4Double))
+cvtdq2pd256 = Ext.intrinsic ExtX86.avx "cvtdq2.pd.256"
+
+cvtdq2ps256 :: Ext.T (V8Int32 -> LLVM.CodeGenFunction r (V8Float))
+cvtdq2ps256 = Ext.intrinsic ExtX86.avx "cvtdq2.ps.256"
+
+cvtpd2ps256 :: Ext.T (V4Double -> LLVM.CodeGenFunction r (V4Float))
+cvtpd2ps256 = Ext.intrinsic ExtX86.avx "cvt.pd2.ps.256"
+
+cvtps2dq256 :: Ext.T (V8Float -> LLVM.CodeGenFunction r (V8Int32))
+cvtps2dq256 = Ext.intrinsic ExtX86.avx "cvt.ps2dq.256"
+
+cvtps2pd256 :: Ext.T (V4Float -> LLVM.CodeGenFunction r (V4Double))
+cvtps2pd256 = Ext.intrinsic ExtX86.avx "cvt.ps2.pd.256"
+
+cvttpd2dq256 :: Ext.T (V4Double -> LLVM.CodeGenFunction r (V4Int32))
+cvttpd2dq256 = Ext.intrinsic ExtX86.avx "cvtt.pd2dq.256"
+
+cvtpd2dq256 :: Ext.T (V4Double -> LLVM.CodeGenFunction r (V4Int32))
+cvtpd2dq256 = Ext.intrinsic ExtX86.avx "cvt.pd2dq.256"
+
+cvttps2dq256 :: Ext.T (V8Float -> LLVM.CodeGenFunction r (V8Int32))
+cvttps2dq256 = Ext.intrinsic ExtX86.avx "cvtt.ps2dq.256"
+
+vtestzpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+vtestzpd = Ext.intrinsic ExtX86.avx "vtestz.pd"
+
+vtestcpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+vtestcpd = Ext.intrinsic ExtX86.avx "vtestc.pd"
+
+vtestnzcpd :: Ext.T (V2Double -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+vtestnzcpd = Ext.intrinsic ExtX86.avx "vtestnzc.pd"
+
+vtestzps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+vtestzps = Ext.intrinsic ExtX86.avx "vtestz.ps"
+
+vtestcps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+vtestcps = Ext.intrinsic ExtX86.avx "vtestc.ps"
+
+vtestnzcps :: Ext.T (V4Float -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+vtestnzcps = Ext.intrinsic ExtX86.avx "vtestnzc.ps"
+
+vtestzpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+vtestzpd256 = Ext.intrinsic ExtX86.avx "vtestz.pd.256"
+
+vtestcpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+vtestcpd256 = Ext.intrinsic ExtX86.avx "vtestc.pd.256"
+
+vtestnzcpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+vtestnzcpd256 = Ext.intrinsic ExtX86.avx "vtestnzc.pd.256"
+
+vtestzps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+vtestzps256 = Ext.intrinsic ExtX86.avx "vtestz.ps.256"
+
+vtestcps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+vtestcps256 = Ext.intrinsic ExtX86.avx "vtestc.ps.256"
+
+vtestnzcps256 :: Ext.T (V8Float -> V8Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+vtestnzcps256 = Ext.intrinsic ExtX86.avx "vtestnzc.ps.256"
+
+ptestz256 :: Ext.T (V4Int64 -> V4Int64 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ptestz256 = Ext.intrinsic ExtX86.avx "ptestz.256"
+
+ptestc256 :: Ext.T (V4Int64 -> V4Int64 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ptestc256 = Ext.intrinsic ExtX86.avx "ptestc.256"
+
+ptestnzc256 :: Ext.T (V4Int64 -> V4Int64 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+ptestnzc256 = Ext.intrinsic ExtX86.avx "ptestnzc.256"
+
+ptestmd512 :: Ext.T (V16Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (LLVM.Value I.Int16))
+ptestmd512 = Ext.intrinsic ExtX86.avx512 "mask.ptestm.d.512"
+
+ptestmq512 :: Ext.T (V8Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int8))
+ptestmq512 = Ext.intrinsic ExtX86.avx512 "mask.ptestm.q.512"
+
+fpclasspd128_mask :: Ext.T (V2Double -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int8))
+fpclasspd128_mask = Ext.intrinsic ExtX86.avx512 "mask.fpclass.pd.128"
+
+fpclasspd256_mask :: Ext.T (V4Double -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int8))
+fpclasspd256_mask = Ext.intrinsic ExtX86.avx512 "mask.fpclass.pd.256"
+
+fpclasspd512_mask :: Ext.T (V8Double -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int8))
+fpclasspd512_mask = Ext.intrinsic ExtX86.avx512 "mask.fpclass.pd.512"
+
+fpclassps128_mask :: Ext.T (V4Float -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int8))
+fpclassps128_mask = Ext.intrinsic ExtX86.avx512 "mask.fpclass.ps.128"
+
+fpclassps256_mask :: Ext.T (V8Float -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int8))
+fpclassps256_mask = Ext.intrinsic ExtX86.avx512 "mask.fpclass.ps.256"
+
+fpclassps512_mask :: Ext.T (V16Float -> LLVM.Value I.Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (LLVM.Value I.Int16))
+fpclassps512_mask = Ext.intrinsic ExtX86.avx512 "mask.fpclass.ps.512"
+
+fpclasssd :: Ext.T (V2Double -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int8))
+fpclasssd = Ext.intrinsic ExtX86.avx512 "mask.fpclass.sd"
+
+fpclassss :: Ext.T (V4Float -> LLVM.Value I.Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int8))
+fpclassss = Ext.intrinsic ExtX86.avx512 "mask.fpclass.ss"
+
+movmskpd256 :: Ext.T (V4Double -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+movmskpd256 = Ext.intrinsic ExtX86.avx "movmsk.pd.256"
+
+movmskps256 :: Ext.T (V8Float -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+movmskps256 = Ext.intrinsic ExtX86.avx "movmsk.ps.256"
+
+vzeroall :: Ext.T (LLVM.CodeGenFunction r (LLVM.Value ()))
+vzeroall = Ext.intrinsic ExtX86.avx "vzeroall"
+
+vzeroupper :: Ext.T (LLVM.CodeGenFunction r (LLVM.Value ()))
+vzeroupper = Ext.intrinsic ExtX86.avx "vzeroupper"
+
+vbroadcastf128_pd256 :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V4Double))
+vbroadcastf128_pd256 = Ext.intrinsic ExtX86.avx "vbroadcastf128.pd.256"
+
+vbroadcastf128_ps256 :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V8Float))
+vbroadcastf128_ps256 = Ext.intrinsic ExtX86.avx "vbroadcastf128.ps.256"
+
+lddqu256 :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V32Int8))
+lddqu256 = Ext.intrinsic ExtX86.avx "ldu.dq.256"
+
+storeupd256 :: Ext.T (LLVM.Value (Ptr ()) -> V4Double -> LLVM.CodeGenFunction r (LLVM.Value ()))
+storeupd256 = Ext.intrinsic ExtX86.avx "storeu.pd.256"
+
+storeups256 :: Ext.T (LLVM.Value (Ptr ()) -> V8Float -> LLVM.CodeGenFunction r (LLVM.Value ()))
+storeups256 = Ext.intrinsic ExtX86.avx "storeu.ps.256"
+
+storedqu256 :: Ext.T (LLVM.Value (Ptr ()) -> V32Int8 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+storedqu256 = Ext.intrinsic ExtX86.avx "storeu.dq.256"
+
+maskloadpd :: Ext.T (LLVM.Value (Ptr ()) -> V2Int64 -> LLVM.CodeGenFunction r (V2Double))
+maskloadpd = Ext.intrinsic ExtX86.avx "maskload.pd"
+
+maskloadps :: Ext.T (LLVM.Value (Ptr ()) -> V4Int32 -> LLVM.CodeGenFunction r (V4Float))
+maskloadps = Ext.intrinsic ExtX86.avx "maskload.ps"
+
+maskloadpd256 :: Ext.T (LLVM.Value (Ptr ()) -> V4Int64 -> LLVM.CodeGenFunction r (V4Double))
+maskloadpd256 = Ext.intrinsic ExtX86.avx "maskload.pd.256"
+
+maskloadps256 :: Ext.T (LLVM.Value (Ptr ()) -> V8Int32 -> LLVM.CodeGenFunction r (V8Float))
+maskloadps256 = Ext.intrinsic ExtX86.avx "maskload.ps.256"
+
+loadups128_mask :: Ext.T (LLVM.Value (Ptr ()) -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+loadups128_mask = Ext.intrinsic ExtX86.avx512 "mask.loadu.ps.128"
+
+loadups256_mask :: Ext.T (LLVM.Value (Ptr ()) -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+loadups256_mask = Ext.intrinsic ExtX86.avx512 "mask.loadu.ps.256"
+
+loadups512_mask :: Ext.T (LLVM.Value (Ptr ()) -> V16Float -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Float))
+loadups512_mask = Ext.intrinsic ExtX86.avx512 "mask.loadu.ps.512"
+
+loadupd128_mask :: Ext.T (LLVM.Value (Ptr ()) -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+loadupd128_mask = Ext.intrinsic ExtX86.avx512 "mask.loadu.pd.128"
+
+loadupd256_mask :: Ext.T (LLVM.Value (Ptr ()) -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+loadupd256_mask = Ext.intrinsic ExtX86.avx512 "mask.loadu.pd.256"
+
+loadupd512_mask :: Ext.T (LLVM.Value (Ptr ()) -> V8Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Double))
+loadupd512_mask = Ext.intrinsic ExtX86.avx512 "mask.loadu.pd.512"
+
+loadaps128_mask :: Ext.T (LLVM.Value (Ptr ()) -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+loadaps128_mask = Ext.intrinsic ExtX86.avx512 "mask.load.ps.128"
+
+loadaps256_mask :: Ext.T (LLVM.Value (Ptr ()) -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+loadaps256_mask = Ext.intrinsic ExtX86.avx512 "mask.load.ps.256"
+
+loadaps512_mask :: Ext.T (LLVM.Value (Ptr ()) -> V16Float -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Float))
+loadaps512_mask = Ext.intrinsic ExtX86.avx512 "mask.load.ps.512"
+
+loadapd128_mask :: Ext.T (LLVM.Value (Ptr ()) -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+loadapd128_mask = Ext.intrinsic ExtX86.avx512 "mask.load.pd.128"
+
+loadapd256_mask :: Ext.T (LLVM.Value (Ptr ()) -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+loadapd256_mask = Ext.intrinsic ExtX86.avx512 "mask.load.pd.256"
+
+loadapd512_mask :: Ext.T (LLVM.Value (Ptr ()) -> V8Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Double))
+loadapd512_mask = Ext.intrinsic ExtX86.avx512 "mask.load.pd.512"
+
+movss_mask :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+movss_mask = Ext.intrinsic ExtX86.avx512 "mask.move.ss"
+
+movsd_mask :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+movsd_mask = Ext.intrinsic ExtX86.avx512 "mask.move.sd"
+
+maskstorepd :: Ext.T (LLVM.Value (Ptr ()) -> V2Int64 -> V2Double -> LLVM.CodeGenFunction r (LLVM.Value ()))
+maskstorepd = Ext.intrinsic ExtX86.avx "maskstore.pd"
+
+maskstoreps :: Ext.T (LLVM.Value (Ptr ()) -> V4Int32 -> V4Float -> LLVM.CodeGenFunction r (LLVM.Value ()))
+maskstoreps = Ext.intrinsic ExtX86.avx "maskstore.ps"
+
+maskstorepd256 :: Ext.T (LLVM.Value (Ptr ()) -> V4Int64 -> V4Double -> LLVM.CodeGenFunction r (LLVM.Value ()))
+maskstorepd256 = Ext.intrinsic ExtX86.avx "maskstore.pd.256"
+
+maskstoreps256 :: Ext.T (LLVM.Value (Ptr ()) -> V8Int32 -> V8Float -> LLVM.CodeGenFunction r (LLVM.Value ()))
+maskstoreps256 = Ext.intrinsic ExtX86.avx "maskstore.ps.256"
+
+storeups512_mask :: Ext.T (LLVM.Value (Ptr ()) -> V16Float -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+storeups512_mask = Ext.intrinsic ExtX86.avx512 "mask.storeu.ps.512"
+
+storeupd512_mask :: Ext.T (LLVM.Value (Ptr ()) -> V8Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+storeupd512_mask = Ext.intrinsic ExtX86.avx512 "mask.storeu.pd.512"
+
+storeaps512_mask :: Ext.T (LLVM.Value (Ptr ()) -> V16Float -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+storeaps512_mask = Ext.intrinsic ExtX86.avx512 "mask.store.ps.512"
+
+storeapd512_mask :: Ext.T (LLVM.Value (Ptr ()) -> V8Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+storeapd512_mask = Ext.intrinsic ExtX86.avx512 "mask.store.pd.512"
+
+storess_mask :: Ext.T (LLVM.Value (Ptr ()) -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+storess_mask = Ext.intrinsic ExtX86.avx512 "mask.store.ss"
+
+paddsb256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
+paddsb256 = Ext.intrinsic ExtX86.avx2 "padds.b"
+
+paddsw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
+paddsw256 = Ext.intrinsic ExtX86.avx2 "padds.w"
+
+paddusb256 :: Ext.T (V32Word8 -> V32Word8 -> LLVM.CodeGenFunction r (V32Word8))
+paddusb256 = Ext.intrinsic ExtX86.avx2 "paddus.b"
+
+paddusw256 :: Ext.T (V16Word16 -> V16Word16 -> LLVM.CodeGenFunction r (V16Word16))
+paddusw256 = Ext.intrinsic ExtX86.avx2 "paddus.w"
+
+psubsb256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
+psubsb256 = Ext.intrinsic ExtX86.avx2 "psubs.b"
+
+psubsw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
+psubsw256 = Ext.intrinsic ExtX86.avx2 "psubs.w"
+
+psubusb256 :: Ext.T (V32Word8 -> V32Word8 -> LLVM.CodeGenFunction r (V32Word8))
+psubusb256 = Ext.intrinsic ExtX86.avx2 "psubus.b"
+
+psubusw256 :: Ext.T (V16Word16 -> V16Word16 -> LLVM.CodeGenFunction r (V16Word16))
+psubusw256 = Ext.intrinsic ExtX86.avx2 "psubus.w"
+
+pmulhuw256 :: Ext.T (V16Word16 -> V16Word16 -> LLVM.CodeGenFunction r (V16Word16))
+pmulhuw256 = Ext.intrinsic ExtX86.avx2 "pmulhu.w"
+
+pmulhw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
+pmulhw256 = Ext.intrinsic ExtX86.avx2 "pmulh.w"
+
+pmuludq256 :: Ext.T (V8Word32 -> V8Word32 -> LLVM.CodeGenFunction r (V4Word64))
+pmuludq256 = Ext.intrinsic ExtX86.avx2 "pmulu.dq"
+
+pmuldq256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V4Int64))
+pmuldq256 = Ext.intrinsic ExtX86.avx2 "pmul.dq"
+
+pmaddwd256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V8Int32))
+pmaddwd256 = Ext.intrinsic ExtX86.avx2 "pmadd.wd"
+
+pavgb256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
+pavgb256 = Ext.intrinsic ExtX86.avx2 "pavg.b"
+
+pavgw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
+pavgw256 = Ext.intrinsic ExtX86.avx2 "pavg.w"
+
+psadbw256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V4Int64))
+psadbw256 = Ext.intrinsic ExtX86.avx2 "psad.bw"
+
+pmaxub256 :: Ext.T (V32Word8 -> V32Word8 -> LLVM.CodeGenFunction r (V32Word8))
+pmaxub256 = Ext.intrinsic ExtX86.avx2 "pmaxu.b"
+
+pmaxuw256 :: Ext.T (V16Word16 -> V16Word16 -> LLVM.CodeGenFunction r (V16Word16))
+pmaxuw256 = Ext.intrinsic ExtX86.avx2 "pmaxu.w"
+
+pmaxud256 :: Ext.T (V8Word32 -> V8Word32 -> LLVM.CodeGenFunction r (V8Word32))
+pmaxud256 = Ext.intrinsic ExtX86.avx2 "pmaxu.d"
+
+pmaxsb256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
+pmaxsb256 = Ext.intrinsic ExtX86.avx2 "pmaxs.b"
+
+pmaxsw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
+pmaxsw256 = Ext.intrinsic ExtX86.avx2 "pmaxs.w"
+
+pmaxsd256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
+pmaxsd256 = Ext.intrinsic ExtX86.avx2 "pmaxs.d"
+
+pminub256 :: Ext.T (V32Word8 -> V32Word8 -> LLVM.CodeGenFunction r (V32Word8))
+pminub256 = Ext.intrinsic ExtX86.avx2 "pminu.b"
+
+pminuw256 :: Ext.T (V16Word16 -> V16Word16 -> LLVM.CodeGenFunction r (V16Word16))
+pminuw256 = Ext.intrinsic ExtX86.avx2 "pminu.w"
+
+pminud256 :: Ext.T (V8Word32 -> V8Word32 -> LLVM.CodeGenFunction r (V8Word32))
+pminud256 = Ext.intrinsic ExtX86.avx2 "pminu.d"
+
+pminsb256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
+pminsb256 = Ext.intrinsic ExtX86.avx2 "pmins.b"
+
+pminsw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
+pminsw256 = Ext.intrinsic ExtX86.avx2 "pmins.w"
+
+pminsd256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
+pminsd256 = Ext.intrinsic ExtX86.avx2 "pmins.d"
+
+pmaxsb128_mask :: Ext.T (V16Int8 -> V16Int8 -> V16Int8 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int8))
+pmaxsb128_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxs.b.128"
+
+pmaxsb256_mask :: Ext.T (V32Int8 -> V32Int8 -> V32Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int8))
+pmaxsb256_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxs.b.256"
+
+pmaxsb512_mask :: Ext.T (V64Int8 -> V64Int8 -> V64Int8 -> LLVM.Value I.Int64 -> LLVM.CodeGenFunction r (V64Int8))
+pmaxsb512_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxs.b.512"
+
+pmaxub128_mask :: Ext.T (V16Int8 -> V16Int8 -> V16Int8 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int8))
+pmaxub128_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxu.b.128"
+
+pmaxub256_mask :: Ext.T (V32Int8 -> V32Int8 -> V32Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int8))
+pmaxub256_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxu.b.256"
+
+pmaxub512_mask :: Ext.T (V64Int8 -> V64Int8 -> V64Int8 -> LLVM.Value I.Int64 -> LLVM.CodeGenFunction r (V64Int8))
+pmaxub512_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxu.b.512"
+
+pmaxsw128_mask :: Ext.T (V8Int16 -> V8Int16 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+pmaxsw128_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxs.w.128"
+
+pmaxsw256_mask :: Ext.T (V16Int16 -> V16Int16 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+pmaxsw256_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxs.w.256"
+
+pmaxsw512_mask :: Ext.T (V32Int16 -> V32Int16 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+pmaxsw512_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxs.w.512"
+
+pmaxuw128_mask :: Ext.T (V8Int16 -> V8Int16 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+pmaxuw128_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxu.w.128"
+
+pmaxuw256_mask :: Ext.T (V16Int16 -> V16Int16 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+pmaxuw256_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxu.w.256"
+
+pmaxuw512_mask :: Ext.T (V32Int16 -> V32Int16 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+pmaxuw512_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxu.w.512"
+
+pminsb128_mask :: Ext.T (V16Int8 -> V16Int8 -> V16Int8 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int8))
+pminsb128_mask = Ext.intrinsic ExtX86.avx512 "mask.pmins.b.128"
+
+pminsb256_mask :: Ext.T (V32Int8 -> V32Int8 -> V32Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int8))
+pminsb256_mask = Ext.intrinsic ExtX86.avx512 "mask.pmins.b.256"
+
+pminsb512_mask :: Ext.T (V64Int8 -> V64Int8 -> V64Int8 -> LLVM.Value I.Int64 -> LLVM.CodeGenFunction r (V64Int8))
+pminsb512_mask = Ext.intrinsic ExtX86.avx512 "mask.pmins.b.512"
+
+pminub128_mask :: Ext.T (V16Int8 -> V16Int8 -> V16Int8 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int8))
+pminub128_mask = Ext.intrinsic ExtX86.avx512 "mask.pminu.b.128"
+
+pminub256_mask :: Ext.T (V32Int8 -> V32Int8 -> V32Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int8))
+pminub256_mask = Ext.intrinsic ExtX86.avx512 "mask.pminu.b.256"
+
+pminub512_mask :: Ext.T (V64Int8 -> V64Int8 -> V64Int8 -> LLVM.Value I.Int64 -> LLVM.CodeGenFunction r (V64Int8))
+pminub512_mask = Ext.intrinsic ExtX86.avx512 "mask.pminu.b.512"
+
+pminsw128_mask :: Ext.T (V8Int16 -> V8Int16 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+pminsw128_mask = Ext.intrinsic ExtX86.avx512 "mask.pmins.w.128"
+
+pminsw256_mask :: Ext.T (V16Int16 -> V16Int16 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+pminsw256_mask = Ext.intrinsic ExtX86.avx512 "mask.pmins.w.256"
+
+pminsw512_mask :: Ext.T (V32Int16 -> V32Int16 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+pminsw512_mask = Ext.intrinsic ExtX86.avx512 "mask.pmins.w.512"
+
+pminuw128_mask :: Ext.T (V8Int16 -> V8Int16 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+pminuw128_mask = Ext.intrinsic ExtX86.avx512 "mask.pminu.w.128"
+
+pminuw256_mask :: Ext.T (V16Int16 -> V16Int16 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+pminuw256_mask = Ext.intrinsic ExtX86.avx512 "mask.pminu.w.256"
+
+pminuw512_mask :: Ext.T (V32Int16 -> V32Int16 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+pminuw512_mask = Ext.intrinsic ExtX86.avx512 "mask.pminu.w.512"
+
+pmaxud512_mask :: Ext.T (V16Int32 -> V16Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+pmaxud512_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxu.d.512"
+
+pmaxud256_mask :: Ext.T (V8Int32 -> V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+pmaxud256_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxu.d.256"
+
+pmaxud128_mask :: Ext.T (V4Int32 -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+pmaxud128_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxu.d.128"
+
+pmaxsd512_mask :: Ext.T (V16Int32 -> V16Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+pmaxsd512_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxs.d.512"
+
+pmaxsd256_mask :: Ext.T (V8Int32 -> V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+pmaxsd256_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxs.d.256"
+
+pmaxsd128_mask :: Ext.T (V4Int32 -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+pmaxsd128_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxs.d.128"
+
+pmaxuq512_mask :: Ext.T (V8Int64 -> V8Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+pmaxuq512_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxu.q.512"
+
+pmaxuq256_mask :: Ext.T (V4Int64 -> V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+pmaxuq256_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxu.q.256"
+
+pmaxuq128_mask :: Ext.T (V2Int64 -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+pmaxuq128_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxu.q.128"
+
+pmaxsq512_mask :: Ext.T (V8Int64 -> V8Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+pmaxsq512_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxs.q.512"
+
+pmaxsq256_mask :: Ext.T (V4Int64 -> V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+pmaxsq256_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxs.q.256"
+
+pmaxsq128_mask :: Ext.T (V2Int64 -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+pmaxsq128_mask = Ext.intrinsic ExtX86.avx512 "mask.pmaxs.q.128"
+
+pminud512_mask :: Ext.T (V16Int32 -> V16Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+pminud512_mask = Ext.intrinsic ExtX86.avx512 "mask.pminu.d.512"
+
+pminud256_mask :: Ext.T (V8Int32 -> V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+pminud256_mask = Ext.intrinsic ExtX86.avx512 "mask.pminu.d.256"
+
+pminud128_mask :: Ext.T (V4Int32 -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+pminud128_mask = Ext.intrinsic ExtX86.avx512 "mask.pminu.d.128"
+
+pminsd512_mask :: Ext.T (V16Int32 -> V16Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+pminsd512_mask = Ext.intrinsic ExtX86.avx512 "mask.pmins.d.512"
+
+pminsd256_mask :: Ext.T (V8Int32 -> V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+pminsd256_mask = Ext.intrinsic ExtX86.avx512 "mask.pmins.d.256"
+
+pminsd128_mask :: Ext.T (V4Int32 -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+pminsd128_mask = Ext.intrinsic ExtX86.avx512 "mask.pmins.d.128"
+
+pminuq512_mask :: Ext.T (V8Int64 -> V8Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+pminuq512_mask = Ext.intrinsic ExtX86.avx512 "mask.pminu.q.512"
+
+pminuq256_mask :: Ext.T (V4Int64 -> V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+pminuq256_mask = Ext.intrinsic ExtX86.avx512 "mask.pminu.q.256"
+
+pminuq128_mask :: Ext.T (V2Int64 -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+pminuq128_mask = Ext.intrinsic ExtX86.avx512 "mask.pminu.q.128"
+
+pminsq512_mask :: Ext.T (V8Int64 -> V8Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+pminsq512_mask = Ext.intrinsic ExtX86.avx512 "mask.pmins.q.512"
+
+pminsq256_mask :: Ext.T (V4Int64 -> V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+pminsq256_mask = Ext.intrinsic ExtX86.avx512 "mask.pmins.q.256"
+
+pminsq128_mask :: Ext.T (V2Int64 -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+pminsq128_mask = Ext.intrinsic ExtX86.avx512 "mask.pmins.q.128"
+
+psllw256 :: Ext.T (V16Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V16Int16))
+psllw256 = Ext.intrinsic ExtX86.avx2 "psll.w"
+
+pslld256 :: Ext.T (V8Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V8Int32))
+pslld256 = Ext.intrinsic ExtX86.avx2 "psll.d"
+
+psllq256 :: Ext.T (V4Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V4Int64))
+psllq256 = Ext.intrinsic ExtX86.avx2 "psll.q"
+
+psrlw256 :: Ext.T (V16Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V16Int16))
+psrlw256 = Ext.intrinsic ExtX86.avx2 "psrl.w"
+
+psrld256 :: Ext.T (V8Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V8Int32))
+psrld256 = Ext.intrinsic ExtX86.avx2 "psrl.d"
+
+psrlq256 :: Ext.T (V4Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V4Int64))
+psrlq256 = Ext.intrinsic ExtX86.avx2 "psrl.q"
+
+psraw256 :: Ext.T (V16Int16 -> V8Int16 -> LLVM.CodeGenFunction r (V16Int16))
+psraw256 = Ext.intrinsic ExtX86.avx2 "psra.w"
+
+psrad256 :: Ext.T (V8Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V8Int32))
+psrad256 = Ext.intrinsic ExtX86.avx2 "psra.d"
+
+psllwi256 :: Ext.T (V16Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Int16))
+psllwi256 = Ext.intrinsic ExtX86.avx2 "pslli.w"
+
+pslldi256 :: Ext.T (V8Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int32))
+pslldi256 = Ext.intrinsic ExtX86.avx2 "pslli.d"
+
+psllqi256 :: Ext.T (V4Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Int64))
+psllqi256 = Ext.intrinsic ExtX86.avx2 "pslli.q"
+
+psrlwi256 :: Ext.T (V16Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Int16))
+psrlwi256 = Ext.intrinsic ExtX86.avx2 "psrli.w"
+
+psrldi256 :: Ext.T (V8Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int32))
+psrldi256 = Ext.intrinsic ExtX86.avx2 "psrli.d"
+
+psrlqi256 :: Ext.T (V4Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V4Int64))
+psrlqi256 = Ext.intrinsic ExtX86.avx2 "psrli.q"
+
+psrawi256 :: Ext.T (V16Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Int16))
+psrawi256 = Ext.intrinsic ExtX86.avx2 "psrai.w"
+
+psradi256 :: Ext.T (V8Int32 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int32))
+psradi256 = Ext.intrinsic ExtX86.avx2 "psrai.d"
+
+pslldi512 :: Ext.T (V16Int32 -> LLVM.Value I.Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+pslldi512 = Ext.intrinsic ExtX86.avx512 "mask.pslli.d"
+
+psllqi512 :: Ext.T (V8Int64 -> LLVM.Value I.Int32 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+psllqi512 = Ext.intrinsic ExtX86.avx512 "mask.pslli.q"
+
+psrldi512 :: Ext.T (V16Int32 -> LLVM.Value I.Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+psrldi512 = Ext.intrinsic ExtX86.avx512 "mask.psrli.d"
+
+psrlqi512 :: Ext.T (V8Int64 -> LLVM.Value I.Int32 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+psrlqi512 = Ext.intrinsic ExtX86.avx512 "mask.psrli.q"
+
+psradi512 :: Ext.T (V16Int32 -> LLVM.Value I.Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+psradi512 = Ext.intrinsic ExtX86.avx512 "mask.psrai.d"
+
+psraqi512 :: Ext.T (V8Int64 -> LLVM.Value I.Int32 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+psraqi512 = Ext.intrinsic ExtX86.avx512 "mask.psrai.q"
+
+psrlw128_mask :: Ext.T (V8Int16 -> V8Int16 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+psrlw128_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.w.128"
+
+psrlw256_mask :: Ext.T (V16Int16 -> V8Int16 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+psrlw256_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.w.256"
+
+psrlw512_mask :: Ext.T (V32Int16 -> V8Int16 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+psrlw512_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.w.512"
+
+psrlwi128_mask :: Ext.T (V8Int16 -> LLVM.Value I.Int8 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+psrlwi128_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.wi.128"
+
+psrlwi256_mask :: Ext.T (V16Int16 -> LLVM.Value I.Int8 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+psrlwi256_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.wi.256"
+
+psrlwi512_mask :: Ext.T (V32Int16 -> LLVM.Value I.Int8 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+psrlwi512_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.wi.512"
+
+psraw128_mask :: Ext.T (V8Int16 -> V8Int16 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+psraw128_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.w.128"
+
+psraw256_mask :: Ext.T (V16Int16 -> V8Int16 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+psraw256_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.w.256"
+
+psraw512_mask :: Ext.T (V32Int16 -> V8Int16 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+psraw512_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.w.512"
+
+psrawi128_mask :: Ext.T (V8Int16 -> LLVM.Value I.Int8 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+psrawi128_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.wi.128"
+
+psrawi256_mask :: Ext.T (V16Int16 -> LLVM.Value I.Int8 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+psrawi256_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.wi.256"
+
+psrawi512_mask :: Ext.T (V32Int16 -> LLVM.Value I.Int8 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+psrawi512_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.wi.512"
+
+pslld512_mask :: Ext.T (V16Int32 -> V4Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+pslld512_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.d"
+
+psllq512_mask :: Ext.T (V8Int64 -> V2Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+psllq512_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.q"
+
+psrld512_mask :: Ext.T (V16Int32 -> V4Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+psrld512_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.d"
+
+psrlq512_mask :: Ext.T (V8Int64 -> V2Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+psrlq512_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.q"
+
+psrad512_mask :: Ext.T (V16Int32 -> V4Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+psrad512_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.d"
+
+psraq512_mask :: Ext.T (V8Int64 -> V2Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+psraq512_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.q"
+
+psllw128_mask :: Ext.T (V8Int16 -> V8Int16 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+psllw128_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.w.128"
+
+psllw256_mask :: Ext.T (V16Int16 -> V8Int16 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+psllw256_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.w.256"
+
+psllw512_mask :: Ext.T (V32Int16 -> V8Int16 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+psllw512_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.w.512"
+
+psllwi128_mask :: Ext.T (V8Int16 -> LLVM.Value I.Int8 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+psllwi128_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.wi.128"
+
+psllwi256_mask :: Ext.T (V16Int16 -> LLVM.Value I.Int8 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+psllwi256_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.wi.256"
+
+psllwi512_mask :: Ext.T (V32Int16 -> LLVM.Value I.Int8 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+psllwi512_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.wi.512"
+
+psllv16hi_mask :: Ext.T (V16Int16 -> V16Int16 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+psllv16hi_mask = Ext.intrinsic ExtX86.avx512 "mask.psllv16.hi"
+
+psllv2di_mask :: Ext.T (V2Int64 -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+psllv2di_mask = Ext.intrinsic ExtX86.avx512 "mask.psllv2.di"
+
+psllv32hi_mask :: Ext.T (V32Int16 -> V32Int16 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+psllv32hi_mask = Ext.intrinsic ExtX86.avx512 "mask.psllv32hi"
+
+psllv4di_mask :: Ext.T (V4Int64 -> V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+psllv4di_mask = Ext.intrinsic ExtX86.avx512 "mask.psllv4.di"
+
+psllv4si_mask :: Ext.T (V4Int32 -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+psllv4si_mask = Ext.intrinsic ExtX86.avx512 "mask.psllv4.si"
+
+psllv8hi_mask :: Ext.T (V8Int16 -> V8Int16 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+psllv8hi_mask = Ext.intrinsic ExtX86.avx512 "mask.psllv8.hi"
+
+psllv8si_mask :: Ext.T (V8Int32 -> V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+psllv8si_mask = Ext.intrinsic ExtX86.avx512 "mask.psllv8.si"
+
+psrad128_mask :: Ext.T (V4Int32 -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+psrad128_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.d.128"
+
+psrad256_mask :: Ext.T (V8Int32 -> V4Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+psrad256_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.d.256"
+
+psradi128_mask :: Ext.T (V4Int32 -> LLVM.Value I.Int8 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+psradi128_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.di.128"
+
+psradi256_mask :: Ext.T (V8Int32 -> LLVM.Value I.Int8 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+psradi256_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.di.256"
+
+psradi512_mask :: Ext.T (V16Int32 -> LLVM.Value I.Int8 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+psradi512_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.di.512"
+
+psraq128_mask :: Ext.T (V2Int64 -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+psraq128_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.q.128"
+
+psraq256_mask :: Ext.T (V4Int64 -> V2Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+psraq256_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.q.256"
+
+psraqi128_mask :: Ext.T (V2Int64 -> LLVM.Value I.Int8 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+psraqi128_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.qi.128"
+
+psraqi256_mask :: Ext.T (V4Int64 -> LLVM.Value I.Int8 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+psraqi256_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.qi.256"
+
+psraqi512_mask :: Ext.T (V8Int64 -> LLVM.Value I.Int8 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+psraqi512_mask = Ext.intrinsic ExtX86.avx512 "mask.psra.qi.512"
+
+psrld128_mask :: Ext.T (V4Int32 -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+psrld128_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.d.128"
+
+psrld256_mask :: Ext.T (V8Int32 -> V4Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+psrld256_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.d.256"
+
+psrldi128_mask :: Ext.T (V4Int32 -> LLVM.Value I.Int8 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+psrldi128_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.di.128"
+
+psrldi256_mask :: Ext.T (V8Int32 -> LLVM.Value I.Int8 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+psrldi256_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.di.256"
+
+psrldi512_mask :: Ext.T (V16Int32 -> LLVM.Value I.Int8 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+psrldi512_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.di.512"
+
+psrlq128_mask :: Ext.T (V2Int64 -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+psrlq128_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.q.128"
+
+psrlq256_mask :: Ext.T (V4Int64 -> V2Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+psrlq256_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.q.256"
+
+psrlqi128_mask :: Ext.T (V2Int64 -> LLVM.Value I.Int8 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+psrlqi128_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.qi.128"
+
+psrlqi256_mask :: Ext.T (V4Int64 -> LLVM.Value I.Int8 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+psrlqi256_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.qi.256"
+
+psrlqi512_mask :: Ext.T (V8Int64 -> LLVM.Value I.Int8 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+psrlqi512_mask = Ext.intrinsic ExtX86.avx512 "mask.psrl.qi.512"
+
+packsswb256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V32Int8))
+packsswb256 = Ext.intrinsic ExtX86.avx2 "packsswb"
+
+packssdw256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V16Int16))
+packssdw256 = Ext.intrinsic ExtX86.avx2 "packssdw"
+
+packuswb256 :: Ext.T (V16Word16 -> V16Word16 -> LLVM.CodeGenFunction r (V32Word8))
+packuswb256 = Ext.intrinsic ExtX86.avx2 "packuswb"
+
+packusdw256 :: Ext.T (V8Word32 -> V8Word32 -> LLVM.CodeGenFunction r (V16Word16))
+packusdw256 = Ext.intrinsic ExtX86.avx2 "packusdw"
+
+pabsb256 :: Ext.T (V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
+pabsb256 = Ext.intrinsic ExtX86.avx2 "pabs.b"
+
+pabsw256 :: Ext.T (V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
+pabsw256 = Ext.intrinsic ExtX86.avx2 "pabs.w"
+
+pabsd256 :: Ext.T (V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
+pabsd256 = Ext.intrinsic ExtX86.avx2 "pabs.d"
+
+pabsb128_mask :: Ext.T (V16Int8 -> V16Int8 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int8))
+pabsb128_mask = Ext.intrinsic ExtX86.avx512 "mask.pabs.b.128"
+
+pabsb256_mask :: Ext.T (V32Int8 -> V32Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int8))
+pabsb256_mask = Ext.intrinsic ExtX86.avx512 "mask.pabs.b.256"
+
+pabsb512_mask :: Ext.T (V64Int8 -> V64Int8 -> LLVM.Value I.Int64 -> LLVM.CodeGenFunction r (V64Int8))
+pabsb512_mask = Ext.intrinsic ExtX86.avx512 "mask.pabs.b.512"
+
+pabsd128_mask :: Ext.T (V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+pabsd128_mask = Ext.intrinsic ExtX86.avx512 "mask.pabs.d.128"
+
+pabsd256_mask :: Ext.T (V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+pabsd256_mask = Ext.intrinsic ExtX86.avx512 "mask.pabs.d.256"
+
+pabsd512_mask :: Ext.T (V16Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+pabsd512_mask = Ext.intrinsic ExtX86.avx512 "mask.pabs.d.512"
+
+pabsq128_mask :: Ext.T (V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+pabsq128_mask = Ext.intrinsic ExtX86.avx512 "mask.pabs.q.128"
+
+pabsq256_mask :: Ext.T (V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+pabsq256_mask = Ext.intrinsic ExtX86.avx512 "mask.pabs.q.256"
+
+pabsq512_mask :: Ext.T (V8Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+pabsq512_mask = Ext.intrinsic ExtX86.avx512 "mask.pabs.q.512"
+
+pabsw128_mask :: Ext.T (V8Int16 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+pabsw128_mask = Ext.intrinsic ExtX86.avx512 "mask.pabs.w.128"
+
+pabsw256_mask :: Ext.T (V16Int16 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+pabsw256_mask = Ext.intrinsic ExtX86.avx512 "mask.pabs.w.256"
+
+pabsw512_mask :: Ext.T (V32Int16 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+pabsw512_mask = Ext.intrinsic ExtX86.avx512 "mask.pabs.w.512"
+
+phaddw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
+phaddw256 = Ext.intrinsic ExtX86.avx2 "phadd.w"
+
+phaddd256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
+phaddd256 = Ext.intrinsic ExtX86.avx2 "phadd.d"
+
+phaddsw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
+phaddsw256 = Ext.intrinsic ExtX86.avx2 "phadd.sw"
+
+phsubw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
+phsubw256 = Ext.intrinsic ExtX86.avx2 "phsub.w"
+
+phsubd256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
+phsubd256 = Ext.intrinsic ExtX86.avx2 "phsub.d"
+
+phsubsw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
+phsubsw256 = Ext.intrinsic ExtX86.avx2 "phsub.sw"
+
+pmaddubsw256 :: Ext.T (V32Word8 -> V32Word8 -> LLVM.CodeGenFunction r (V16Word16))
+pmaddubsw256 = Ext.intrinsic ExtX86.avx2 "pmadd.ub.sw"
+
+psignb256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
+psignb256 = Ext.intrinsic ExtX86.avx2 "psign.b"
+
+psignw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
+psignw256 = Ext.intrinsic ExtX86.avx2 "psign.w"
+
+psignd256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
+psignd256 = Ext.intrinsic ExtX86.avx2 "psign.d"
+
+pmulhrsw256 :: Ext.T (V16Int16 -> V16Int16 -> LLVM.CodeGenFunction r (V16Int16))
+pmulhrsw256 = Ext.intrinsic ExtX86.avx2 "pmul.hr.sw"
+
+pmulhrsw128_mask :: Ext.T (V8Int16 -> V8Int16 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+pmulhrsw128_mask = Ext.intrinsic ExtX86.avx512 "mask.pmul.hr.sw.128"
+
+pmulhrsw256_mask :: Ext.T (V16Int16 -> V16Int16 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+pmulhrsw256_mask = Ext.intrinsic ExtX86.avx512 "mask.pmul.hr.sw.256"
+
+pmulhrsw512_mask :: Ext.T (V32Int16 -> V32Int16 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+pmulhrsw512_mask = Ext.intrinsic ExtX86.avx512 "mask.pmul.hr.sw.512"
+
+pmovsxbd256 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V8Int32))
+pmovsxbd256 = Ext.intrinsic ExtX86.avx2 "pmovsxbd"
+
+pmovsxbq256 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V4Int64))
+pmovsxbq256 = Ext.intrinsic ExtX86.avx2 "pmovsxbq"
+
+pmovsxbw256 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V16Int16))
+pmovsxbw256 = Ext.intrinsic ExtX86.avx2 "pmovsxbw"
+
+pmovsxdq256 :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V4Int64))
+pmovsxdq256 = Ext.intrinsic ExtX86.avx2 "pmovsxdq"
+
+pmovsxwd256 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V8Int32))
+pmovsxwd256 = Ext.intrinsic ExtX86.avx2 "pmovsxwd"
+
+pmovsxwq256 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V4Int64))
+pmovsxwq256 = Ext.intrinsic ExtX86.avx2 "pmovsxwq"
+
+pmovzxbd256 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V8Int32))
+pmovzxbd256 = Ext.intrinsic ExtX86.avx2 "pmovzxbd"
+
+pmovzxbq256 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V4Int64))
+pmovzxbq256 = Ext.intrinsic ExtX86.avx2 "pmovzxbq"
+
+pmovzxbw256 :: Ext.T (V16Int8 -> LLVM.CodeGenFunction r (V16Int16))
+pmovzxbw256 = Ext.intrinsic ExtX86.avx2 "pmovzxbw"
+
+pmovzxdq256 :: Ext.T (V4Int32 -> LLVM.CodeGenFunction r (V4Int64))
+pmovzxdq256 = Ext.intrinsic ExtX86.avx2 "pmovzxdq"
+
+pmovzxwd256 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V8Int32))
+pmovzxwd256 = Ext.intrinsic ExtX86.avx2 "pmovzxwd"
+
+pmovzxwq256 :: Ext.T (V8Int16 -> LLVM.CodeGenFunction r (V4Int64))
+pmovzxwq256 = Ext.intrinsic ExtX86.avx2 "pmovzxwq"
+
+pblendvb256 :: Ext.T (V32Int8 -> V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
+pblendvb256 = Ext.intrinsic ExtX86.avx2 "pblendvb"
+
+pbroadcastd512_gpr_mask :: Ext.T (LLVM.Value I.Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+pbroadcastd512_gpr_mask = Ext.intrinsic ExtX86.avx512 "mask.pbroadcast.d.gpr.512"
+
+pbroadcastq512_gpr_mask :: Ext.T (LLVM.Value I.Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+pbroadcastq512_gpr_mask = Ext.intrinsic ExtX86.avx512 "mask.pbroadcast.q.gpr.512"
+
+pbroadcastq512_mem_mask :: Ext.T (LLVM.Value I.Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+pbroadcastq512_mem_mask = Ext.intrinsic ExtX86.avx512 "mask.pbroadcast.q.mem.512"
+
+permvarsi256 :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
+permvarsi256 = Ext.intrinsic ExtX86.avx2 "permd"
+
+permvarsf256 :: Ext.T (V8Float -> V8Int32 -> LLVM.CodeGenFunction r (V8Float))
+permvarsf256 = Ext.intrinsic ExtX86.avx2 "permps"
+
+permti256 :: Ext.T (V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+permti256 = Ext.intrinsic ExtX86.avx2 "vperm2i128"
+
+extractf32x4_mask :: Ext.T (V16Float -> LLVM.Value I.Int32 -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+extractf32x4_mask = Ext.intrinsic ExtX86.avx512 "mask.vextractf32x4.512"
+
+extracti32x4_mask :: Ext.T (V16Int32 -> LLVM.Value I.Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+extracti32x4_mask = Ext.intrinsic ExtX86.avx512 "mask.vextracti32x4.512"
+
+extractf32x4_256_mask :: Ext.T (V8Float -> LLVM.Value I.Int32 -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+extractf32x4_256_mask = Ext.intrinsic ExtX86.avx512 "mask.vextractf32x4.256"
+
+extracti32x4_256_mask :: Ext.T (V8Int32 -> LLVM.Value I.Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+extracti32x4_256_mask = Ext.intrinsic ExtX86.avx512 "mask.vextracti32x4.256"
+
+extractf64x2_256_mask :: Ext.T (V4Double -> LLVM.Value I.Int32 -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+extractf64x2_256_mask = Ext.intrinsic ExtX86.avx512 "mask.vextractf64x2.256"
+
+extracti64x2_256_mask :: Ext.T (V4Int64 -> LLVM.Value I.Int32 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+extracti64x2_256_mask = Ext.intrinsic ExtX86.avx512 "mask.vextracti64x2.256"
+
+extractf64x2_512_mask :: Ext.T (V8Double -> LLVM.Value I.Int32 -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+extractf64x2_512_mask = Ext.intrinsic ExtX86.avx512 "mask.vextractf64x2.512"
+
+extracti64x2_512_mask :: Ext.T (V8Int64 -> LLVM.Value I.Int32 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+extracti64x2_512_mask = Ext.intrinsic ExtX86.avx512 "mask.vextracti64x2.512"
+
+extractf32x8_mask :: Ext.T (V16Float -> LLVM.Value I.Int32 -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+extractf32x8_mask = Ext.intrinsic ExtX86.avx512 "mask.vextractf32x8.512"
+
+extracti32x8_mask :: Ext.T (V16Int32 -> LLVM.Value I.Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+extracti32x8_mask = Ext.intrinsic ExtX86.avx512 "mask.vextracti32x8.512"
+
+extractf64x4_mask :: Ext.T (V8Double -> LLVM.Value I.Int32 -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+extractf64x4_mask = Ext.intrinsic ExtX86.avx512 "mask.vextractf64x4.512"
+
+extracti64x4_mask :: Ext.T (V8Int64 -> LLVM.Value I.Int32 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+extracti64x4_mask = Ext.intrinsic ExtX86.avx512 "mask.vextracti64x4.512"
+
+insertf32x4_256_mask :: Ext.T (V8Float -> V4Float -> LLVM.Value I.Int32 -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+insertf32x4_256_mask = Ext.intrinsic ExtX86.avx512 "mask.insertf32x4.256"
+
+insertf32x4_512_mask :: Ext.T (V16Float -> V4Float -> LLVM.Value I.Int32 -> V16Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V16Float))
+insertf32x4_512_mask = Ext.intrinsic ExtX86.avx512 "mask.insertf32x4.512"
+
+insertf32x8_mask :: Ext.T (V16Float -> V8Float -> LLVM.Value I.Int32 -> V16Float -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Float))
+insertf32x8_mask = Ext.intrinsic ExtX86.avx512 "mask.insertf32x8.512"
+
+insertf64x2_256_mask :: Ext.T (V4Double -> V2Double -> LLVM.Value I.Int32 -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+insertf64x2_256_mask = Ext.intrinsic ExtX86.avx512 "mask.insertf64x2.256"
+
+insertf64x2_512_mask :: Ext.T (V8Double -> V2Double -> LLVM.Value I.Int32 -> V8Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Double))
+insertf64x2_512_mask = Ext.intrinsic ExtX86.avx512 "mask.insertf64x2.512"
+
+insertf64x4_mask :: Ext.T (V8Double -> V4Double -> LLVM.Value I.Int32 -> V8Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Double))
+insertf64x4_mask = Ext.intrinsic ExtX86.avx512 "mask.insertf64x4.512"
+
+inserti32x4_256_mask :: Ext.T (V8Int32 -> V4Int32 -> LLVM.Value I.Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+inserti32x4_256_mask = Ext.intrinsic ExtX86.avx512 "mask.inserti32x4.256"
+
+inserti32x4_512_mask :: Ext.T (V16Int32 -> V4Int32 -> LLVM.Value I.Int32 -> V16Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V16Int32))
+inserti32x4_512_mask = Ext.intrinsic ExtX86.avx512 "mask.inserti32x4.512"
+
+inserti32x8_mask :: Ext.T (V16Int32 -> V8Int32 -> LLVM.Value I.Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+inserti32x8_mask = Ext.intrinsic ExtX86.avx512 "mask.inserti32x8.512"
+
+inserti64x2_256_mask :: Ext.T (V4Int64 -> V2Int64 -> LLVM.Value I.Int32 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+inserti64x2_256_mask = Ext.intrinsic ExtX86.avx512 "mask.inserti64x2.256"
+
+inserti64x2_512_mask :: Ext.T (V8Int64 -> V2Int64 -> LLVM.Value I.Int32 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+inserti64x2_512_mask = Ext.intrinsic ExtX86.avx512 "mask.inserti64x2.512"
+
+inserti64x4_mask :: Ext.T (V8Int64 -> V4Int64 -> LLVM.Value I.Int32 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+inserti64x4_mask = Ext.intrinsic ExtX86.avx512 "mask.inserti64x4.512"
+
+maskloadd :: Ext.T (LLVM.Value (Ptr ()) -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
+maskloadd = Ext.intrinsic ExtX86.avx2 "maskload.d"
+
+maskloadq :: Ext.T (LLVM.Value (Ptr ()) -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
+maskloadq = Ext.intrinsic ExtX86.avx2 "maskload.q"
+
+maskloadd256 :: Ext.T (LLVM.Value (Ptr ()) -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
+maskloadd256 = Ext.intrinsic ExtX86.avx2 "maskload.d.256"
+
+maskloadq256 :: Ext.T (LLVM.Value (Ptr ()) -> V4Int64 -> LLVM.CodeGenFunction r (V4Int64))
+maskloadq256 = Ext.intrinsic ExtX86.avx2 "maskload.q.256"
+
+loaddqusi512_mask :: Ext.T (LLVM.Value (Ptr ()) -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+loaddqusi512_mask = Ext.intrinsic ExtX86.avx512 "mask.loadu.d.512"
+
+loaddqudi512_mask :: Ext.T (LLVM.Value (Ptr ()) -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+loaddqudi512_mask = Ext.intrinsic ExtX86.avx512 "mask.loadu.q.512"
+
+maskstored :: Ext.T (LLVM.Value (Ptr ()) -> V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+maskstored = Ext.intrinsic ExtX86.avx2 "maskstore.d"
+
+maskstoreq :: Ext.T (LLVM.Value (Ptr ()) -> V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+maskstoreq = Ext.intrinsic ExtX86.avx2 "maskstore.q"
+
+maskstored256 :: Ext.T (LLVM.Value (Ptr ()) -> V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+maskstored256 = Ext.intrinsic ExtX86.avx2 "maskstore.d.256"
+
+maskstoreq256 :: Ext.T (LLVM.Value (Ptr ()) -> V4Int64 -> V4Int64 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+maskstoreq256 = Ext.intrinsic ExtX86.avx2 "maskstore.q.256"
+
+storedqusi512_mask :: Ext.T (LLVM.Value (Ptr ()) -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+storedqusi512_mask = Ext.intrinsic ExtX86.avx512 "mask.storeu.d.512"
+
+storedqudi512_mask :: Ext.T (LLVM.Value (Ptr ()) -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (LLVM.Value ()))
+storedqudi512_mask = Ext.intrinsic ExtX86.avx512 "mask.storeu.q.512"
+
+psllv4si :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
+psllv4si = Ext.intrinsic ExtX86.avx2 "psllv.d"
+
+psllv8si :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
+psllv8si = Ext.intrinsic ExtX86.avx2 "psllv.d.256"
+
+psllv2di :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
+psllv2di = Ext.intrinsic ExtX86.avx2 "psllv.q"
+
+psllv4di :: Ext.T (V4Int64 -> V4Int64 -> LLVM.CodeGenFunction r (V4Int64))
+psllv4di = Ext.intrinsic ExtX86.avx2 "psllv.q.256"
+
+psrlv4si :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
+psrlv4si = Ext.intrinsic ExtX86.avx2 "psrlv.d"
+
+psrlv8si :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
+psrlv8si = Ext.intrinsic ExtX86.avx2 "psrlv.d.256"
+
+psrlv2di :: Ext.T (V2Int64 -> V2Int64 -> LLVM.CodeGenFunction r (V2Int64))
+psrlv2di = Ext.intrinsic ExtX86.avx2 "psrlv.q"
+
+psrlv4di :: Ext.T (V4Int64 -> V4Int64 -> LLVM.CodeGenFunction r (V4Int64))
+psrlv4di = Ext.intrinsic ExtX86.avx2 "psrlv.q.256"
+
+psrav4si :: Ext.T (V4Int32 -> V4Int32 -> LLVM.CodeGenFunction r (V4Int32))
+psrav4si = Ext.intrinsic ExtX86.avx2 "psrav.d"
+
+psrav8si :: Ext.T (V8Int32 -> V8Int32 -> LLVM.CodeGenFunction r (V8Int32))
+psrav8si = Ext.intrinsic ExtX86.avx2 "psrav.d.256"
+
+psllv16si_mask :: Ext.T (V16Int32 -> V16Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+psllv16si_mask = Ext.intrinsic ExtX86.avx512 "mask.psllv.d"
+
+psllv8di_mask :: Ext.T (V8Int64 -> V8Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+psllv8di_mask = Ext.intrinsic ExtX86.avx512 "mask.psllv.q"
+
+psrav16si_mask :: Ext.T (V16Int32 -> V16Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+psrav16si_mask = Ext.intrinsic ExtX86.avx512 "mask.psrav.d"
+
+psrav8di_mask :: Ext.T (V8Int64 -> V8Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+psrav8di_mask = Ext.intrinsic ExtX86.avx512 "mask.psrav.q"
+
+psrlv16si_mask :: Ext.T (V16Int32 -> V16Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+psrlv16si_mask = Ext.intrinsic ExtX86.avx512 "mask.psrlv.d"
+
+psrlv8di_mask :: Ext.T (V8Int64 -> V8Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+psrlv8di_mask = Ext.intrinsic ExtX86.avx512 "mask.psrlv.q"
+
+pslldq512 :: Ext.T (V8Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int64))
+pslldq512 = Ext.intrinsic ExtX86.avx512 "psll.dq.512"
+
+psrldq512 :: Ext.T (V8Int64 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Int64))
+psrldq512 = Ext.intrinsic ExtX86.avx512 "psrl.dq.512"
+
+pslld128_mask :: Ext.T (V4Int32 -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+pslld128_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.d.128"
+
+pslld256_mask :: Ext.T (V8Int32 -> V4Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+pslld256_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.d.256"
+
+pslldi128_mask :: Ext.T (V4Int32 -> LLVM.Value I.Int8 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+pslldi128_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.di.128"
+
+pslldi256_mask :: Ext.T (V8Int32 -> LLVM.Value I.Int8 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+pslldi256_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.di.256"
+
+pslldi512_mask :: Ext.T (V16Int32 -> LLVM.Value I.Int8 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+pslldi512_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.di.512"
+
+psllq128_mask :: Ext.T (V2Int64 -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+psllq128_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.q.128"
+
+psllq256_mask :: Ext.T (V4Int64 -> V2Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+psllq256_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.q.256"
+
+psllqi128_mask :: Ext.T (V2Int64 -> LLVM.Value I.Int8 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+psllqi128_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.qi.128"
+
+psllqi256_mask :: Ext.T (V4Int64 -> LLVM.Value I.Int8 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+psllqi256_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.qi.256"
+
+psllqi512_mask :: Ext.T (V8Int64 -> LLVM.Value I.Int8 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+psllqi512_mask = Ext.intrinsic ExtX86.avx512 "mask.psll.qi.512"
+
+psrav16hi_mask :: Ext.T (V16Int16 -> V16Int16 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+psrav16hi_mask = Ext.intrinsic ExtX86.avx512 "mask.psrav16.hi"
+
+psrav32hi_mask :: Ext.T (V32Int16 -> V32Int16 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+psrav32hi_mask = Ext.intrinsic ExtX86.avx512 "mask.psrav32.hi"
+
+psrav4si_mask :: Ext.T (V4Int32 -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+psrav4si_mask = Ext.intrinsic ExtX86.avx512 "mask.psrav4.si"
+
+psrav8hi_mask :: Ext.T (V8Int16 -> V8Int16 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+psrav8hi_mask = Ext.intrinsic ExtX86.avx512 "mask.psrav8.hi"
+
+psrav8si_mask :: Ext.T (V8Int32 -> V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+psrav8si_mask = Ext.intrinsic ExtX86.avx512 "mask.psrav8.si"
+
+psravq128_mask :: Ext.T (V2Int64 -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+psravq128_mask = Ext.intrinsic ExtX86.avx512 "mask.psrav.q.128"
+
+psravq256_mask :: Ext.T (V4Int64 -> V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+psravq256_mask = Ext.intrinsic ExtX86.avx512 "mask.psrav.q.256"
+
+psrlv16hi_mask :: Ext.T (V16Int16 -> V16Int16 -> V16Int16 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int16))
+psrlv16hi_mask = Ext.intrinsic ExtX86.avx512 "mask.psrlv16.hi"
+
+psrlv2di_mask :: Ext.T (V2Int64 -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+psrlv2di_mask = Ext.intrinsic ExtX86.avx512 "mask.psrlv2.di"
+
+psrlv32hi_mask :: Ext.T (V32Int16 -> V32Int16 -> V32Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V32Int16))
+psrlv32hi_mask = Ext.intrinsic ExtX86.avx512 "mask.psrlv32hi"
+
+psrlv4di_mask :: Ext.T (V4Int64 -> V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+psrlv4di_mask = Ext.intrinsic ExtX86.avx512 "mask.psrlv4.di"
+
+psrlv4si_mask :: Ext.T (V4Int32 -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+psrlv4si_mask = Ext.intrinsic ExtX86.avx512 "mask.psrlv4.si"
+
+psrlv8hi_mask :: Ext.T (V8Int16 -> V8Int16 -> V8Int16 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int16))
+psrlv8hi_mask = Ext.intrinsic ExtX86.avx512 "mask.psrlv8.hi"
+
+psrlv8si_mask :: Ext.T (V8Int32 -> V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+psrlv8si_mask = Ext.intrinsic ExtX86.avx512 "mask.psrlv8.si"
+
+prorvd128_mask :: Ext.T (V4Int32 -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+prorvd128_mask = Ext.intrinsic ExtX86.avx512 "mask.prorv.d.128"
+
+prorvd256_mask :: Ext.T (V8Int32 -> V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+prorvd256_mask = Ext.intrinsic ExtX86.avx512 "mask.prorv.d.256"
+
+prorvd512_mask :: Ext.T (V16Int32 -> V16Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+prorvd512_mask = Ext.intrinsic ExtX86.avx512 "mask.prorv.d.512"
+
+prorvq128_mask :: Ext.T (V2Int64 -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+prorvq128_mask = Ext.intrinsic ExtX86.avx512 "mask.prorv.q.128"
+
+prorvq256_mask :: Ext.T (V4Int64 -> V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+prorvq256_mask = Ext.intrinsic ExtX86.avx512 "mask.prorv.q.256"
+
+prorvq512_mask :: Ext.T (V8Int64 -> V8Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+prorvq512_mask = Ext.intrinsic ExtX86.avx512 "mask.prorv.q.512"
+
+prold128_mask :: Ext.T (V4Int32 -> LLVM.Value I.Int8 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+prold128_mask = Ext.intrinsic ExtX86.avx512 "mask.prol.d.128"
+
+prold256_mask :: Ext.T (V8Int32 -> LLVM.Value I.Int8 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+prold256_mask = Ext.intrinsic ExtX86.avx512 "mask.prol.d.256"
+
+prold512_mask :: Ext.T (V16Int32 -> LLVM.Value I.Int8 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+prold512_mask = Ext.intrinsic ExtX86.avx512 "mask.prol.d.512"
+
+prolq128_mask :: Ext.T (V2Int64 -> LLVM.Value I.Int8 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+prolq128_mask = Ext.intrinsic ExtX86.avx512 "mask.prol.q.128"
+
+prolq256_mask :: Ext.T (V4Int64 -> LLVM.Value I.Int8 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+prolq256_mask = Ext.intrinsic ExtX86.avx512 "mask.prol.q.256"
+
+prolq512_mask :: Ext.T (V8Int64 -> LLVM.Value I.Int8 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+prolq512_mask = Ext.intrinsic ExtX86.avx512 "mask.prol.q.512"
+
+prolvd128_mask :: Ext.T (V4Int32 -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+prolvd128_mask = Ext.intrinsic ExtX86.avx512 "mask.prolv.d.128"
+
+prolvd256_mask :: Ext.T (V8Int32 -> V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+prolvd256_mask = Ext.intrinsic ExtX86.avx512 "mask.prolv.d.256"
+
+prolvd512_mask :: Ext.T (V16Int32 -> V16Int32 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+prolvd512_mask = Ext.intrinsic ExtX86.avx512 "mask.prolv.d.512"
+
+prolvq128_mask :: Ext.T (V2Int64 -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+prolvq128_mask = Ext.intrinsic ExtX86.avx512 "mask.prolv.q.128"
+
+prolvq256_mask :: Ext.T (V4Int64 -> V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+prolvq256_mask = Ext.intrinsic ExtX86.avx512 "mask.prolv.q.256"
+
+prolvq512_mask :: Ext.T (V8Int64 -> V8Int64 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+prolvq512_mask = Ext.intrinsic ExtX86.avx512 "mask.prolv.q.512"
+
+prord128_mask :: Ext.T (V4Int32 -> LLVM.Value I.Int8 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+prord128_mask = Ext.intrinsic ExtX86.avx512 "mask.pror.d.128"
+
+prord256_mask :: Ext.T (V8Int32 -> LLVM.Value I.Int8 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+prord256_mask = Ext.intrinsic ExtX86.avx512 "mask.pror.d.256"
+
+prord512_mask :: Ext.T (V16Int32 -> LLVM.Value I.Int8 -> V16Int32 -> LLVM.Value I.Int16 -> LLVM.CodeGenFunction r (V16Int32))
+prord512_mask = Ext.intrinsic ExtX86.avx512 "mask.pror.d.512"
+
+prorq128_mask :: Ext.T (V2Int64 -> LLVM.Value I.Int8 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+prorq128_mask = Ext.intrinsic ExtX86.avx512 "mask.pror.q.128"
+
+prorq256_mask :: Ext.T (V4Int64 -> LLVM.Value I.Int8 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+prorq256_mask = Ext.intrinsic ExtX86.avx512 "mask.pror.q.256"
+
+prorq512_mask :: Ext.T (V8Int64 -> LLVM.Value I.Int8 -> V8Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int64))
+prorq512_mask = Ext.intrinsic ExtX86.avx512 "mask.pror.q.512"
+
+gatherd_pd :: Ext.T (V2Double -> LLVM.Value (Ptr ()) -> V4Int32 -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+gatherd_pd = Ext.intrinsic ExtX86.avx2 "gather.d.pd"
+
+gatherd_pd256 :: Ext.T (V4Double -> LLVM.Value (Ptr ()) -> V4Int32 -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+gatherd_pd256 = Ext.intrinsic ExtX86.avx2 "gather.d.pd.256"
+
+gatherq_pd :: Ext.T (V2Double -> LLVM.Value (Ptr ()) -> V2Int64 -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+gatherq_pd = Ext.intrinsic ExtX86.avx2 "gather.q.pd"
+
+gatherq_pd256 :: Ext.T (V4Double -> LLVM.Value (Ptr ()) -> V4Int64 -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+gatherq_pd256 = Ext.intrinsic ExtX86.avx2 "gather.q.pd.256"
+
+gatherd_ps :: Ext.T (V4Float -> LLVM.Value (Ptr ()) -> V4Int32 -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+gatherd_ps = Ext.intrinsic ExtX86.avx2 "gather.d.ps"
+
+gatherd_ps256 :: Ext.T (V8Float -> LLVM.Value (Ptr ()) -> V8Int32 -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+gatherd_ps256 = Ext.intrinsic ExtX86.avx2 "gather.d.ps.256"
+
+gatherq_ps :: Ext.T (V4Float -> LLVM.Value (Ptr ()) -> V2Int64 -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+gatherq_ps = Ext.intrinsic ExtX86.avx2 "gather.q.ps"
+
+gatherq_ps256 :: Ext.T (V4Float -> LLVM.Value (Ptr ()) -> V4Int64 -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+gatherq_ps256 = Ext.intrinsic ExtX86.avx2 "gather.q.ps.256"
+
+gatherd_q :: Ext.T (V2Int64 -> LLVM.Value (Ptr ()) -> V4Int32 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+gatherd_q = Ext.intrinsic ExtX86.avx2 "gather.d.q"
+
+gatherd_q256 :: Ext.T (V4Int64 -> LLVM.Value (Ptr ()) -> V4Int32 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+gatherd_q256 = Ext.intrinsic ExtX86.avx2 "gather.d.q.256"
+
+gatherq_q :: Ext.T (V2Int64 -> LLVM.Value (Ptr ()) -> V2Int64 -> V2Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Int64))
+gatherq_q = Ext.intrinsic ExtX86.avx2 "gather.q.q"
+
+gatherq_q256 :: Ext.T (V4Int64 -> LLVM.Value (Ptr ()) -> V4Int64 -> V4Int64 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int64))
+gatherq_q256 = Ext.intrinsic ExtX86.avx2 "gather.q.q.256"
+
+gatherd_d :: Ext.T (V4Int32 -> LLVM.Value (Ptr ()) -> V4Int32 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+gatherd_d = Ext.intrinsic ExtX86.avx2 "gather.d.d"
+
+gatherd_d256 :: Ext.T (V8Int32 -> LLVM.Value (Ptr ()) -> V8Int32 -> V8Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Int32))
+gatherd_d256 = Ext.intrinsic ExtX86.avx2 "gather.d.d.256"
+
+gatherq_d :: Ext.T (V4Int32 -> LLVM.Value (Ptr ()) -> V2Int64 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+gatherq_d = Ext.intrinsic ExtX86.avx2 "gather.q.d"
+
+gatherq_d256 :: Ext.T (V4Int32 -> LLVM.Value (Ptr ()) -> V4Int64 -> V4Int32 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Int32))
+gatherq_d256 = Ext.intrinsic ExtX86.avx2 "gather.q.d.256"
+
+pmovmskb256 :: Ext.T (V32Int8 -> LLVM.CodeGenFunction r (LLVM.Value I.Int32))
+pmovmskb256 = Ext.intrinsic ExtX86.avx2 "pmovmskb"
+
+pshufb256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.CodeGenFunction r (V32Int8))
+pshufb256 = Ext.intrinsic ExtX86.avx2 "pshuf.b"
+
+mpsadbw256 :: Ext.T (V32Int8 -> V32Int8 -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V16Int16))
+mpsadbw256 = Ext.intrinsic ExtX86.avx2 "mpsadbw"
+
+movntdqa256 :: Ext.T (LLVM.Value (Ptr ()) -> LLVM.CodeGenFunction r (V4Int64))
+movntdqa256 = Ext.intrinsic ExtX86.avx2 "movntdqa"
+
+vfmaddss :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+vfmaddss = Ext.intrinsic ExtX86.fma "vfmadd.ss"
+
+vfmaddsd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+vfmaddsd = Ext.intrinsic ExtX86.fma "vfmadd.sd"
+
+vfmaddps :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+vfmaddps = Ext.intrinsic ExtX86.fma "vfmadd.ps"
+
+vfmaddpd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+vfmaddpd = Ext.intrinsic ExtX86.fma "vfmadd.pd"
+
+vfmaddps256 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
+vfmaddps256 = Ext.intrinsic ExtX86.fma "vfmadd.ps.256"
+
+vfmaddpd256 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
+vfmaddpd256 = Ext.intrinsic ExtX86.fma "vfmadd.pd.256"
+
+vfmsubss :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+vfmsubss = Ext.intrinsic ExtX86.fma "vfmsub.ss"
+
+vfmsubsd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+vfmsubsd = Ext.intrinsic ExtX86.fma "vfmsub.sd"
+
+vfmsubps :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+vfmsubps = Ext.intrinsic ExtX86.fma "vfmsub.ps"
+
+vfmsubpd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+vfmsubpd = Ext.intrinsic ExtX86.fma "vfmsub.pd"
+
+vfmsubps256 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
+vfmsubps256 = Ext.intrinsic ExtX86.fma "vfmsub.ps.256"
+
+vfmsubpd256 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
+vfmsubpd256 = Ext.intrinsic ExtX86.fma "vfmsub.pd.256"
+
+vfnmaddss :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+vfnmaddss = Ext.intrinsic ExtX86.fma "vfnmadd.ss"
+
+vfnmaddsd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+vfnmaddsd = Ext.intrinsic ExtX86.fma "vfnmadd.sd"
+
+vfnmaddps :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+vfnmaddps = Ext.intrinsic ExtX86.fma "vfnmadd.ps"
+
+vfnmaddpd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+vfnmaddpd = Ext.intrinsic ExtX86.fma "vfnmadd.pd"
+
+vfnmaddps256 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
+vfnmaddps256 = Ext.intrinsic ExtX86.fma "vfnmadd.ps.256"
+
+vfnmaddpd256 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
+vfnmaddpd256 = Ext.intrinsic ExtX86.fma "vfnmadd.pd.256"
+
+vfnmsubss :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+vfnmsubss = Ext.intrinsic ExtX86.fma "vfnmsub.ss"
+
+vfnmsubsd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+vfnmsubsd = Ext.intrinsic ExtX86.fma "vfnmsub.sd"
+
+vfnmsubps :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+vfnmsubps = Ext.intrinsic ExtX86.fma "vfnmsub.ps"
+
+vfnmsubpd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+vfnmsubpd = Ext.intrinsic ExtX86.fma "vfnmsub.pd"
+
+vfnmsubps256 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
+vfnmsubps256 = Ext.intrinsic ExtX86.fma "vfnmsub.ps.256"
+
+vfnmsubpd256 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
+vfnmsubpd256 = Ext.intrinsic ExtX86.fma "vfnmsub.pd.256"
+
+vfmaddsubps :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+vfmaddsubps = Ext.intrinsic ExtX86.fma "vfmaddsub.ps"
+
+vfmaddsubpd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+vfmaddsubpd = Ext.intrinsic ExtX86.fma "vfmaddsub.pd"
+
+vfmaddsubps256 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
+vfmaddsubps256 = Ext.intrinsic ExtX86.fma "vfmaddsub.ps.256"
+
+vfmaddsubpd256 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
+vfmaddsubpd256 = Ext.intrinsic ExtX86.fma "vfmaddsub.pd.256"
+
+vfmsubaddps :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.CodeGenFunction r (V4Float))
+vfmsubaddps = Ext.intrinsic ExtX86.fma "vfmsubadd.ps"
+
+vfmsubaddpd :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.CodeGenFunction r (V2Double))
+vfmsubaddpd = Ext.intrinsic ExtX86.fma "vfmsubadd.pd"
+
+vfmsubaddps256 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.CodeGenFunction r (V8Float))
+vfmsubaddps256 = Ext.intrinsic ExtX86.fma "vfmsubadd.ps.256"
+
+vfmsubaddpd256 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.CodeGenFunction r (V4Double))
+vfmsubaddpd256 = Ext.intrinsic ExtX86.fma "vfmsubadd.pd.256"
+
+vfmaddpd128_mask :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vfmaddpd128_mask = Ext.intrinsic ExtX86.avx512 "mask.vfmadd.pd.128"
+
+vfmaddpd128_mask3 :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vfmaddpd128_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmadd.pd.128"
+
+vfmaddpd128_maskz :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vfmaddpd128_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vfmadd.pd.128"
+
+vfmaddpd256_mask :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vfmaddpd256_mask = Ext.intrinsic ExtX86.avx512 "mask.vfmadd.pd.256"
+
+vfmaddpd256_mask3 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vfmaddpd256_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmadd.pd.256"
+
+vfmaddpd256_maskz :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vfmaddpd256_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vfmadd.pd.256"
+
+vfmaddpd512_mask :: Ext.T (V8Double -> V8Double -> V8Double -> LLVM.Value I.Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Double))
+vfmaddpd512_mask = Ext.intrinsic ExtX86.avx512 "mask.vfmadd.pd.512"
+
+vfmaddpd512_mask3 :: Ext.T (V8Double -> V8Double -> V8Double -> LLVM.Value I.Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Double))
+vfmaddpd512_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmadd.pd.512"
+
+vfmaddpd512_maskz :: Ext.T (V8Double -> V8Double -> V8Double -> LLVM.Value I.Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Double))
+vfmaddpd512_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vfmadd.pd.512"
+
+vfmaddps128_mask :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vfmaddps128_mask = Ext.intrinsic ExtX86.avx512 "mask.vfmadd.ps.128"
+
+vfmaddps128_mask3 :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vfmaddps128_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmadd.ps.128"
+
+vfmaddps128_maskz :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vfmaddps128_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vfmadd.ps.128"
+
+vfmaddps256_mask :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vfmaddps256_mask = Ext.intrinsic ExtX86.avx512 "mask.vfmadd.ps.256"
+
+vfmaddps256_mask3 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vfmaddps256_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmadd.ps.256"
+
+vfmaddps256_maskz :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vfmaddps256_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vfmadd.ps.256"
+
+vfmaddps512_mask :: Ext.T (V16Float -> V16Float -> V16Float -> LLVM.Value I.Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Float))
+vfmaddps512_mask = Ext.intrinsic ExtX86.avx512 "mask.vfmadd.ps.512"
+
+vfmaddps512_mask3 :: Ext.T (V16Float -> V16Float -> V16Float -> LLVM.Value I.Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Float))
+vfmaddps512_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmadd.ps.512"
+
+vfmaddps512_maskz :: Ext.T (V16Float -> V16Float -> V16Float -> LLVM.Value I.Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Float))
+vfmaddps512_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vfmadd.ps.512"
+
+vfmaddsubpd128_mask :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vfmaddsubpd128_mask = Ext.intrinsic ExtX86.avx512 "mask.vfmaddsub.pd.128"
+
+vfmaddsubpd128_mask3 :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vfmaddsubpd128_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmaddsub.pd.128"
+
+vfmaddsubpd128_maskz :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vfmaddsubpd128_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vfmaddsub.pd.128"
+
+vfmaddsubpd256_mask :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vfmaddsubpd256_mask = Ext.intrinsic ExtX86.avx512 "mask.vfmaddsub.pd.256"
+
+vfmaddsubpd256_mask3 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vfmaddsubpd256_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmaddsub.pd.256"
+
+vfmaddsubpd256_maskz :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vfmaddsubpd256_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vfmaddsub.pd.256"
+
+vfmaddsubpd512_mask :: Ext.T (V8Double -> V8Double -> V8Double -> LLVM.Value I.Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Double))
+vfmaddsubpd512_mask = Ext.intrinsic ExtX86.avx512 "mask.vfmaddsub.pd.512"
+
+vfmaddsubpd512_mask3 :: Ext.T (V8Double -> V8Double -> V8Double -> LLVM.Value I.Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Double))
+vfmaddsubpd512_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmaddsub.pd.512"
+
+vfmaddsubpd512_maskz :: Ext.T (V8Double -> V8Double -> V8Double -> LLVM.Value I.Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Double))
+vfmaddsubpd512_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vfmaddsub.pd.512"
+
+vfmaddsubps128_mask :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vfmaddsubps128_mask = Ext.intrinsic ExtX86.avx512 "mask.vfmaddsub.ps.128"
+
+vfmaddsubps128_mask3 :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vfmaddsubps128_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmaddsub.ps.128"
+
+vfmaddsubps128_maskz :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vfmaddsubps128_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vfmaddsub.ps.128"
+
+vfmaddsubps256_mask :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vfmaddsubps256_mask = Ext.intrinsic ExtX86.avx512 "mask.vfmaddsub.ps.256"
+
+vfmaddsubps256_mask3 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vfmaddsubps256_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmaddsub.ps.256"
+
+vfmaddsubps256_maskz :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vfmaddsubps256_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vfmaddsub.ps.256"
+
+vfmaddsubps512_mask :: Ext.T (V16Float -> V16Float -> V16Float -> LLVM.Value I.Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Float))
+vfmaddsubps512_mask = Ext.intrinsic ExtX86.avx512 "mask.vfmaddsub.ps.512"
+
+vfmaddsubps512_mask3 :: Ext.T (V16Float -> V16Float -> V16Float -> LLVM.Value I.Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Float))
+vfmaddsubps512_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmaddsub.ps.512"
+
+vfmaddsubps512_maskz :: Ext.T (V16Float -> V16Float -> V16Float -> LLVM.Value I.Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Float))
+vfmaddsubps512_maskz = Ext.intrinsic ExtX86.avx512 "maskz.vfmaddsub.ps.512"
+
+vfmsubpd128_mask3 :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vfmsubpd128_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmsub.pd.128"
+
+vfmsubpd256_mask3 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vfmsubpd256_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmsub.pd.256"
+
+vfmsubpd512_mask3 :: Ext.T (V8Double -> V8Double -> V8Double -> LLVM.Value I.Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Double))
+vfmsubpd512_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmsub.pd.512"
+
+vfmsubps128_mask3 :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vfmsubps128_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmsub.ps.128"
+
+vfmsubps256_mask3 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vfmsubps256_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmsub.ps.256"
+
+vfmsubps512_mask3 :: Ext.T (V16Float -> V16Float -> V16Float -> LLVM.Value I.Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Float))
+vfmsubps512_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmsub.ps.512"
+
+vfmsubaddpd128_mask3 :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vfmsubaddpd128_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmsubadd.pd.128"
+
+vfmsubaddpd256_mask3 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vfmsubaddpd256_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmsubadd.pd.256"
+
+vfmsubaddpd512_mask3 :: Ext.T (V8Double -> V8Double -> V8Double -> LLVM.Value I.Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Double))
+vfmsubaddpd512_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmsubadd.pd.512"
+
+vfmsubaddps128_mask3 :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vfmsubaddps128_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmsubadd.ps.128"
+
+vfmsubaddps256_mask3 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vfmsubaddps256_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmsubadd.ps.256"
+
+vfmsubaddps512_mask3 :: Ext.T (V16Float -> V16Float -> V16Float -> LLVM.Value I.Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Float))
+vfmsubaddps512_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfmsubadd.ps.512"
+
+vfnmaddpd128_mask :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vfnmaddpd128_mask = Ext.intrinsic ExtX86.avx512 "mask.vfnmadd.pd.128"
+
+vfnmaddpd256_mask :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vfnmaddpd256_mask = Ext.intrinsic ExtX86.avx512 "mask.vfnmadd.pd.256"
+
+vfnmaddpd512_mask :: Ext.T (V8Double -> V8Double -> V8Double -> LLVM.Value I.Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Double))
+vfnmaddpd512_mask = Ext.intrinsic ExtX86.avx512 "mask.vfnmadd.pd.512"
+
+vfnmaddps128_mask :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vfnmaddps128_mask = Ext.intrinsic ExtX86.avx512 "mask.vfnmadd.ps.128"
+
+vfnmaddps256_mask :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vfnmaddps256_mask = Ext.intrinsic ExtX86.avx512 "mask.vfnmadd.ps.256"
+
+vfnmaddps512_mask :: Ext.T (V16Float -> V16Float -> V16Float -> LLVM.Value I.Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Float))
+vfnmaddps512_mask = Ext.intrinsic ExtX86.avx512 "mask.vfnmadd.ps.512"
+
+vfnmsubpd128_mask :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vfnmsubpd128_mask = Ext.intrinsic ExtX86.avx512 "mask.vfnmsub.pd.128"
+
+vfnmsubpd128_mask3 :: Ext.T (V2Double -> V2Double -> V2Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V2Double))
+vfnmsubpd128_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfnmsub.pd.128"
+
+vfnmsubpd256_mask :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vfnmsubpd256_mask = Ext.intrinsic ExtX86.avx512 "mask.vfnmsub.pd.256"
+
+vfnmsubpd256_mask3 :: Ext.T (V4Double -> V4Double -> V4Double -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Double))
+vfnmsubpd256_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfnmsub.pd.256"
+
+vfnmsubpd512_mask :: Ext.T (V8Double -> V8Double -> V8Double -> LLVM.Value I.Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Double))
+vfnmsubpd512_mask = Ext.intrinsic ExtX86.avx512 "mask.vfnmsub.pd.512"
+
+vfnmsubpd512_mask3 :: Ext.T (V8Double -> V8Double -> V8Double -> LLVM.Value I.Int8 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V8Double))
+vfnmsubpd512_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfnmsub.pd.512"
+
+vfnmsubps128_mask :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vfnmsubps128_mask = Ext.intrinsic ExtX86.avx512 "mask.vfnmsub.ps.128"
+
+vfnmsubps128_mask3 :: Ext.T (V4Float -> V4Float -> V4Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V4Float))
+vfnmsubps128_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfnmsub.ps.128"
+
+vfnmsubps256_mask :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vfnmsubps256_mask = Ext.intrinsic ExtX86.avx512 "mask.vfnmsub.ps.256"
+
+vfnmsubps256_mask3 :: Ext.T (V8Float -> V8Float -> V8Float -> LLVM.Value I.Int8 -> LLVM.CodeGenFunction r (V8Float))
+vfnmsubps256_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfnmsub.ps.256"
+
+vfnmsubps512_mask :: Ext.T (V16Float -> V16Float -> V16Float -> LLVM.Value I.Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Float))
+vfnmsubps512_mask = Ext.intrinsic ExtX86.avx512 "mask.vfnmsub.ps.512"
+
+vfnmsubps512_mask3 :: Ext.T (V16Float -> V16Float -> V16Float -> LLVM.Value I.Int16 -> LLVM.Value I.Int32 -> LLVM.CodeGenFunction r (V16Float))
+vfnmsubps512_mask3 = Ext.intrinsic ExtX86.avx512 "mask3.vfnmsub.ps.512"
+
 
diff --git a/src/LLVM/Extra/ForeignPtr.hs b/src/LLVM/Extra/ForeignPtr.hs
deleted file mode 100644
--- a/src/LLVM/Extra/ForeignPtr.hs
+++ /dev/null
@@ -1,87 +0,0 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE FlexibleContexts #-}
-module LLVM.Extra.ForeignPtr
-   {-# DEPRECATED "It does not really belong here. Its functionality was moved to synthesizer-llvm." #-}
-   (
-   newInit, newParam,
-   new, with,
-   ) where
-
-import qualified LLVM.Extra.Memory as Memory
-import LLVM.Extra.Class (MakeValueTuple, ValueTuple, )
-
-import qualified Foreign.Marshal.Utils as Marshal
-import qualified Foreign.ForeignPtr as FPtr
-import qualified Foreign.Concurrent as FC
-import Foreign.Storable (Storable, poke, )
-import Foreign.Ptr (Ptr, FunPtr, )
-
-
-type Importer f = FunPtr f -> f
-
-foreign import ccall safe "dynamic" derefStartPtr ::
-   Importer (IO (Ptr a))
-
-newInit ::
-   FunPtr (Ptr a -> IO ()) ->
-   FunPtr (IO (Ptr a)) ->
-   IO (FPtr.ForeignPtr a)
-newInit stop start =
-   FPtr.newForeignPtr stop =<< derefStartPtr start
-
-
-foreign import ccall safe "dynamic" derefStartParamPtr ::
-   Importer (Ptr b -> IO (Ptr a))
-
-{-
-We cannot use 'bracket' when constructing lazy StorableVector,
-since this would mean that the temporary memory is freed immediately.
-Instead we must add a Finalizer to the ForeignPtr.
--}
-newParam ::
-   (Storable b, MakeValueTuple b, Memory.C (ValueTuple b)) =>
-   FunPtr (Ptr a -> IO ()) ->
-   FunPtr (Ptr (Memory.Struct (ValueTuple b)) -> IO (Ptr a)) ->
-   b -> IO (FPtr.ForeignPtr a)
-newParam stop start b =
-   FPtr.newForeignPtr stop =<<
-   Marshal.with b (derefStartParamPtr start . Memory.castStorablePtr)
-
-{-
-requires (Storable ap) constraint
-and we have no Storable instance for Struct
-
-new ::
-   (Storable a, MakeValueTuple a al, Memory.C al ap) =>
-   a -> IO (FPtr.ForeignPtr ap)
-new a = do
-   ptr <- FPtr.mallocForeignPtr
-   FPtr.withForeignPtr ptr (flip poke a . castPtr)
-   return ptr
--}
-
-{- |
-Adding the finalizer to a ForeignPtr seems to be the only way
-that warrants execution of the finalizer (not too early and not never).
-However, the normal ForeignPtr finalizers must be independent from Haskell runtime.
-In contrast to ForeignPtr finalizers,
-addFinalizer adds finalizers to boxes, that are optimized away.
-Thus finalizers are run too early or not at all.
-Concurrent.ForeignPtr and using threaded execution
-is the only way to get finalizers in Haskell IO.
--}
-new ::
-   Storable a =>
-   IO () ->
-   a -> IO (FPtr.ForeignPtr a)
-new finalizer a = do
-   ptr <- FPtr.mallocForeignPtr
-   FC.addForeignPtrFinalizer ptr finalizer
-   FPtr.withForeignPtr ptr (flip poke a)
-   return ptr
-
-with ::
-   (Storable a, MakeValueTuple a, Memory.C (ValueTuple a)) =>
-   FPtr.ForeignPtr a -> (Ptr (Memory.Struct (ValueTuple a)) -> IO b) -> IO b
-with fp func =
-   FPtr.withForeignPtr fp (func . Memory.castStorablePtr)
diff --git a/x86/cpuid/LLVM/Extra/ExtensionCheck/X86.hs b/x86/cpuid/LLVM/Extra/ExtensionCheck/X86.hs
--- a/x86/cpuid/LLVM/Extra/ExtensionCheck/X86.hs
+++ b/x86/cpuid/LLVM/Extra/ExtensionCheck/X86.hs
@@ -1,6 +1,6 @@
 module LLVM.Extra.ExtensionCheck.X86 (
-   sse1, sse2, sse3, ssse3, sse41, sse42, avx, avx2,
-   fma3, fma4, amd3dnow, amd3dnowa, aes,
+   sse1, sse2, sse3, ssse3, sse41, sse42, avx, avx2, avx512,
+   fma, amd3dnow, amd3dnowa, aes, sse4a,
    ) where
 
 import qualified LLVM.Extra.Extension as Ext
@@ -52,11 +52,11 @@
 avx2 :: Ext.Subtarget
 avx2 = subtarget "avx2" (\ _ecx _edx -> False)
 
-fma3 :: Ext.Subtarget
-fma3 = subtarget "fma3" (\ ecx _edx -> CPUID.testFlag CPUID.fma ecx)
+avx512 :: Ext.Subtarget
+avx512 = subtarget "avx512" (\ _ecx _edx -> False)
 
-fma4 :: Ext.Subtarget
-fma4 = subtarget "fma4" (\ _ecx _edx -> False)
+fma :: Ext.Subtarget
+fma = subtarget "fma" (\ ecx _edx -> CPUID.testFlag CPUID.fma ecx)
 
 amd3dnow :: Ext.Subtarget
 amd3dnow = subtarget "3dnow" (\ _ecx _edx -> False)
@@ -66,3 +66,6 @@
 
 aes :: Ext.Subtarget
 aes = subtarget "aesni" (\ _ecx _edx -> False)
+
+sse4a :: Ext.Subtarget
+sse4a = subtarget "sse4a" (\ _ecx _edx -> False)
diff --git a/x86/none/LLVM/Extra/ExtensionCheck/X86.hs b/x86/none/LLVM/Extra/ExtensionCheck/X86.hs
--- a/x86/none/LLVM/Extra/ExtensionCheck/X86.hs
+++ b/x86/none/LLVM/Extra/ExtensionCheck/X86.hs
@@ -1,6 +1,6 @@
 module LLVM.Extra.ExtensionCheck.X86 (
-   sse1, sse2, sse3, ssse3, sse41, sse42, avx, avx2,
-   fma3, fma4, amd3dnow, amd3dnowa, aes,
+   sse1, sse2, sse3, ssse3, sse41, sse42, avx, avx2, avx512,
+   fma, amd3dnow, amd3dnowa, aes, sse4a,
    ) where
 
 import qualified LLVM.Extra.Extension as Ext
@@ -36,11 +36,11 @@
 avx2 :: Ext.Subtarget
 avx2 = subtarget "avx2" False
 
-fma3 :: Ext.Subtarget
-fma3 = subtarget "fma3" False
+avx512 :: Ext.Subtarget
+avx512 = subtarget "avx512" False
 
-fma4 :: Ext.Subtarget
-fma4 = subtarget "fma4" False
+fma :: Ext.Subtarget
+fma = subtarget "fma" False
 
 amd3dnow :: Ext.Subtarget
 amd3dnow = subtarget "3dnow" False
@@ -50,3 +50,6 @@
 
 aes :: Ext.Subtarget
 aes = subtarget "aesni" False
+
+sse4a :: Ext.Subtarget
+sse4a = subtarget "sse4a" False
