diff options
| author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2018-02-27 22:44:41 +0000 |
|---|---|---|
| committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2018-02-27 22:44:41 +0000 |
| commit | 2373f8fcf3a4eae520228e2e753575953954f3dc (patch) | |
| tree | 91da3c93e5e5120013d5f5f3f259def085d8f1be /llvm/test | |
| parent | 2d79017d85a3e788cf32a8ce1602c2994bfc4ecb (diff) | |
| download | bcm5719-llvm-2373f8fcf3a4eae520228e2e753575953954f3dc.tar.gz bcm5719-llvm-2373f8fcf3a4eae520228e2e753575953954f3dc.zip | |
[Hexagon] Recognize more sign-extensions as inputs to 32x32-bit multiply
llvm-svn: 326263
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/Hexagon/mul64-sext.ll | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/Hexagon/mul64-sext.ll b/llvm/test/CodeGen/Hexagon/mul64-sext.ll index b16ae9932cc..d409e4de427 100644 --- a/llvm/test/CodeGen/Hexagon/mul64-sext.ll +++ b/llvm/test/CodeGen/Hexagon/mul64-sext.ll @@ -28,6 +28,34 @@ b2: ret i64 %v7 } +; CHECK-LABEL: mul_3 +; CHECK: r[[REG30:[0-9]+]] = sxth(r2) +; CHECK: r1:0 = mpy(r[[REG30]],r0) +; CHECK: jumpr r31 +define i64 @mul_3(i64 %a0, i64 %a1) #0 { +b2: + %v3 = shl i64 %a0, 32 + %v4 = ashr exact i64 %v3, 32 + %v5 = shl i64 %a1, 48 + %v6 = ashr exact i64 %v5, 48 + %v7 = mul nsw i64 %v6, %v4 + ret i64 %v7 +} + +; CHECK-LABEL: mul_4 +; CHECK: r[[REG40:[0-9]+]] = asrh(r2) +; CHECK: r1:0 = mpy(r1,r[[REG40]]) +; CHECK: jumpr r31 +define i64 @mul_4(i64 %a0, i64 %a1) #0 { +b2: + %v3 = ashr i64 %a0, 32 + %v4 = trunc i64 %a1 to i32 + %v5 = ashr i32 %v4, 16 + %v6 = sext i32 %v5 to i64 + %v7 = mul nsw i64 %v3, %v6 + ret i64 %v7 +} + ; CHECK-LABEL: mul_acc_1 ; CHECK: r5:4 += mpy(r2,r0) ; CHECK: r1:0 = combine(r5,r4) |

