@@ -19,6 +19,45 @@ macro_rules! impl_hex_fmt {
19
19
write!( f, ")" )
20
20
}
21
21
}
22
+ impl :: fmt:: UpperHex for $id {
23
+ fn fmt( & self , f: & mut :: fmt:: Formatter )
24
+ -> :: fmt:: Result {
25
+ write!( f, "{}(" , stringify!( $id) ) ?;
26
+ for i in 0 ..$id:: lanes( ) {
27
+ if i > 0 {
28
+ write!( f, ", " ) ?;
29
+ }
30
+ self . extract( i) . fmt( f) ?;
31
+ }
32
+ write!( f, ")" )
33
+ }
34
+ }
35
+ impl :: fmt:: Octal for $id {
36
+ fn fmt( & self , f: & mut :: fmt:: Formatter )
37
+ -> :: fmt:: Result {
38
+ write!( f, "{}(" , stringify!( $id) ) ?;
39
+ for i in 0 ..$id:: lanes( ) {
40
+ if i > 0 {
41
+ write!( f, ", " ) ?;
42
+ }
43
+ self . extract( i) . fmt( f) ?;
44
+ }
45
+ write!( f, ")" )
46
+ }
47
+ }
48
+ impl :: fmt:: Binary for $id {
49
+ fn fmt( & self , f: & mut :: fmt:: Formatter )
50
+ -> :: fmt:: Result {
51
+ write!( f, "{}(" , stringify!( $id) ) ?;
52
+ for i in 0 ..$id:: lanes( ) {
53
+ if i > 0 {
54
+ write!( f, ", " ) ?;
55
+ }
56
+ self . extract( i) . fmt( f) ?;
57
+ }
58
+ write!( f, ")" )
59
+ }
60
+ }
22
61
}
23
62
}
24
63
@@ -44,6 +83,63 @@ macro_rules! test_hex_fmt_impl {
44
83
}
45
84
}
46
85
}
86
+ #[ test]
87
+ fn upper_hex_fmt( ) {
88
+ use :: std:: prelude:: v1:: * ;
89
+ use :: coresimd:: simd:: $id;
90
+ for & i in [ $( $values) ,+] . iter( ) {
91
+ let vec = $id:: splat( i as $elem_ty) ;
92
+
93
+ let s = format!( "{:#X}" , vec) ;
94
+ let beg = format!( "{}(" , stringify!( $id) ) ;
95
+ assert!( s. starts_with( & beg) ) ;
96
+ assert!( s. ends_with( ")" ) ) ;
97
+ let s: Vec <String > = s. replace( & beg, "" ) . replace( ")" , "" ) . split( "," )
98
+ . map( |v| v. trim( ) . to_string( ) ) . collect( ) ;
99
+ assert_eq!( s. len( ) , $id:: lanes( ) ) ;
100
+ for ( index, ss) in s. into_iter( ) . enumerate( ) {
101
+ assert_eq!( ss, format!( "{:#X}" , vec. extract( index) ) ) ;
102
+ }
103
+ }
104
+ }
105
+ #[ test]
106
+ fn octal_fmt( ) {
107
+ use :: std:: prelude:: v1:: * ;
108
+ use :: coresimd:: simd:: $id;
109
+ for & i in [ $( $values) ,+] . iter( ) {
110
+ let vec = $id:: splat( i as $elem_ty) ;
111
+
112
+ let s = format!( "{:#o}" , vec) ;
113
+ let beg = format!( "{}(" , stringify!( $id) ) ;
114
+ assert!( s. starts_with( & beg) ) ;
115
+ assert!( s. ends_with( ")" ) ) ;
116
+ let s: Vec <String > = s. replace( & beg, "" ) . replace( ")" , "" ) . split( "," )
117
+ . map( |v| v. trim( ) . to_string( ) ) . collect( ) ;
118
+ assert_eq!( s. len( ) , $id:: lanes( ) ) ;
119
+ for ( index, ss) in s. into_iter( ) . enumerate( ) {
120
+ assert_eq!( ss, format!( "{:#o}" , vec. extract( index) ) ) ;
121
+ }
122
+ }
123
+ }
124
+ #[ test]
125
+ fn binary_fmt( ) {
126
+ use :: std:: prelude:: v1:: * ;
127
+ use :: coresimd:: simd:: $id;
128
+ for & i in [ $( $values) ,+] . iter( ) {
129
+ let vec = $id:: splat( i as $elem_ty) ;
130
+
131
+ let s = format!( "{:#b}" , vec) ;
132
+ let beg = format!( "{}(" , stringify!( $id) ) ;
133
+ assert!( s. starts_with( & beg) ) ;
134
+ assert!( s. ends_with( ")" ) ) ;
135
+ let s: Vec <String > = s. replace( & beg, "" ) . replace( ")" , "" ) . split( "," )
136
+ . map( |v| v. trim( ) . to_string( ) ) . collect( ) ;
137
+ assert_eq!( s. len( ) , $id:: lanes( ) ) ;
138
+ for ( index, ss) in s. into_iter( ) . enumerate( ) {
139
+ assert_eq!( ss, format!( "{:#b}" , vec. extract( index) ) ) ;
140
+ }
141
+ }
142
+ }
47
143
}
48
144
}
49
145
0 commit comments