mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-27 05:30:49 +00:00
Add special-case range checking for VCVT_N intrinsic immediate operands.
Radar 9558930. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132782 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2a9d1ca9c2
commit
e450a0046b
@ -1398,9 +1398,14 @@ void NeonEmitter::runHeader(raw_ostream &OS) {
|
||||
for (unsigned ti = 0, te = TypeVec.size(); ti != te; ++ti) {
|
||||
std::string namestr, shiftstr, rangestr;
|
||||
|
||||
// Builtins which are overloaded by type will need to have their upper
|
||||
// bound computed at Sema time based on the type constant.
|
||||
if (Proto.find('s') == std::string::npos) {
|
||||
if (R->getValueAsBit("isVCVT_N")) {
|
||||
// VCVT between floating- and fixed-point values takes an immediate
|
||||
// in the range 1 to 32.
|
||||
ck = ClassB;
|
||||
rangestr = "l = 1; u = 31"; // upper bound = l + u
|
||||
} else if (Proto.find('s') == std::string::npos) {
|
||||
// Builtins which are overloaded by type will need to have their upper
|
||||
// bound computed at Sema time based on the type constant.
|
||||
ck = ClassB;
|
||||
if (R->getValueAsBit("isShift")) {
|
||||
shiftstr = ", true";
|
||||
|
Loading…
Reference in New Issue
Block a user