| OLD | NEW |
| 1 ; This tries to be a comprehensive test of i64 operations, in | 1 ; This tries to be a comprehensive test of i64 operations, in |
| 2 ; particular the patterns for lowering i64 operations into constituent | 2 ; particular the patterns for lowering i64 operations into constituent |
| 3 ; i32 operations on x86-32. | 3 ; i32 operations on x86-32. |
| 4 | 4 |
| 5 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ | 5 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ |
| 6 ; RUN: --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \ | 6 ; RUN: --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \ |
| 7 ; RUN: | %if --need=target_X8632 --command FileCheck %s | 7 ; RUN: | %if --need=target_X8632 --command FileCheck %s |
| 8 | 8 |
| 9 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ | 9 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ |
| 10 ; RUN: --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \ | 10 ; RUN: --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \ |
| (...skipping 1857 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1868 | 1868 |
| 1869 ; ARM32-LABEL: select64VarVar | 1869 ; ARM32-LABEL: select64VarVar |
| 1870 ; ARM32: cmp | 1870 ; ARM32: cmp |
| 1871 ; ARM32: cmpeq | 1871 ; ARM32: cmpeq |
| 1872 ; ARM32-OM1: tst | 1872 ; ARM32-OM1: tst |
| 1873 ; ARM32-OM1: movne | 1873 ; ARM32-OM1: movne |
| 1874 ; ARM32-O2: movcc | 1874 ; ARM32-O2: movcc |
| 1875 ; ARM32-OM1: movne | 1875 ; ARM32-OM1: movne |
| 1876 ; ARM32-O2: movcc | 1876 ; ARM32-O2: movcc |
| 1877 | 1877 |
| 1878 ; MIPS32-LABEL: select64VarVar |
| 1879 ; MIPS32: movn |
| 1880 ; MIPS32: movn |
| 1881 ; MIPS32: move |
| 1882 ; MIPS32: move |
| 1883 |
| 1878 define internal i64 @select64VarConst(i64 %a, i64 %b) { | 1884 define internal i64 @select64VarConst(i64 %a, i64 %b) { |
| 1879 entry: | 1885 entry: |
| 1880 %cmp = icmp ult i64 %a, %b | 1886 %cmp = icmp ult i64 %a, %b |
| 1881 %cond = select i1 %cmp, i64 %a, i64 -2401053092306725256 | 1887 %cond = select i1 %cmp, i64 %a, i64 -2401053092306725256 |
| 1882 ret i64 %cond | 1888 ret i64 %cond |
| 1883 } | 1889 } |
| 1884 ; CHECK-LABEL: select64VarConst | 1890 ; CHECK-LABEL: select64VarConst |
| 1885 ; CHECK: mov | 1891 ; CHECK: mov |
| 1886 ; CHECK: mov | 1892 ; CHECK: mov |
| 1887 ; CHECK: cmp | 1893 ; CHECK: cmp |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1907 ; ARM32: cmp | 1913 ; ARM32: cmp |
| 1908 ; ARM32: cmpeq | 1914 ; ARM32: cmpeq |
| 1909 ; ARM32-OM1: tst | 1915 ; ARM32-OM1: tst |
| 1910 ; ARM32-OM1: movne | 1916 ; ARM32-OM1: movne |
| 1911 ; ARM32-O2: movcc | 1917 ; ARM32-O2: movcc |
| 1912 ; ARM32-OM1: movne | 1918 ; ARM32-OM1: movne |
| 1913 ; ARM32-O2: movcc | 1919 ; ARM32-O2: movcc |
| 1914 ; ARM32-O2: mov | 1920 ; ARM32-O2: mov |
| 1915 ; ARM32-O2: mov | 1921 ; ARM32-O2: mov |
| 1916 | 1922 |
| 1923 ; MIPS32-LABEL: select64VarConst |
| 1924 ; MIPS32: movn |
| 1925 ; MIPS32: movn |
| 1926 ; MIPS32: move |
| 1927 ; MIPS32: move |
| 1928 |
| 1917 define internal i64 @select64ConstVar(i64 %a, i64 %b) { | 1929 define internal i64 @select64ConstVar(i64 %a, i64 %b) { |
| 1918 entry: | 1930 entry: |
| 1919 %cmp = icmp ult i64 %a, %b | 1931 %cmp = icmp ult i64 %a, %b |
| 1920 %cond = select i1 %cmp, i64 -2401053092306725256, i64 %b | 1932 %cond = select i1 %cmp, i64 -2401053092306725256, i64 %b |
| 1921 ret i64 %cond | 1933 ret i64 %cond |
| 1922 } | 1934 } |
| 1923 ; CHECK-LABEL: select64ConstVar | 1935 ; CHECK-LABEL: select64ConstVar |
| 1924 ; CHECK: mov | 1936 ; CHECK: mov |
| 1925 ; CHECK: mov | 1937 ; CHECK: mov |
| 1926 ; CHECK: cmp | 1938 ; CHECK: cmp |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1946 ; ARM32-OM1: tst | 1958 ; ARM32-OM1: tst |
| 1947 ; ARM32: movw | 1959 ; ARM32: movw |
| 1948 ; ARM32: movt | 1960 ; ARM32: movt |
| 1949 ; ARM32-OM1: movne | 1961 ; ARM32-OM1: movne |
| 1950 ; ARM32-O2: movcc | 1962 ; ARM32-O2: movcc |
| 1951 ; ARM32: movw | 1963 ; ARM32: movw |
| 1952 ; ARM32: movt | 1964 ; ARM32: movt |
| 1953 ; ARM32-OM1: movne | 1965 ; ARM32-OM1: movne |
| 1954 ; ARM32-O2: movcc | 1966 ; ARM32-O2: movcc |
| 1955 | 1967 |
| 1968 ; MIPS32-LABEL: select64ConstVar |
| 1969 ; MIPS32: movn |
| 1970 ; MIPS32: movn |
| 1971 ; MIPS32: move |
| 1972 ; MIPS32: move |
| 1973 |
| 1956 define internal void @icmpEq64Imm() { | 1974 define internal void @icmpEq64Imm() { |
| 1957 entry: | 1975 entry: |
| 1958 %cmp = icmp eq i64 123, 234 | 1976 %cmp = icmp eq i64 123, 234 |
| 1959 br i1 %cmp, label %if.then, label %if.end | 1977 br i1 %cmp, label %if.then, label %if.end |
| 1960 | 1978 |
| 1961 if.then: ; preds = %entry | 1979 if.then: ; preds = %entry |
| 1962 call void @func() | 1980 call void @func() |
| 1963 br label %if.end | 1981 br label %if.end |
| 1964 | 1982 |
| 1965 if.end: ; preds = %if.then, %entry | 1983 if.end: ; preds = %if.then, %entry |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2074 %s = lshr i64 %a, 40 | 2092 %s = lshr i64 %a, 40 |
| 2075 %t = trunc i64 %s to i32 | 2093 %t = trunc i64 %s to i32 |
| 2076 %r = sub i32 %t, 1 | 2094 %r = sub i32 %t, 1 |
| 2077 ret i32 %r | 2095 ret i32 %r |
| 2078 ; ARM32-LABEL: subOneToUpperAfterShift | 2096 ; ARM32-LABEL: subOneToUpperAfterShift |
| 2079 ; ARM32: subs | 2097 ; ARM32: subs |
| 2080 ; ARM32: sbc | 2098 ; ARM32: sbc |
| 2081 ; ARM32: lsr | 2099 ; ARM32: lsr |
| 2082 ; ARM32: sub | 2100 ; ARM32: sub |
| 2083 } | 2101 } |
| OLD | NEW |