diff options
| author | Dan Gohman <gohman@apple.com> | 2010-02-28 00:17:42 +0000 | 
|---|---|---|
| committer | Dan Gohman <gohman@apple.com> | 2010-02-28 00:17:42 +0000 | 
| commit | bdd6405f29ddf975fca9b1cd9bd0121470c427d5 (patch) | |
| tree | 2f6d37eb42932168667ca122aaf743277ca32c6b /llvm/lib/Target/X86/X86RegisterInfo.cpp | |
| parent | 31f595f5efc27b73f4a873c2f299c9181573f917 (diff) | |
| download | bcm5719-llvm-bdd6405f29ddf975fca9b1cd9bd0121470c427d5.tar.gz bcm5719-llvm-bdd6405f29ddf975fca9b1cd9bd0121470c427d5.zip | |
Implement XMM subregs.
Extracting the low element of a vector is now done with EXTRACT_SUBREG,
and the zero-extension performed by load movss is now modeled with
SUBREG_TO_REG, and so on.
Register-to-register movss and movsd are no longer considered copies;
they are two-address instructions which insert a scalar into a vector.
llvm-svn: 97354
Diffstat (limited to 'llvm/lib/Target/X86/X86RegisterInfo.cpp')
| -rw-r--r-- | llvm/lib/Target/X86/X86RegisterInfo.cpp | 6 | 
1 files changed, 6 insertions, 0 deletions
| diff --git a/llvm/lib/Target/X86/X86RegisterInfo.cpp b/llvm/lib/Target/X86/X86RegisterInfo.cpp index 45ff2975086..946d6b23c6b 100644 --- a/llvm/lib/Target/X86/X86RegisterInfo.cpp +++ b/llvm/lib/Target/X86/X86RegisterInfo.cpp @@ -191,6 +191,8 @@ X86RegisterInfo::getMatchingSuperRegClass(const TargetRegisterClass *A,          return &X86::GR16_NOREXRegClass;        else if (A == &X86::GR16_ABCDRegClass)          return &X86::GR16_ABCDRegClass; +    } else if (B == &X86::FR32RegClass) { +      return A;      }      break;    case 2: @@ -207,6 +209,8 @@ X86RegisterInfo::getMatchingSuperRegClass(const TargetRegisterClass *A,        else if (A == &X86::GR16RegClass || A == &X86::GR16_ABCDRegClass ||                 A == &X86::GR16_NOREXRegClass)          return &X86::GR16_ABCDRegClass; +    } else if (B == &X86::FR64RegClass) { +      return A;      }      break;    case 3: @@ -234,6 +238,8 @@ X86RegisterInfo::getMatchingSuperRegClass(const TargetRegisterClass *A,          return &X86::GR32_NOREXRegClass;        else if (A == &X86::GR32_ABCDRegClass)          return &X86::GR64_ABCDRegClass; +    } else if (B == &X86::VR128RegClass) { +      return A;      }      break;    case 4: | 

