diff options
author | Geoffrey Mainland <gmainlan@microsoft.com> | 2011-10-31 13:44:48 +0000 |
---|---|---|
committer | Geoffrey Mainland <gmainlan@microsoft.com> | 2013-02-01 22:00:23 +0000 |
commit | a544c72a17ca6627c68d11105f7eed2b3ed2e0ec (patch) | |
tree | dc2548c612aa68acbfcf0b0788fd5bc07a9a44a6 /compiler/llvmGen/Llvm/PpLlvm.hs | |
parent | d60df8246c208ba37da20a97c974d9318d8ec02b (diff) | |
download | haskell-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.hs | 14 |
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 |