unpack Operation Font Conventions
if
(PR[qp]) {
check_target_register;
if (one_byte_form) { // one-byte elements
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};
if (high_form)
GR[r1] = concatenate8(
x[7], y[7], x[6], y[6],
x[5], y[5], x[4], y[4]);
else // low_form
GR[r1] = concatenate8( x[3], y[3], x[2], y[2],
x[1], y[1], x[0], y[0]);
} else if (two_byte_form) { // two-byte elements
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};
if (high_form)
GR[r1] = concatenate4(x[3],
y[3], x[2], y[2]);
else // low_form
GR[r1] = concatenate4(x[1], y[1], x[0], y[0]);
} else { // four-byte elements
x[0] = GR[r2]{31:0}; y[0] = GR[r3]{31:0};
x[1] = GR[r2]{63:32}; y[1] = GR[r3]{63:32};
if (high_form)
GR[r1] = concatenate2(x[1],
y[1]);
else // low_form
GR[r1] = concatenate2(x[0], y[0]);
}
GR[r1].nat = GR[r2].nat || GR[r3].nat;
}