Skip to content

Commit 4b89339

Browse files
authored
AMDGPU: Reorganize fmed3 intrinsic instcombine tests (#139498)
1 parent 3c03108 commit 4b89339

File tree

3 files changed

+861
-823
lines changed

3 files changed

+861
-823
lines changed

llvm/test/Transforms/InstCombine/AMDGPU/amdgcn-intrinsics.ll

Lines changed: 0 additions & 294 deletions
Original file line numberDiff line numberDiff line change
@@ -1851,300 +1851,6 @@ define void @exp_compr_disabled_inputs_to_undef(<2 x half> %xy, <2 x half> %zw)
18511851
ret void
18521852
}
18531853

1854-
; --------------------------------------------------------------------
1855-
; llvm.amdgcn.fmed3
1856-
; --------------------------------------------------------------------
1857-
1858-
declare float @llvm.amdgcn.fmed3.f32(float, float, float) nounwind readnone
1859-
1860-
define float @fmed3_f32(float %x, float %y, float %z) {
1861-
; CHECK-LABEL: @fmed3_f32(
1862-
; CHECK-NEXT: [[MED3:%.*]] = call float @llvm.amdgcn.fmed3.f32(float [[X:%.*]], float [[Y:%.*]], float [[Z:%.*]])
1863-
; CHECK-NEXT: ret float [[MED3]]
1864-
;
1865-
%med3 = call float @llvm.amdgcn.fmed3.f32(float %x, float %y, float %z)
1866-
ret float %med3
1867-
}
1868-
1869-
define float @fmed3_canonicalize_x_c0_c1_f32(float %x) {
1870-
; CHECK-LABEL: @fmed3_canonicalize_x_c0_c1_f32(
1871-
; CHECK-NEXT: [[MED3:%.*]] = call float @llvm.amdgcn.fmed3.f32(float [[X:%.*]], float 0.000000e+00, float 1.000000e+00)
1872-
; CHECK-NEXT: ret float [[MED3]]
1873-
;
1874-
%med3 = call float @llvm.amdgcn.fmed3.f32(float %x, float 0.0, float 1.0)
1875-
ret float %med3
1876-
}
1877-
1878-
define float @fmed3_canonicalize_c0_x_c1_f32(float %x) {
1879-
; CHECK-LABEL: @fmed3_canonicalize_c0_x_c1_f32(
1880-
; CHECK-NEXT: [[MED3:%.*]] = call float @llvm.amdgcn.fmed3.f32(float [[X:%.*]], float 0.000000e+00, float 1.000000e+00)
1881-
; CHECK-NEXT: ret float [[MED3]]
1882-
;
1883-
%med3 = call float @llvm.amdgcn.fmed3.f32(float 0.0, float %x, float 1.0)
1884-
ret float %med3
1885-
}
1886-
1887-
define float @fmed3_canonicalize_c0_c1_x_f32(float %x) {
1888-
; CHECK-LABEL: @fmed3_canonicalize_c0_c1_x_f32(
1889-
; CHECK-NEXT: [[MED3:%.*]] = call float @llvm.amdgcn.fmed3.f32(float [[X:%.*]], float 0.000000e+00, float 1.000000e+00)
1890-
; CHECK-NEXT: ret float [[MED3]]
1891-
;
1892-
%med3 = call float @llvm.amdgcn.fmed3.f32(float 0.0, float 1.0, float %x)
1893-
ret float %med3
1894-
}
1895-
1896-
define float @fmed3_canonicalize_x_y_c_f32(float %x, float %y) {
1897-
; CHECK-LABEL: @fmed3_canonicalize_x_y_c_f32(
1898-
; CHECK-NEXT: [[MED3:%.*]] = call float @llvm.amdgcn.fmed3.f32(float [[X:%.*]], float [[Y:%.*]], float 1.000000e+00)
1899-
; CHECK-NEXT: ret float [[MED3]]
1900-
;
1901-
%med3 = call float @llvm.amdgcn.fmed3.f32(float %x, float %y, float 1.0)
1902-
ret float %med3
1903-
}
1904-
1905-
define float @fmed3_canonicalize_x_c_y_f32(float %x, float %y) {
1906-
; CHECK-LABEL: @fmed3_canonicalize_x_c_y_f32(
1907-
; CHECK-NEXT: [[MED3:%.*]] = call float @llvm.amdgcn.fmed3.f32(float [[X:%.*]], float [[Y:%.*]], float 1.000000e+00)
1908-
; CHECK-NEXT: ret float [[MED3]]
1909-
;
1910-
%med3 = call float @llvm.amdgcn.fmed3.f32(float %x, float 1.0, float %y)
1911-
ret float %med3
1912-
}
1913-
1914-
define float @fmed3_canonicalize_c_x_y_f32(float %x, float %y) {
1915-
; CHECK-LABEL: @fmed3_canonicalize_c_x_y_f32(
1916-
; CHECK-NEXT: [[MED3:%.*]] = call float @llvm.amdgcn.fmed3.f32(float [[X:%.*]], float [[Y:%.*]], float 1.000000e+00)
1917-
; CHECK-NEXT: ret float [[MED3]]
1918-
;
1919-
%med3 = call float @llvm.amdgcn.fmed3.f32(float 1.0, float %x, float %y)
1920-
ret float %med3
1921-
}
1922-
1923-
define float @fmed3_undef_x_y_f32(float %x, float %y) {
1924-
; CHECK-LABEL: @fmed3_undef_x_y_f32(
1925-
; CHECK-NEXT: [[MED3:%.*]] = call float @llvm.minnum.f32(float [[X:%.*]], float [[Y:%.*]])
1926-
; CHECK-NEXT: ret float [[MED3]]
1927-
;
1928-
%med3 = call float @llvm.amdgcn.fmed3.f32(float undef, float %x, float %y)
1929-
ret float %med3
1930-
}
1931-
1932-
define float @fmed3_fmf_undef_x_y_f32(float %x, float %y) {
1933-
; CHECK-LABEL: @fmed3_fmf_undef_x_y_f32(
1934-
; CHECK-NEXT: [[MED3:%.*]] = call nnan float @llvm.minnum.f32(float [[X:%.*]], float [[Y:%.*]])
1935-
; CHECK-NEXT: ret float [[MED3]]
1936-
;
1937-
%med3 = call nnan float @llvm.amdgcn.fmed3.f32(float undef, float %x, float %y)
1938-
ret float %med3
1939-
}
1940-
1941-
define float @fmed3_x_undef_y_f32(float %x, float %y) {
1942-
; CHECK-LABEL: @fmed3_x_undef_y_f32(
1943-
; CHECK-NEXT: [[MED3:%.*]] = call float @llvm.minnum.f32(float [[X:%.*]], float [[Y:%.*]])
1944-
; CHECK-NEXT: ret float [[MED3]]
1945-
;
1946-
%med3 = call float @llvm.amdgcn.fmed3.f32(float %x, float undef, float %y)
1947-
ret float %med3
1948-
}
1949-
1950-
define float @fmed3_x_y_undef_f32(float %x, float %y) {
1951-
; CHECK-LABEL: @fmed3_x_y_undef_f32(
1952-
; CHECK-NEXT: [[MED3:%.*]] = call float @llvm.maxnum.f32(float [[X:%.*]], float [[Y:%.*]])
1953-
; CHECK-NEXT: ret float [[MED3]]
1954-
;
1955-
%med3 = call float @llvm.amdgcn.fmed3.f32(float %x, float %y, float undef)
1956-
ret float %med3
1957-
}
1958-
1959-
define float @fmed3_qnan0_x_y_f32(float %x, float %y) {
1960-
; CHECK-LABEL: @fmed3_qnan0_x_y_f32(
1961-
; CHECK-NEXT: [[MED3:%.*]] = call float @llvm.minnum.f32(float [[X:%.*]], float [[Y:%.*]])
1962-
; CHECK-NEXT: ret float [[MED3]]
1963-
;
1964-
%med3 = call float @llvm.amdgcn.fmed3.f32(float 0x7FF8000000000000, float %x, float %y)
1965-
ret float %med3
1966-
}
1967-
1968-
define float @fmed3_x_qnan0_y_f32(float %x, float %y) {
1969-
; CHECK-LABEL: @fmed3_x_qnan0_y_f32(
1970-
; CHECK-NEXT: [[MED3:%.*]] = call float @llvm.minnum.f32(float [[X:%.*]], float [[Y:%.*]])
1971-
; CHECK-NEXT: ret float [[MED3]]
1972-
;
1973-
%med3 = call float @llvm.amdgcn.fmed3.f32(float %x, float 0x7FF8000000000000, float %y)
1974-
ret float %med3
1975-
}
1976-
1977-
define float @fmed3_x_y_qnan0_f32(float %x, float %y) {
1978-
; CHECK-LABEL: @fmed3_x_y_qnan0_f32(
1979-
; CHECK-NEXT: [[MED3:%.*]] = call float @llvm.maxnum.f32(float [[X:%.*]], float [[Y:%.*]])
1980-
; CHECK-NEXT: ret float [[MED3]]
1981-
;
1982-
%med3 = call float @llvm.amdgcn.fmed3.f32(float %x, float %y, float 0x7FF8000000000000)
1983-
ret float %med3
1984-
}
1985-
1986-
define float @fmed3_qnan1_x_y_f32(float %x, float %y) {
1987-
; CHECK-LABEL: @fmed3_qnan1_x_y_f32(
1988-
; CHECK-NEXT: [[MED3:%.*]] = call float @llvm.minnum.f32(float [[X:%.*]], float [[Y:%.*]])
1989-
; CHECK-NEXT: ret float [[MED3]]
1990-
;
1991-
%med3 = call float @llvm.amdgcn.fmed3.f32(float 0x7FF8000100000000, float %x, float %y)
1992-
ret float %med3
1993-
}
1994-
1995-
; This can return any of the qnans.
1996-
define float @fmed3_qnan0_qnan1_qnan2_f32(float %x, float %y) {
1997-
; CHECK-LABEL: @fmed3_qnan0_qnan1_qnan2_f32(
1998-
; CHECK-NEXT: ret float 0x7FF8030000000000
1999-
;
2000-
%med3 = call float @llvm.amdgcn.fmed3.f32(float 0x7FF8000100000000, float 0x7FF8002000000000, float 0x7FF8030000000000)
2001-
ret float %med3
2002-
}
2003-
2004-
define float @fmed3_constant_src0_0_f32(float %x, float %y) {
2005-
; CHECK-LABEL: @fmed3_constant_src0_0_f32(
2006-
; CHECK-NEXT: ret float 5.000000e-01
2007-
;
2008-
%med3 = call float @llvm.amdgcn.fmed3.f32(float 0.5, float -1.0, float 4.0)
2009-
ret float %med3
2010-
}
2011-
2012-
define float @fmed3_constant_src0_1_f32(float %x, float %y) {
2013-
; CHECK-LABEL: @fmed3_constant_src0_1_f32(
2014-
; CHECK-NEXT: ret float 5.000000e-01
2015-
;
2016-
%med3 = call float @llvm.amdgcn.fmed3.f32(float 0.5, float 4.0, float -1.0)
2017-
ret float %med3
2018-
}
2019-
2020-
define float @fmed3_constant_src1_0_f32(float %x, float %y) {
2021-
; CHECK-LABEL: @fmed3_constant_src1_0_f32(
2022-
; CHECK-NEXT: ret float 5.000000e-01
2023-
;
2024-
%med3 = call float @llvm.amdgcn.fmed3.f32(float -1.0, float 0.5, float 4.0)
2025-
ret float %med3
2026-
}
2027-
2028-
define float @fmed3_constant_src1_1_f32(float %x, float %y) {
2029-
; CHECK-LABEL: @fmed3_constant_src1_1_f32(
2030-
; CHECK-NEXT: ret float 5.000000e-01
2031-
;
2032-
%med3 = call float @llvm.amdgcn.fmed3.f32(float 4.0, float 0.5, float -1.0)
2033-
ret float %med3
2034-
}
2035-
2036-
define float @fmed3_constant_src2_0_f32(float %x, float %y) {
2037-
; CHECK-LABEL: @fmed3_constant_src2_0_f32(
2038-
; CHECK-NEXT: ret float 5.000000e-01
2039-
;
2040-
%med3 = call float @llvm.amdgcn.fmed3.f32(float -1.0, float 4.0, float 0.5)
2041-
ret float %med3
2042-
}
2043-
2044-
define float @fmed3_constant_src2_1_f32(float %x, float %y) {
2045-
; CHECK-LABEL: @fmed3_constant_src2_1_f32(
2046-
; CHECK-NEXT: ret float 5.000000e-01
2047-
;
2048-
%med3 = call float @llvm.amdgcn.fmed3.f32(float 4.0, float -1.0, float 0.5)
2049-
ret float %med3
2050-
}
2051-
2052-
define float @fmed3_x_qnan0_qnan1_f32(float %x) {
2053-
; CHECK-LABEL: @fmed3_x_qnan0_qnan1_f32(
2054-
; CHECK-NEXT: ret float [[X:%.*]]
2055-
;
2056-
%med3 = call float @llvm.amdgcn.fmed3.f32(float %x, float 0x7FF8001000000000, float 0x7FF8002000000000)
2057-
ret float %med3
2058-
}
2059-
2060-
define float @fmed3_qnan0_x_qnan1_f32(float %x) {
2061-
; CHECK-LABEL: @fmed3_qnan0_x_qnan1_f32(
2062-
; CHECK-NEXT: ret float [[X:%.*]]
2063-
;
2064-
%med3 = call float @llvm.amdgcn.fmed3.f32(float 0x7FF8001000000000, float %x, float 0x7FF8002000000000)
2065-
ret float %med3
2066-
}
2067-
2068-
define float @fmed3_qnan0_qnan1_x_f32(float %x) {
2069-
; CHECK-LABEL: @fmed3_qnan0_qnan1_x_f32(
2070-
; CHECK-NEXT: ret float [[X:%.*]]
2071-
;
2072-
%med3 = call float @llvm.amdgcn.fmed3.f32(float 0x7FF8001000000000, float 0x7FF8002000000000, float %x)
2073-
ret float %med3
2074-
}
2075-
2076-
define float @fmed3_nan_0_1_f32() {
2077-
; CHECK-LABEL: @fmed3_nan_0_1_f32(
2078-
; CHECK-NEXT: ret float 0.000000e+00
2079-
;
2080-
%med3 = call float @llvm.amdgcn.fmed3.f32(float 0x7FF8001000000000, float 0.0, float 1.0)
2081-
ret float %med3
2082-
}
2083-
2084-
define float @fmed3_0_nan_1_f32() {
2085-
; CHECK-LABEL: @fmed3_0_nan_1_f32(
2086-
; CHECK-NEXT: ret float 0.000000e+00
2087-
;
2088-
%med = call float @llvm.amdgcn.fmed3.f32(float 0.0, float 0x7FF8001000000000, float 1.0)
2089-
ret float %med
2090-
}
2091-
2092-
define float @fmed3_0_1_nan_f32() {
2093-
; CHECK-LABEL: @fmed3_0_1_nan_f32(
2094-
; CHECK-NEXT: ret float 1.000000e+00
2095-
;
2096-
%med = call float @llvm.amdgcn.fmed3.f32(float 0.0, float 1.0, float 0x7FF8001000000000)
2097-
ret float %med
2098-
}
2099-
2100-
define float @fmed3_undef_0_1_f32() {
2101-
; CHECK-LABEL: @fmed3_undef_0_1_f32(
2102-
; CHECK-NEXT: ret float 0.000000e+00
2103-
;
2104-
%med3 = call float @llvm.amdgcn.fmed3.f32(float undef, float 0.0, float 1.0)
2105-
ret float %med3
2106-
}
2107-
2108-
define float @fmed3_0_undef_1_f32() {
2109-
; CHECK-LABEL: @fmed3_0_undef_1_f32(
2110-
; CHECK-NEXT: ret float 0.000000e+00
2111-
;
2112-
%med = call float @llvm.amdgcn.fmed3.f32(float 0.0, float undef, float 1.0)
2113-
ret float %med
2114-
}
2115-
2116-
define float @fmed3_0_1_undef_f32() {
2117-
; CHECK-LABEL: @fmed3_0_1_undef_f32(
2118-
; CHECK-NEXT: ret float 1.000000e+00
2119-
;
2120-
%med = call float @llvm.amdgcn.fmed3.f32(float 0.0, float 1.0, float undef)
2121-
ret float %med
2122-
}
2123-
2124-
define float @fmed3_poison_x_y_f32(float %x, float %y) {
2125-
; CHECK-LABEL: @fmed3_poison_x_y_f32(
2126-
; CHECK-NEXT: ret float poison
2127-
;
2128-
%med3 = call float @llvm.amdgcn.fmed3.f32(float poison, float %x, float %y)
2129-
ret float %med3
2130-
}
2131-
2132-
define float @fmed3_x_poison_y_f32(float %x, float %y) {
2133-
; CHECK-LABEL: @fmed3_x_poison_y_f32(
2134-
; CHECK-NEXT: ret float poison
2135-
;
2136-
%med3 = call float @llvm.amdgcn.fmed3.f32(float %x, float poison, float %y)
2137-
ret float %med3
2138-
}
2139-
2140-
define float @fmed3_x_y_poison_f32(float %x, float %y) {
2141-
; CHECK-LABEL: @fmed3_x_y_poison_f32(
2142-
; CHECK-NEXT: ret float poison
2143-
;
2144-
%med3 = call float @llvm.amdgcn.fmed3.f32(float %x, float %y, float poison)
2145-
ret float %med3
2146-
}
2147-
21481854
; --------------------------------------------------------------------
21491855
; llvm.amdgcn.icmp
21501856
; --------------------------------------------------------------------

0 commit comments

Comments
 (0)