Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(577)

Side by Side Diff: tests/language/vm/unaligned_access_literal_index_test.dart

Issue 2452453002: Support unaligned integer loads on ARM and MIPS. (Closed)
Patch Set: . Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4 // VMOptions=--optimization_counter_threshold=10 --no-background_compilation
5
6 import 'dart:typed_data';
7 import 'package:expect/expect.dart';
8
9 unalignedUint16() {
10 var bytes = new ByteData(64);
11 bytes.setUint16(0, 0xABCD);
12 Expect.equals(0xABCD, bytes.getUint16(0));
13 bytes.setUint16(1, 0xBCDE);
14 Expect.equals(0xBCDE, bytes.getUint16(1));
15 }
16
17 unalignedInt16() {
18 var bytes = new ByteData(64);
19 bytes.setInt16(0, -0x1234);
20 Expect.equals(-0x1234, bytes.getInt16(0));
21 bytes.setInt16(1, -0x2345);
22 Expect.equals(-0x2345, bytes.getInt16(1));
23 }
24
25 unalignedUint32() {
26 var bytes = new ByteData(64);
27 bytes.setUint32(0, 0xABCDABCD);
28 Expect.equals(0xABCDABCD, bytes.getUint32(0));
29 bytes.setUint32(1, 0xBCDEBCDE);
30 Expect.equals(0xBCDEBCDE, bytes.getUint32(1));
31 bytes.setUint32(2, 0xABCDABCD);
32 Expect.equals(0xABCDABCD, bytes.getUint32(2));
33 bytes.setUint32(3, 0xBCDEBCDE);
34 Expect.equals(0xBCDEBCDE, bytes.getUint32(3));
35 }
36
37 unalignedInt32() {
38 var bytes = new ByteData(64);
39 bytes.setInt32(0, -0x12341234);
40 Expect.equals(-0x12341234, bytes.getInt32(0));
41 bytes.setInt32(1, -0x23452345);
42 Expect.equals(-0x23452345, bytes.getInt32(1));
43 bytes.setInt32(2, -0x12341234);
44 Expect.equals(-0x12341234, bytes.getInt32(2));
45 bytes.setInt32(3, -0x23452345);
46 Expect.equals(-0x23452345, bytes.getInt32(3));
47 }
48
49 unalignedUint64() {
50 var bytes = new ByteData(64);
51 bytes.setUint64(0, 0xABCDABCD);
52 Expect.equals(0xABCDABCD, bytes.getUint64(0));
53 bytes.setUint64(1, 0xBCDEBCDE);
54 Expect.equals(0xBCDEBCDE, bytes.getUint64(1));
55 bytes.setUint64(2, 0xABCDABCD);
56 Expect.equals(0xABCDABCD, bytes.getUint64(2));
57 bytes.setUint64(3, 0xBCDEBCDE);
58 Expect.equals(0xBCDEBCDE, bytes.getUint64(3));
59 bytes.setUint64(4, 0xABCDABCD);
60 Expect.equals(0xABCDABCD, bytes.getUint64(4));
61 bytes.setUint64(5, 0xBCDEBCDE);
62 Expect.equals(0xBCDEBCDE, bytes.getUint64(5));
63 bytes.setUint64(6, 0xABCDABCD);
64 Expect.equals(0xABCDABCD, bytes.getUint64(6));
65 bytes.setUint64(7, 0xBCDEBCDE);
66 Expect.equals(0xBCDEBCDE, bytes.getUint64(7));
67 }
68
69 unalignedInt64() {
70 var bytes = new ByteData(64);
71 bytes.setInt64(0, -0x12341234);
72 Expect.equals(-0x12341234, bytes.getInt64(0));
73 bytes.setInt64(1, -0x23452345);
74 Expect.equals(-0x23452345, bytes.getInt64(1));
75 bytes.setInt64(2, -0x12341234);
76 Expect.equals(-0x12341234, bytes.getInt64(2));
77 bytes.setInt64(3, -0x23452345);
78 Expect.equals(-0x23452345, bytes.getInt64(3));
79 bytes.setInt64(4, -0x12341234);
80 Expect.equals(-0x12341234, bytes.getInt64(4));
81 bytes.setInt64(5, -0x23452345);
82 Expect.equals(-0x23452345, bytes.getInt64(5));
83 bytes.setInt64(6, -0x12341234);
84 Expect.equals(-0x12341234, bytes.getInt64(6));
85 bytes.setInt64(7, -0x23452345);
86 Expect.equals(-0x23452345, bytes.getInt64(7));
87 }
88
89 unalignedFloat32() {
90 var bytes = new ByteData(64);
91 bytes.setFloat32(0, 16.25);
92 Expect.equals(16.25, bytes.getFloat32(0));
93 bytes.setFloat32(1, 32.125);
94 Expect.equals(32.125, bytes.getFloat32(1));
95 bytes.setFloat32(2, 16.25);
96 Expect.equals(16.25, bytes.getFloat32(2));
97 bytes.setFloat32(3, 32.125);
98 Expect.equals(32.125, bytes.getFloat32(3));
99 }
100
101 unalignedFloat64() {
102 var bytes = new ByteData(64);
103 bytes.setFloat64(0, 16.25);
104 Expect.equals(16.25, bytes.getFloat64(0));
105 bytes.setFloat64(1, 32.125);
106 Expect.equals(32.125, bytes.getFloat64(1));
107 bytes.setFloat64(2, 16.25);
108 Expect.equals(16.25, bytes.getFloat64(2));
109 bytes.setFloat64(3, 32.125);
110 Expect.equals(32.125, bytes.getFloat64(3));
111 bytes.setFloat64(4, 16.25);
112 Expect.equals(16.25, bytes.getFloat64(4));
113 bytes.setFloat64(5, 32.125);
114 Expect.equals(32.125, bytes.getFloat64(5));
115 bytes.setFloat64(6, 16.25);
116 Expect.equals(16.25, bytes.getFloat64(6));
117 bytes.setFloat64(7, 32.125);
118 Expect.equals(32.125, bytes.getFloat64(7));
119 }
120
121 main() {
122 for (var i = 0; i < 20; i++) {
123 unalignedUint16();
124 unalignedInt16();
125 unalignedUint32();
126 unalignedInt32();
127 unalignedUint64();
128 unalignedInt64();
129 unalignedFloat32();
130 unalignedFloat64();
131 }
132 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698