@@ -1927,47 +1927,42 @@ EmitMul16WithCustomInserter(MachineInstr &MI, MachineBasicBlock *BB,
1927
1927
unsigned int Op1 = MI.getOperand (1 ).getReg ();
1928
1928
unsigned int Op2 = MI.getOperand (2 ).getReg ();
1929
1929
1930
- MachineRegisterInfo &RI = F->getRegInfo ();
1931
- unsigned RegMulLLOp1Op2 = RI.createVirtualRegister (&DPU::GP_REGRegClass);
1932
- unsigned RegMulHHOp1Op2 = RI.createVirtualRegister (&DPU::GP_REGRegClass);
1933
- unsigned RegMulHLOp1Op2 = RI.createVirtualRegister (&DPU::GP_REGRegClass);
1934
- unsigned RegMulHLOp2Op1 = RI.createVirtualRegister (&DPU::GP_REGRegClass);
1935
- unsigned RegLSL1 = RI.createVirtualRegister (&DPU::GP_REGRegClass);
1936
- unsigned RegLSL2 = RI.createVirtualRegister (&DPU::GP_REGRegClass);
1937
- unsigned RegLSL3 = RI.createVirtualRegister (&DPU::GP_REGRegClass);
1938
-
1939
- BuildMI (BB, dl, TII.get (MulLL), RegMulLLOp1Op2)
1930
+ unsigned int RegDest = DPU::R12;
1931
+ unsigned int RegAcc = DPU::R13;
1932
+
1933
+ BB->addLiveIn (RegDest);
1934
+ BuildMI (BB, dl, TII.get (MulLL), RegDest)
1940
1935
.addReg (Op1)
1941
1936
.addReg (Op2)
1942
1937
.addImm (DPUAsmCondition::Small)
1943
1938
.addMBB (fastMBB);
1944
1939
1945
- BuildMI (slowMBB, dl, TII.get (MulHL), RegMulHLOp1Op2).addReg (Op1).addReg (Op2);
1940
+ slowMBB->addLiveIn (RegDest);
1941
+ slowMBB->addLiveIn (RegAcc);
1942
+ BuildMI (slowMBB, dl, TII.get (MulHL), RegAcc).addReg (Op1).addReg (Op2);
1946
1943
1947
- BuildMI (slowMBB, dl, TII.get (DPU::LSL_ADDrrri), RegLSL1 )
1948
- .addReg (RegMulLLOp1Op2 )
1949
- .addReg (RegMulHLOp1Op2 )
1944
+ BuildMI (slowMBB, dl, TII.get (DPU::LSL_ADDrrri), RegDest )
1945
+ .addReg (RegDest )
1946
+ .addReg (RegAcc )
1950
1947
.addImm (8 );
1951
1948
1952
- BuildMI (slowMBB, dl, TII.get (MulHL), RegMulHLOp2Op1 ).addReg (Op2).addReg (Op1);
1949
+ BuildMI (slowMBB, dl, TII.get (MulHL), RegAcc ).addReg (Op2).addReg (Op1);
1953
1950
1954
- BuildMI (slowMBB, dl, TII.get (DPU::LSL_ADDrrri), RegLSL2 )
1955
- .addReg (RegLSL1 )
1956
- .addReg (RegMulHLOp2Op1 )
1951
+ BuildMI (slowMBB, dl, TII.get (DPU::LSL_ADDrrri), RegDest )
1952
+ .addReg (RegDest )
1953
+ .addReg (RegAcc )
1957
1954
.addImm (8 );
1958
1955
1959
- BuildMI (slowMBB, dl, TII.get (MulHH), RegMulHHOp1Op2 ).addReg (Op1).addReg (Op2);
1956
+ BuildMI (slowMBB, dl, TII.get (MulHH), RegAcc ).addReg (Op1).addReg (Op2);
1960
1957
1961
- BuildMI (slowMBB, dl, TII.get (DPU::LSL_ADDrrri), RegLSL3 )
1962
- .addReg (RegLSL2 )
1963
- .addReg (RegMulHHOp1Op2 )
1958
+ BuildMI (slowMBB, dl, TII.get (DPU::LSL_ADDrrri), RegDest )
1959
+ .addReg (RegDest )
1960
+ .addReg (RegAcc )
1964
1961
.addImm (16 );
1965
1962
1966
- BuildMI (*fastMBB, fastMBB->begin (), dl, TII.get (DPU::PHI), Dest)
1967
- .addReg (RegMulLLOp1Op2)
1968
- .addMBB (BB)
1969
- .addReg (RegLSL3)
1970
- .addMBB (slowMBB);
1963
+ fastMBB->addLiveIn (RegDest);
1964
+ BuildMI (*fastMBB, fastMBB->begin (), dl, TII.get (TargetOpcode::COPY), Dest)
1965
+ .addReg (RegDest);
1971
1966
1972
1967
MI.eraseFromParent (); // The pseudo instruction is gone now.
1973
1968
return fastMBB;
0 commit comments