Skip to content

Commit d29f36e

Browse files
committed
Pre-commit test (NFC)
1 parent b1d2c62 commit d29f36e

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

llvm/test/Transforms/InstCombine/abs-intrinsic.ll

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -859,4 +859,80 @@ define i32 @abs_range_metadata(i32 %x) {
859859
%b = and i32 %a, 15
860860
ret i32 %b
861861
}
862+
862863
!1 = !{i32 0, i32 16}
864+
865+
define i32 @abs_diff(i32 %x, i32 %y) {
866+
; CHECK-LABEL: @abs_diff(
867+
; CHECK-NEXT: [[SUB:%.*]] = sub nsw i32 [[X:%.*]], [[Y:%.*]]
868+
; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X]], [[Y]]
869+
; CHECK-NEXT: [[SUB1:%.*]] = sub i32 0, [[SUB]]
870+
; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i32 [[SUB]], i32 [[SUB1]]
871+
; CHECK-NEXT: ret i32 [[COND]]
872+
;
873+
%sub = sub nsw i32 %x, %y
874+
%cmp = icmp sgt i32 %x, %y
875+
%sub1 = sub i32 0, %sub
876+
%cond = select i1 %cmp, i32 %sub, i32 %sub1
877+
ret i32 %cond
878+
}
879+
880+
define i32 @abs_diff_neg_no_nsw_neg(i32 %x, i32 %y) {
881+
; CHECK-LABEL: @abs_diff_neg_no_nsw_neg(
882+
; CHECK-NEXT: [[SUB:%.*]] = sub i32 [[X:%.*]], [[Y:%.*]]
883+
; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X]], [[Y]]
884+
; CHECK-NEXT: [[SUB1:%.*]] = sub i32 0, [[SUB]]
885+
; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i32 [[SUB]], i32 [[SUB1]]
886+
; CHECK-NEXT: ret i32 [[COND]]
887+
;
888+
%sub = sub i32 %x, %y
889+
%cmp = icmp sgt i32 %x, %y
890+
%sub1 = sub i32 0, %sub
891+
%cond = select i1 %cmp, i32 %sub, i32 %sub1
892+
ret i32 %cond
893+
}
894+
895+
define i32 @abs_diff_neg(i32 %x, i32 %y) {
896+
; CHECK-LABEL: @abs_diff_neg(
897+
; CHECK-NEXT: [[SUB:%.*]] = sub nsw i32 [[Y:%.*]], [[X:%.*]]
898+
; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X]], [[Y]]
899+
; CHECK-NEXT: [[SUB1:%.*]] = sub i32 0, [[SUB]]
900+
; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i32 [[SUB]], i32 [[SUB1]]
901+
; CHECK-NEXT: ret i32 [[COND]]
902+
;
903+
%sub = sub nsw i32 %y, %x
904+
%cmp = icmp sgt i32 %x, %y
905+
%sub1 = sub i32 0, %sub
906+
%cond = select i1 %cmp, i32 %sub, i32 %sub1
907+
ret i32 %cond
908+
}
909+
910+
define i32 @abs_diff_neg_no_nsw(i32 %x, i32 %y) {
911+
; CHECK-LABEL: @abs_diff_neg_no_nsw(
912+
; CHECK-NEXT: [[SUB:%.*]] = sub i32 [[Y:%.*]], [[X:%.*]]
913+
; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X]], [[Y]]
914+
; CHECK-NEXT: [[SUB1:%.*]] = sub i32 0, [[SUB]]
915+
; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i32 [[SUB]], i32 [[SUB1]]
916+
; CHECK-NEXT: ret i32 [[COND]]
917+
;
918+
%sub = sub i32 %y, %x
919+
%cmp = icmp sgt i32 %x, %y
920+
%sub1 = sub i32 0, %sub
921+
%cond = select i1 %cmp, i32 %sub, i32 %sub1
922+
ret i32 %cond
923+
}
924+
925+
define i32 @abs_diff_ge(i32 %x, i32 %y) {
926+
; CHECK-LABEL: @abs_diff_ge(
927+
; CHECK-NEXT: [[SUB:%.*]] = sub nsw i32 [[X:%.*]], [[Y:%.*]]
928+
; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp slt i32 [[X]], [[Y]]
929+
; CHECK-NEXT: [[SUB1:%.*]] = sub i32 0, [[SUB]]
930+
; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP_NOT]], i32 [[SUB1]], i32 [[SUB]]
931+
; CHECK-NEXT: ret i32 [[COND]]
932+
;
933+
%sub = sub nsw i32 %x, %y
934+
%cmp = icmp sge i32 %x, %y
935+
%sub1 = sub i32 0, %sub
936+
%cond = select i1 %cmp, i32 %sub, i32 %sub1
937+
ret i32 %cond
938+
}

0 commit comments

Comments
 (0)