summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/lang/cpp
diff options
context:
space:
mode:
authorSilviu Baranga <silviu.baranga@arm.com>2016-02-04 16:47:09 +0000
committerSilviu Baranga <silviu.baranga@arm.com>2016-02-04 16:47:09 +0000
commit33b3bd17dd1cc6a00de7ff267b466909dfba186d (patch)
tree37754da1f758087b3473e43125b0a5770679a273 /lldb/packages/Python/lldbsuite/test/lang/cpp
parente4dff62f64082770ac35bf556142b89e8d00d500 (diff)
downloadbcm5719-llvm-33b3bd17dd1cc6a00de7ff267b466909dfba186d.tar.gz
bcm5719-llvm-33b3bd17dd1cc6a00de7ff267b466909dfba186d.zip
[AArch64] Multiply extended 32-bit ints with `[U|S]MADDL'
During instruction selection, the AArch64 backend can recognise the following pattern and generate an [U|S]MADDL instruction, i.e. a multiply of two 32-bit operands with a 64-bit result: (mul (sext i32), (sext i32)) However, when one of the operands is constant, the sign extension gets folded into the constant in SelectionDAG::getNode(). This means that the instruction selection sees this: (mul (sext i32), i64) ...which doesn't match the pattern. Sign-extension and 64-bit multiply instructions are generated, which are slower than one 32-bit multiply. Add a pattern to match this and generate the correct instruction, for both signed and unsigned multiplies. Patch by Chris Diamand! llvm-svn: 259800
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lang/cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud