Lines Matching defs:shift
71 // rm, {<shift> {#<shift_amount>}}
72 // where <shift> is one of {LSL, LSR, ASR, ROR}.
76 inline Operand(Register reg, Shift shift = LSL,
104 // This returns an LSL shift (<= 4) operand as an equivalent extend operand,
115 inline Shift shift() const;
138 Shift shift = LSL, unsigned shift_amount = 0);
148 Shift shift() const { return shift_; }
497 void movi(const VRegister& vd, const uint64_t imm, Shift shift = LSL,
504 void mvni(const VRegister& vd, const int imm8, Shift shift = LSL,
579 // Logical shift left variable.
582 // Logical shift right variable.
585 // Arithmetic shift right variable.
617 // Arithmetic shift right.
618 void asr(const Register& rd, const Register& rn, int shift) {
619 DCHECK(shift < rd.SizeInBits());
620 sbfm(rd, rn, shift, rd.SizeInBits() - 1);
647 // Logical shift left.
648 void lsl(const Register& rd, const Register& rn, int shift) {
650 DCHECK(shift < reg_size);
651 ubfm(rd, rn, (reg_size - shift) % reg_size, reg_size - shift - 1);
654 // Logical shift right.
655 void lsr(const Register& rd, const Register& rn, int shift) {
656 DCHECK(shift < rd.SizeInBits());
657 ubfm(rd, rn, shift, rd.SizeInBits() - 1);
719 void ror(const Register& rd, const Register& rs, unsigned shift) {
720 extr(rd, rs, rs, shift);
882 // Move instructions. The default shift of -1 indicates that the move
883 // instruction will calculate an appropriate 16-bit immediate and left shift
884 // that is equal to the 64-bit immediate argument. If an explicit left shift
887 // For movk, an explicit shift can be used to indicate which half word should
893 void movk(const Register& rd, uint64_t imm, int shift = -1) {
894 MoveWide(rd, imm, shift, MOVK);
898 void movn(const Register& rd, uint64_t imm, int shift = -1) {
899 MoveWide(rd, imm, shift, MOVN);
903 void movz(const Register& rd, uint64_t imm, int shift = -1) {
904 MoveWide(rd, imm, shift, MOVZ);
1098 // Signed shift left by register.
1101 // Unsigned shift left by register.
1154 // Signed saturating shift left by register.
1157 // Unsigned saturating shift left by register.
1160 // Signed rounding shift left by register.
1163 // Unsigned rounding shift left by register.
1166 // Signed saturating rounding shift left by register.
1169 // Unsigned saturating rounding shift left by register.
1179 void sli(const VRegister& vd, const VRegister& vn, int shift);
1182 void sri(const VRegister& vd, const VRegister& vn, int shift);
1347 // Signed shift right by immediate.
1348 void sshr(const VRegister& vd, const VRegister& vn, int shift);
1350 // Unsigned shift right by immediate.
1351 void ushr(const VRegister& vd, const VRegister& vn, int shift);
1353 // Signed rounding shift right by immediate.
1354 void srshr(const VRegister& vd, const VRegister& vn, int shift);
1356 // Unsigned rounding shift right by immediate.
1357 void urshr(const VRegister& vd, const VRegister& vn, int shift);
1359 // Signed shift right by immediate and accumulate.
1360 void ssra(const VRegister& vd, const VRegister& vn, int shift);
1362 // Unsigned shift right by immediate and accumulate.
1363 void usra(const VRegister& vd, const VRegister& vn, int shift);
1365 // Signed rounding shift right by immediate and accumulate.
1366 void srsra(const VRegister& vd, const VRegister& vn, int shift);
1368 // Unsigned rounding shift right by immediate and accumulate.
1369 void ursra(const VRegister& vd, const VRegister& vn, int shift);
1372 void shrn(const VRegister& vd, const VRegister& vn, int shift);
1375 void shrn2(const VRegister& vd, const VRegister& vn, int shift);
1377 // Rounding shift right narrow by immediate.
1378 void rshrn(const VRegister& vd, const VRegister& vn, int shift);
1380 // Rounding shift right narrow by immediate (second part).
1381 void rshrn2(const VRegister& vd, const VRegister& vn, int shift);
1383 // Unsigned saturating shift right narrow by immediate.
1384 void uqshrn(const VRegister& vd, const VRegister& vn, int shift);
1386 // Unsigned saturating shift right narrow by immediate (second part).
1387 void uqshrn2(const VRegister& vd, const VRegister& vn, int shift);
1389 // Unsigned saturating rounding shift right narrow by immediate.
1390 void uqrshrn(const VRegister& vd, const VRegister& vn, int shift);
1392 // Unsigned saturating rounding shift right narrow by immediate (second part).
1393 void uqrshrn2(const VRegister& vd, const VRegister& vn, int shift);
1395 // Signed saturating shift right narrow by immediate.
1396 void sqshrn(const VRegister& vd, const VRegister& vn, int shift);
1398 // Signed saturating shift right narrow by immediate (second part).
1399 void sqshrn2(const VRegister& vd, const VRegister& vn, int shift);
1401 // Signed saturating rounded shift right narrow by immediate.
1402 void sqrshrn(const VRegister& vd, const VRegister& vn, int shift);
1404 // Signed saturating rounded shift right narrow by immediate (second part).
1405 void sqrshrn2(const VRegister& vd, const VRegister& vn, int shift);
1407 // Signed saturating shift right unsigned narrow by immediate.
1408 void sqshrun(const VRegister& vd, const VRegister& vn, int shift);
1410 // Signed saturating shift right unsigned narrow by immediate (second part).
1411 void sqshrun2(const VRegister& vd, const VRegister& vn, int shift);
1413 // Signed sat rounded shift right unsigned narrow by immediate.
1414 void sqrshrun(const VRegister& vd, const VRegister& vn, int shift);
1416 // Signed sat rounded shift right unsigned narrow by immediate (second part).
1417 void sqrshrun2(const VRegister& vd, const VRegister& vn, int shift);
1931 void shl(const VRegister& vd, const VRegister& vn, int shift);
1933 // Signed saturating shift left by immediate.
1934 void sqshl(const VRegister& vd, const VRegister& vn, int shift);
1936 // Signed saturating shift left unsigned by immediate.
1937 void sqshlu(const VRegister& vd, const VRegister& vn, int shift);
1939 // Unsigned saturating shift left by immediate.
1940 void uqshl(const VRegister& vd, const VRegister& vn, int shift);
1942 // Signed shift left long by immediate.
1943 void sshll(const VRegister& vd, const VRegister& vn, int shift);
1945 // Signed shift left long by immediate (second part).
1946 void sshll2(const VRegister& vd, const VRegister& vn, int shift);
1954 // Unsigned shift left long by immediate.
1955 void ushll(const VRegister& vd, const VRegister& vn, int shift);
1957 // Unsigned shift left long by immediate (second part).
1958 void ushll2(const VRegister& vd, const VRegister& vn, int shift);
1961 void shll(const VRegister& vd, const VRegister& vn, int shift);
1964 void shll2(const VRegister& vd, const VRegister& vn, int shift);
2183 inline static Instr ShiftDP(Shift shift);
2369 inline static Instr ShiftMoveWide(int shift);
2493 void EmitShift(const Register& rd, const Register& rn, Shift shift,
2525 void MoveWide(const Register& rd, uint64_t imm, int shift,
2588 int shift, NEONShiftImmediateOp op);
2590 int shift, NEONShiftImmediateOp op);
2591 void NEONShiftImmediateL(const VRegister& vd, const VRegister& vn, int shift,
2593 void NEONShiftImmediateN(const VRegister& vd, const VRegister& vn, int shift,