+check_assembly "Warning test" [do_objfile dsp.s] $want
+
+set double_store_hs_expected {std\s*r0r1,\[r3\]}
+set objfile [do_objfile double_store.s]
+check_assembly "arc double_store default -M" $objfile \
+ $double_store_hs_expected
+check_assembly "arc double_store -Mcpu=hs" $objfile \
+ $double_store_hs_expected "-Mcpu=hs"
+check_assembly "arc double_store -Mcpu=hs38_linux" $objfile \
+ $double_store_hs_expected "-Mcpu=hs38_linux"
+set double_store_em_expected ".long 0x1b000006"
+check_assembly "arc double_store -Mcpu=em" $objfile \
+ $double_store_em_expected "-Mcpu=em"
+check_assembly "arc double_store -Mcpu=em4_dmips" $objfile \
+ $double_store_em_expected "-Mcpu=em4_dmips"
+# Test to ensure that only value up to the next `,' is checked. There used to
+# be a bug, where whole `em,fpus' was compared against known CPU values, and
+# that comparison would fail. When this bug is present, whole cpu= option will
+# be ignored and instruction will be disassembled as ARC HS.
+check_assembly "arc double_store -Mcpu=em,fpus" $objfile \
+ $double_store_em_expected "-Mcpu=em,fpus"
+# Make sure that the last cpu= value is used.
+check_assembly "arc double_store -Mcpu=hs,cpu=em" $objfile \
+ $double_store_em_expected "-Mcpu=hs,cpu=em"