| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 1300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1311 uint32_t vshr_s8[4], vshr_u16[4], vshr_s32[5]; | 1311 uint32_t vshr_s8[4], vshr_u16[4], vshr_s32[5]; |
| 1312 uint32_t vceq[4], vceqf[4], vcgef[4], vcgtf[4]; | 1312 uint32_t vceq[4], vceqf[4], vcgef[4], vcgtf[4]; |
| 1313 uint32_t vcge_s8[4], vcge_u16[4], vcge_s32[4]; | 1313 uint32_t vcge_s8[4], vcge_u16[4], vcge_s32[4]; |
| 1314 uint32_t vcgt_s8[4], vcgt_u16[4], vcgt_s32[4]; | 1314 uint32_t vcgt_s8[4], vcgt_u16[4], vcgt_s32[4]; |
| 1315 float vrecpe[4], vrecps[4], vrsqrte[4], vrsqrts[4]; | 1315 float vrecpe[4], vrecps[4], vrsqrte[4], vrsqrts[4]; |
| 1316 float vminf[4], vmaxf[4]; | 1316 float vminf[4], vmaxf[4]; |
| 1317 uint32_t vtst[4], vbsl[4]; | 1317 uint32_t vtst[4], vbsl[4]; |
| 1318 uint32_t vext[4]; | 1318 uint32_t vext[4]; |
| 1319 uint32_t vzip8a[4], vzip8b[4], vzip16a[4], vzip16b[4], vzip32a[4], | 1319 uint32_t vzip8a[4], vzip8b[4], vzip16a[4], vzip16b[4], vzip32a[4], |
| 1320 vzip32b[4]; | 1320 vzip32b[4]; |
| 1321 uint32_t vzipd8a[2], vzipd8b[2], vzipd16a[2], vzipd16b[2]; |
| 1321 uint32_t vuzp8a[4], vuzp8b[4], vuzp16a[4], vuzp16b[4], vuzp32a[4], | 1322 uint32_t vuzp8a[4], vuzp8b[4], vuzp16a[4], vuzp16b[4], vuzp32a[4], |
| 1322 vuzp32b[4]; | 1323 vuzp32b[4]; |
| 1324 uint32_t vuzpd8a[2], vuzpd8b[2], vuzpd16a[2], vuzpd16b[2]; |
| 1323 uint32_t vrev64_32[4], vrev64_16[4], vrev64_8[4]; | 1325 uint32_t vrev64_32[4], vrev64_16[4], vrev64_8[4]; |
| 1324 uint32_t vrev32_16[4], vrev32_8[4], vrev16_8[4]; | 1326 uint32_t vrev32_16[4], vrev32_8[4], vrev16_8[4]; |
| 1325 uint32_t vtrn8a[4], vtrn8b[4], vtrn16a[4], vtrn16b[4], vtrn32a[4], | 1327 uint32_t vtrn8a[4], vtrn8b[4], vtrn16a[4], vtrn16b[4], vtrn32a[4], |
| 1326 vtrn32b[4]; | 1328 vtrn32b[4]; |
| 1329 uint32_t vtrnd8a[2], vtrnd8b[2], vtrnd16a[2], vtrnd16b[2], vtrnd32a[2], |
| 1330 vtrnd32b[2]; |
| 1327 uint32_t vtbl[2], vtbx[2]; | 1331 uint32_t vtbl[2], vtbx[2]; |
| 1328 } T; | 1332 } T; |
| 1329 T t; | 1333 T t; |
| 1330 | 1334 |
| 1331 // Create a function that accepts &t, and loads, manipulates, and stores | 1335 // Create a function that accepts &t, and loads, manipulates, and stores |
| 1332 // the doubles, floats, and SIMD values. | 1336 // the doubles, floats, and SIMD values. |
| 1333 Assembler assm(isolate, NULL, 0); | 1337 Assembler assm(isolate, NULL, 0); |
| 1334 | 1338 |
| 1335 if (CpuFeatures::IsSupported(NEON)) { | 1339 if (CpuFeatures::IsSupported(NEON)) { |
| 1336 CpuFeatureScope scope(&assm, NEON); | 1340 CpuFeatureScope scope(&assm, NEON); |
| (...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1849 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1853 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1850 | 1854 |
| 1851 // vext. | 1855 // vext. |
| 1852 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); | 1856 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); |
| 1853 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1857 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1854 __ vmov(q1, q0); | 1858 __ vmov(q1, q0); |
| 1855 __ vext(q2, q0, q1, 3); | 1859 __ vext(q2, q0, q1, 3); |
| 1856 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vext)))); | 1860 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vext)))); |
| 1857 __ vst1(Neon8, NeonListOperand(q2), NeonMemOperand(r4)); | 1861 __ vst1(Neon8, NeonListOperand(q2), NeonMemOperand(r4)); |
| 1858 | 1862 |
| 1859 // vzip. | 1863 // vzip (q-register). |
| 1860 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); | 1864 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); |
| 1861 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1865 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1862 __ vmov(q1, q0); | 1866 __ vmov(q1, q0); |
| 1863 __ vzip(Neon8, q0, q1); | 1867 __ vzip(Neon8, q0, q1); |
| 1864 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vzip8a)))); | 1868 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vzip8a)))); |
| 1865 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1869 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1866 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vzip8b)))); | 1870 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vzip8b)))); |
| 1867 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1871 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
| 1868 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); | 1872 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); |
| 1869 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1873 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1870 __ vmov(q1, q0); | 1874 __ vmov(q1, q0); |
| 1871 __ vzip(Neon16, q0, q1); | 1875 __ vzip(Neon16, q0, q1); |
| 1872 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vzip16a)))); | 1876 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vzip16a)))); |
| 1873 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1877 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1874 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vzip16b)))); | 1878 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vzip16b)))); |
| 1875 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1879 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
| 1876 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); | 1880 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); |
| 1877 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1881 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1878 __ vmov(q1, q0); | 1882 __ vmov(q1, q0); |
| 1879 __ vzip(Neon32, q0, q1); | 1883 __ vzip(Neon32, q0, q1); |
| 1880 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vzip32a)))); | 1884 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vzip32a)))); |
| 1881 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1885 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1882 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vzip32b)))); | 1886 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vzip32b)))); |
| 1883 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1887 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
| 1884 | 1888 |
| 1885 // vuzp. | 1889 // vzip (d-register). |
| 1890 __ vldr(d2, r0, offsetof(T, lane_test)); |
| 1891 __ vmov(d0, d2); |
| 1892 __ vmov(d1, d2); |
| 1893 __ vzip(Neon8, d0, d1); |
| 1894 __ vstr(d0, r0, offsetof(T, vzipd8a)); |
| 1895 __ vstr(d1, r0, offsetof(T, vzipd8b)); |
| 1896 __ vmov(d0, d2); |
| 1897 __ vmov(d1, d2); |
| 1898 __ vzip(Neon16, d0, d1); |
| 1899 __ vstr(d0, r0, offsetof(T, vzipd16a)); |
| 1900 __ vstr(d1, r0, offsetof(T, vzipd16b)); |
| 1901 |
| 1902 // vuzp (q-register). |
| 1886 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); | 1903 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); |
| 1887 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1904 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1888 __ vmov(q1, q0); | 1905 __ vmov(q1, q0); |
| 1889 __ vuzp(Neon8, q0, q1); | 1906 __ vuzp(Neon8, q0, q1); |
| 1890 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vuzp8a)))); | 1907 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vuzp8a)))); |
| 1891 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1908 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1892 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vuzp8b)))); | 1909 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vuzp8b)))); |
| 1893 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1910 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
| 1894 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); | 1911 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); |
| 1895 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1912 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1896 __ vmov(q1, q0); | 1913 __ vmov(q1, q0); |
| 1897 __ vuzp(Neon16, q0, q1); | 1914 __ vuzp(Neon16, q0, q1); |
| 1898 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vuzp16a)))); | 1915 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vuzp16a)))); |
| 1899 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1916 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1900 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vuzp16b)))); | 1917 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vuzp16b)))); |
| 1901 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1918 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
| 1902 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); | 1919 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); |
| 1903 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1920 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1904 __ vmov(q1, q0); | 1921 __ vmov(q1, q0); |
| 1905 __ vuzp(Neon32, q0, q1); | 1922 __ vuzp(Neon32, q0, q1); |
| 1906 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vuzp32a)))); | 1923 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vuzp32a)))); |
| 1907 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1924 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1908 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vuzp32b)))); | 1925 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vuzp32b)))); |
| 1909 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1926 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
| 1910 | 1927 |
| 1911 // vtrn. | 1928 // vuzp (d-register). |
| 1929 __ vldr(d2, r0, offsetof(T, lane_test)); |
| 1930 __ vmov(d0, d2); |
| 1931 __ vmov(d1, d2); |
| 1932 __ vuzp(Neon8, d0, d1); |
| 1933 __ vstr(d0, r0, offsetof(T, vuzpd8a)); |
| 1934 __ vstr(d1, r0, offsetof(T, vuzpd8b)); |
| 1935 __ vmov(d0, d2); |
| 1936 __ vmov(d1, d2); |
| 1937 __ vuzp(Neon16, d0, d1); |
| 1938 __ vstr(d0, r0, offsetof(T, vuzpd16a)); |
| 1939 __ vstr(d1, r0, offsetof(T, vuzpd16b)); |
| 1940 |
| 1941 // vtrn (q-register). |
| 1912 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); | 1942 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); |
| 1913 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1943 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1914 __ vmov(q1, q0); | 1944 __ vmov(q1, q0); |
| 1915 __ vtrn(Neon8, q0, q1); | 1945 __ vtrn(Neon8, q0, q1); |
| 1916 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vtrn8a)))); | 1946 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vtrn8a)))); |
| 1917 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1947 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1918 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vtrn8b)))); | 1948 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vtrn8b)))); |
| 1919 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1949 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
| 1920 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); | 1950 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); |
| 1921 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1951 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1922 __ vmov(q1, q0); | 1952 __ vmov(q1, q0); |
| 1923 __ vtrn(Neon16, q0, q1); | 1953 __ vtrn(Neon16, q0, q1); |
| 1924 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vtrn16a)))); | 1954 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vtrn16a)))); |
| 1925 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1955 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1926 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vtrn16b)))); | 1956 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vtrn16b)))); |
| 1927 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1957 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
| 1928 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); | 1958 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); |
| 1929 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1959 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1930 __ vmov(q1, q0); | 1960 __ vmov(q1, q0); |
| 1931 __ vtrn(Neon32, q0, q1); | 1961 __ vtrn(Neon32, q0, q1); |
| 1932 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vtrn32a)))); | 1962 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vtrn32a)))); |
| 1933 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1963 __ vst1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1934 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vtrn32b)))); | 1964 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vtrn32b)))); |
| 1935 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1965 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
| 1936 | 1966 |
| 1967 // vtrn (d-register). |
| 1968 __ vldr(d2, r0, offsetof(T, lane_test)); |
| 1969 __ vmov(d0, d2); |
| 1970 __ vmov(d1, d2); |
| 1971 __ vtrn(Neon8, d0, d1); |
| 1972 __ vstr(d0, r0, offsetof(T, vtrnd8a)); |
| 1973 __ vstr(d1, r0, offsetof(T, vtrnd8b)); |
| 1974 __ vmov(d0, d2); |
| 1975 __ vmov(d1, d2); |
| 1976 __ vtrn(Neon16, d0, d1); |
| 1977 __ vstr(d0, r0, offsetof(T, vtrnd16a)); |
| 1978 __ vstr(d1, r0, offsetof(T, vtrnd16b)); |
| 1979 __ vmov(d0, d2); |
| 1980 __ vmov(d1, d2); |
| 1981 __ vtrn(Neon32, d0, d1); |
| 1982 __ vstr(d0, r0, offsetof(T, vtrnd32a)); |
| 1983 __ vstr(d1, r0, offsetof(T, vtrnd32b)); |
| 1984 |
| 1937 // vrev64/32/16 | 1985 // vrev64/32/16 |
| 1938 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); | 1986 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, lane_test)))); |
| 1939 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); | 1987 __ vld1(Neon8, NeonListOperand(q0), NeonMemOperand(r4)); |
| 1940 __ vrev64(Neon32, q1, q0); | 1988 __ vrev64(Neon32, q1, q0); |
| 1941 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vrev64_32)))); | 1989 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vrev64_32)))); |
| 1942 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1990 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
| 1943 __ vrev64(Neon16, q1, q0); | 1991 __ vrev64(Neon16, q1, q0); |
| 1944 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vrev64_16)))); | 1992 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vrev64_16)))); |
| 1945 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1993 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
| 1946 __ vrev64(Neon8, q1, q0); | 1994 __ vrev64(Neon8, q1, q0); |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2133 | 2181 |
| 2134 CHECK_EQ_32X4(vext, 0x06050403u, 0x0a090807u, 0x0e0d0c0bu, 0x0201000fu); | 2182 CHECK_EQ_32X4(vext, 0x06050403u, 0x0a090807u, 0x0e0d0c0bu, 0x0201000fu); |
| 2135 | 2183 |
| 2136 CHECK_EQ_32X4(vzip8a, 0x01010000u, 0x03030202u, 0x05050404u, 0x07070606u); | 2184 CHECK_EQ_32X4(vzip8a, 0x01010000u, 0x03030202u, 0x05050404u, 0x07070606u); |
| 2137 CHECK_EQ_32X4(vzip8b, 0x09090808u, 0x0b0b0a0au, 0x0d0d0c0cu, 0x0f0f0e0eu); | 2185 CHECK_EQ_32X4(vzip8b, 0x09090808u, 0x0b0b0a0au, 0x0d0d0c0cu, 0x0f0f0e0eu); |
| 2138 CHECK_EQ_32X4(vzip16a, 0x01000100u, 0x03020302u, 0x05040504u, 0x07060706u); | 2186 CHECK_EQ_32X4(vzip16a, 0x01000100u, 0x03020302u, 0x05040504u, 0x07060706u); |
| 2139 CHECK_EQ_32X4(vzip16b, 0x09080908u, 0x0b0a0b0au, 0x0d0c0d0cu, 0x0f0e0f0eu); | 2187 CHECK_EQ_32X4(vzip16b, 0x09080908u, 0x0b0a0b0au, 0x0d0c0d0cu, 0x0f0e0f0eu); |
| 2140 CHECK_EQ_32X4(vzip32a, 0x03020100u, 0x03020100u, 0x07060504u, 0x07060504u); | 2188 CHECK_EQ_32X4(vzip32a, 0x03020100u, 0x03020100u, 0x07060504u, 0x07060504u); |
| 2141 CHECK_EQ_32X4(vzip32b, 0x0b0a0908u, 0x0b0a0908u, 0x0f0e0d0cu, 0x0f0e0d0cu); | 2189 CHECK_EQ_32X4(vzip32b, 0x0b0a0908u, 0x0b0a0908u, 0x0f0e0d0cu, 0x0f0e0d0cu); |
| 2142 | 2190 |
| 2191 CHECK_EQ_32X2(vzipd8a, 0x01010000u, 0x03030202u); |
| 2192 CHECK_EQ_32X2(vzipd8b, 0x05050404u, 0x07070606u); |
| 2193 CHECK_EQ_32X2(vzipd16a, 0x01000100u, 0x03020302u); |
| 2194 CHECK_EQ_32X2(vzipd16b, 0x05040504u, 0x07060706u); |
| 2195 |
| 2143 CHECK_EQ_32X4(vuzp8a, 0x06040200u, 0x0e0c0a08u, 0x06040200u, 0x0e0c0a08u); | 2196 CHECK_EQ_32X4(vuzp8a, 0x06040200u, 0x0e0c0a08u, 0x06040200u, 0x0e0c0a08u); |
| 2144 CHECK_EQ_32X4(vuzp8b, 0x07050301u, 0x0f0d0b09u, 0x07050301u, 0x0f0d0b09u); | 2197 CHECK_EQ_32X4(vuzp8b, 0x07050301u, 0x0f0d0b09u, 0x07050301u, 0x0f0d0b09u); |
| 2145 CHECK_EQ_32X4(vuzp16a, 0x05040100u, 0x0d0c0908u, 0x05040100u, 0x0d0c0908u); | 2198 CHECK_EQ_32X4(vuzp16a, 0x05040100u, 0x0d0c0908u, 0x05040100u, 0x0d0c0908u); |
| 2146 CHECK_EQ_32X4(vuzp16b, 0x07060302u, 0x0f0e0b0au, 0x07060302u, 0x0f0e0b0au); | 2199 CHECK_EQ_32X4(vuzp16b, 0x07060302u, 0x0f0e0b0au, 0x07060302u, 0x0f0e0b0au); |
| 2147 CHECK_EQ_32X4(vuzp32a, 0x03020100u, 0x0b0a0908u, 0x03020100u, 0x0b0a0908u); | 2200 CHECK_EQ_32X4(vuzp32a, 0x03020100u, 0x0b0a0908u, 0x03020100u, 0x0b0a0908u); |
| 2148 CHECK_EQ_32X4(vuzp32b, 0x07060504u, 0x0f0e0d0cu, 0x07060504u, 0x0f0e0d0cu); | 2201 CHECK_EQ_32X4(vuzp32b, 0x07060504u, 0x0f0e0d0cu, 0x07060504u, 0x0f0e0d0cu); |
| 2149 | 2202 |
| 2203 CHECK_EQ_32X2(vuzpd8a, 0x06040200u, 0x06040200u); |
| 2204 CHECK_EQ_32X2(vuzpd8b, 0x07050301u, 0x07050301u); |
| 2205 CHECK_EQ_32X2(vuzpd16a, 0x05040100u, 0x05040100u); |
| 2206 CHECK_EQ_32X2(vuzpd16b, 0x07060302u, 0x07060302u); |
| 2207 |
| 2150 CHECK_EQ_32X4(vtrn8a, 0x02020000u, 0x06060404u, 0x0a0a0808u, 0x0e0e0c0cu); | 2208 CHECK_EQ_32X4(vtrn8a, 0x02020000u, 0x06060404u, 0x0a0a0808u, 0x0e0e0c0cu); |
| 2151 CHECK_EQ_32X4(vtrn8b, 0x03030101u, 0x07070505u, 0x0b0b0909u, 0x0f0f0d0du); | 2209 CHECK_EQ_32X4(vtrn8b, 0x03030101u, 0x07070505u, 0x0b0b0909u, 0x0f0f0d0du); |
| 2152 CHECK_EQ_32X4(vtrn16a, 0x01000100u, 0x05040504u, 0x09080908u, 0x0d0c0d0cu); | 2210 CHECK_EQ_32X4(vtrn16a, 0x01000100u, 0x05040504u, 0x09080908u, 0x0d0c0d0cu); |
| 2153 CHECK_EQ_32X4(vtrn16b, 0x03020302u, 0x07060706u, 0x0b0a0b0au, 0x0f0e0f0eu); | 2211 CHECK_EQ_32X4(vtrn16b, 0x03020302u, 0x07060706u, 0x0b0a0b0au, 0x0f0e0f0eu); |
| 2154 CHECK_EQ_32X4(vtrn32a, 0x03020100u, 0x03020100u, 0x0b0a0908u, 0x0b0a0908u); | 2212 CHECK_EQ_32X4(vtrn32a, 0x03020100u, 0x03020100u, 0x0b0a0908u, 0x0b0a0908u); |
| 2155 CHECK_EQ_32X4(vtrn32b, 0x07060504u, 0x07060504u, 0x0f0e0d0cu, 0x0f0e0d0cu); | 2213 CHECK_EQ_32X4(vtrn32b, 0x07060504u, 0x07060504u, 0x0f0e0d0cu, 0x0f0e0d0cu); |
| 2156 | 2214 |
| 2215 CHECK_EQ_32X2(vtrnd8a, 0x02020000u, 0x06060404u); |
| 2216 CHECK_EQ_32X2(vtrnd8b, 0x03030101u, 0x07070505u); |
| 2217 CHECK_EQ_32X2(vtrnd16a, 0x01000100u, 0x05040504u); |
| 2218 CHECK_EQ_32X2(vtrnd16b, 0x03020302u, 0x07060706u); |
| 2219 CHECK_EQ_32X2(vtrnd32a, 0x03020100u, 0x03020100u); |
| 2220 CHECK_EQ_32X2(vtrnd32b, 0x07060504u, 0x07060504u); |
| 2221 |
| 2157 // src: 0 1 2 3 4 5 6 7 8 9 a b c d e f (little endian) | 2222 // src: 0 1 2 3 4 5 6 7 8 9 a b c d e f (little endian) |
| 2158 CHECK_EQ_32X4(vrev64_32, 0x07060504u, 0x03020100u, 0x0f0e0d0cu, | 2223 CHECK_EQ_32X4(vrev64_32, 0x07060504u, 0x03020100u, 0x0f0e0d0cu, |
| 2159 0x0b0a0908u); | 2224 0x0b0a0908u); |
| 2160 CHECK_EQ_32X4(vrev64_16, 0x05040706u, 0x01000302u, 0x0d0c0f0eu, | 2225 CHECK_EQ_32X4(vrev64_16, 0x05040706u, 0x01000302u, 0x0d0c0f0eu, |
| 2161 0x09080b0au); | 2226 0x09080b0au); |
| 2162 CHECK_EQ_32X4(vrev64_8, 0x04050607u, 0x00010203u, 0x0c0d0e0fu, 0x08090a0bu); | 2227 CHECK_EQ_32X4(vrev64_8, 0x04050607u, 0x00010203u, 0x0c0d0e0fu, 0x08090a0bu); |
| 2163 CHECK_EQ_32X4(vrev32_16, 0x01000302u, 0x05040706u, 0x09080b0au, | 2228 CHECK_EQ_32X4(vrev32_16, 0x01000302u, 0x05040706u, 0x09080b0au, |
| 2164 0x0d0c0f0eu); | 2229 0x0d0c0f0eu); |
| 2165 CHECK_EQ_32X4(vrev32_8, 0x00010203u, 0x04050607u, 0x08090a0bu, 0x0c0d0e0fu); | 2230 CHECK_EQ_32X4(vrev32_8, 0x00010203u, 0x04050607u, 0x08090a0bu, 0x0c0d0e0fu); |
| 2166 CHECK_EQ_32X4(vrev16_8, 0x02030001u, 0x06070405u, 0x0a0b0809u, 0x0e0f0c0du); | 2231 CHECK_EQ_32X4(vrev16_8, 0x02030001u, 0x06070405u, 0x0a0b0809u, 0x0e0f0c0du); |
| (...skipping 1677 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3844 HandleScope scope(isolate); | 3909 HandleScope scope(isolate); |
| 3845 | 3910 |
| 3846 Assembler assm(isolate, NULL, 0); | 3911 Assembler assm(isolate, NULL, 0); |
| 3847 __ mov(r0, Operand(isolate->factory()->infinity_value())); | 3912 __ mov(r0, Operand(isolate->factory()->infinity_value())); |
| 3848 __ BlockConstPoolFor(1019); | 3913 __ BlockConstPoolFor(1019); |
| 3849 for (int i = 0; i < 1019; ++i) __ nop(); | 3914 for (int i = 0; i < 1019; ++i) __ nop(); |
| 3850 __ vldr(d0, MemOperand(r0, 0)); | 3915 __ vldr(d0, MemOperand(r0, 0)); |
| 3851 } | 3916 } |
| 3852 | 3917 |
| 3853 #undef __ | 3918 #undef __ |
| OLD | NEW |