@@ -63,27 +63,6 @@ loadFPCRImmediate(MCRegister Reg, unsigned RegBitWidth, const APInt &Value) {
6363 return {LoadImm, MoveToFPCR};
6464}
6565
66- // Generates instructions to load an immediate value into an FPR8 register.
67- static std::vector<MCInst>
68- loadFP8Immediate (MCRegister Reg, unsigned RegBitWidth, const APInt &Value) {
69- assert (Value.getBitWidth () <= 8 && " Value must fit in 8 bits" );
70-
71- // Use a temporary general-purpose register (W8) to hold the 8-bit value
72- MCRegister TempReg = AArch64::W8;
73-
74- // Load the 8-bit value into a general-purpose register (W8)
75- MCInst LoadImm = MCInstBuilder (AArch64::MOVi32imm)
76- .addReg (TempReg)
77- .addImm (Value.getZExtValue ());
78-
79- // Move the value from the general-purpose register to the FPR16 register
80- // Convert the FPR8 register to an FPR16 register
81- MCRegister FPR16Reg = Reg + (AArch64::H0 - AArch64::B0);
82- MCInst MoveToFPR =
83- MCInstBuilder (AArch64::FMOVWHr).addReg (FPR16Reg).addReg (TempReg);
84- return {LoadImm, MoveToFPR};
85- }
86-
8766// Fetch base-instruction to load an FP immediate value into a register.
8867static unsigned getLoadFPImmediateOpcode (unsigned RegBitWidth) {
8968 switch (RegBitWidth) {
@@ -129,7 +108,7 @@ class ExegesisAArch64Target : public ExegesisTarget {
129108 if (AArch64::PPRRegClass.contains (Reg))
130109 return {loadPPRImmediate (Reg, 16 , Value)};
131110 if (AArch64::FPR8RegClass.contains (Reg))
132- return loadFP8Immediate (Reg, 8 , Value);
111+ return { loadFPImmediate (Reg - AArch64::B0 + AArch64::D0, 64 , Value)} ;
133112 if (AArch64::FPR16RegClass.contains (Reg))
134113 return {loadFPImmediate (Reg, 16 , Value)};
135114 if (AArch64::FPR32RegClass.contains (Reg))
0 commit comments