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