@@ -1670,18 +1670,18 @@ define i32 @wobble(i32 %arg, i32 %bar) {
1670
1670
; CHECK-NEXT: [[TMP9:%.*]] = extractelement <4 x i32> [[TMP8]], i32 3
1671
1671
; CHECK-NEXT: [[TMP10:%.*]] = icmp eq <4 x i32> [[TMP8]], zeroinitializer
1672
1672
; CHECK-NEXT: [[TMP11:%.*]] = sext <4 x i1> [[TMP10]] to <4 x i32>
1673
- ; CHECK-NEXT: [[R1:%.*]] = add i32 [[ARG]], undef
1674
- ; CHECK-NEXT: [[R2:%.*]] = add i32 [[R1]], undef
1675
- ; CHECK-NEXT: [[R3:%.*]] = add i32 [[R2]], undef
1676
- ; CHECK-NEXT: [[R4:%.*]] = add i32 [[R3]], undef
1673
+ ; CHECK-NEXT: [[R1:%.*]] = add nsw i32 [[ARG]], undef
1674
+ ; CHECK-NEXT: [[R2:%.*]] = add nsw i32 [[R1]], undef
1675
+ ; CHECK-NEXT: [[R3:%.*]] = add nsw i32 [[R2]], undef
1676
+ ; CHECK-NEXT: [[R4:%.*]] = add nsw i32 [[R3]], undef
1677
1677
; CHECK-NEXT: [[RDX_SHUF:%.*]] = shufflevector <4 x i32> [[TMP11]], <4 x i32> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>
1678
1678
; CHECK-NEXT: [[BIN_RDX:%.*]] = add <4 x i32> [[TMP11]], [[RDX_SHUF]]
1679
1679
; CHECK-NEXT: [[RDX_SHUF1:%.*]] = shufflevector <4 x i32> [[BIN_RDX]], <4 x i32> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>
1680
1680
; CHECK-NEXT: [[BIN_RDX2:%.*]] = add <4 x i32> [[BIN_RDX]], [[RDX_SHUF1]]
1681
1681
; CHECK-NEXT: [[TMP12:%.*]] = extractelement <4 x i32> [[BIN_RDX2]], i32 0
1682
1682
; CHECK-NEXT: [[BIN_EXTRA:%.*]] = add i32 [[TMP12]], [[ARG]]
1683
1683
; CHECK-NEXT: [[BIN_EXTRA3:%.*]] = add i32 [[BIN_EXTRA]], [[TMP9]]
1684
- ; CHECK-NEXT: [[R5:%.*]] = add i32 [[R4]], undef
1684
+ ; CHECK-NEXT: [[R5:%.*]] = add nsw i32 [[R4]], undef
1685
1685
; CHECK-NEXT: ret i32 [[BIN_EXTRA3]]
1686
1686
;
1687
1687
; THRESHOLD-LABEL: @wobble(
@@ -1698,18 +1698,18 @@ define i32 @wobble(i32 %arg, i32 %bar) {
1698
1698
; THRESHOLD-NEXT: [[TMP9:%.*]] = extractelement <4 x i32> [[TMP8]], i32 3
1699
1699
; THRESHOLD-NEXT: [[TMP10:%.*]] = icmp eq <4 x i32> [[TMP8]], zeroinitializer
1700
1700
; THRESHOLD-NEXT: [[TMP11:%.*]] = sext <4 x i1> [[TMP10]] to <4 x i32>
1701
- ; THRESHOLD-NEXT: [[R1:%.*]] = add i32 [[ARG]], undef
1702
- ; THRESHOLD-NEXT: [[R2:%.*]] = add i32 [[R1]], undef
1703
- ; THRESHOLD-NEXT: [[R3:%.*]] = add i32 [[R2]], undef
1704
- ; THRESHOLD-NEXT: [[R4:%.*]] = add i32 [[R3]], undef
1701
+ ; THRESHOLD-NEXT: [[R1:%.*]] = add nsw i32 [[ARG]], undef
1702
+ ; THRESHOLD-NEXT: [[R2:%.*]] = add nsw i32 [[R1]], undef
1703
+ ; THRESHOLD-NEXT: [[R3:%.*]] = add nsw i32 [[R2]], undef
1704
+ ; THRESHOLD-NEXT: [[R4:%.*]] = add nsw i32 [[R3]], undef
1705
1705
; THRESHOLD-NEXT: [[RDX_SHUF:%.*]] = shufflevector <4 x i32> [[TMP11]], <4 x i32> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>
1706
1706
; THRESHOLD-NEXT: [[BIN_RDX:%.*]] = add <4 x i32> [[TMP11]], [[RDX_SHUF]]
1707
1707
; THRESHOLD-NEXT: [[RDX_SHUF1:%.*]] = shufflevector <4 x i32> [[BIN_RDX]], <4 x i32> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>
1708
1708
; THRESHOLD-NEXT: [[BIN_RDX2:%.*]] = add <4 x i32> [[BIN_RDX]], [[RDX_SHUF1]]
1709
1709
; THRESHOLD-NEXT: [[TMP12:%.*]] = extractelement <4 x i32> [[BIN_RDX2]], i32 0
1710
1710
; THRESHOLD-NEXT: [[BIN_EXTRA:%.*]] = add i32 [[TMP12]], [[ARG]]
1711
1711
; THRESHOLD-NEXT: [[BIN_EXTRA3:%.*]] = add i32 [[BIN_EXTRA]], [[TMP9]]
1712
- ; THRESHOLD-NEXT: [[R5:%.*]] = add i32 [[R4]], undef
1712
+ ; THRESHOLD-NEXT: [[R5:%.*]] = add nsw i32 [[R4]], undef
1713
1713
; THRESHOLD-NEXT: ret i32 [[BIN_EXTRA3]]
1714
1714
;
1715
1715
bb:
@@ -1725,11 +1725,11 @@ define i32 @wobble(i32 %arg, i32 %bar) {
1725
1725
%x4 = xor i32 %arg , %bar
1726
1726
%i4 = icmp eq i32 %x4 , 0
1727
1727
%s4 = sext i1 %i4 to i32
1728
- %r1 = add i32 %arg , %s1
1729
- %r2 = add i32 %r1 , %s2
1730
- %r3 = add i32 %r2 , %s3
1731
- %r4 = add i32 %r3 , %s4
1732
- %r5 = add i32 %r4 , %x4
1728
+ %r1 = add nsw i32 %arg , %s1
1729
+ %r2 = add nsw i32 %r1 , %s2
1730
+ %r3 = add nsw i32 %r2 , %s3
1731
+ %r4 = add nsw i32 %r3 , %s4
1732
+ %r5 = add nsw i32 %r4 , %x4
1733
1733
ret i32 %r5
1734
1734
}
1735
1735
0 commit comments