@@ -5,12 +5,10 @@ use crate::common::intrinsic_helpers::{IntrinsicType, IntrinsicTypeDefinition, S
5
5
impl IntrinsicTypeDefinition for ArmIntrinsicType {
6
6
/// Gets a string containing the typename for this type in C format.
7
7
fn c_type ( & self ) -> String {
8
- let prefix = self . 0 . kind . c_prefix ( ) ;
9
- let const_prefix = if self . 0 . constant { "const " } else { "" } ;
8
+ let prefix = self . kind . c_prefix ( ) ;
9
+ let const_prefix = if self . constant { "const " } else { "" } ;
10
10
11
- if let ( Some ( bit_len) , simd_len, vec_len) =
12
- ( self . 0 . bit_len , self . 0 . simd_len , self . 0 . vec_len )
13
- {
11
+ if let ( Some ( bit_len) , simd_len, vec_len) = ( self . bit_len , self . simd_len , self . vec_len ) {
14
12
match ( simd_len, vec_len) {
15
13
( None , None ) => format ! ( "{const_prefix}{prefix}{bit_len}_t" ) ,
16
14
( Some ( simd) , None ) => format ! ( "{prefix}{bit_len}x{simd}_t" ) ,
@@ -23,10 +21,10 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
23
21
}
24
22
25
23
fn c_single_vector_type ( & self ) -> String {
26
- if let ( Some ( bit_len) , Some ( simd_len) ) = ( self . 0 . bit_len , self . 0 . simd_len ) {
24
+ if let ( Some ( bit_len) , Some ( simd_len) ) = ( self . bit_len , self . simd_len ) {
27
25
format ! (
28
26
"{prefix}{bit_len}x{simd_len}_t" ,
29
- prefix = self . 0 . kind. c_prefix( )
27
+ prefix = self . kind. c_prefix( )
30
28
)
31
29
} else {
32
30
unreachable ! ( "Shouldn't be called on this type" )
@@ -40,17 +38,16 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
40
38
bit_len : Some ( bl) ,
41
39
simd_len,
42
40
vec_len,
43
- target,
44
41
..
45
- } = & self . 0
42
+ } = & self . data
46
43
{
47
44
let quad = if simd_len. unwrap_or ( 1 ) * bl > 64 {
48
45
"q"
49
46
} else {
50
47
""
51
48
} ;
52
49
53
- let choose_workaround = language == Language :: C && target. contains ( "v7" ) ;
50
+ let choose_workaround = language == Language :: C && self . target . contains ( "v7" ) ;
54
51
format ! (
55
52
"vld{len}{quad}_{type}{size}" ,
56
53
type = match k {
@@ -78,7 +75,7 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
78
75
bit_len : Some ( bl) ,
79
76
simd_len,
80
77
..
81
- } = & self . 0
78
+ } = & self . data
82
79
{
83
80
let quad = if ( simd_len. unwrap_or ( 1 ) * bl) > 64 {
84
81
"q"
@@ -101,8 +98,10 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
101
98
todo ! ( "get_lane_function IntrinsicType: {:#?}" , self )
102
99
}
103
100
}
101
+ }
104
102
105
- fn from_c ( s : & str , target : & str ) -> Result < Self , String > {
103
+ impl ArmIntrinsicType {
104
+ pub fn from_c ( s : & str , target : & str ) -> Result < Self , String > {
106
105
const CONST_STR : & str = "const" ;
107
106
if let Some ( s) = s. strip_suffix ( '*' ) {
108
107
let ( s, constant) = match s. trim ( ) . strip_suffix ( CONST_STR ) {
@@ -143,32 +142,36 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
143
142
) ,
144
143
None => None ,
145
144
} ;
146
- Ok ( ArmIntrinsicType ( IntrinsicType {
147
- ptr : false ,
148
- ptr_constant : false ,
149
- constant,
150
- kind : arg_kind,
151
- bit_len : Some ( bit_len) ,
152
- simd_len,
153
- vec_len,
145
+ Ok ( ArmIntrinsicType {
146
+ data : IntrinsicType {
147
+ ptr : false ,
148
+ ptr_constant : false ,
149
+ constant,
150
+ kind : arg_kind,
151
+ bit_len : Some ( bit_len) ,
152
+ simd_len,
153
+ vec_len,
154
+ } ,
154
155
target : target. to_string ( ) ,
155
- } ) )
156
+ } )
156
157
} else {
157
158
let kind = start. parse :: < TypeKind > ( ) ?;
158
159
let bit_len = match kind {
159
160
TypeKind :: Int ( _) => Some ( 32 ) ,
160
161
_ => None ,
161
162
} ;
162
- Ok ( ArmIntrinsicType ( IntrinsicType {
163
- ptr : false ,
164
- ptr_constant : false ,
165
- constant,
166
- kind : start. parse :: < TypeKind > ( ) ?,
167
- bit_len,
168
- simd_len : None ,
169
- vec_len : None ,
163
+ Ok ( ArmIntrinsicType {
164
+ data : IntrinsicType {
165
+ ptr : false ,
166
+ ptr_constant : false ,
167
+ constant,
168
+ kind : start. parse :: < TypeKind > ( ) ?,
169
+ bit_len,
170
+ simd_len : None ,
171
+ vec_len : None ,
172
+ } ,
170
173
target : target. to_string ( ) ,
171
- } ) )
174
+ } )
172
175
}
173
176
}
174
177
}
0 commit comments