summaryrefslogtreecommitdiff
path: root/compiler/llvmGen/Llvm/PpLlvm.hs
diff options
context:
space:
mode:
authorGeoffrey Mainland <gmainlan@microsoft.com>2011-10-31 13:44:48 +0000
committerGeoffrey Mainland <gmainlan@microsoft.com>2013-02-01 22:00:23 +0000
commita544c72a17ca6627c68d11105f7eed2b3ed2e0ec (patch)
treedc2548c612aa68acbfcf0b0788fd5bc07a9a44a6 /compiler/llvmGen/Llvm/PpLlvm.hs
parentd60df8246c208ba37da20a97c974d9318d8ec02b (diff)
downloadhaskell-a544c72a17ca6627c68d11105f7eed2b3ed2e0ec.tar.gz
Add support for LLVM vectors.
This patch adds support for LLVM vectors and vector operations to our internal LLVM abstract syntax data types.
Diffstat (limited to 'compiler/llvmGen/Llvm/PpLlvm.hs')
-rw-r--r--compiler/llvmGen/Llvm/PpLlvm.hs14
1 files changed, 14 insertions, 0 deletions
diff --git a/compiler/llvmGen/Llvm/PpLlvm.hs b/compiler/llvmGen/Llvm/PpLlvm.hs
index 2b2725d187..2d4be3f8d0 100644
--- a/compiler/llvmGen/Llvm/PpLlvm.hs
+++ b/compiler/llvmGen/Llvm/PpLlvm.hs
@@ -230,6 +230,8 @@ ppLlvmExpression expr
Call tp fp args attrs -> ppCall tp fp args attrs
Cast op from to -> ppCast op from to
Compare op left right -> ppCmpOp op left right
+ Extract vec idx -> ppExtract vec idx
+ Insert vec elt idx -> ppInsert vec elt idx
GetElemPtr inb ptr indexes -> ppGetElementPtr inb ptr indexes
Load ptr -> ppLoad ptr
Malloc tp amount -> ppMalloc tp amount
@@ -383,6 +385,18 @@ ppAsm asm constraints rty vars sideeffect alignstack =
in text "call" <+> rty' <+> text "asm" <+> side <+> align <+> asm' <> comma
<+> cons <> vars'
+ppExtract :: LlvmVar -> LlvmVar -> SDoc
+ppExtract vec idx =
+ text "extractelement"
+ <+> texts (getVarType vec) <+> text (getName vec) <> comma
+ <+> texts idx
+
+ppInsert :: LlvmVar -> LlvmVar -> LlvmVar -> SDoc
+ppInsert vec elt idx =
+ text "insertelement"
+ <+> texts (getVarType vec) <+> text (getName vec) <> comma
+ <+> texts (getVarType elt) <+> text (getName elt) <> comma
+ <+> texts idx
ppMetaStatement :: [MetaData] -> LlvmStatement -> SDoc
ppMetaStatement meta stmt = ppLlvmStatement stmt <> ppMetas meta