Skip to content

Commit 0610edf

Browse files
committed
update test cases
1 parent d878724 commit 0610edf

File tree

4 files changed

+20
-11
lines changed

4 files changed

+20
-11
lines changed

llvm/lib/CodeGen/CodeGenPrepare.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6504,7 +6504,16 @@ bool CodeGenPrepare::optimizeMulWithOverflow(Instruction *I, bool IsSigned,
65046504

65056505
// BB overflow.no:
65066506
Builder.SetInsertPoint(NoOverflowBB);
6507-
Value *Mul = Builder.CreateMul(LHS, RHS, "mul.overflow.no");
6507+
Value *ExtLoLHS, *ExtLoRHS;
6508+
if (IsSigned) {
6509+
ExtLoLHS = Builder.CreateSExt(LoLHS, Ty, "lo.lhs.ext");
6510+
ExtLoRHS = Builder.CreateSExt(LoRHS, Ty, "lo.rhs.ext");
6511+
} else {
6512+
ExtLoLHS = Builder.CreateZExt(LoLHS, Ty, "lo.lhs.ext");
6513+
ExtLoRHS = Builder.CreateZExt(LoRHS, Ty, "lo.rhs.ext");
6514+
}
6515+
6516+
Value *Mul = Builder.CreateMul(ExtLoLHS, ExtLoRHS, "mul.overflow.no");
65086517

65096518
// In overflow.no BB: we are sure that the overflow flag is false.
65106519
// So, if we found this pattern:

llvm/test/CodeGen/AArch64/i128-math.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ define i128 @u128_mul(i128 %x, i128 %y) {
261261

262262
define { i128, i8 } @u128_checked_mul(i128 %x, i128 %y) {
263263
; CHECK-LABEL: u128_checked_mul:
264-
; CHECK: // %bb.0: // %overflow.entry
264+
; CHECK: // %bb.0:
265265
; CHECK-NEXT: orr x8, x1, x3
266266
; CHECK-NEXT: cbz x8, .LBB17_2
267267
; CHECK-NEXT: // %bb.1: // %overflow
@@ -297,7 +297,7 @@ define { i128, i8 } @u128_checked_mul(i128 %x, i128 %y) {
297297

298298
define { i128, i8 } @u128_overflowing_mul(i128 %x, i128 %y) {
299299
; CHECK-LABEL: u128_overflowing_mul:
300-
; CHECK: // %bb.0: // %overflow.entry
300+
; CHECK: // %bb.0:
301301
; CHECK-NEXT: orr x8, x1, x3
302302
; CHECK-NEXT: cbz x8, .LBB18_2
303303
; CHECK-NEXT: // %bb.1: // %overflow
@@ -331,7 +331,7 @@ define { i128, i8 } @u128_overflowing_mul(i128 %x, i128 %y) {
331331

332332
define i128 @u128_saturating_mul(i128 %x, i128 %y) {
333333
; CHECK-LABEL: u128_saturating_mul:
334-
; CHECK: // %bb.0: // %overflow.entry
334+
; CHECK: // %bb.0:
335335
; CHECK-NEXT: orr x8, x1, x3
336336
; CHECK-NEXT: cbz x8, .LBB19_2
337337
; CHECK-NEXT: // %bb.1: // %overflow
@@ -379,7 +379,7 @@ define i128 @i128_mul(i128 %x, i128 %y) {
379379

380380
define { i128, i8 } @i128_checked_mul(i128 %x, i128 %y) {
381381
; CHECK-LABEL: i128_checked_mul:
382-
; CHECK: // %bb.0: // %overflow.entry
382+
; CHECK: // %bb.0:
383383
; CHECK-NEXT: eor x8, x3, x2, asr #63
384384
; CHECK-NEXT: eor x9, x1, x0, asr #63
385385
; CHECK-NEXT: orr x8, x9, x8
@@ -431,7 +431,7 @@ define { i128, i8 } @i128_checked_mul(i128 %x, i128 %y) {
431431

432432
define { i128, i8 } @i128_overflowing_mul(i128 %x, i128 %y) {
433433
; CHECK-LABEL: i128_overflowing_mul:
434-
; CHECK: // %bb.0: // %overflow.entry
434+
; CHECK: // %bb.0:
435435
; CHECK-NEXT: eor x8, x3, x2, asr #63
436436
; CHECK-NEXT: eor x9, x1, x0, asr #63
437437
; CHECK-NEXT: orr x8, x9, x8
@@ -481,7 +481,7 @@ define { i128, i8 } @i128_overflowing_mul(i128 %x, i128 %y) {
481481

482482
define i128 @i128_saturating_mul(i128 %x, i128 %y) {
483483
; CHECK-LABEL: i128_saturating_mul:
484-
; CHECK: // %bb.0: // %overflow.entry
484+
; CHECK: // %bb.0:
485485
; CHECK-NEXT: eor x8, x3, x2, asr #63
486486
; CHECK-NEXT: eor x9, x1, x0, asr #63
487487
; CHECK-NEXT: orr x8, x9, x8

llvm/test/CodeGen/AArch64/i128_with_overflow.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ cleanup:
223223

224224
define i128 @test_umul_i128(i128 noundef %x, i128 noundef %y) {
225225
; CHECK-LABEL: test_umul_i128:
226-
; CHECK: // %bb.0: // %overflow.entry
226+
; CHECK: // %bb.0: // %entry
227227
; CHECK-NEXT: orr x8, x1, x3
228228
; CHECK-NEXT: cbz x8, .LBB4_3
229229
; CHECK-NEXT: // %bb.1: // %overflow
@@ -277,7 +277,7 @@ cleanup:
277277

278278
define i128 @test_smul_i128(i128 noundef %x, i128 noundef %y) {
279279
; CHECK-LABEL: test_smul_i128:
280-
; CHECK: // %bb.0: // %overflow.entry
280+
; CHECK: // %bb.0: // %entry
281281
; CHECK-NEXT: eor x8, x3, x2, asr #63
282282
; CHECK-NEXT: eor x9, x1, x0, asr #63
283283
; CHECK-NEXT: orr x8, x9, x8

llvm/test/CodeGen/AArch64/umulo-128-legalisation-lowering.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
define { i128, i8 } @muloti_test(i128 %l, i128 %r) unnamed_addr #0 {
55
; AARCH-LABEL: muloti_test:
6-
; AARCH: // %bb.0: // %overflow.entry
6+
; AARCH: // %bb.0: // %start
77
; AARCH-NEXT: orr x8, x1, x3
88
; AARCH-NEXT: cbz x8, .LBB0_2
99
; AARCH-NEXT: // %bb.1: // %overflow
@@ -42,7 +42,7 @@ start:
4242

4343
define i128 @__muloti4(i128 %0, i128 %1, ptr nocapture nonnull writeonly align 4 %2) #2 {
4444
; AARCH-LABEL: __muloti4:
45-
; AARCH: // %bb.0: // %overflow.entry
45+
; AARCH: // %bb.0: // %Entry
4646
; AARCH-NEXT: eor x8, x3, x2, asr #63
4747
; AARCH-NEXT: eor x9, x1, x0, asr #63
4848
; AARCH-NEXT: str wzr, [x4]

0 commit comments

Comments
 (0)