Skip to content

Commit 3830f4c

Browse files
committed
[InstCombine] Add pre-commit tests. NFC.
1 parent 0ba5958 commit 3830f4c

File tree

1 file changed

+106
-0
lines changed
  • llvm/test/Transforms/InstCombine

1 file changed

+106
-0
lines changed

llvm/test/Transforms/InstCombine/icmp.ll

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1900,6 +1900,112 @@ define i1 @icmp_add1_sle(i32 %x, i32 %y) {
19001900
ret i1 %cmp
19011901
}
19021902

1903+
define i1 @icmp_slt_offset_with_common_divisor(i64 %x, i64 %y) {
1904+
; CHECK-LABEL: @icmp_slt_offset_with_common_divisor(
1905+
; CHECK-NEXT: [[SHLX:%.*]] = shl i64 [[X:%.*]], 4
1906+
; CHECK-NEXT: [[SHLY:%.*]] = shl i64 [[Y:%.*]], 4
1907+
; CHECK-NEXT: [[SHLX_OFFSET:%.*]] = add nsw i64 [[SHLX]], -16
1908+
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i64 [[SHLX_OFFSET]], [[SHLY]]
1909+
; CHECK-NEXT: ret i1 [[CMP]]
1910+
;
1911+
%shlx = shl i64 %x, 4
1912+
%shly = shl i64 %y, 4
1913+
%shlx_offset = add nsw i64 %shlx, -16
1914+
%cmp = icmp slt i64 %shlx_offset, %shly
1915+
ret i1 %cmp
1916+
}
1917+
1918+
define i1 @icmp_slt_offset_with_smaller_common_divisor(i64 %x, i64 %y) {
1919+
; CHECK-LABEL: @icmp_slt_offset_with_smaller_common_divisor(
1920+
; CHECK-NEXT: [[SHLX:%.*]] = shl i64 [[X:%.*]], 4
1921+
; CHECK-NEXT: [[SHLY:%.*]] = shl i64 [[Y:%.*]], 4
1922+
; CHECK-NEXT: [[SHLX_OFFSET:%.*]] = add nsw i64 [[SHLX]], -8
1923+
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i64 [[SHLX_OFFSET]], [[SHLY]]
1924+
; CHECK-NEXT: ret i1 [[CMP]]
1925+
;
1926+
%shlx = shl i64 %x, 4
1927+
%shly = shl i64 %y, 4
1928+
%shlx_offset = add nsw i64 %shlx, -8
1929+
%cmp = icmp slt i64 %shlx_offset, %shly
1930+
ret i1 %cmp
1931+
}
1932+
1933+
define i1 @icmp_sle_offset_with_common_divisor(i64 %x, i64 %y) {
1934+
; CHECK-LABEL: @icmp_sle_offset_with_common_divisor(
1935+
; CHECK-NEXT: [[SHLX:%.*]] = shl i64 [[X:%.*]], 4
1936+
; CHECK-NEXT: [[SHLY:%.*]] = shl i64 [[Y:%.*]], 4
1937+
; CHECK-NEXT: [[SHLX_OFFSET:%.*]] = add nsw i64 [[SHLX]], 16
1938+
; CHECK-NEXT: [[CMP:%.*]] = icmp sle i64 [[SHLX_OFFSET]], [[SHLY]]
1939+
; CHECK-NEXT: ret i1 [[CMP]]
1940+
;
1941+
%shlx = shl i64 %x, 4
1942+
%shly = shl i64 %y, 4
1943+
%shlx_offset = add nsw i64 %shlx, 16
1944+
%cmp = icmp sle i64 %shlx_offset, %shly
1945+
ret i1 %cmp
1946+
}
1947+
1948+
define i1 @icmp_ule_offset_with_common_divisor(i64 %x, i64 %y) {
1949+
; CHECK-LABEL: @icmp_ule_offset_with_common_divisor(
1950+
; CHECK-NEXT: [[SHLX:%.*]] = shl i64 [[X:%.*]], 4
1951+
; CHECK-NEXT: [[SHLY:%.*]] = shl i64 [[Y:%.*]], 4
1952+
; CHECK-NEXT: [[SHLX_OFFSET:%.*]] = add nuw i64 [[SHLX]], 16
1953+
; CHECK-NEXT: [[CMP:%.*]] = icmp ule i64 [[SHLX_OFFSET]], [[SHLY]]
1954+
; CHECK-NEXT: ret i1 [[CMP]]
1955+
;
1956+
%shlx = shl i64 %x, 4
1957+
%shly = shl i64 %y, 4
1958+
%shlx_offset = add nuw i64 %shlx, 16
1959+
%cmp = icmp ule i64 %shlx_offset, %shly
1960+
ret i1 %cmp
1961+
}
1962+
1963+
; TODO: Handle non-power-of-2 divisors
1964+
define i1 @icmp_ule_offset_with_common_non_pow2_divisor(i64 %x, i64 %y) {
1965+
; CHECK-LABEL: @icmp_ule_offset_with_common_non_pow2_divisor(
1966+
; CHECK-NEXT: [[MULX:%.*]] = mul nuw i64 [[X:%.*]], 7
1967+
; CHECK-NEXT: [[MULY:%.*]] = mul nuw i64 [[Y:%.*]], 7
1968+
; CHECK-NEXT: [[MULX_OFFSET:%.*]] = add nuw i64 [[MULX]], 7
1969+
; CHECK-NEXT: [[CMP:%.*]] = icmp ule i64 [[MULX_OFFSET]], [[MULY]]
1970+
; CHECK-NEXT: ret i1 [[CMP]]
1971+
;
1972+
%mulx = mul nuw i64 %x, 7
1973+
%muly = mul nuw i64 %y, 7
1974+
%mulx_offset = add nuw i64 %mulx, 7
1975+
%cmp = icmp ule i64 %mulx_offset, %muly
1976+
ret i1 %cmp
1977+
}
1978+
1979+
define i1 @neg_icmp_slt_offset_without_common_divisor(i64 %x, i64 %y) {
1980+
; CHECK-LABEL: @neg_icmp_slt_offset_without_common_divisor(
1981+
; CHECK-NEXT: [[SHLX:%.*]] = shl i64 [[X:%.*]], 4
1982+
; CHECK-NEXT: [[SHLY:%.*]] = shl i64 [[Y:%.*]], 4
1983+
; CHECK-NEXT: [[SHLX_OFFSET:%.*]] = add nsw i64 [[SHLX]], -32
1984+
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i64 [[SHLX_OFFSET]], [[SHLY]]
1985+
; CHECK-NEXT: ret i1 [[CMP]]
1986+
;
1987+
%shlx = shl i64 %x, 4
1988+
%shly = shl i64 %y, 4
1989+
%shlx_offset = add nsw i64 %shlx, -32
1990+
%cmp = icmp slt i64 %shlx_offset, %shly
1991+
ret i1 %cmp
1992+
}
1993+
1994+
define i1 @neg_icmp_slt_offset_with_wrong_sign(i64 %x, i64 %y) {
1995+
; CHECK-LABEL: @neg_icmp_slt_offset_with_wrong_sign(
1996+
; CHECK-NEXT: [[SHLX:%.*]] = shl i64 [[X:%.*]], 4
1997+
; CHECK-NEXT: [[SHLY:%.*]] = shl i64 [[Y:%.*]], 4
1998+
; CHECK-NEXT: [[SHLX_OFFSET:%.*]] = add nsw i64 [[SHLX]], 16
1999+
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i64 [[SHLX_OFFSET]], [[SHLY]]
2000+
; CHECK-NEXT: ret i1 [[CMP]]
2001+
;
2002+
%shlx = shl i64 %x, 4
2003+
%shly = shl i64 %y, 4
2004+
%shlx_offset = add nsw i64 %shlx, 16
2005+
%cmp = icmp slt i64 %shlx_offset, %shly
2006+
ret i1 %cmp
2007+
}
2008+
19032009
define i1 @icmp_add20_sge_add57(i32 %x, i32 %y) {
19042010
; CHECK-LABEL: @icmp_add20_sge_add57(
19052011
; CHECK-NEXT: [[TMP1:%.*]] = add nsw i32 [[Y:%.*]], 37

0 commit comments

Comments
 (0)