Hallo,
mein Problem betrifft eigentlich eher Programmierung, aber da es sich sehr um den Itanium2 dreht, habe ich die Frage mal in diesem Unterforum eingestellt:
Habe zwei Floating-Point-Zahlen (double) a und b, die ich miteinander multipliziere und deren vollen Signifikanden (104bits) ich am Ende in zwei aufeinanderfolgenden General Registern speichern möchte.
Klar kann ich mit
x_high = a * b
x_low = a * b - x_high
die oberen 64 und die unteren 40bits bestimmen, und mit fcvt.fx und getf.sig die Signifikanden jeweils in General Register verschieben. Allerdings habe ich dann im ersten Register 64 bits und im zweiten 40 bits oder weniger, wobei ich jedoch nicht genau weiss, ob die Bits nahtlos aneinander anschliessen. Wenn das sichergestellt wäre, könnte ich ja die Bits im zweiten Register mit nem Shift um 20 bits nach links verschieben, und anschliessend per Shift-Right-Pair alle Bits wieder 20 bits nach rechts zu verschieben. Dann hätte ich den kompletten Signifikanden in zwei Registern. Ist der Ansatz von der Idee zumindest in Ordnung?
Oder gibt es eine Möglichkeit, direkt die 64 niedrigsten bits in x_low und die restlichen 40 bits in x_high zu speichern?
Ich hoffe, es ist ungefähr rausgekommen, was ich vorhabe. Wenn nicht, einfach fragen,.
Besten Dank für eure Hilfe
Heinzi