@@ -5,12 +5,10 @@ use crate::common::intrinsic_helpers::{IntrinsicType, IntrinsicTypeDefinition, S
55impl IntrinsicTypeDefinition for ArmIntrinsicType {
66 /// Gets a string containing the typename for this type in C format.
77 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 { "" } ;
1010
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 ) {
1412 match ( simd_len, vec_len) {
1513 ( None , None ) => format ! ( "{const_prefix}{prefix}{bit_len}_t" ) ,
1614 ( Some ( simd) , None ) => format ! ( "{prefix}{bit_len}x{simd}_t" ) ,
@@ -23,10 +21,10 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
2321 }
2422
2523 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 ) {
2725 format ! (
2826 "{prefix}{bit_len}x{simd_len}_t" ,
29- prefix = self . 0 . kind. c_prefix( )
27+ prefix = self . kind. c_prefix( )
3028 )
3129 } else {
3230 unreachable ! ( "Shouldn't be called on this type" )
@@ -40,17 +38,16 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
4038 bit_len : Some ( bl) ,
4139 simd_len,
4240 vec_len,
43- target,
4441 ..
45- } = & self . 0
42+ } = & self . data
4643 {
4744 let quad = if simd_len. unwrap_or ( 1 ) * bl > 64 {
4845 "q"
4946 } else {
5047 ""
5148 } ;
5249
53- let choose_workaround = language == Language :: C && target. contains ( "v7" ) ;
50+ let choose_workaround = language == Language :: C && self . target . contains ( "v7" ) ;
5451 format ! (
5552 "vld{len}{quad}_{type}{size}" ,
5653 type = match k {
@@ -78,7 +75,7 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
7875 bit_len : Some ( bl) ,
7976 simd_len,
8077 ..
81- } = & self . 0
78+ } = & self . data
8279 {
8380 let quad = if ( simd_len. unwrap_or ( 1 ) * bl) > 64 {
8481 "q"
@@ -101,8 +98,10 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
10198 todo ! ( "get_lane_function IntrinsicType: {:#?}" , self )
10299 }
103100 }
101+ }
104102
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 > {
106105 const CONST_STR : & str = "const" ;
107106 if let Some ( s) = s. strip_suffix ( '*' ) {
108107 let ( s, constant) = match s. trim ( ) . strip_suffix ( CONST_STR ) {
@@ -143,32 +142,36 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
143142 ) ,
144143 None => None ,
145144 } ;
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+ } ,
154155 target : target. to_string ( ) ,
155- } ) )
156+ } )
156157 } else {
157158 let kind = start. parse :: < TypeKind > ( ) ?;
158159 let bit_len = match kind {
159160 TypeKind :: Int ( _) => Some ( 32 ) ,
160161 _ => None ,
161162 } ;
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+ } ,
170173 target : target. to_string ( ) ,
171- } ) )
174+ } )
172175 }
173176 }
174177 }
0 commit comments