LlvmCodeGen: add support for MO_U_Mul2 CallishMachOp
authorMichal Terepeta <michal.terepeta@gmail.com>
Mon, 20 Jul 2015 13:43:31 +0000 (15:43 +0200)
committerBen Gamari <ben@smart-cactus.org>
Mon, 20 Jul 2015 14:43:34 +0000 (16:43 +0200)
commit82ffc80df573512f788524c4616db3c08fc9f125
treebf35684068e0376bb30013d22288a81966427965
parent029367e5894d4ac3ea3845f39f2cc1b5a6a9fac1
LlvmCodeGen: add support for MO_U_Mul2 CallishMachOp

This adds support MO_U_Mul2 to the LLVM backend by simply using 'mul'
instruction but operating at twice the bit width (e.g., for 64 bit
words we will generate mul that operates on 128 bits and then extract
the two 64 bit values for the result of the CallishMachOp).

Test Plan: validate

Reviewers: rwbarton, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1068

GHC Trac Issues: #9430
compiler/codeGen/StgCmmPrim.hs
compiler/llvmGen/LlvmCodeGen/CodeGen.hs
testsuite/tests/primops/should_run/T9430.hs