BOAST 1.0.7 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f11eacd12c0e6cfa7268db8d77718b8ea7264077
4
- data.tar.gz: 2edec679ab6ac265fb66a3190b7693b5cde5fce7
3
+ metadata.gz: bc45ecb1aebfa764bd9f502b867b26fc817a0b76
4
+ data.tar.gz: 2033f7f6c650a7de70b801d1751f34d47f1ff085
5
5
  SHA512:
6
- metadata.gz: 1da1fdca526a8ecc1d82164e4621b271714f82cc210718d6bcd70bb6482c74366ea8e14fdd7f44d7338a8724c68ebb7746ddd2e49d964c978ba94d911cac114c
7
- data.tar.gz: 76d2966d546378fa0901656711d76703218649e601534f7da7acfeae2d50e89604737f27924c97888d472ae77f7646596ed474a5fb9c0e87a608237864de0760
6
+ metadata.gz: e653262ee7e2b165e7c44f86a5c9209a58f7b9892b7844ce0e0846e8086f9354fc559b97aafdf03a93c309d4a24809726f78872d63d8cdca505273d0efeca54d
7
+ data.tar.gz: 09b6fce380eb9daa8090d1d1c2509bda205854ebffbb24a340fe0276c57372fff1e87df67d879213d275a098f0bf787ba9e85891eed0c6bf37dde4a5036eb8ce
data/BOAST.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'BOAST'
3
- s.version = "1.0.7"
3
+ s.version = "1.0.8"
4
4
  s.author = "Brice Videau"
5
5
  s.email = "brice.videau@imag.fr"
6
6
  s.homepage = "https://github.com/Nanosim-LIG/boast"
@@ -17,5 +17,6 @@ Gem::Specification.new do |s|
17
17
  s.add_dependency 'os', '~> 0.9', '>=0.9.6'
18
18
  s.add_dependency 'PAPI', '~> 0', '>=0.101'
19
19
  s.add_dependency 'ffi', '~> 1.9', '>=1.9.3'
20
+ s.add_dependency 'rgl', '~> 0.5', '>=0.5.1'
20
21
  s.add_dependency 'rake', '>=0.9'
21
22
  end
@@ -12,7 +12,7 @@ module BOAST
12
12
 
13
13
  module PrivateStateAccessor
14
14
 
15
- private_state_accessor :output, :lang, :architecture
15
+ private_state_accessor :output, :lang, :architecture, :model, :address_size
16
16
  private_state_accessor :default_int_size, :default_real_size
17
17
  private_state_accessor :default_align
18
18
  private_state_accessor :array_start
@@ -48,7 +48,7 @@ module BOAST
48
48
 
49
49
  end
50
50
 
51
- state_accessor :output, :lang, :architecture
51
+ state_accessor :output, :lang, :architecture, :model, :address_size
52
52
  state_accessor :default_int_size, :default_real_size
53
53
  state_accessor :default_align
54
54
  state_accessor :array_start
@@ -61,40 +61,45 @@ module BOAST
61
61
  boolean_state_accessor :use_vla
62
62
  boolean_state_accessor :decl_module
63
63
 
64
- module_function
65
-
66
- def get_default_lang
67
- lang = const_get(ENV["BOAST_LANG"]) if ENV["BOAST_LANG"]
68
- return lang if lang
69
- return FORTRAN
64
+ default_state_getter :address_size, OS.bits/8
65
+ default_state_getter :lang, FORTRAN, '"const_get(#{envs})"', :BOAST_LANG
66
+ default_state_getter :model, "native"
67
+ default_state_getter :debug, false
68
+ default_state_getter :use_vla, false
69
+ default_state_getter :replace_constants, true
70
+ default_state_getter :default_int_signed, true
71
+ default_state_getter :default_int_size, 4
72
+ default_state_getter :default_real_size, 8
73
+ default_state_getter :default_align, 1
74
+ default_state_getter :indent_level, 0
75
+ default_state_getter :indent_increment, 2
76
+ default_state_getter :array_start, 1
77
+
78
+ alias use_vla_old? use_vla?
79
+ class << self
80
+ alias use_vla_old? use_vla?
70
81
  end
71
82
 
72
- def get_default_debug
73
- debug = false
74
- debug = ENV["DEBUG"] if ENV["DEBUG"]
75
- return debug
83
+ def use_vla?
84
+ return false if [CL,CUDA].include?(lang)
85
+ return use_vla_old?
76
86
  end
77
87
 
78
- def get_default_use_vla
79
- use_vla = false
80
- use_vla = ENV["USE_VLA"] if ENV["USE_VLA"]
81
- return use_vla
88
+ module_function :use_vla?
89
+
90
+ module_function
91
+
92
+ def get_default_architecture
93
+ architecture = const_get(ENV["ARCHITECTURE"]) if ENV["ARCHITECTURE"]
94
+ architecture = const_get(ENV["ARCH"]) if not architecture and ENV["ARCH"]
95
+ return architecture if architecture
96
+ return ARM if YAML::load( OS.report )["host_cpu"].match("arm")
97
+ return X86
82
98
  end
83
99
 
84
100
  @@output = STDOUT
85
- @@lang = get_default_lang
86
- @@replace_constants = true
87
- @@default_int_size = 4
88
- @@default_int_signed = true
89
- @@default_real_size = 8
90
- @@default_align = 1
91
- @@indent_level = 0
92
- @@indent_increment = 2
93
- @@array_start = 1
94
101
  @@chain_code = false
95
- @@architecture = X86
96
- @@debug = get_default_debug
97
- @@use_vla = get_default_use_vla
102
+ @@architecture = get_default_architecture
98
103
  @@decl_module = false
99
104
 
100
105
  @@env = Hash::new{|h, k| h[k] = []}
@@ -0,0 +1,210 @@
1
+ module BOAST
2
+ X86architectures ={"pentium2"=>["MMX"],
3
+ "pentium3"=>["MMX", "SSE"],
4
+ "pentium3m"=>["MMX", "SSE"],
5
+ "pentium-m"=>["MMX", "SSE", "SSE2"],
6
+ "pentium4"=>["MMX", "SSE", "SSE2"],
7
+ "pentium4m"=>["MMX", "SSE", "SSE2"],
8
+ "prescott"=>["MMX", "SSE", "SSE2", "SSE3"],
9
+ "nocona"=>["MMX", "SSE", "SSE2", "SSE3"],
10
+ "core2"=>["MMX", "SSE", "SSE2", "SSE3", "SSSE3"],
11
+ "nehalem"=>
12
+ ["MMX", "SSE", "SSE2", "SSE3", "SSSE3", "SSE4.1", "SSE4.2", "POPCNT"],
13
+ "westmere"=>
14
+ ["MMX",
15
+ "SSE",
16
+ "SSE2",
17
+ "SSE3",
18
+ "SSSE3",
19
+ "SSE4.1",
20
+ "SSE4.2",
21
+ "POPCNT",
22
+ "AES",
23
+ "PCLMUL"],
24
+ "sandybridge"=>
25
+ ["MMX",
26
+ "SSE",
27
+ "SSE2",
28
+ "SSE3",
29
+ "SSSE3",
30
+ "SSE4.1",
31
+ "SSE4.2",
32
+ "POPCNT",
33
+ "AVX",
34
+ "AES",
35
+ "PCLMUL"],
36
+ "ivybridge"=>
37
+ ["MMX",
38
+ "SSE",
39
+ "SSE2",
40
+ "SSE3",
41
+ "SSSE3",
42
+ "SSE4.1",
43
+ "SSE4.2",
44
+ "POPCNT",
45
+ "AVX",
46
+ "AES",
47
+ "PCLMUL",
48
+ "FSGSBASE",
49
+ "RDRND",
50
+ "F16C"],
51
+ "haswell"=>
52
+ ["MOVBE",
53
+ "MMX",
54
+ "SSE",
55
+ "SSE2",
56
+ "SSE3",
57
+ "SSSE3",
58
+ "SSE4.1",
59
+ "SSE4.2",
60
+ "POPCNT",
61
+ "AVX",
62
+ "AVX2",
63
+ "AES",
64
+ "PCLMUL",
65
+ "FSGSBASE",
66
+ "RDRND",
67
+ "FMA",
68
+ "BMI",
69
+ "BMI2",
70
+ "F16C"],
71
+ "broadwell"=>
72
+ ["MOVBE",
73
+ "MMX",
74
+ "SSE",
75
+ "SSE2",
76
+ "SSE3",
77
+ "SSSE3",
78
+ "SSE4.1",
79
+ "SSE4.2",
80
+ "POPCNT",
81
+ "AVX",
82
+ "AVX2",
83
+ "AES",
84
+ "PCLMUL",
85
+ "FSGSBASE",
86
+ "RDRND",
87
+ "FMA",
88
+ "BMI",
89
+ "BMI2",
90
+ "F16C",
91
+ "RDSEED",
92
+ "ADCX",
93
+ "PREFETCHW"],
94
+ "bonnell"=>["MOVBE", "MMX", "SSE", "SSE2", "SSE3", "SSSE3"],
95
+ "silvermont"=>
96
+ ["MOVBE",
97
+ "MMX",
98
+ "SSE",
99
+ "SSE2",
100
+ "SSE3",
101
+ "SSSE3",
102
+ "SSE4.1",
103
+ "SSE4.2",
104
+ "POPCNT",
105
+ "AES",
106
+ "PCLMUL",
107
+ "RDRND"],
108
+ "bdver1"=>
109
+ ["FMA4",
110
+ "AVX",
111
+ "XOP",
112
+ "LWP",
113
+ "AES",
114
+ "PCL_MUL",
115
+ "CX16",
116
+ "MMX",
117
+ "SSE",
118
+ "SSE2",
119
+ "SSE3",
120
+ "SSE4A",
121
+ "SSSE3",
122
+ "SSE4.1",
123
+ "SSE4.2",
124
+ "ABM"],
125
+ "bdver2"=>
126
+ ["BMI",
127
+ "TBM",
128
+ "F16C",
129
+ "FMA",
130
+ "FMA4",
131
+ "AVX",
132
+ "XOP",
133
+ "LWP",
134
+ "AES",
135
+ "PCL_MUL",
136
+ "CX16",
137
+ "MMX",
138
+ "SSE",
139
+ "SSE2",
140
+ "SSE3",
141
+ "SSE4A",
142
+ "SSSE3",
143
+ "SSE4.1",
144
+ "SSE4.2",
145
+ "ABM"],
146
+ "bdver3"=>
147
+ ["BMI",
148
+ "TBM",
149
+ "F16C",
150
+ "FMA",
151
+ "FMA4",
152
+ "FSGSBASE",
153
+ "AVX",
154
+ "XOP",
155
+ "LWP",
156
+ "AES",
157
+ "PCL_MUL",
158
+ "CX16",
159
+ "MMX",
160
+ "SSE",
161
+ "SSE2",
162
+ "SSE3",
163
+ "SSE4A",
164
+ "SSSE3",
165
+ "SSE4.1",
166
+ "SSE4.2",
167
+ "ABM"],
168
+ "bdver4"=>
169
+ ["BMI2",
170
+ "TBM",
171
+ "F16C",
172
+ "FMA",
173
+ "FMA4",
174
+ "FSGSBASE",
175
+ "AVX",
176
+ "AVX2",
177
+ "XOP",
178
+ "LWP",
179
+ "AES",
180
+ "PCL_MUL",
181
+ "CX16",
182
+ "MOVBE",
183
+ "MMX",
184
+ "SSE",
185
+ "SSE2",
186
+ "SSE3",
187
+ "SSE4A",
188
+ "SSSE3",
189
+ "SSE4.1",
190
+ "SSE4.2",
191
+ "ABM"],
192
+ "btver1"=>["MMX", "SSE", "SSE2", "SSE3", "SSSE3", "SSE4A", "CX16", "ABM"],
193
+ "btver2"=>
194
+ ["MOVBE",
195
+ "F16C",
196
+ "BMI",
197
+ "AVX",
198
+ "PCL_MUL",
199
+ "AES",
200
+ "SSE4.2",
201
+ "SSE4.1",
202
+ "CX16",
203
+ "ABM",
204
+ "SSE4A",
205
+ "SSSE3",
206
+ "SSE3",
207
+ "SSE2",
208
+ "SSE",
209
+ "MMX"]}
210
+ end