Lines Matching defs:ctrl

1834 static inline int pcmp_elen(int reg, uint32_t ctrl)
1839 if (ctrl >> 8)
1844 if (ctrl & 1) {
1854 static inline int pcmp_ilen(Reg *r, uint8_t ctrl)
1858 if (ctrl & 1) {
1868 static inline int pcmp_val(Reg *r, uint8_t ctrl, int i)
1870 switch ((ctrl >> 0) & 3) {
1884 int8_t ctrl, int valids, int validd)
1889 int upper = (ctrl & 1) ? 7 : 15;
1896 switch ((ctrl >> 2) & 3) {
1900 v = pcmp_val(s, ctrl, j);
1902 res |= (v == pcmp_val(d, ctrl, i));
1908 v = pcmp_val(s, ctrl, j);
1910 res |= (pcmp_val(d, ctrl, i - 0) <= v &&
1911 pcmp_val(d, ctrl, i - 1) >= v);
1919 v = pcmp_val(s, ctrl, i);
1920 res |= (v == pcmp_val(d, ctrl, i));
1928 res &= (pcmp_val(s, ctrl, i + j) == pcmp_val(d, ctrl, i));
1933 switch ((ctrl >> 4) & 3) {
1976 void glue(helper_pcmpestri, SUFFIX) (Reg *d, Reg *s, uint32_t ctrl)
1978 unsigned int res = pcmpxstrx(d, s, ctrl,
1979 pcmp_elen(R_EDX, ctrl),
1980 pcmp_elen(R_EAX, ctrl));
1984 env->regs[R_ECX] = ((ctrl & (1 << 6)) ? rffs1 : ffs1)(res) - 1;
1986 env->regs[R_ECX] = ((ctrl & (1 << 6)) ? rffs1(res) : ffs1(res)) - 1;
1989 env->regs[R_ECX] = 16 >> (ctrl & (1 << 0));
1992 void glue(helper_pcmpestrm, SUFFIX) (Reg *d, Reg *s, uint32_t ctrl)
1995 unsigned int res = pcmpxstrx(d, s, ctrl,
1996 pcmp_elen(R_EDX, ctrl),
1997 pcmp_elen(R_EAX, ctrl));
1999 if ((ctrl >> 6) & 1) {
2001 if (ctrl & 1)
2008 if (ctrl & 1)
2023 void glue(helper_pcmpistri, SUFFIX) (Reg *d, Reg *s, uint32_t ctrl)
2025 unsigned int res = pcmpxstrx(d, s, ctrl,
2026 pcmp_ilen(s, ctrl),
2027 pcmp_ilen(d, ctrl));
2030 env->regs[R_ECX] = ((ctrl & (1 << 6)) ? rffs1 : ffs1)(res) - 1;
2032 env->regs[R_ECX] = 16 >> (ctrl & (1 << 0));
2035 void glue(helper_pcmpistrm, SUFFIX) (Reg *d, Reg *s, uint32_t ctrl)
2038 unsigned int res = pcmpxstrx(d, s, ctrl,
2039 pcmp_ilen(s, ctrl),
2040 pcmp_ilen(d, ctrl));
2042 if ((ctrl >> 6) & 1) {
2044 if (ctrl & 1)
2051 if (ctrl & 1)