1*45699Sbostic /* Ashlq.c 1.2 90/12/04 */ 229633Ssam 3*45699Sbostic #include "align.h" 429633Ssam shlq(infop) process_info *infop; 529633Ssam /* 629633Ssam /* Shift left quadword. 729633Ssam /* 829633Ssam /********************************/ 929633Ssam { 1029633Ssam register long Register_12; /* Has to be first reg ! */ 1129633Ssam register long Register_11; 1229633Ssam register long Register_10; 1329633Ssam register long *Register_9; 1429633Ssam quadword result; 1529633Ssam 1629633Ssam Register_12 = operand(infop,0)->data; /* Counter */ 1729633Ssam Register_9 = &operand(infop,1)->data; /* Source */ 1829633Ssam 1929633Ssam Register_10=psl; 2029633Ssam Set_psl(r10); /* restore the user psl */ 2129633Ssam asm (" shlq r12,(r9),r10"); 2229633Ssam asm (" movpsl r12"); 2329633Ssam New_cc (Register_12); 2429633Ssam result.high = Register_10; 2529633Ssam result.low = Register_11; 2629633Ssam write_quadword (infop, result, operand(infop,2)); 2729633Ssam } 28