ARM convenience aliases for VSQRT.

llvm-svn: 146201
This commit is contained in:
Jim Grosbach 2011-12-08 22:51:25 +00:00
parent 0a7625d661
commit 8cc83fa1b7
2 changed files with 7 additions and 1 deletions

View File

@ -1168,9 +1168,15 @@ def : MnemonicAlias<"flds", "vldr">;
def : MnemonicAlias<"fldd", "vldr">;
def : MnemonicAlias<"fmrs", "vmov">;
def : MnemonicAlias<"fmsr", "vmov">;
def : MnemonicAlias<"fsqrts", "vsqrt">;
def : MnemonicAlias<"fsqrtd", "vsqrt">;
def : VFP2InstAlias<"fmstat${p}", (FMSTAT pred:$p)>;
// No need for the size suffix on VSQRT. It's implied by the register classes.
def : VFP2InstAlias<"vsqrt${p} $Sd, $Sm", (VSQRTS SPR:$Sd, SPR:$Sm, pred:$p)>;
def : VFP2InstAlias<"vsqrt${p} $Dd, $Dm", (VSQRTD DPR:$Dd, DPR:$Dm, pred:$p)>;
// VLDR/VSTR accept an optional type suffix.
def : VFP2InstAlias<"vldr${p}.32 $Sd, $addr",
(VLDRS SPR:$Sd, addrmode5:$addr, pred:$p)>;

View File

@ -4296,7 +4296,7 @@ StringRef ARMAsmParser::splitMnemonic(StringRef Mnemonic,
Mnemonic == "vcls" || Mnemonic == "vmls" || Mnemonic == "vmrs" ||
Mnemonic == "vnmls" || Mnemonic == "vqabs" || Mnemonic == "vrecps" ||
Mnemonic == "vrsqrts" || Mnemonic == "srs" || Mnemonic == "flds" ||
Mnemonic == "fmrs" ||
Mnemonic == "fmrs" || Mnemonic == "fsqrts" ||
(Mnemonic == "movs" && isThumb()))) {
Mnemonic = Mnemonic.slice(0, Mnemonic.size() - 1);
CarrySetting = true;