[AArch64][Driver][SVE] Allow -msve-vector-bits=<n>+ syntax to mean no maximum vscale
This patch splits the existing SveVectorBits LangOpt into VScaleMin and VScaleMax LangOpts such that we can represent such an option. The cc1 option has also been split into -mvscale-{min,max}=<n> options so that the cc1 arguments better reflect the vscale_range IR attribute. Differential Revision: https://reviews.llvm.org/D111790
This commit is contained in:
parent
a24b2b6aa0
commit
0ce46a1d43
|
@ -425,7 +425,8 @@ LANGOPT(SpeculativeLoadHardening, 1, 0, "Speculative load hardening enabled")
|
||||||
LANGOPT(RelativeCXXABIVTables, 1, 0,
|
LANGOPT(RelativeCXXABIVTables, 1, 0,
|
||||||
"Use an ABI-incompatible v-table layout that uses relative references")
|
"Use an ABI-incompatible v-table layout that uses relative references")
|
||||||
|
|
||||||
LANGOPT(ArmSveVectorBits, 32, 0, "SVE vector size in bits")
|
LANGOPT(VScaleMin, 32, 0, "Minimum vscale value")
|
||||||
|
LANGOPT(VScaleMax, 32, 0, "Maximum vscale value")
|
||||||
|
|
||||||
ENUM_LANGOPT(ExtendIntArgs, ExtendArgsKind, 1, ExtendArgsKind::ExtendTo32,
|
ENUM_LANGOPT(ExtendIntArgs, ExtendArgsKind, 1, ExtendArgsKind::ExtendTo32,
|
||||||
"Controls how scalar integer arguments are extended in calls "
|
"Controls how scalar integer arguments are extended in calls "
|
||||||
|
|
|
@ -3331,13 +3331,20 @@ foreach i = {8-15,18} in
|
||||||
def fcall_saved_x#i : Flag<["-"], "fcall-saved-x"#i>, Group<m_aarch64_Features_Group>,
|
def fcall_saved_x#i : Flag<["-"], "fcall-saved-x"#i>, Group<m_aarch64_Features_Group>,
|
||||||
HelpText<"Make the x"#i#" register call-saved (AArch64 only)">;
|
HelpText<"Make the x"#i#" register call-saved (AArch64 only)">;
|
||||||
|
|
||||||
def msve_vector_bits_EQ : Joined<["-"], "msve-vector-bits=">,
|
def msve_vector_bits_EQ : Joined<["-"], "msve-vector-bits=">, Group<m_aarch64_Features_Group>,
|
||||||
Group<m_aarch64_Features_Group>, Flags<[NoXarchOption,CC1Option]>,
|
|
||||||
HelpText<"Specify the size in bits of an SVE vector register. Defaults to the"
|
HelpText<"Specify the size in bits of an SVE vector register. Defaults to the"
|
||||||
" vector length agnostic value of \"scalable\". (AArch64 only)">,
|
" vector length agnostic value of \"scalable\". (AArch64 only)">;
|
||||||
Values<"128,256,512,1024,2048,scalable">,
|
|
||||||
NormalizedValues<["128", "256", "512", "1024", "2048", "0"]>,
|
def mvscale_min_EQ : Joined<["-"], "mvscale-min=">,
|
||||||
MarshallingInfoEnum<LangOpts<"ArmSveVectorBits">, "0">;
|
Group<m_aarch64_Features_Group>, Flags<[NoXarchOption,CC1Option]>,
|
||||||
|
HelpText<"Specify the vscale minimum. Defaults to the"
|
||||||
|
" vector length agnostic value of \"0\". (AArch64 only)">,
|
||||||
|
MarshallingInfoInt<LangOpts<"VScaleMin">>;
|
||||||
|
def mvscale_max_EQ : Joined<["-"], "mvscale-max=">,
|
||||||
|
Group<m_aarch64_Features_Group>, Flags<[NoXarchOption,CC1Option]>,
|
||||||
|
HelpText<"Specify the vscale maximum. Defaults to the"
|
||||||
|
" vector length agnostic value of \"0\". (AArch64 only)">,
|
||||||
|
MarshallingInfoInt<LangOpts<"VScaleMax">>;
|
||||||
|
|
||||||
def msign_return_address_EQ : Joined<["-"], "msign-return-address=">,
|
def msign_return_address_EQ : Joined<["-"], "msign-return-address=">,
|
||||||
Flags<[CC1Option]>, Group<m_Group>, Values<"none,all,non-leaf">,
|
Flags<[CC1Option]>, Group<m_Group>, Values<"none,all,non-leaf">,
|
||||||
|
|
|
@ -8768,8 +8768,8 @@ bool ASTContext::areCompatibleVectorTypes(QualType FirstVec,
|
||||||
static uint64_t getSVETypeSize(ASTContext &Context, const BuiltinType *Ty) {
|
static uint64_t getSVETypeSize(ASTContext &Context, const BuiltinType *Ty) {
|
||||||
assert(Ty->isVLSTBuiltinType() && "Invalid SVE Type");
|
assert(Ty->isVLSTBuiltinType() && "Invalid SVE Type");
|
||||||
return Ty->getKind() == BuiltinType::SveBool
|
return Ty->getKind() == BuiltinType::SveBool
|
||||||
? Context.getLangOpts().ArmSveVectorBits / Context.getCharWidth()
|
? (Context.getLangOpts().VScaleMin * 128) / Context.getCharWidth()
|
||||||
: Context.getLangOpts().ArmSveVectorBits;
|
: Context.getLangOpts().VScaleMin * 128;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ASTContext::areCompatibleSveTypes(QualType FirstType,
|
bool ASTContext::areCompatibleSveTypes(QualType FirstType,
|
||||||
|
|
|
@ -451,8 +451,8 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts,
|
||||||
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");
|
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");
|
||||||
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");
|
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");
|
||||||
|
|
||||||
if (Opts.ArmSveVectorBits) {
|
if (Opts.VScaleMin && Opts.VScaleMin == Opts.VScaleMax) {
|
||||||
Builder.defineMacro("__ARM_FEATURE_SVE_BITS", Twine(Opts.ArmSveVectorBits));
|
Builder.defineMacro("__ARM_FEATURE_SVE_BITS", Twine(Opts.VScaleMin * 128));
|
||||||
Builder.defineMacro("__ARM_FEATURE_SVE_VECTOR_OPERATORS");
|
Builder.defineMacro("__ARM_FEATURE_SVE_VECTOR_OPERATORS");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -464,10 +464,9 @@ ArrayRef<Builtin::Info> AArch64TargetInfo::getTargetBuiltins() const {
|
||||||
|
|
||||||
Optional<std::pair<unsigned, unsigned>>
|
Optional<std::pair<unsigned, unsigned>>
|
||||||
AArch64TargetInfo::getVScaleRange(const LangOptions &LangOpts) const {
|
AArch64TargetInfo::getVScaleRange(const LangOptions &LangOpts) const {
|
||||||
if (LangOpts.ArmSveVectorBits) {
|
if (LangOpts.VScaleMin || LangOpts.VScaleMax)
|
||||||
unsigned VScale = LangOpts.ArmSveVectorBits / 128;
|
return std::pair<unsigned, unsigned>(LangOpts.VScaleMin,
|
||||||
return std::pair<unsigned, unsigned>(VScale, VScale);
|
LangOpts.VScaleMax);
|
||||||
}
|
|
||||||
if (hasFeature("sve"))
|
if (hasFeature("sve"))
|
||||||
return std::pair<unsigned, unsigned>(0, 16);
|
return std::pair<unsigned, unsigned>(0, 16);
|
||||||
return None;
|
return None;
|
||||||
|
|
|
@ -1822,11 +1822,25 @@ void Clang::AddAArch64TargetArgs(const ArgList &Args,
|
||||||
StringRef Val = A->getValue();
|
StringRef Val = A->getValue();
|
||||||
const Driver &D = getToolChain().getDriver();
|
const Driver &D = getToolChain().getDriver();
|
||||||
if (Val.equals("128") || Val.equals("256") || Val.equals("512") ||
|
if (Val.equals("128") || Val.equals("256") || Val.equals("512") ||
|
||||||
Val.equals("1024") || Val.equals("2048"))
|
Val.equals("1024") || Val.equals("2048") || Val.equals("128+") ||
|
||||||
|
Val.equals("256+") || Val.equals("512+") || Val.equals("1024+") ||
|
||||||
|
Val.equals("2048+")) {
|
||||||
|
unsigned Bits = 0;
|
||||||
|
if (Val.endswith("+"))
|
||||||
|
Val = Val.substr(0, Val.size() - 1);
|
||||||
|
else {
|
||||||
|
bool Invalid = Val.getAsInteger(10, Bits); (void)Invalid;
|
||||||
|
assert(!Invalid && "Failed to parse value");
|
||||||
|
CmdArgs.push_back(
|
||||||
|
Args.MakeArgString("-mvscale-max=" + llvm::Twine(Bits / 128)));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Invalid = Val.getAsInteger(10, Bits); (void)Invalid;
|
||||||
|
assert(!Invalid && "Failed to parse value");
|
||||||
CmdArgs.push_back(
|
CmdArgs.push_back(
|
||||||
Args.MakeArgString(llvm::Twine("-msve-vector-bits=") + Val));
|
Args.MakeArgString("-mvscale-min=" + llvm::Twine(Bits / 128)));
|
||||||
// Silently drop requests for vector-length agnostic code as it's implied.
|
// Silently drop requests for vector-length agnostic code as it's implied.
|
||||||
else if (!Val.equals("scalable"))
|
} else if (!Val.equals("scalable"))
|
||||||
// Handle the unsupported values passed to msve-vector-bits.
|
// Handle the unsupported values passed to msve-vector-bits.
|
||||||
D.Diag(diag::err_drv_unsupported_option_argument)
|
D.Diag(diag::err_drv_unsupported_option_argument)
|
||||||
<< A->getOption().getName() << Val;
|
<< A->getOption().getName() << Val;
|
||||||
|
|
|
@ -7889,8 +7889,10 @@ static void HandleArmSveVectorBitsTypeAttr(QualType &CurType, ParsedAttr &Attr,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Attribute is unsupported if '-msve-vector-bits=<bits>' isn't specified.
|
// Attribute is unsupported if '-msve-vector-bits=<bits>' isn't specified, or
|
||||||
if (!S.getLangOpts().ArmSveVectorBits) {
|
// if <bits>+ syntax is used.
|
||||||
|
if (!S.getLangOpts().VScaleMin ||
|
||||||
|
S.getLangOpts().VScaleMin != S.getLangOpts().VScaleMax) {
|
||||||
S.Diag(Attr.getLoc(), diag::err_attribute_arm_feature_sve_bits_unsupported)
|
S.Diag(Attr.getLoc(), diag::err_attribute_arm_feature_sve_bits_unsupported)
|
||||||
<< Attr;
|
<< Attr;
|
||||||
Attr.setInvalid();
|
Attr.setInvalid();
|
||||||
|
@ -7913,9 +7915,9 @@ static void HandleArmSveVectorBitsTypeAttr(QualType &CurType, ParsedAttr &Attr,
|
||||||
unsigned VecSize = static_cast<unsigned>(SveVectorSizeInBits.getZExtValue());
|
unsigned VecSize = static_cast<unsigned>(SveVectorSizeInBits.getZExtValue());
|
||||||
|
|
||||||
// The attribute vector size must match -msve-vector-bits.
|
// The attribute vector size must match -msve-vector-bits.
|
||||||
if (VecSize != S.getLangOpts().ArmSveVectorBits) {
|
if (VecSize != S.getLangOpts().VScaleMin * 128) {
|
||||||
S.Diag(Attr.getLoc(), diag::err_attribute_bad_sve_vector_size)
|
S.Diag(Attr.getLoc(), diag::err_attribute_bad_sve_vector_size)
|
||||||
<< VecSize << S.getLangOpts().ArmSveVectorBits;
|
<< VecSize << S.getLangOpts().VScaleMin * 128;
|
||||||
Attr.setInvalid();
|
Attr.setInvalid();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -msve-vector-bits=128 | FileCheck %s -D#VBITS=128 --check-prefixes=CHECK128
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -mvscale-min=1 -mvscale-max=1 | FileCheck %s -D#VBITS=128 --check-prefixes=CHECK128
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -msve-vector-bits=256 | FileCheck %s -D#VBITS=256 --check-prefixes=CHECK,CHECK256
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -mvscale-min=2 -mvscale-max=2 | FileCheck %s -D#VBITS=256 --check-prefixes=CHECK,CHECK256
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -msve-vector-bits=512 | FileCheck %s -D#VBITS=512 --check-prefixes=CHECK,CHECK512
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -mvscale-min=4 -mvscale-max=4 | FileCheck %s -D#VBITS=512 --check-prefixes=CHECK,CHECK512
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -msve-vector-bits=1024 | FileCheck %s -D#VBITS=1024 --check-prefixes=CHECK,CHECK1024
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -mvscale-min=8 -mvscale-max=8 | FileCheck %s -D#VBITS=1024 --check-prefixes=CHECK,CHECK1024
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -msve-vector-bits=2048 | FileCheck %s -D#VBITS=2048 --check-prefixes=CHECK,CHECK2048
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -mvscale-min=16 -mvscale-max=16 | FileCheck %s -D#VBITS=2048 --check-prefixes=CHECK,CHECK2048
|
||||||
// REQUIRES: aarch64-registered-target
|
// REQUIRES: aarch64-registered-target
|
||||||
|
|
||||||
// Examples taken from section "3.7.3.3 Behavior specific to SVE
|
// Examples taken from section "3.7.3.3 Behavior specific to SVE
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
// https://developer.arm.com/documentation/100987/latest
|
// https://developer.arm.com/documentation/100987/latest
|
||||||
//
|
//
|
||||||
// Example has been expanded to work with mutiple values of
|
// Example has been expanded to work with mutiple values of
|
||||||
// -msve-vector-bits.
|
// -mvscale-{min,max}.
|
||||||
|
|
||||||
#include <arm_sve.h>
|
#include <arm_sve.h>
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
// RUN: %clang_cc1 -x c++ -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -msve-vector-bits=128 | FileCheck %s -D#VBITS=128 --check-prefixes=CHECK,CHECK128
|
// RUN: %clang_cc1 -x c++ -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -mvscale-min=1 -mvscale-max=1 | FileCheck %s -D#VBITS=128 --check-prefixes=CHECK,CHECK128
|
||||||
// RUN: %clang_cc1 -x c++ -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -msve-vector-bits=256 | FileCheck %s -D#VBITS=256 --check-prefixes=CHECK,CHECKWIDE
|
// RUN: %clang_cc1 -x c++ -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -mvscale-min=2 -mvscale-max=2 | FileCheck %s -D#VBITS=256 --check-prefixes=CHECK,CHECKWIDE
|
||||||
// RUN: %clang_cc1 -x c++ -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -msve-vector-bits=512 | FileCheck %s -D#VBITS=512 --check-prefixes=CHECK,CHECKWIDE
|
// RUN: %clang_cc1 -x c++ -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -mvscale-min=4 -mvscale-max=4 | FileCheck %s -D#VBITS=512 --check-prefixes=CHECK,CHECKWIDE
|
||||||
// RUN: %clang_cc1 -x c++ -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -msve-vector-bits=1024 | FileCheck %s -D#VBITS=1024 --check-prefixes=CHECK,CHECKWIDE
|
// RUN: %clang_cc1 -x c++ -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -mvscale-min=8 -mvscale-max=8 | FileCheck %s -D#VBITS=1024 --check-prefixes=CHECK,CHECKWIDE
|
||||||
// RUN: %clang_cc1 -x c++ -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -msve-vector-bits=2048 | FileCheck %s -D#VBITS=2048 --check-prefixes=CHECK,CHECKWIDE
|
// RUN: %clang_cc1 -x c++ -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -S -O1 -Werror -Wall -emit-llvm -o - %s -mvscale-min=16 -mvscale-max=16 | FileCheck %s -D#VBITS=2048 --check-prefixes=CHECK,CHECKWIDE
|
||||||
// REQUIRES: aarch64-registered-target
|
// REQUIRES: aarch64-registered-target
|
||||||
|
|
||||||
// Examples taken from section "3.7.3.3 Behavior specific to SVE
|
// Examples taken from section "3.7.3.3 Behavior specific to SVE
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
// https://developer.arm.com/documentation/100987/latest
|
// https://developer.arm.com/documentation/100987/latest
|
||||||
//
|
//
|
||||||
// Example has been expanded to work with mutiple values of
|
// Example has been expanded to work with mutiple values of
|
||||||
// -msve-vector-bits.
|
// -mvscale-{min,max}.
|
||||||
|
|
||||||
#include <arm_sve.h>
|
#include <arm_sve.h>
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -O2 -S -o - %s -msve-vector-bits=256 | FileCheck %s --check-prefixes=CHECK,CHECK256
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -O2 -S -o - %s -mvscale-min=2 -mvscale-max=2 | FileCheck %s --check-prefixes=CHECK,CHECK256
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -O2 -S -o - %s -msve-vector-bits=512 | FileCheck %s --check-prefixes=CHECK,CHECK512
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -O2 -S -o - %s -mvscale-min=4 -mvscale-max=4 | FileCheck %s --check-prefixes=CHECK,CHECK512
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -O2 -S -o - %s -msve-vector-bits=1024 | FileCheck %s --check-prefixes=CHECK,CHECK1024
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -O2 -S -o - %s -mvscale-min=8 -mvscale-max=8 | FileCheck %s --check-prefixes=CHECK,CHECK1024
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -O2 -S -o - %s -msve-vector-bits=2048 | FileCheck %s --check-prefixes=CHECK,CHECK2048
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -O2 -S -o - %s -mvscale-min=16 -mvscale-max=16 | FileCheck %s --check-prefixes=CHECK,CHECK2048
|
||||||
// REQUIRES: aarch64-registered-target
|
// REQUIRES: aarch64-registered-target
|
||||||
|
|
||||||
#include <arm_sve.h>
|
#include <arm_sve.h>
|
||||||
|
|
|
@ -1,15 +1,21 @@
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=128 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=128
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=1 -mvscale-max=1 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=1
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=256 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=256
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=2 -mvscale-max=2 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=2
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=512 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=512
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=4 -mvscale-max=4 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=4
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=1024 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=1024
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=8 -mvscale-max=8 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=8
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=2048 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=2048
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=16 -mvscale-max=16 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=16
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -msve-vector-bits=128 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=128
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -mvscale-min=1 -mvscale-max=1 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=1
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -msve-vector-bits=256 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=256
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -mvscale-min=2 -mvscale-max=2 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=2
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -msve-vector-bits=scalable -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-NONE
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=1 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=1 --check-prefix=CHECK-NOMAX
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=scalable -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-NONE
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=2 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=2 --check-prefix=CHECK-NOMAX
|
||||||
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=4 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=4 --check-prefix=CHECK-NOMAX
|
||||||
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=8 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=8 --check-prefix=CHECK-NOMAX
|
||||||
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=16 -S -emit-llvm -o - %s | FileCheck %s -D#VBITS=16 --check-prefix=CHECK-NOMAX
|
||||||
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -mvscale-min=0 -mvscale-max=0 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-NONE
|
||||||
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=0 -mvscale-max=0 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-NONE
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-NONE
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-NONE
|
||||||
|
|
||||||
// CHECK-LABEL: @func() #0
|
// CHECK-LABEL: @func() #0
|
||||||
// CHECK: attributes #0 = { {{.*}} vscale_range([[#div(VBITS,128)]],[[#div(VBITS,128)]]) {{.*}} }
|
// CHECK: attributes #0 = { {{.*}} vscale_range([[#VBITS]],[[#VBITS]]) {{.*}} }
|
||||||
|
// CHECK-NOMAX: attributes #0 = { {{.*}} vscale_range([[#VBITS]],0) {{.*}} }
|
||||||
// CHECK-NONE: attributes #0 = { {{.*}} vscale_range(0,16) {{.*}} }
|
// CHECK-NONE: attributes #0 = { {{.*}} vscale_range(0,16) {{.*}} }
|
||||||
void func() {}
|
void func() {}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
|
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
|
||||||
// REQUIRES: aarch64-registered-target
|
// REQUIRES: aarch64-registered-target
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -msve-vector-bits=128 -fallow-half-arguments-and-returns -S -O1 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-128
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -mvscale-min=1 -mvscale-max=1 -fallow-half-arguments-and-returns -S -O1 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-128
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -msve-vector-bits=256 -fallow-half-arguments-and-returns -S -O1 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-256
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -mvscale-min=2 -mvscale-max=2 -fallow-half-arguments-and-returns -S -O1 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-256
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -msve-vector-bits=512 -fallow-half-arguments-and-returns -S -O1 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-512
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -mvscale-min=4 -mvscale-max=4 -fallow-half-arguments-and-returns -S -O1 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-512
|
||||||
|
|
||||||
#include <arm_sve.h>
|
#include <arm_sve.h>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
|
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
|
||||||
// REQUIRES: aarch64-registered-target
|
// REQUIRES: aarch64-registered-target
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=512 -fallow-half-arguments-and-returns -S -O1 -emit-llvm -o - %s | FileCheck %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=4 -mvscale-max=4 -fallow-half-arguments-and-returns -S -O1 -emit-llvm -o - %s | FileCheck %s
|
||||||
|
|
||||||
#include <arm_sve.h>
|
#include <arm_sve.h>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
|
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
|
||||||
// REQUIRES: aarch64-registered-target
|
// REQUIRES: aarch64-registered-target
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=512 -fallow-half-arguments-and-returns -S -O1 -emit-llvm -o - %s | FileCheck %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=4 -mvscale-max=4 -fallow-half-arguments-and-returns -S -O1 -emit-llvm -o - %s | FileCheck %s
|
||||||
|
|
||||||
#include <arm_sve.h>
|
#include <arm_sve.h>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
|
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -msve-vector-bits=512 -fallow-half-arguments-and-returns -S -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -mvscale-min=4 -mvscale-max=4 -fallow-half-arguments-and-returns -S -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s
|
||||||
|
|
||||||
#include <arm_sve.h>
|
#include <arm_sve.h>
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
|
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
|
||||||
// REQUIRES: aarch64-registered-target
|
// REQUIRES: aarch64-registered-target
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -msve-vector-bits=128 -fallow-half-arguments-and-returns -S -O1 -emit-llvm -o - %s -fhalf-no-semantic-interposition | FileCheck %s --check-prefix=CHECK-128
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -mvscale-min=1 -mvscale-max=1 -fallow-half-arguments-and-returns -S -O1 -emit-llvm -o - %s -fhalf-no-semantic-interposition | FileCheck %s --check-prefix=CHECK-128
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -msve-vector-bits=512 -fallow-half-arguments-and-returns -S -O1 -emit-llvm -o - %s -fhalf-no-semantic-interposition | FileCheck %s --check-prefix=CHECK-512
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -mvscale-min=4 -mvscale-max=4 -fallow-half-arguments-and-returns -S -O1 -emit-llvm -o - %s -fhalf-no-semantic-interposition | FileCheck %s --check-prefix=CHECK-512
|
||||||
|
|
||||||
#include <arm_sve.h>
|
#include <arm_sve.h>
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
// REQUIRES: aarch64-registered-target
|
// REQUIRES: aarch64-registered-target
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -msve-vector-bits=128 -fallow-half-arguments-and-returns -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-128
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -mvscale-min=1 -mvscale-max=1 -fallow-half-arguments-and-returns -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-128
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -msve-vector-bits=256 -fallow-half-arguments-and-returns -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-256
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -mvscale-min=2 -mvscale-max=2 -fallow-half-arguments-and-returns -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-256
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -msve-vector-bits=512 -fallow-half-arguments-and-returns -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-512
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -mvscale-min=4 -mvscale-max=4 -fallow-half-arguments-and-returns -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-512
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -msve-vector-bits=1024 -fallow-half-arguments-and-returns -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-1024
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -mvscale-min=8 -mvscale-max=8 -fallow-half-arguments-and-returns -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-1024
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -msve-vector-bits=2048 -fallow-half-arguments-and-returns -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-2048
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -mvscale-min=16 -mvscale-max=16 -fallow-half-arguments-and-returns -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-2048
|
||||||
// RUN: %clang_cc1 -triple aarch64_32-unknown-darwin -target-feature +sve -target-feature +bf16 -msve-vector-bits=512 -fallow-half-arguments-and-returns -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-ILP32
|
// RUN: %clang_cc1 -triple aarch64_32-unknown-darwin -target-feature +sve -target-feature +bf16 -mvscale-min=4 -mvscale-max=4 -fallow-half-arguments-and-returns -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-ILP32
|
||||||
|
|
||||||
#include <arm_sve.h>
|
#include <arm_sve.h>
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
||||||
// RUN: -target-feature +sve -target-feature +bf16 -msve-vector-bits=128 \
|
// RUN: -target-feature +sve -target-feature +bf16 -mvscale-min=1 -mvscale-max=1 \
|
||||||
// RUN: | FileCheck %s --check-prefix=CHECK-128
|
// RUN: | FileCheck %s --check-prefix=CHECK-128
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
||||||
// RUN: -target-feature +sve -target-feature +bf16 -msve-vector-bits=256 \
|
// RUN: -target-feature +sve -target-feature +bf16 -mvscale-min=2 -mvscale-max=2 \
|
||||||
// RUN: | FileCheck %s --check-prefix=CHECK-256
|
// RUN: | FileCheck %s --check-prefix=CHECK-256
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
||||||
// RUN: -target-feature +sve -target-feature +bf16 -msve-vector-bits=512 \
|
// RUN: -target-feature +sve -target-feature +bf16 -mvscale-min=4 -mvscale-max=4 \
|
||||||
// RUN: | FileCheck %s --check-prefix=CHECK-512
|
// RUN: | FileCheck %s --check-prefix=CHECK-512
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
||||||
// RUN: -target-feature +sve -target-feature +bf16 -msve-vector-bits=1024 \
|
// RUN: -target-feature +sve -target-feature +bf16 -mvscale-min=8 -mvscale-max=8 \
|
||||||
// RUN: | FileCheck %s --check-prefix=CHECK-1024
|
// RUN: | FileCheck %s --check-prefix=CHECK-1024
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
||||||
// RUN: -target-feature +sve -target-feature +bf16 -msve-vector-bits=2048 \
|
// RUN: -target-feature +sve -target-feature +bf16 -mvscale-min=16 -mvscale-max=16 \
|
||||||
// RUN: | FileCheck %s --check-prefix=CHECK-2048
|
// RUN: | FileCheck %s --check-prefix=CHECK-2048
|
||||||
|
|
||||||
#define N __ARM_FEATURE_SVE_BITS
|
#define N __ARM_FEATURE_SVE_BITS
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
||||||
// RUN: -target-feature +sve -target-feature +bf16 -msve-vector-bits=128 \
|
// RUN: -target-feature +sve -target-feature +bf16 -mvscale-min=1 -mvscale-max=1 \
|
||||||
// RUN: | FileCheck %s --check-prefix=CHECK-128
|
// RUN: | FileCheck %s --check-prefix=CHECK-128
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
||||||
// RUN: -target-feature +sve -target-feature +bf16 -msve-vector-bits=256 \
|
// RUN: -target-feature +sve -target-feature +bf16 -mvscale-min=2 -mvscale-max=2 \
|
||||||
// RUN: | FileCheck %s --check-prefix=CHECK-256
|
// RUN: | FileCheck %s --check-prefix=CHECK-256
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
||||||
// RUN: -target-feature +sve -target-feature +bf16 -msve-vector-bits=512 \
|
// RUN: -target-feature +sve -target-feature +bf16 -mvscale-min=4 -mvscale-max=4 \
|
||||||
// RUN: | FileCheck %s --check-prefix=CHECK-512
|
// RUN: | FileCheck %s --check-prefix=CHECK-512
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
||||||
// RUN: -target-feature +sve -target-feature +bf16 -msve-vector-bits=1024 \
|
// RUN: -target-feature +sve -target-feature +bf16 -mvscale-min=8 -mvscale-max=8 \
|
||||||
// RUN: | FileCheck %s --check-prefix=CHECK-1024
|
// RUN: | FileCheck %s --check-prefix=CHECK-1024
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
|
||||||
// RUN: -target-feature +sve -target-feature +bf16 -msve-vector-bits=2048 \
|
// RUN: -target-feature +sve -target-feature +bf16 -mvscale-min=16 -mvscale-max=16 \
|
||||||
// RUN: | FileCheck %s --check-prefix=CHECK-2048
|
// RUN: | FileCheck %s --check-prefix=CHECK-2048
|
||||||
|
|
||||||
#define N __ARM_FEATURE_SVE_BITS
|
#define N __ARM_FEATURE_SVE_BITS
|
||||||
|
|
|
@ -13,14 +13,36 @@
|
||||||
// RUN: %clang -c %s -### -target aarch64-none-linux-gnu -march=armv8-a+sve \
|
// RUN: %clang -c %s -### -target aarch64-none-linux-gnu -march=armv8-a+sve \
|
||||||
// RUN: -msve-vector-bits=2048 2>&1 | FileCheck --check-prefix=CHECK-2048 %s
|
// RUN: -msve-vector-bits=2048 2>&1 | FileCheck --check-prefix=CHECK-2048 %s
|
||||||
// RUN: %clang -c %s -### -target aarch64-none-linux-gnu -march=armv8-a+sve \
|
// RUN: %clang -c %s -### -target aarch64-none-linux-gnu -march=armv8-a+sve \
|
||||||
|
// RUN: -msve-vector-bits=128+ 2>&1 | FileCheck --check-prefix=CHECK-128P %s
|
||||||
|
// RUN: %clang -c %s -### -target aarch64-none-linux-gnu -march=armv8-a+sve \
|
||||||
|
// RUN: -msve-vector-bits=256+ 2>&1 | FileCheck --check-prefix=CHECK-256P %s
|
||||||
|
// RUN: %clang -c %s -### -target aarch64-none-linux-gnu -march=armv8-a+sve \
|
||||||
|
// RUN: -msve-vector-bits=512+ 2>&1 | FileCheck --check-prefix=CHECK-512P %s
|
||||||
|
// RUN: %clang -c %s -### -target aarch64-none-linux-gnu -march=armv8-a+sve \
|
||||||
|
// RUN: -msve-vector-bits=1024+ 2>&1 | FileCheck --check-prefix=CHECK-1024P %s
|
||||||
|
// RUN: %clang -c %s -### -target aarch64-none-linux-gnu -march=armv8-a+sve \
|
||||||
|
// RUN: -msve-vector-bits=2048+ 2>&1 | FileCheck --check-prefix=CHECK-2048P %s
|
||||||
|
// RUN: %clang -c %s -### -target aarch64-none-linux-gnu -march=armv8-a+sve \
|
||||||
// RUN: -msve-vector-bits=scalable 2>&1 | FileCheck --check-prefix=CHECK-SCALABLE %s
|
// RUN: -msve-vector-bits=scalable 2>&1 | FileCheck --check-prefix=CHECK-SCALABLE %s
|
||||||
|
|
||||||
// CHECK-128: "-msve-vector-bits=128"
|
// CHECK-128: "-mvscale-max=1" "-mvscale-min=1"
|
||||||
// CHECK-256: "-msve-vector-bits=256"
|
// CHECK-256: "-mvscale-max=2" "-mvscale-min=2"
|
||||||
// CHECK-512: "-msve-vector-bits=512"
|
// CHECK-512: "-mvscale-max=4" "-mvscale-min=4"
|
||||||
// CHECK-1024: "-msve-vector-bits=1024"
|
// CHECK-1024: "-mvscale-max=8" "-mvscale-min=8"
|
||||||
// CHECK-2048: "-msve-vector-bits=2048"
|
// CHECK-2048: "-mvscale-max=16" "-mvscale-min=16"
|
||||||
// CHECK-SCALABLE-NOT: "-msve-vector-bits=
|
|
||||||
|
// CHECK-128P: "-mvscale-min=1"
|
||||||
|
// CHECK-128P-NOT: "-mvscale-max"
|
||||||
|
// CHECK-256P: "-mvscale-min=2"
|
||||||
|
// CHECK-256P-NOT: "-mvscale-max"
|
||||||
|
// CHECK-512P: "-mvscale-min=4"
|
||||||
|
// CHECK-512P-NOT: "-mvscale-max"
|
||||||
|
// CHECK-1024P: "-mvscale-min=8"
|
||||||
|
// CHECK-1024P-NOT: "-mvscale-max"
|
||||||
|
// CHECK-2048P: "-mvscale-min=16"
|
||||||
|
// CHECK-2048P-NOT: "-mvscale-max"
|
||||||
|
// CHECK-SCALABLE-NOT: "-mvscale-min=
|
||||||
|
// CHECK-SCALABLE-NOT: "-mvscale-max=
|
||||||
|
|
||||||
// Error out if an unsupported value is passed to -msve-vector-bits.
|
// Error out if an unsupported value is passed to -msve-vector-bits.
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
@ -31,12 +53,14 @@
|
||||||
|
|
||||||
// CHECK-BAD-VALUE-ERROR: error: unsupported argument '{{.*}}' to option 'msve-vector-bits='
|
// CHECK-BAD-VALUE-ERROR: error: unsupported argument '{{.*}}' to option 'msve-vector-bits='
|
||||||
|
|
||||||
// Error if using attribute without -msve-vector-bits
|
// Error if using attribute without -msve-vector-bits=<bits> or if using -msve-vector-bits=<bits>+ syntax
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// RUN: not %clang -c %s -o /dev/null -target aarch64-none-linux-gnu \
|
// RUN: not %clang -c %s -o /dev/null -target aarch64-none-linux-gnu \
|
||||||
// RUN: -march=armv8-a+sve 2>&1 | FileCheck --check-prefix=CHECK-NO-FLAG-ERROR %s
|
// RUN: -march=armv8-a+sve 2>&1 | FileCheck --check-prefix=CHECK-NO-FLAG-ERROR %s
|
||||||
// RUN: not %clang -c %s -o /dev/null -target aarch64-none-linux-gnu \
|
// RUN: not %clang -c %s -o /dev/null -target aarch64-none-linux-gnu \
|
||||||
// RUN: -march=armv8-a+sve -msve-vector-bits=scalable 2>&1 | FileCheck --check-prefix=CHECK-NO-FLAG-ERROR %s
|
// RUN: -march=armv8-a+sve -msve-vector-bits=scalable 2>&1 | FileCheck --check-prefix=CHECK-NO-FLAG-ERROR %s
|
||||||
|
// RUN: not %clang -c %s -o /dev/null -target aarch64-none-linux-gnu \
|
||||||
|
// RUN: -march=armv8-a+sve -msve-vector-bits=256+ 2>&1 | FileCheck --check-prefix=CHECK-NO-FLAG-ERROR %s
|
||||||
|
|
||||||
typedef __SVInt32_t svint32_t;
|
typedef __SVInt32_t svint32_t;
|
||||||
typedef svint32_t noflag __attribute__((arm_sve_vector_bits(256)));
|
typedef svint32_t noflag __attribute__((arm_sve_vector_bits(256)));
|
||||||
|
|
|
@ -495,8 +495,11 @@
|
||||||
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8-a+sve -msve-vector-bits=512 -x c -E -dM %s -o - 2>&1 | FileCheck -check-prefix=CHECK-SVE-VECTOR-BITS -D#VBITS=512 %s
|
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8-a+sve -msve-vector-bits=512 -x c -E -dM %s -o - 2>&1 | FileCheck -check-prefix=CHECK-SVE-VECTOR-BITS -D#VBITS=512 %s
|
||||||
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8-a+sve -msve-vector-bits=1024 -x c -E -dM %s -o - 2>&1 | FileCheck -check-prefix=CHECK-SVE-VECTOR-BITS -D#VBITS=1024 %s
|
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8-a+sve -msve-vector-bits=1024 -x c -E -dM %s -o - 2>&1 | FileCheck -check-prefix=CHECK-SVE-VECTOR-BITS -D#VBITS=1024 %s
|
||||||
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8-a+sve -msve-vector-bits=2048 -x c -E -dM %s -o - 2>&1 | FileCheck -check-prefix=CHECK-SVE-VECTOR-BITS -D#VBITS=2048 %s
|
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8-a+sve -msve-vector-bits=2048 -x c -E -dM %s -o - 2>&1 | FileCheck -check-prefix=CHECK-SVE-VECTOR-BITS -D#VBITS=2048 %s
|
||||||
|
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8-a+sve -msve-vector-bits=512+ -x c -E -dM %s -o - 2>&1 | FileCheck -check-prefix=CHECK-NO-SVE-VECTOR-BITS %s
|
||||||
// CHECK-SVE-VECTOR-BITS: __ARM_FEATURE_SVE_BITS [[#VBITS:]]
|
// CHECK-SVE-VECTOR-BITS: __ARM_FEATURE_SVE_BITS [[#VBITS:]]
|
||||||
// CHECK-SVE-VECTOR-BITS: __ARM_FEATURE_SVE_VECTOR_OPERATORS 1
|
// CHECK-SVE-VECTOR-BITS: __ARM_FEATURE_SVE_VECTOR_OPERATORS 1
|
||||||
|
// CHECK-NO-SVE-VECTOR-BITS-NOT: __ARM_FEATURE_SVE_BITS
|
||||||
|
// CHECK-NO-SVE-VECTOR-BITS-NOT: __ARM_FEATURE_SVE_VECTOR_OPERATORS
|
||||||
|
|
||||||
// ================== Check Largse System Extensions (LSE)
|
// ================== Check Largse System Extensions (LSE)
|
||||||
// RUN: %clang -target aarch64-none-linux-gnu -march=armv8-a+lse -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-LSE %s
|
// RUN: %clang -target aarch64-none-linux-gnu -march=armv8-a+lse -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-LSE %s
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=128 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=1 -mvscale-max=1 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=256 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=2 -mvscale-max=2 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=512 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=4 -mvscale-max=4 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=1024 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=8 -mvscale-max=8 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=2048 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=16 -mvscale-max=16 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
||||||
|
|
||||||
// expected-no-diagnostics
|
// expected-no-diagnostics
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=512 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify=lax-vector-none %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=4 -mvscale-max=4 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify=lax-vector-none %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=512 -flax-vector-conversions=integer -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify=lax-vector-integer %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=4 -mvscale-max=4 -flax-vector-conversions=integer -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify=lax-vector-integer %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=512 -flax-vector-conversions=all -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify=lax-vector-all %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=4 -mvscale-max=4 -flax-vector-conversions=all -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify=lax-vector-all %s
|
||||||
|
|
||||||
// lax-vector-all-no-diagnostics
|
// lax-vector-all-no-diagnostics
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -ffreestanding -fsyntax-only -verify -msve-vector-bits=128 -fallow-half-arguments-and-returns %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -ffreestanding -fsyntax-only -verify -mvscale-min=1 -mvscale-max=1 -fallow-half-arguments-and-returns %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -ffreestanding -fsyntax-only -verify -msve-vector-bits=256 -fallow-half-arguments-and-returns %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -ffreestanding -fsyntax-only -verify -mvscale-min=2 -mvscale-max=2 -fallow-half-arguments-and-returns %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -ffreestanding -fsyntax-only -verify -msve-vector-bits=512 -fallow-half-arguments-and-returns %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -ffreestanding -fsyntax-only -verify -mvscale-min=4 -mvscale-max=4 -fallow-half-arguments-and-returns %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -ffreestanding -fsyntax-only -verify -msve-vector-bits=1024 -fallow-half-arguments-and-returns %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -ffreestanding -fsyntax-only -verify -mvscale-min=8 -mvscale-max=8 -fallow-half-arguments-and-returns %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -ffreestanding -fsyntax-only -verify -msve-vector-bits=2048 -fallow-half-arguments-and-returns %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -ffreestanding -fsyntax-only -verify -mvscale-min=16 -mvscale-max=16 -fallow-half-arguments-and-returns %s
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=128 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=1 -mvscale-max=1 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=256 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=2 -mvscale-max=2 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=512 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=4 -mvscale-max=4 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=1024 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=8 -mvscale-max=8 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=2048 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=16 -mvscale-max=16 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify %s
|
||||||
|
|
||||||
// expected-no-diagnostics
|
// expected-no-diagnostics
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=512 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify=lax-vector-none %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=4 -mvscale-max=4 -flax-vector-conversions=none -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify=lax-vector-none %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=512 -flax-vector-conversions=integer -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify=lax-vector-integer %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=4 -mvscale-max=4 -flax-vector-conversions=integer -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify=lax-vector-integer %s
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -msve-vector-bits=512 -flax-vector-conversions=all -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify=lax-vector-all %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -mvscale-min=4 -mvscale-max=4 -flax-vector-conversions=all -fallow-half-arguments-and-returns -ffreestanding -fsyntax-only -verify=lax-vector-all %s
|
||||||
|
|
||||||
#include <arm_sve.h>
|
#include <arm_sve.h>
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -ffreestanding -fsyntax-only -verify -std=c++11 -msve-vector-bits=512 -fallow-half-arguments-and-returns -Wconversion %s
|
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -ffreestanding -fsyntax-only -verify -std=c++11 -mvscale-min=4 -mvscale-max=4 -fallow-half-arguments-and-returns -Wconversion %s
|
||||||
// expected-no-diagnostics
|
// expected-no-diagnostics
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
Loading…
Reference in a new issue