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

Unified Diff: src/trusted/validator_mips/testdata/test_stores.S

Issue 9979025: [MIPS] Adding validator for MIPS architecture. (Closed) Base URL: http://src.chromium.org/native_client/trunk/src/native_client/
Patch Set: Rebased patch, conflict resolved. Created 8 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: src/trusted/validator_mips/testdata/test_stores.S
diff --git a/src/trusted/validator_mips/testdata/test_stores.S b/src/trusted/validator_mips/testdata/test_stores.S
new file mode 100644
index 0000000000000000000000000000000000000000..3f8e73969ad71dc6b71964ee478924f585d2567a
--- /dev/null
+++ b/src/trusted/validator_mips/testdata/test_stores.S
@@ -0,0 +1,95 @@
+# Copyright 2012 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can
+# be found in the LICENSE file.
+
+# Several test cases are implemented in this file:
+# 1. Test if all store instructions are recognized as such.
+# 2. Test if store from sp is allowed.
+# 3. Test if mask and instruction are split with delay slot.
+# 4. Test if mask and instruction are in the same bundle.
+
+.globl _start
+_start:
+.align 4
+.set noreorder
+.set STORE_MASK,$t7
+
+ # Check store with mask.
+
+bundle_store_mask:
+ and $a3, $a3, STORE_MASK
+ sw $s1, 128($a3) # OK
+ and $a3, $a3, $t8
+ sw $s1, 128($a3) # Error, incorrect mask.
+
+ # Store instructions without store mask, should report error.
+
+bundle_store_list:
+ sb $a0, 16($a1) # Error, unsafe store, no mask.
+ sc $a0, 16($a1) # Error, unsafe store, no mask.
+ sdc1 $0, 16($a1) # Error, unsafe store, no mask.
+ sdc2 $8, 16($a1) # Error, unsafe store, no mask.
+
+ sh $a0, 16($a1) # Error, unsafe store, no mask.
+ sw $a0, 16($a1) # Error, unsafe store, no mask.
+ swc1 $f2, 16($a1) # Error, unsafe store, no mask.
+ swc2 $22, 16($a1) # Error, unsafe store, no mask.
+
+ swl $a0, 16($a1) # Error, unsafe store, no mask.
+ swr $a0, 16($a1) # Error, unsafe store, no mask.
+ nop
+ nop
+
+ # A few forbidden instructions (indexed store).
+
+bundle_indexed_store:
+ sdxc1 $f6, $a2($a0) # Error, forbidden instruction.
+ suxc1 $f4, $t8($a1) # Error, forbidden instruction.
+ swxc1 $f4, $t8($a1) # Error, forbidden instruction.
+ nop
+
+bundle_store_from_sp:
+ sw $a0, 16($sp) # OK - store from sp doesn't need a mask.
+ nop
+ nop
+ nop
+
+ # Test when store pseudo-instruction is split with delay slot.
+
+bundle_chk_delay_slot:
+ b bundle_chk_bundle_cross_1
+ and $s0, $s0, STORE_MASK
+ sw $v0, 16($s0) # OK
+ nop
+
+ # Test when store pseudo-instruction crosses bundle.
+
+bundle_chk_bundle_cross_1:
+ nop
+ nop
+ nop
+ and $a3, $a3, STORE_MASK
+
+bundle_chk_bundle_cross_2:
+ sw $a3, 16($a3) # Error, pseudo-instruction crosses bundle.
+ nop
+ nop
+ nop
+
+ # Test indexed store with store mask.
+
+bundle_indexed_store_index_not_zero:
+ and $a0, $a0, STORE_MASK
+ sdxc1 $f6, $a2($a0) # Error, forbidden instruction.
+ nop
+ nop
+
+ # Test if base register is properly recognized.
+
+bundle_sp_1:
+ sw $sp,0($t1) # Error, no store mask for t1.
+ and $sp,$sp,STORE_MASK
+ nop
+ nop
+
+end_of_code:
« no previous file with comments | « src/trusted/validator_mips/testdata/test_sp_updates.err ('k') | src/trusted/validator_mips/testdata/test_stores.err » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698