diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 490ae72dcdbc..8d761e3151d3 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -486,7 +486,7 @@ public: this->Int64Type = TargetInfo::SignedLongLong; this->SizeType = TargetInfo::UnsignedInt; this->DescriptionString = "E-p:32:32:32-" - "i64:64:64-v128:128:128-n32"; + "i64:64:64-n32"; } }; @@ -1180,7 +1180,7 @@ class PPC32TargetInfo : public PPCTargetInfo { public: PPC32TargetInfo(const llvm::Triple &Triple) : PPCTargetInfo(Triple) { DescriptionString = "E-p:32:32:32-" - "i64:64:64-v128:128:128-n32"; + "i64:64:64-n32"; switch (getTriple().getOS()) { case llvm::Triple::Linux: @@ -1226,11 +1226,11 @@ public: LongDoubleFormat = &llvm::APFloat::IEEEdouble; DescriptionString = "E-p:64:64:64-" "i64:64:64-" - "v128:128:128-n32:64"; + "n32:64"; } else DescriptionString = "E-p:64:64:64-" "i64:64:64-f128:128:128-" - "v128:128:128-n32:64"; + "n32:64"; // PPC64 supports atomics up to 8 bytes. MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; @@ -1254,7 +1254,7 @@ public: LongLongAlign = 32; SuitableAlign = 128; DescriptionString = "E-p:32:32:32" - "-v128:128:128-n32"; + "-n32"; } virtual BuiltinVaListKind getBuiltinVaListKind() const { return TargetInfo::CharPtrBuiltinVaList; @@ -1269,7 +1269,7 @@ public: HasAlignMac68kSupport = true; SuitableAlign = 128; DescriptionString = "E-p:64:64:64-" - "i64:64:64-v128:128:128-n32:64"; + "i64:64:64-n32:64"; } }; } // end anonymous namespace. @@ -1377,7 +1377,7 @@ namespace { SizeType = PtrDiffType = IntPtrType = TargetInfo::UnsignedInt; DescriptionString = "e-p:32:32:32-i64:64:64" - "-v16:16:16-v32:32:32-v64:64:64-v128:128:128-" + "-v16:16:16-v32:32:32-" "n16:32:64"; } }; @@ -1389,7 +1389,7 @@ namespace { SizeType = PtrDiffType = IntPtrType = TargetInfo::UnsignedLongLong; DescriptionString = "e-p:64:64:64-i64:64:64" - "-v16:16:16-v32:32:32-v64:64:64-v128:128:128-" + "-v16:16:16-v32:32:32-" "n16:32:64"; } }; @@ -1410,7 +1410,7 @@ static const char *DescriptionStringR600 = "e" "-p:32:32:32" "-i64:64:64" - "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128" + "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v96:128:128" "-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-v2048:2048:2048" "-n32:64"; @@ -1418,7 +1418,7 @@ static const char *DescriptionStringR600DoubleOps = "e" "-p:32:32:32" "-i64:64:64" - "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128" + "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v96:128:128" "-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-v2048:2048:2048" "-n32:64"; @@ -1427,7 +1427,7 @@ static const char *DescriptionStringSI = "-p:64:64:64" "-p3:32:32:32" "-i64:64:64" - "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128" + "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v96:128:128" "-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-v2048:2048:2048" "-n32:64"; @@ -2934,7 +2934,7 @@ public: LongDoubleAlign = 32; SuitableAlign = 128; DescriptionString = "e-p:32:32:32" - "-f64:32:64-v64:64:64-v128:128:128-" + "-f64:32:64-" "a:0:64-f80:32:32-n8:16:32-S128"; SizeType = UnsignedInt; PtrDiffType = SignedInt; @@ -3030,7 +3030,7 @@ public: SizeType = UnsignedLong; IntPtrType = SignedLong; DescriptionString = "e-p:32:32:32" - "-f64:32:64-v64:64:64-v128:128:128-" + "-f64:32:64-" "a:0:64-f80:128:128-n8:16:32-S128"; HasAlignMac68kSupport = true; } @@ -3048,8 +3048,8 @@ public: WCharType = UnsignedShort; DoubleAlign = LongLongAlign = 64; DescriptionString = "e-p:32:32:32-" - "i64:64:64-f80:128:128-v64:64:64-" - "v128:128:128-a:0:64-f80:32:32-n8:16:32-S32"; + "i64:64:64-f80:128:128-" + "a:0:64-f80:32:32-n8:16:32-S32"; } virtual void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const { @@ -3117,7 +3117,7 @@ public: WCharType = UnsignedShort; DoubleAlign = LongLongAlign = 64; DescriptionString = "e-p:32:32:32-" - "i64:64:64-v64:64:64-v128:128:128-" + "i64:64:64-" "a:0:64-f80:32:32-n8:16:32-S32"; } virtual void getTargetDefines(const LangOptions &Opts, @@ -3225,7 +3225,7 @@ public: RegParmMax = 6; DescriptionString = "e-p:64:64:64-" - "i64:64:64-v64:64:64-v128:128:128-" + "i64:64:64-" "a:0:64-s:64:64-f80:128:128-n8:16:32:64-S128"; // Use fpret only for long double. @@ -3715,11 +3715,11 @@ public: // so set preferred for small types to 32. DescriptionString = ("e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-" "i64:64:64-" - "v64:64:64-v128:64:128-a:0:32-n32-S64"); + "v128:64:128-a:0:32-n32-S64"); } else { DescriptionString = ("e-p:32:32:32-" "i64:64:64-" - "v64:64:64-v128:64:128-a:0:64-n32-S64"); + "v128:64:128-a:0:64-n32-S64"); } // ARM targets default to using the ARM C++ ABI. @@ -4487,7 +4487,7 @@ public: SparcV8TargetInfo(const llvm::Triple &Triple) : SparcTargetInfo(Triple) { // FIXME: Support Sparc quad-precision long double? DescriptionString = "E-p:32:32:32-" - "i64:64:64-v64:64:64-n32-S64"; + "i64:64:64-n32-S64"; } virtual void getTargetDefines(const LangOptions &Opts, @@ -4503,7 +4503,7 @@ public: SparcV9TargetInfo(const llvm::Triple &Triple) : SparcTargetInfo(Triple) { // FIXME: Support Sparc quad-precision long double? DescriptionString = "E-p:64:64:64-" - "i64:64:64-v64:64:64-n32:64-S128"; + "i64:64:64-n32:64-S128"; // This is an LP64 platform. LongWidth = LongAlign = PointerWidth = PointerAlign = 64; @@ -5115,7 +5115,7 @@ public: class Mips32EBTargetInfo : public Mips32TargetInfoBase { virtual void setDescriptionString() { DescriptionString = "E-p:32:32:32-i8:8:32-i16:16:32-" - "i64:64:64-v64:64:64-n32-S64"; + "i64:64:64-n32-S64"; } public: @@ -5133,7 +5133,7 @@ public: class Mips32ELTargetInfo : public Mips32TargetInfoBase { virtual void setDescriptionString() { DescriptionString = "e-p:32:32:32-i8:8:32-i16:16:32-" - "i64:64:64-v64:64:64-n32-S64"; + "i64:64:64-n32-S64"; } public: @@ -5244,11 +5244,11 @@ class Mips64EBTargetInfo : public Mips64TargetInfoBase { if (ABI == "n32") DescriptionString = "E-p:32:32:32-i8:8:32-i16:16:32-" "i64:64:64-f128:128:128-" - "v64:64:64-n32:64-S128"; + "n32:64-S128"; else DescriptionString = "E-p:64:64:64-i8:8:32-i16:16:32-" "i64:64:64-f128:128:128-" - "v64:64:64-n32:64-S128"; + "n32:64-S128"; } @@ -5268,11 +5268,11 @@ class Mips64ELTargetInfo : public Mips64TargetInfoBase { if (ABI == "n32") DescriptionString = "e-p:32:32:32-i8:8:32-i16:16:32-" "i64:64:64-f128:128:128" - "-v64:64:64-n32:64-S128"; + "-n32:64-S128"; else DescriptionString = "e-p:64:64:64-i8:8:32-i16:16:32-" "i64:64:64-f128:128:128-" - "v64:64:64-n32:64-S128"; + "n32:64-S128"; } public: Mips64ELTargetInfo(const llvm::Triple &Triple) @@ -5420,7 +5420,7 @@ namespace { DescriptionString = "e-p:32:32:32-i64:64:64" "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-" - "v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-" + "v96:128:128-v192:256:256-v256:256:256-" "v512:512:512-v1024:1024:1024"; } virtual void getTargetDefines(const LangOptions &Opts, @@ -5438,7 +5438,7 @@ namespace { DescriptionString = "e-p:64:64:64-i64:64:64" "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-" - "v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-" + "v96:128:128-v192:256:256-v256:256:256-" "v512:512:512-v1024:1024:1024"; } virtual void getTargetDefines(const LangOptions &Opts, diff --git a/clang/test/CodeGen/target-data.c b/clang/test/CodeGen/target-data.c index b72e1dc7749d..90a738c174e2 100644 --- a/clang/test/CodeGen/target-data.c +++ b/clang/test/CodeGen/target-data.c @@ -1,22 +1,22 @@ // RUN: %clang_cc1 -triple i686-unknown-unknown -emit-llvm -o - %s | \ // RUN: FileCheck --check-prefix=I686-UNKNOWN %s -// I686-UNKNOWN: target datalayout = "e-p:32:32:32-f64:32:64-v64:64:64-v128:128:128-a:0:64-f80:32:32-n8:16:32-S128" +// I686-UNKNOWN: target datalayout = "e-p:32:32:32-f64:32:64-a:0:64-f80:32:32-n8:16:32-S128" // RUN: %clang_cc1 -triple i686-apple-darwin9 -emit-llvm -o - %s | \ // RUN: FileCheck --check-prefix=I686-DARWIN %s -// I686-DARWIN: target datalayout = "e-p:32:32:32-f64:32:64-v64:64:64-v128:128:128-a:0:64-f80:128:128-n8:16:32-S128" +// I686-DARWIN: target datalayout = "e-p:32:32:32-f64:32:64-a:0:64-f80:128:128-n8:16:32-S128" // RUN: %clang_cc1 -triple i686-unknown-win32 -emit-llvm -o - %s | \ // RUN: FileCheck --check-prefix=I686-WIN32 %s -// I686-WIN32: target datalayout = "e-p:32:32:32-i64:64:64-f80:128:128-v64:64:64-v128:128:128-a:0:64-f80:32:32-n8:16:32-S32" +// I686-WIN32: target datalayout = "e-p:32:32:32-i64:64:64-f80:128:128-a:0:64-f80:32:32-n8:16:32-S32" // RUN: %clang_cc1 -triple i686-unknown-cygwin -emit-llvm -o - %s | \ // RUN: FileCheck --check-prefix=I686-CYGWIN %s -// I686-CYGWIN: target datalayout = "e-p:32:32:32-i64:64:64-v64:64:64-v128:128:128-a:0:64-f80:32:32-n8:16:32-S32" +// I686-CYGWIN: target datalayout = "e-p:32:32:32-i64:64:64-a:0:64-f80:32:32-n8:16:32-S32" // RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | \ // RUN: FileCheck --check-prefix=X86_64 %s -// X86_64: target datalayout = "e-p:64:64:64-i64:64:64-v64:64:64-v128:128:128-a:0:64-s:64:64-f80:128:128-n8:16:32:64-S128" +// X86_64: target datalayout = "e-p:64:64:64-i64:64:64-a:0:64-s:64:64-f80:128:128-n8:16:32:64-S128" // RUN: %clang_cc1 -triple xcore-unknown-unknown -emit-llvm -o - %s | \ // RUN: FileCheck --check-prefix=XCORE %s @@ -24,39 +24,39 @@ // RUN: %clang_cc1 -triple sparc-sun-solaris -emit-llvm -o - %s | \ // RUN: FileCheck %s --check-prefix=SPARC-V8 -// SPARC-V8: target datalayout = "E-p:32:32:32-i64:64:64-v64:64:64-n32-S64" +// SPARC-V8: target datalayout = "E-p:32:32:32-i64:64:64-n32-S64" // RUN: %clang_cc1 -triple sparcv9-sun-solaris -emit-llvm -o - %s | \ // RUN: FileCheck %s --check-prefix=SPARC-V9 -// SPARC-V9: target datalayout = "E-p:64:64:64-i64:64:64-v64:64:64-n32:64-S128" +// SPARC-V9: target datalayout = "E-p:64:64:64-i64:64:64-n32:64-S128" // RUN: %clang_cc1 -triple mipsel-linux-gnu -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=MIPS-32EL -// MIPS-32EL: target datalayout = "e-p:32:32:32-i8:8:32-i16:16:32-i64:64:64-v64:64:64-n32-S64" +// MIPS-32EL: target datalayout = "e-p:32:32:32-i8:8:32-i16:16:32-i64:64:64-n32-S64" // RUN: %clang_cc1 -triple mips-linux-gnu -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=MIPS-32EB -// MIPS-32EB: target datalayout = "E-p:32:32:32-i8:8:32-i16:16:32-i64:64:64-v64:64:64-n32-S64" +// MIPS-32EB: target datalayout = "E-p:32:32:32-i8:8:32-i16:16:32-i64:64:64-n32-S64" // RUN: %clang_cc1 -triple mips64el-linux-gnu -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=MIPS-64EL -// MIPS-64EL: target datalayout = "e-p:64:64:64-i8:8:32-i16:16:32-i64:64:64-f128:128:128-v64:64:64-n32:64-S128" +// MIPS-64EL: target datalayout = "e-p:64:64:64-i8:8:32-i16:16:32-i64:64:64-f128:128:128-n32:64-S128" // RUN: %clang_cc1 -triple mips64el-linux-gnu -o - -emit-llvm -target-abi n32 \ // RUN: %s | FileCheck %s -check-prefix=MIPS-64EL-N32 -// MIPS-64EL-N32: target datalayout = "e-p:32:32:32-i8:8:32-i16:16:32-i64:64:64-f128:128:128-v64:64:64-n32:64-S128" +// MIPS-64EL-N32: target datalayout = "e-p:32:32:32-i8:8:32-i16:16:32-i64:64:64-f128:128:128-n32:64-S128" // RUN: %clang_cc1 -triple mips64-linux-gnu -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=MIPS-64EB -// MIPS-64EB: target datalayout = "E-p:64:64:64-i8:8:32-i16:16:32-i64:64:64-f128:128:128-v64:64:64-n32:64-S128" +// MIPS-64EB: target datalayout = "E-p:64:64:64-i8:8:32-i16:16:32-i64:64:64-f128:128:128-n32:64-S128" // RUN: %clang_cc1 -triple mips64-linux-gnu -o - -emit-llvm %s -target-abi n32 \ // RUN: | FileCheck %s -check-prefix=MIPS-64EB-N32 -// MIPS-64EB-N32: target datalayout = "E-p:32:32:32-i8:8:32-i16:16:32-i64:64:64-f128:128:128-v64:64:64-n32:64-S128" +// MIPS-64EB-N32: target datalayout = "E-p:32:32:32-i8:8:32-i16:16:32-i64:64:64-f128:128:128-n32:64-S128" // RUN: %clang_cc1 -triple powerpc64-lv2 -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=PS3 -// PS3: target datalayout = "E-p:32:32:32-i64:64:64-v128:128:128-n32" +// PS3: target datalayout = "E-p:32:32:32-i64:64:64-n32" // RUN: %clang_cc1 -triple i686-nacl -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=NACL @@ -66,43 +66,43 @@ // RUN: %clang_cc1 -triple powerpc-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=PPC -// PPC: target datalayout = "E-p:32:32:32-i64:64:64-v128:128:128-n32" +// PPC: target datalayout = "E-p:32:32:32-i64:64:64-n32" // RUN: %clang_cc1 -triple powerpc64-freebsd -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=PPC64-FREEBSD -// PPC64-FREEBSD: target datalayout = "E-p:64:64:64-i64:64:64-v128:128:128-n32:64" +// PPC64-FREEBSD: target datalayout = "E-p:64:64:64-i64:64:64-n32:64" // RUN: %clang_cc1 -triple powerpc64-linux -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=PPC64-LINUX -// PPC64-LINUX: target datalayout = "E-p:64:64:64-i64:64:64-f128:128:128-v128:128:128-n32:64" +// PPC64-LINUX: target datalayout = "E-p:64:64:64-i64:64:64-f128:128:128-n32:64" // RUN: %clang_cc1 -triple powerpc-darwin -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=PPC32-DARWIN -// PPC32-DARWIN: target datalayout = "E-p:32:32:32-v128:128:128-n32" +// PPC32-DARWIN: target datalayout = "E-p:32:32:32-n32" // RUN: %clang_cc1 -triple powerpc64-darwin -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=PPC64-DARWIN -// PPC64-DARWIN: target datalayout = "E-p:64:64:64-i64:64:64-v128:128:128-n32:64" +// PPC64-DARWIN: target datalayout = "E-p:64:64:64-i64:64:64-n32:64" // RUN: %clang_cc1 -triple nvptx-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=NVPTX -// NVPTX: target datalayout = "e-p:32:32:32-i64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64" +// NVPTX: target datalayout = "e-p:32:32:32-i64:64:64-v16:16:16-v32:32:32-n16:32:64" // RUN: %clang_cc1 -triple nvptx64-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=NVPTX64 -// NVPTX64: target datalayout = "e-p:64:64:64-i64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64" +// NVPTX64: target datalayout = "e-p:64:64:64-i64:64:64-v16:16:16-v32:32:32-n16:32:64" // RUN: %clang_cc1 -triple r600-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=R600 -// R600: target datalayout = "e-p:32:32:32-i64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-v2048:2048:2048-n32:64" +// R600: target datalayout = "e-p:32:32:32-i64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v96:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-v2048:2048:2048-n32:64" // RUN: %clang_cc1 -triple r600-unknown -target-cpu cayman -o - -emit-llvm %s \ // RUN: | FileCheck %s -check-prefix=R600D -// R600D: target datalayout = "e-p:32:32:32-i64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-v2048:2048:2048-n32:64" +// R600D: target datalayout = "e-p:32:32:32-i64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v96:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-v2048:2048:2048-n32:64" // RUN: %clang_cc1 -triple r600-unknown -target-cpu hawaii -o - -emit-llvm %s \ // RUN: | FileCheck %s -check-prefix=R600SI -// R600SI: target datalayout = "e-p:64:64:64-p3:32:32:32-i64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-v2048:2048:2048-n32:64" +// R600SI: target datalayout = "e-p:64:64:64-p3:32:32:32-i64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v96:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-v2048:2048:2048-n32:64" // RUN: %clang_cc1 -triple aarch64-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=AARCH64 @@ -110,11 +110,11 @@ // RUN: %clang_cc1 -triple thumb-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=THUMB -// THUMB: target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i64:64:64-v64:64:64-v128:64:128-a:0:32-n32-S64" +// THUMB: target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i64:64:64-v128:64:128-a:0:32-n32-S64" // RUN: %clang_cc1 -triple arm-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=ARM -// ARM: target datalayout = "e-p:32:32:32-i64:64:64-v64:64:64-v128:64:128-a:0:64-n32-S64" +// ARM: target datalayout = "e-p:32:32:32-i64:64:64-v128:64:128-a:0:64-n32-S64" // RUN: %clang_cc1 -triple thumb-unknown -o - -emit-llvm -target-abi apcs-gnu \ // RUN: %s | FileCheck %s -check-prefix=THUMB-GNU @@ -142,8 +142,8 @@ // RUN: %clang_cc1 -triple spir-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=SPIR -// SPIR: target datalayout = "e-p:32:32:32-i64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024" +// SPIR: target datalayout = "e-p:32:32:32-i64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v96:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024" // RUN: %clang_cc1 -triple spir64-unknown -o - -emit-llvm %s | \ // RUN: FileCheck %s -check-prefix=SPIR64 -// SPIR64: target datalayout = "e-p:64:64:64-i64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024" +// SPIR64: target datalayout = "e-p:64:64:64-i64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v96:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024"