@@ -1851,300 +1851,6 @@ define void @exp_compr_disabled_inputs_to_undef(<2 x half> %xy, <2 x half> %zw)
1851
1851
ret void
1852
1852
}
1853
1853
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
-
2148
1854
; --------------------------------------------------------------------
2149
1855
; llvm.amdgcn.icmp
2150
1856
; --------------------------------------------------------------------
0 commit comments