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

Side by Side Diff: test/cctest/test-assembler-arm64.cc

Issue 2922173004: [arm64] Fix pre-shifted immediate generation involving csp. (Closed)
Patch Set: Created 3 years, 6 months 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
« no previous file with comments | « src/arm64/macro-assembler-arm64.cc ('k') | test/mjsunit/regress/regress-725858.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 7135 matching lines...) Expand 10 before | Expand all | Expand 10 after
7146 7146
7147 RUN(); 7147 RUN();
7148 7148
7149 CHECK_EQUAL_64(0, x0); 7149 CHECK_EQUAL_64(0, x0);
7150 CHECK_EQUAL_64(0, x1); 7150 CHECK_EQUAL_64(0, x1);
7151 CHECK_EQUAL_64(0, x2); 7151 CHECK_EQUAL_64(0, x2);
7152 7152
7153 TEARDOWN(); 7153 TEARDOWN();
7154 } 7154 }
7155 7155
7156 TEST(preshift_immediates) {
7157 INIT_V8();
7158 SETUP();
7159
7160 START();
7161 // Test operations involving immediates that could be generated using a
7162 // pre-shifted encodable immediate followed by a post-shift applied to
7163 // the arithmetic or logical operation.
7164
7165 // Save csp.
7166 __ Mov(x29, csp);
7167
7168 // Set the registers to known values.
7169 __ Mov(x0, 0x1000);
7170 __ Mov(csp, 0x1000);
7171
7172 // Arithmetic ops.
7173 __ Add(x1, x0, 0x1f7de);
Tobias Tebbi 2017/06/08 10:27:51 How are these constants encodable with a shift? Th
martyn.capewell 2017/06/08 10:37:17 In order to improve "encodability", ones are inser
7174 __ Add(w2, w0, 0xffffff1);
7175 __ Adds(x3, x0, 0x18001);
7176 __ Adds(w4, w0, 0xffffff1);
7177 __ Sub(x5, x0, 0x1f7de);
7178 __ Sub(w6, w0, 0xffffff1);
7179 __ Subs(x7, x0, 0x18001);
7180 __ Subs(w8, w0, 0xffffff1);
7181
7182 // Logical ops.
7183 __ And(x9, x0, 0x1f7de);
7184 __ Orr(w10, w0, 0xffffff1);
7185 __ Eor(x11, x0, 0x18001);
7186
7187 // Ops using the stack pointer.
7188 __ Add(csp, csp, 0x1f7f0);
7189 __ Mov(x12, csp);
7190 __ Mov(csp, 0x1000);
7191
7192 __ Adds(x13, csp, 0x1f7f0);
7193
7194 __ Orr(csp, x0, 0x1f7f0);
7195 __ Mov(x14, csp);
7196
7197 // Restore csp.
7198 __ Mov(csp, x29);
7199 END();
7200
7201 RUN();
7202
7203 CHECK_EQUAL_64(0x1000, x0);
7204 CHECK_EQUAL_64(0x207de, x1);
7205 CHECK_EQUAL_64(0x10000ff1, x2);
7206 CHECK_EQUAL_64(0x19001, x3);
7207 CHECK_EQUAL_64(0x10000ff1, x4);
7208 CHECK_EQUAL_64(0xfffffffffffe1822, x5);
7209 CHECK_EQUAL_64(0xf000100f, x6);
7210 CHECK_EQUAL_64(0xfffffffffffe8fff, x7);
7211 CHECK_EQUAL_64(0xf000100f, x8);
7212 CHECK_EQUAL_64(0x1000, x9);
7213 CHECK_EQUAL_64(0xffffff1, x10);
7214 CHECK_EQUAL_64(0x207f0, x12);
7215 CHECK_EQUAL_64(0x207f0, x13);
7216 CHECK_EQUAL_64(0x1f7f0, x14);
7217
7218 TEARDOWN();
7219 }
7156 7220
7157 TEST(claim_drop_zero) { 7221 TEST(claim_drop_zero) {
7158 INIT_V8(); 7222 INIT_V8();
7159 SETUP(); 7223 SETUP();
7160 7224
7161 START(); 7225 START();
7162 7226
7163 Label start; 7227 Label start;
7164 __ Bind(&start); 7228 __ Bind(&start);
7165 __ Claim(0); 7229 __ Claim(0);
(...skipping 8270 matching lines...) Expand 10 before | Expand all | Expand 10 after
15436 __ Mov(x0, 1); 15500 __ Mov(x0, 1);
15437 15501
15438 END(); 15502 END();
15439 15503
15440 RUN(); 15504 RUN();
15441 15505
15442 CHECK_EQUAL_64(0x1, x0); 15506 CHECK_EQUAL_64(0x1, x0);
15443 15507
15444 TEARDOWN(); 15508 TEARDOWN();
15445 } 15509 }
OLDNEW
« no previous file with comments | « src/arm64/macro-assembler-arm64.cc ('k') | test/mjsunit/regress/regress-725858.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698