Krzysztof Parzyszek | c83c267 | 2017-06-13 16:21:57 +0000 | [diff] [blame] | 1 | ; RUN: llc -march=hexagon < %s | FileCheck %s |
| 2 | |
| 3 | target triple = "hexagon" |
| 4 | |
| 5 | ; CHECK-LABEL: danny: |
Krzysztof Parzyszek | 6acecc9 | 2017-11-22 20:43:00 +0000 | [diff] [blame] | 6 | ; CHECK: r{{[0-9]+}} = mpy(r0,r1) |
Krzysztof Parzyszek | c83c267 | 2017-06-13 16:21:57 +0000 | [diff] [blame] | 7 | define i32 @danny(i32 %a0, i32 %a1) { |
| 8 | b2: |
| 9 | %v3 = sext i32 %a0 to i64 |
| 10 | %v4 = sext i32 %a1 to i64 |
| 11 | %v5 = mul nsw i64 %v3, %v4 |
| 12 | %v6 = ashr i64 %v5, 32 |
| 13 | %v7 = trunc i64 %v6 to i32 |
| 14 | ret i32 %v7 |
| 15 | } |
| 16 | |
| 17 | ; CHECK-LABEL: sammy: |
| 18 | ; CHECK: r{{[0-9]+}} = mpy(r0,r1) |
| 19 | define i32 @sammy(i32 %a0, i32 %a1) { |
| 20 | b2: |
| 21 | %v3 = sext i32 %a0 to i64 |
| 22 | %v4 = sext i32 %a1 to i64 |
| 23 | %v5 = mul nsw i64 %v3, %v4 |
| 24 | %v6 = lshr i64 %v5, 32 |
| 25 | %v7 = trunc i64 %v6 to i32 |
| 26 | ret i32 %v7 |
| 27 | } |