ARM64: uncopy/paste helper function
authorTim Northover <tnorthover@apple.com>
Sun, 30 Mar 2014 08:30:28 +0000 (08:30 +0000)
committerTim Northover <tnorthover@apple.com>
Sun, 30 Mar 2014 08:30:28 +0000 (08:30 +0000)
It was doing functional but highly suspect operations on bools due to
the more limited shifting operands supported by memory instructions.

Should fix some MSVC warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205134 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM64/MCTargetDesc/ARM64AddressingModes.h

index 1a2edf1debeef4c0d99f9406eb7ae6087a1b729c..75d0ee129ce85ee30949f0d9ad09a1ab0deefebf 100644 (file)
@@ -149,7 +149,7 @@ static inline ARM64_AM::ExtendType getMemExtendType(unsigned Imm) {
 }
 
 /// getExtendImm - Encode the extend type and amount for a load/store inst:
-///   imm:     3-bit extend amount
+///   doshift:     should the offset be scaled by the access size
 ///   shifter: 000 ==> uxtb
 ///            001 ==> uxth
 ///            010 ==> uxtw
@@ -159,10 +159,9 @@ static inline ARM64_AM::ExtendType getMemExtendType(unsigned Imm) {
 ///            110 ==> sxtw
 ///            111 ==> sxtx
 ///   {3-1}  = shifter
-///   {0}  = imm3
-static inline unsigned getMemExtendImm(ARM64_AM::ExtendType ET, bool Imm) {
-  assert((Imm & 0x7) == Imm && "Illegal shifted immedate value!");
-  return (unsigned(ET) << 1) | (Imm & 0x7);
+///   {0}  = doshift
+static inline unsigned getMemExtendImm(ARM64_AM::ExtendType ET, bool DoShift) {
+  return (unsigned(ET) << 1) | unsigned(DoShift);
 }
 
 //===----------------------------------------------------------------------===//