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

if (one_byte_form) {
x[0] = GR[r2]{7:0}; y[0] = GR[r3]{7:0};
x[1] = GR[r2]{15:8}; y[1] = GR[r3]{15:8};
x[2] = GR[r2]{23:16}; y[2] = GR[r3]{23:16};
x[3] = GR[r2]{31:24}; y[3] = GR[r3]{31:24};
x[4] = GR[r2]{39:32}; y[4] = GR[r3]{39:32};
x[5] = GR[r2]{47:40}; y[5] = GR[r3]{47:40};
x[6] = GR[r2]{55:48}; y[6] = GR[r3]{55:48};
x[7] = GR[r2]{63:56}; y[7] = GR[r3]{63:56};

for (i = 0; i < 8; i++) {
temp[i] = zero_ext(x[i], 8) - zero_ext(y[i], 8);
res[i] = (temp[i]{8:0} u>> 1) | (temp[i]{0});
}
GR[r1] = concatenate8(res[7], res[6], res[5], res[4],
  res[3], res[2], res[1], res[0]);

} else { // two_byte_form
x[0] = GR[r2]{15:0}; y[0] = GR[r3]{15:0};
x[1] = GR[r2]{31:16}; y[1] = GR[r3]{31:16};
x[2] = GR[r2]{47:32}; y[2] = GR[r3]{47:32};
x[3] = GR[r2]{63:48}; y[3] = GR[r3]{63:48};

for (i = 0; i < 4; i++) {
temp[i] = zero_ext(x[i], 16) - zero_ext(y[i], 16);
res[i] = (temp[i]{16:0} u>> 1) | (temp[i]{0});
}
GR[r1] = concatenate4(res[3], res[2], res[1], res[0]);
}
GR[r1].nat = GR[r2].nat || GR[r3].nat;
}

 

 

 

 

 

 

 


For details, see Volume 3: Instruction Set Reference of the Intel(R) Itanium(R) Architecture Software Developer's Manual . For the latest updates on the instruction set information, go to the web site.