Skip to content

Commit 32dd914

Browse files
committed
[InstCombine][tests] add tests for signed icmp with constant and offset; NFC
1 parent a2c5c56 commit 32dd914

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed

llvm/test/Transforms/InstCombine/icmp-add.ll

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -839,3 +839,95 @@ define i1 @ult_wrong_offset(i8 %a) {
839839
%ov = icmp ult i8 %t, 123
840840
ret i1 %ov
841841
}
842+
843+
define i1 @sgt_offset(i8 %a) {
844+
; CHECK-LABEL: @sgt_offset(
845+
; CHECK-NEXT: [[T:%.*]] = add i8 [[A:%.*]], -6
846+
; CHECK-NEXT: [[OV:%.*]] = icmp sgt i8 [[T]], -7
847+
; CHECK-NEXT: ret i1 [[OV]]
848+
;
849+
%t = add i8 %a, -6
850+
%ov = icmp sgt i8 %t, -7
851+
ret i1 %ov
852+
}
853+
854+
define i1 @sgt_offset_use(i32 %a) {
855+
; CHECK-LABEL: @sgt_offset_use(
856+
; CHECK-NEXT: [[T:%.*]] = add i32 [[A:%.*]], 42
857+
; CHECK-NEXT: call void @use(i32 [[T]])
858+
; CHECK-NEXT: [[OV:%.*]] = icmp sgt i32 [[T]], 41
859+
; CHECK-NEXT: ret i1 [[OV]]
860+
;
861+
%t = add i32 %a, 42
862+
call void @use(i32 %t)
863+
%ov = icmp sgt i32 %t, 41
864+
ret i1 %ov
865+
}
866+
867+
define <2 x i1> @sgt_offset_splat(<2 x i5> %a) {
868+
; CHECK-LABEL: @sgt_offset_splat(
869+
; CHECK-NEXT: [[T:%.*]] = add <2 x i5> [[A:%.*]], <i5 9, i5 9>
870+
; CHECK-NEXT: [[OV:%.*]] = icmp sgt <2 x i5> [[T]], <i5 8, i5 8>
871+
; CHECK-NEXT: ret <2 x i1> [[OV]]
872+
;
873+
%t = add <2 x i5> %a, <i5 9, i5 9>
874+
%ov = icmp sgt <2 x i5> %t, <i5 8, i5 8>
875+
ret <2 x i1> %ov
876+
}
877+
878+
define i1 @sgt_wrong_offset(i8 %a) {
879+
; CHECK-LABEL: @sgt_wrong_offset(
880+
; CHECK-NEXT: [[T:%.*]] = add i8 [[A:%.*]], -7
881+
; CHECK-NEXT: [[OV:%.*]] = icmp sgt i8 [[T]], -7
882+
; CHECK-NEXT: ret i1 [[OV]]
883+
;
884+
%t = add i8 %a, -7
885+
%ov = icmp sgt i8 %t, -7
886+
ret i1 %ov
887+
}
888+
889+
define i1 @slt_offset(i8 %a) {
890+
; CHECK-LABEL: @slt_offset(
891+
; CHECK-NEXT: [[T:%.*]] = add i8 [[A:%.*]], -6
892+
; CHECK-NEXT: [[OV:%.*]] = icmp slt i8 [[T]], -6
893+
; CHECK-NEXT: ret i1 [[OV]]
894+
;
895+
%t = add i8 %a, -6
896+
%ov = icmp slt i8 %t, -6
897+
ret i1 %ov
898+
}
899+
900+
define i1 @slt_offset_use(i32 %a) {
901+
; CHECK-LABEL: @slt_offset_use(
902+
; CHECK-NEXT: [[T:%.*]] = add i32 [[A:%.*]], 42
903+
; CHECK-NEXT: call void @use(i32 [[T]])
904+
; CHECK-NEXT: [[OV:%.*]] = icmp slt i32 [[T]], 42
905+
; CHECK-NEXT: ret i1 [[OV]]
906+
;
907+
%t = add i32 %a, 42
908+
call void @use(i32 %t)
909+
%ov = icmp slt i32 %t, 42
910+
ret i1 %ov
911+
}
912+
913+
define <2 x i1> @slt_offset_splat(<2 x i5> %a) {
914+
; CHECK-LABEL: @slt_offset_splat(
915+
; CHECK-NEXT: [[T:%.*]] = add <2 x i5> [[A:%.*]], <i5 9, i5 9>
916+
; CHECK-NEXT: [[OV:%.*]] = icmp slt <2 x i5> [[T]], <i5 9, i5 9>
917+
; CHECK-NEXT: ret <2 x i1> [[OV]]
918+
;
919+
%t = add <2 x i5> %a, <i5 9, i5 9>
920+
%ov = icmp slt <2 x i5> %t, <i5 9, i5 9>
921+
ret <2 x i1> %ov
922+
}
923+
924+
define i1 @slt_wrong_offset(i8 %a) {
925+
; CHECK-LABEL: @slt_wrong_offset(
926+
; CHECK-NEXT: [[T:%.*]] = add i8 [[A:%.*]], -6
927+
; CHECK-NEXT: [[OV:%.*]] = icmp slt i8 [[T]], -7
928+
; CHECK-NEXT: ret i1 [[OV]]
929+
;
930+
%t = add i8 %a, -6
931+
%ov = icmp slt i8 %t, -7
932+
ret i1 %ov
933+
}

0 commit comments

Comments
 (0)