pshl Operation Font Conventions
if (PR[qp]) {
check_target_register
;

shift_count = (variable_form ? GR[r3] : count5);
tmp_nat = (variable_form ? GR[r3].nat : 0);

if (two_byte_form) { // two_byte_form
if (shift_count u> 16)
shift_count = 16;
GR[r1]{15:0}  = GR[r2]{15:0}  << shift_count;
GR[r1]{31:16} = GR[r2]{31:16} << shift_count;
GR[r1]{47:32} = GR[r2]{47:32} << shift_count;
GR[r1]{63:48} = GR[r2]{63:48} << shift_count;
} else { // four_byte_form
if (shift_count u> 32)
shift_count = 32;
GR[r1]{31:0}  = GR[r2]{31:0}  << shift_count;
GR[r1]{63:32} = GR[r2]{63:32} << shift_count;
}

GR[r1].nat = GR[r2].nat || tmp_nat;
}