Lines Matching +full:four +full:- +full:byte

1 // SPDX-License-Identifier: GPL-2.0
19 /* 000111011 - four 16-bit packs */
22 /* 000111010 - two 32-bit packs */
25 /* 000111101 - four 16-bit packs */
28 /* 001001101 - four 16-bit expands */
31 /* 001001011 - two 32-bit merges */
34 /* 000110001 - 8-by-16-bit partitioned product */
37 /* 000110011 - 8-by-16-bit upper alpha partitioned product */
40 /* 000110101 - 8-by-16-bit lower alpha partitioned product */
43 /* 000110110 - upper 8-by-16-bit partitioned product */
46 /* 000110111 - lower 8-by-16-bit partitioned product */
49 /* 000111000 - upper 8-by-16-bit partitioned product */
52 /* 000111001 - lower unsigned 8-by-16-bit partitioned product */
55 /* 000101000 - four 16-bit compare; set rd if src1 > src2 */
58 /* 000101100 - two 32-bit compare; set rd if src1 > src2 */
61 /* 000100000 - four 16-bit compare; set rd if src1 <= src2 */
64 /* 000100100 - two 32-bit compare; set rd if src1 <= src2 */
67 /* 000100010 - four 16-bit compare; set rd if src1 != src2 */
70 /* 000100110 - two 32-bit compare; set rd if src1 != src2 */
73 /* 000101010 - four 16-bit compare; set rd if src1 == src2 */
76 /* 000101110 - two 32-bit compare; set rd if src1 == src2 */
79 /* 000000000 - Eight 8-bit edge boundary processing */
82 /* 000000001 - Eight 8-bit edge boundary processing, no CC */
85 /* 000000010 - Eight 8-bit edge boundary processing, little-endian */
88 /* 000000011 - Eight 8-bit edge boundary processing, little-endian, no CC */
91 /* 000000100 - Four 16-bit edge boundary processing */
94 /* 000000101 - Four 16-bit edge boundary processing, no CC */
97 /* 000000110 - Four 16-bit edge boundary processing, little-endian */
100 /* 000000111 - Four 16-bit edge boundary processing, little-endian, no CC */
103 /* 000001000 - Two 32-bit edge boundary processing */
106 /* 000001001 - Two 32-bit edge boundary processing, no CC */
109 /* 000001010 - Two 32-bit edge boundary processing, little-endian */
112 /* 000001011 - Two 32-bit edge boundary processing, little-endian, no CC */
115 /* 000111110 - distance between 8 8-bit components */
118 /* 000010000 - convert 8-bit 3-D address to blocked byte address */
121 /* 000010010 - convert 16-bit 3-D address to blocked byte address */
124 /* 000010100 - convert 32-bit 3-D address to blocked byte address */
127 /* 000011001 - Set the GSR.MASK field in preparation for a BSHUFFLE */
130 /* 001001100 - Permute bytes as specified by GSR.MASK */
156 return (!reg ? 0 : regs->u_regs[reg]); in fetch_reg()
158 fp = regs->u_regs[UREG_FP]; in fetch_reg()
160 if (regs->tstate & TSTATE_PRIV) { in fetch_reg()
163 value = win->locals[reg - 16]; in fetch_reg()
167 get_user(value, &win32->locals[reg - 16]); in fetch_reg()
171 get_user(value, &win->locals[reg - 16]); in fetch_reg()
179 unsigned long fp = regs->u_regs[UREG_FP]; in __fetch_reg_addr_user()
182 BUG_ON(regs->tstate & TSTATE_PRIV); in __fetch_reg_addr_user()
187 return (unsigned long __user *)&win32->locals[reg - 16]; in __fetch_reg_addr_user()
191 return &win->locals[reg - 16]; in __fetch_reg_addr_user()
199 BUG_ON(regs->tstate & TSTATE_PRIV); in __fetch_reg_addr_kern()
201 return &regs->u_regs[reg]; in __fetch_reg_addr_kern()
213 if (!test_thread_64bit_stack(regs->u_regs[UREG_FP])) in store_reg()
226 return *(unsigned long *) &f->regs[insn_regnum]; in fpd_regval()
235 return (unsigned long *) &f->regs[insn_regnum]; in fpd_regaddr()
241 return f->regs[insn_regnum]; in fps_regval()
247 return &f->regs[insn_regnum]; in fps_regaddr()
366 tstate = regs->tstate & ~(TSTATE_XCC | TSTATE_ICC); in edge()
367 regs->tstate = tstate | (ccr << 32UL); in edge()
382 bits_mask = (1UL << bits) - 1UL; in array()
417 gsr = current_thread_info()->gsr[0] & 0xffffffff; in bmask()
419 current_thread_info()->gsr[0] = gsr; in bmask()
428 bmask = current_thread_info()->gsr[0] >> 32UL; in bshuffle()
436 unsigned long byte; in bshuffle() local
439 byte = (rs1 >> (which * 8)) & 0xff; in bshuffle()
441 byte = (rs2 >> ((which-8)*8)) & 0xff; in bshuffle()
442 rd_val |= (byte << (i * 8)); in bshuffle()
463 s1 = (rs1 >> (56 - (i * 8))) & 0xff; in pdist()
464 s2 = (rs2 >> (56 - (i * 8))) & 0xff; in pdist()
467 s1 -= s2; in pdist()
482 gsr = current_thread_info()->gsr[0]; in pformat()
486 unsigned long byte; in pformat() local
490 for (byte = 0; byte < 4; byte++) { in pformat()
492 s16 src = (rs2 >> (byte * 16UL)) & 0xffffUL; in pformat()
501 rd_val |= (val << (8 * byte)); in pformat()
542 val = ((from_fixed < -32768) ? in pformat()
543 -32768 : in pformat()
554 unsigned long byte; in pformat() local
559 for (byte = 0; byte < 4; byte++) { in pformat()
561 u8 src = (rs2 >> (byte * 8)) & 0xff; in pformat()
565 rd_val |= (val << (byte * 16)); in pformat()
596 unsigned long byte; in pmul() local
602 for (byte = 0; byte < 4; byte++) { in pmul()
603 u16 src1 = (rs1 >> (byte * 8)) & 0x00ff; in pmul()
604 s16 src2 = (rs2 >> (byte * 16)) & 0xffff; in pmul()
611 rd_val |= ((scaled & 0xffffUL) << (byte * 16UL)); in pmul()
620 unsigned long byte; in pmul() local
628 for (byte = 0; byte < 4; byte++) { in pmul()
629 u16 src1 = (rs1 >> (byte * 8)) & 0x00ff; in pmul()
636 rd_val |= ((scaled & 0xffffUL) << (byte * 16UL)); in pmul()
645 unsigned long byte, ushift; in pmul() local
652 for (byte = 0; byte < 4; byte++) { in pmul()
658 src1 = ((rs1 >> ((16 * byte) + ushift)) & 0x00ff); in pmul()
659 src2 = ((rs2 >> (16 * byte)) & 0xffff); in pmul()
666 rd_val |= ((scaled & 0xffffUL) << (byte * 16UL)); in pmul()
675 unsigned long byte, ushift; in pmul() local
682 for (byte = 0; byte < 2; byte++) { in pmul()
688 src1 = ((rs1 >> ((16 * byte) + ushift)) & 0x00ff); in pmul()
689 src2 = ((rs2 >> (16 * byte)) & 0xffff); in pmul()
697 ((byte * 32UL) + 7UL)); in pmul()
806 unsigned long pc = regs->tpc; in vis_emul()
809 BUG_ON(regs->tstate & TSTATE_PRIV); in vis_emul()
817 return -EFAULT; in vis_emul()
824 return -EINVAL; in vis_emul()
879 /* Three-Dimensional Array Addressing Instructions */ in vis_emul()
886 /* Byte Mask and Shuffle Instructions */ in vis_emul()
896 regs->tpc = regs->tnpc; in vis_emul()
897 regs->tnpc += 4; in vis_emul()