| 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 1908 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1919 | 1919 |
| 1920 ; ARM32-LABEL: select64VarVar | 1920 ; ARM32-LABEL: select64VarVar |
| 1921 ; ARM32: cmp | 1921 ; ARM32: cmp |
| 1922 ; ARM32: cmpeq | 1922 ; ARM32: cmpeq |
| 1923 ; ARM32-OM1: tst | 1923 ; ARM32-OM1: tst |
| 1924 ; ARM32-OM1: movne | 1924 ; ARM32-OM1: movne |
| 1925 ; ARM32-O2: movcc | 1925 ; ARM32-O2: movcc |
| 1926 ; ARM32-OM1: movne | 1926 ; ARM32-OM1: movne |
| 1927 ; ARM32-O2: movcc | 1927 ; ARM32-O2: movcc |
| 1928 | 1928 |
| 1929 ; MIPS32-LABEL: select64VarVar |
| 1930 ; MIPS32: movn |
| 1931 ; MIPS32: movn |
| 1932 |
| 1929 define internal i64 @select64VarConst(i64 %a, i64 %b) { | 1933 define internal i64 @select64VarConst(i64 %a, i64 %b) { |
| 1930 entry: | 1934 entry: |
| 1931 %cmp = icmp ult i64 %a, %b | 1935 %cmp = icmp ult i64 %a, %b |
| 1932 %cond = select i1 %cmp, i64 %a, i64 -2401053092306725256 | 1936 %cond = select i1 %cmp, i64 %a, i64 -2401053092306725256 |
| 1933 ret i64 %cond | 1937 ret i64 %cond |
| 1934 } | 1938 } |
| 1935 ; CHECK-LABEL: select64VarConst | 1939 ; CHECK-LABEL: select64VarConst |
| 1936 ; CHECK: mov | 1940 ; CHECK: mov |
| 1937 ; CHECK: mov | 1941 ; CHECK: mov |
| 1938 ; CHECK: cmp | 1942 ; CHECK: cmp |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1958 ; ARM32: cmp | 1962 ; ARM32: cmp |
| 1959 ; ARM32: cmpeq | 1963 ; ARM32: cmpeq |
| 1960 ; ARM32-OM1: tst | 1964 ; ARM32-OM1: tst |
| 1961 ; ARM32-OM1: movne | 1965 ; ARM32-OM1: movne |
| 1962 ; ARM32-O2: movcc | 1966 ; ARM32-O2: movcc |
| 1963 ; ARM32-OM1: movne | 1967 ; ARM32-OM1: movne |
| 1964 ; ARM32-O2: movcc | 1968 ; ARM32-O2: movcc |
| 1965 ; ARM32-O2: mov | 1969 ; ARM32-O2: mov |
| 1966 ; ARM32-O2: mov | 1970 ; ARM32-O2: mov |
| 1967 | 1971 |
| 1972 ; MIPS32-LABEL: select64VarConst |
| 1973 ; MIPS32: movn |
| 1974 ; MIPS32: movn |
| 1975 |
| 1968 define internal i64 @select64ConstVar(i64 %a, i64 %b) { | 1976 define internal i64 @select64ConstVar(i64 %a, i64 %b) { |
| 1969 entry: | 1977 entry: |
| 1970 %cmp = icmp ult i64 %a, %b | 1978 %cmp = icmp ult i64 %a, %b |
| 1971 %cond = select i1 %cmp, i64 -2401053092306725256, i64 %b | 1979 %cond = select i1 %cmp, i64 -2401053092306725256, i64 %b |
| 1972 ret i64 %cond | 1980 ret i64 %cond |
| 1973 } | 1981 } |
| 1974 ; CHECK-LABEL: select64ConstVar | 1982 ; CHECK-LABEL: select64ConstVar |
| 1975 ; CHECK: mov | 1983 ; CHECK: mov |
| 1976 ; CHECK: mov | 1984 ; CHECK: mov |
| 1977 ; CHECK: cmp | 1985 ; CHECK: cmp |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1997 ; ARM32-OM1: tst | 2005 ; ARM32-OM1: tst |
| 1998 ; ARM32: movw | 2006 ; ARM32: movw |
| 1999 ; ARM32: movt | 2007 ; ARM32: movt |
| 2000 ; ARM32-OM1: movne | 2008 ; ARM32-OM1: movne |
| 2001 ; ARM32-O2: movcc | 2009 ; ARM32-O2: movcc |
| 2002 ; ARM32: movw | 2010 ; ARM32: movw |
| 2003 ; ARM32: movt | 2011 ; ARM32: movt |
| 2004 ; ARM32-OM1: movne | 2012 ; ARM32-OM1: movne |
| 2005 ; ARM32-O2: movcc | 2013 ; ARM32-O2: movcc |
| 2006 | 2014 |
| 2015 ; MIPS32-LABEL: select64ConstVar |
| 2016 ; MIPS32: movn |
| 2017 ; MIPS32: movn |
| 2018 |
| 2007 define internal void @icmpEq64Imm() { | 2019 define internal void @icmpEq64Imm() { |
| 2008 entry: | 2020 entry: |
| 2009 %cmp = icmp eq i64 123, 234 | 2021 %cmp = icmp eq i64 123, 234 |
| 2010 br i1 %cmp, label %if.then, label %if.end | 2022 br i1 %cmp, label %if.then, label %if.end |
| 2011 | 2023 |
| 2012 if.then: ; preds = %entry | 2024 if.then: ; preds = %entry |
| 2013 call void @func() | 2025 call void @func() |
| 2014 br label %if.end | 2026 br label %if.end |
| 2015 | 2027 |
| 2016 if.end: ; preds = %if.then, %entry | 2028 if.end: ; preds = %if.then, %entry |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2125 %s = lshr i64 %a, 40 | 2137 %s = lshr i64 %a, 40 |
| 2126 %t = trunc i64 %s to i32 | 2138 %t = trunc i64 %s to i32 |
| 2127 %r = sub i32 %t, 1 | 2139 %r = sub i32 %t, 1 |
| 2128 ret i32 %r | 2140 ret i32 %r |
| 2129 ; ARM32-LABEL: subOneToUpperAfterShift | 2141 ; ARM32-LABEL: subOneToUpperAfterShift |
| 2130 ; ARM32: subs | 2142 ; ARM32: subs |
| 2131 ; ARM32: sbc | 2143 ; ARM32: sbc |
| 2132 ; ARM32: lsr | 2144 ; ARM32: lsr |
| 2133 ; ARM32: sub | 2145 ; ARM32: sub |
| 2134 } | 2146 } |
| OLD | NEW |