llvm.org GIT mirror llvm / 4e1247b
AArch64: don't try to handle [SU]MUL_LOHI nodes We should set them to expand for now since there are no patterns dealing with them. Actually, there are no instructions either so I doubt they'll ever be acceptable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199265 91177308-0d34-0410-b5e6-96231b3b80d8 Tim Northover 6 years ago
2 changed file(s) with 17 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
149149 setOperationAction(ISD::SREM, MVT::i64, Expand);
150150 setOperationAction(ISD::SDIVREM, MVT::i32, Expand);
151151 setOperationAction(ISD::SDIVREM, MVT::i64, Expand);
152
153 setOperationAction(ISD::SMUL_LOHI, MVT::i32, Expand);
154 setOperationAction(ISD::SMUL_LOHI, MVT::i64, Expand);
155 setOperationAction(ISD::UMUL_LOHI, MVT::i32, Expand);
156 setOperationAction(ISD::UMUL_LOHI, MVT::i64, Expand);
152157
153158 setOperationAction(ISD::CTPOP, MVT::i32, Expand);
154159 setOperationAction(ISD::CTPOP, MVT::i64, Expand);
0 ; RUN: llc -mtriple=aarch64-linux-gnu %s -o - | FileCheck %s
1
2 define i128 @test_128bitmul(i128 %lhs, i128 %rhs) {
3 ; CHECK: test_128bitmul:
4 ; CHECK-DAG: umulh [[CARRY:x[0-9]+]], x0, x2
5 ; CHECK-DAG: madd [[PART1:x[0-9]+]], x0, x3, [[CARRY]]
6 ; CHECK: madd x1, x1, x2, [[PART1]]
7 ; CHECK: mul x0, x0, x2
8
9 %prod = mul i128 %lhs, %rhs
10 ret i128 %prod
11 }