Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
llvm-epi-0.8
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Analyze
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
Roger Ferrer
llvm-epi-0.8
Commits
e70c2970
Commit
e70c2970
authored
19 years ago
by
Chris Lattner
Browse files
Options
Downloads
Patches
Plain Diff
Move static functions to .cpp file, reduce #includes, pass strings by
const&. llvm-svn: 23890
parent
8b7b47ca
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
llvm/include/llvm/Target/SubtargetFeature.h
+7
-68
7 additions, 68 deletions
llvm/include/llvm/Target/SubtargetFeature.h
with
7 additions
and
68 deletions
llvm/include/llvm/Target/SubtargetFeature.h
+
7
−
68
View file @
e70c2970
...
...
@@ -18,11 +18,9 @@
#ifndef LLVM_TARGET_SUBTARGETFEATURE_H
#define LLVM_TARGET_SUBTARGETFEATURE_H
#include
<string>
#include
<vector>
#include
<iostream>
#include
<cassert>
#include
<iosfwd>
#include
"llvm/Support/DataTypes.h"
namespace
llvm
{
...
...
@@ -57,80 +55,21 @@ struct SubtargetFeatureKV {
///
class
SubtargetFeatures
{
private:
std
::
vector
<
std
::
string
>
Features
;
// Subtarget features as a vector
// Determine if a feature has a flag; '+' or '-'
static
inline
bool
hasFlag
(
const
std
::
string
&
Feature
)
{
assert
(
!
Feature
.
empty
()
&&
"Empty string"
);
// Get first character
char
Ch
=
Feature
[
0
];
// Check if first character is '+' or '-' flag
return
Ch
==
'+'
||
Ch
==
'-'
;
}
// Return true if enable flag; '+'.
static
inline
bool
isEnabled
(
const
std
::
string
&
Feature
)
{
assert
(
!
Feature
.
empty
()
&&
"Empty string"
);
// Get first character
char
Ch
=
Feature
[
0
];
// Check if first character is '+' for enabled
return
Ch
==
'+'
;
}
// Return a string with a prepended flag; '+' or '-'.
static
inline
std
::
string
PrependFlag
(
const
std
::
string
&
Feature
,
bool
IsEnabled
)
{
assert
(
!
Feature
.
empty
()
&&
"Empty string"
);
if
(
hasFlag
(
Feature
))
return
Feature
;
return
std
::
string
(
IsEnabled
?
"+"
:
"-"
)
+
Feature
;
}
// Return string stripped of flag.
static
inline
std
::
string
StripFlag
(
const
std
::
string
&
Feature
)
{
return
hasFlag
(
Feature
)
?
Feature
.
substr
(
1
)
:
Feature
;
}
/// Splits a string of comma separated items in to a vector of strings.
static
void
Split
(
std
::
vector
<
std
::
string
>
&
V
,
const
std
::
string
&
S
);
/// Join a vector of strings into a string with a comma separating each
/// item.
static
std
::
string
Join
(
const
std
::
vector
<
std
::
string
>
&
V
);
/// Convert a string to lowercase.
static
std
::
string
toLower
(
const
std
::
string
&
S
);
/// Find item in array using binary search.
static
const
SubtargetFeatureKV
*
Find
(
const
std
::
string
&
S
,
const
SubtargetFeatureKV
*
A
,
size_t
L
);
public:
/// Ctor.
SubtargetFeatures
(
const
std
::
string
Initial
=
std
::
string
())
{
// Break up string into separate features
Split
(
Features
,
Initial
);
}
SubtargetFeatures
(
const
std
::
string
&
Initial
=
std
::
string
());
/// Features string accessors.
inline
std
::
string
getString
()
const
{
return
Join
(
Features
);
}
void
setString
(
const
std
::
string
&
Initial
)
{
// Throw out old features
Features
.
clear
();
// Break up string into separate features
Split
(
Features
,
toLower
(
Initial
));
}
std
::
string
getString
()
const
;
void
setString
(
const
std
::
string
&
Initial
);
/// Setting CPU string. Replaces previous setting. Setting to "" clears CPU.
void
setCPU
(
std
::
string
String
)
{
Features
[
0
]
=
toLower
(
String
);
}
///
void
setCPU
(
const
std
::
string
&
String
);
/// Adding Features.
void
AddFeature
(
const
std
::
string
&
String
,
bool
IsEnabled
=
true
);
/// Display help for feature choices.
static
void
Help
(
const
char
*
Heading
,
const
SubtargetFeatureKV
*
Table
,
size_t
TableSize
);
/// Parse feature string for quick usage.
static
uint32_t
Parse
(
const
std
::
string
&
String
,
const
std
::
string
&
DefaultCPU
,
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment