sim: add more hacking notes
[deliverable/binutils-gdb.git] / opcodes / s390-opc.txt
index 4b78f24f2ba05e94b483116df4bcfd3100ce0198..f55622661265c26156607628831db251a0975403 100644 (file)
@@ -1,5 +1,6 @@
 #  S/390 opcodes list. Use s390-mkopc to convert it into the opcode table.
-#  Copyright 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+#  Copyright 2000, 2001, 2003, 2004, 2005, 2007, 2008, 2009
+#  Free Software Foundation, Inc.
 #  Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
 5a a RX_RRRD "add" g5 esa,zarch
 6a ad RX_FRRD "add normalized (long)" g5 esa,zarch
@@ -260,37 +261,13 @@ b252 msr RRE_RR "multiply single" g5 esa,zarch
 71 ms RX_RRRD "multiply single" g5 esa,zarch
 a700 tmh RI_RU "test under mask high" g5 esa,zarch
 a701 tml RI_RU "test under mask low" g5 esa,zarch
-0700 nopr RR_0R "no operation" g5 esa,zarch
+0700 nopr RR_0R_OPT "no operation" g5 esa,zarch
 0700 b*8r RR_0R "conditional branch" g5 esa,zarch
-0710 bor RR_0R "branch on overflow / if ones" g5 esa,zarch
-0720 bpr RR_0R "branch on plus" g5 esa,zarch
-0740 bmr RR_0R "branch on minus / if mixed" g5 esa,zarch
-0770 bnzr RR_0R "branch on not zero / if not zeros" g5 esa,zarch
-0780 bzr RR_0R "branch on zero / if zeros" g5 esa,zarch
-07b0 bnmr RR_0R "branch on not minus / if not mixed" g5 esa,zarch
-07d0 bnpr RR_0R "branch on not plus" g5 esa,zarch
-07e0 bnor RR_0R "branch on not overflow / if not ones" g5 esa,zarch
 07f0 br RR_0R "unconditional branch" g5 esa,zarch
-4700 nop RX_0RRD "no operation" g5 esa,zarch
+4700 nop RX_0RRD_OPT "no operation" g5 esa,zarch
 4700 b*8 RX_0RRD "conditional branch" g5 esa,zarch
-4710 bo RX_0RRD "branch on overflow / if ones" g5 esa,zarch
-4720 bp RX_0RRD "branch on plus" g5 esa,zarch
-4740 bm RX_0RRD "branch on minus / if mixed" g5 esa,zarch
-4770 bnz RX_0RRD "branch on not zero / if not zeros" g5 esa,zarch
-4780 bz RX_0RRD "branch on zero / if zeros" g5 esa,zarch
-47b0 bnm RX_0RRD "branch on not minus / if not mixed" g5 esa,zarch
-47d0 bnp RX_0RRD "branch on not plus" g5 esa,zarch
-47e0 bno RX_0RRD "branch on not overflow / if not ones" g5 esa,zarch
 47f0 b RX_0RRD "unconditional branch" g5 esa,zarch
 a704 j*8 RI_0P "conditional jump" g5 esa,zarch
-a714 jo RI_0P "jump on overflow / if ones" g5 esa,zarch
-a724 jp RI_0P "jump on plus" g5 esa,zarch
-a744 jm RI_0P "jump on minus / if mixed" g5 esa,zarch
-a774 jnz RI_0P "jump on not zero / if not zeros" g5 esa,zarch
-a784 jz RI_0P "jump on zero / if zeros" g5 esa,zarch
-a7b4 jnm RI_0P "jump on not minus / if not mixed" g5 esa,zarch
-a7d4 jnp RI_0P "jump on not plus" g5 esa,zarch
-a7e4 jno RI_0P "jump on not overflow / if not ones" g5 esa,zarch
 a7f4 j RI_0P "unconditional jump" g5 esa,zarch
 b34a axbr RRE_FF "add extended bfp" g5 esa,zarch
 b31a adbr RRE_FF "add long bfp" g5 esa,zarch
@@ -402,8 +379,8 @@ b991 trto RRE_RR "translate two to one" g5 esa,zarch
 b990 trtt RRE_RR "translate two to two" g5 esa,zarch
 ea unpka SS_L0RDRD "unpack ascii" g5 esa,zarch
 e2 unpku SS_L0RDRD "unpack unicode" g5 esa,zarch
-b358 thder RRE_RR "convert short bfp to long hfp" g5 esa,zarch
-b359 thdr RRE_RR "convert long bfp to long hfp" g5 esa,zarch
+b358 thder RRE_FF "convert short bfp to long hfp" g5 esa,zarch
+b359 thdr RRE_FF "convert long bfp to long hfp" g5 esa,zarch
 b350 tbedr RRF_U0FF "convert long hfp to short bfp" g5 esa,zarch
 b351 tbdr RRF_U0FF "convert long hfp to long bfp" g5 esa,zarch
 b374 lzer RRE_F0 "load short zero" g5 esa,zarch
@@ -487,14 +464,6 @@ a702 tmhh RI_RU "test under mask high high" z900 zarch
 a703 tmhl RI_RU "test under mask high low" z900 zarch
 c004 brcl RIL_UP "branch relative on condition long" z900 esa,zarch
 c004 jg*8 RIL_0P "conditional jump long" z900 esa,zarch
-c014 jgo RIL_0P "jump long on overflow / if ones" z900 esa,zarch
-c024 jgp RIL_0P "jump long on plus" z900 esa,zarch
-c044 jgm RIL_0P "jump long on minus / if mixed" z900 esa,zarch
-c074 jgnz RIL_0P "jump long on not zero / if not zeros" z900 esa,zarch
-c084 jgz RIL_0P "jump long on zero / if zeros" z900 esa,zarch
-c0b4 jgnm RIL_0P "jump long on not minus / if not mixed" z900 esa,zarch
-c0d4 jgnp RIL_0P "jump long on not plus" z900 esa,zarch
-c0e4 jgno RIL_0P "jump long on not overflow / if not ones" z900 esa,zarch
 c0f4 jg RIL_0P "unconditional jump long" z900 esa,zarch
 c005 brasl RIL_RP "branch relative and save long" z900 esa,zarch
 a707 brctg RI_RP "branch relative on count 64" z900 zarch
@@ -586,9 +555,9 @@ b369 cxr RRE_FF "compare extended hfp" g5 esa,zarch
 b3b6 cxfr RRE_FR "convert from fixed 32 to extended hfp" g5 esa,zarch
 b3b5 cdfr RRE_FR "convert from fixed 32 to long hfp" g5 esa,zarch
 b3b4 cefr RRE_FR "convert from fixed 32 to short hfp" g5 esa,zarch
-b3ba cfxr RRF_U0RF "convert to fixed extended hfp to 32" z900 zarch
-b3b9 cfdr RRF_U0RF "convert to fixed long hfp to 32" z900 zarch
-b3b8 cfer RRF_U0RF "convert to fixed short hfp to 32" z900 zarch
+b3ba cfxr RRF_U0RF "convert to fixed extended hfp to 32" z900 esa,zarch
+b3b9 cfdr RRF_U0RF "convert to fixed long hfp to 32" z900 esa,zarch
+b3b8 cfer RRF_U0RF "convert to fixed short hfp to 32" z900 esa,zarch
 b362 ltxr RRE_FF "load and test extended hfp" g5 esa,zarch
 b363 lcxr RRE_FF "load complement extended hfp" g5 esa,zarch
 b367 fixr RRE_FF "load fp integer extended hfp" g5 esa,zarch
@@ -607,9 +576,10 @@ b337 meer RRE_FF "multiply short hfp" g5 esa,zarch
 ed0000000037 mee RXE_FRRD "multiply short hfp" g5 esa,zarch
 b336 sqxr RRE_FF "square root extended hfp" g5 esa,zarch
 ed0000000034 sqe RXE_FRRD "square root short hfp" g5 esa,zarch
+ed0000000035 sqd RXE_FRRD "square root long hfp" g5 esa,zarch
 b263 cmpsc RRE_RR "compression call" g5 esa,zarch
 eb00000000c0 tp RSL_R0RD "test decimal" g5 esa,zarch
-b365 lxr RRE_RR "load extended hfp" g5 esa,zarch
+b365 lxr RRE_FF "load extended fp" g5 esa,zarch
 b22e pgin RRE_RR "page in" g5 esa,zarch
 b22f pgout RRE_RR "page out" g5 esa,zarch
 b276 xsch S_00 "cancel subchannel" g5 esa,zarch
@@ -646,8 +616,8 @@ eb0000000052 mviy SIY_URD "move immediate with long offset" z990 zarch
 e30000000051 msy RXY_RRRD "multiply single with long offset" z990 zarch
 eb0000000056 oiy SIY_URD "or immediate with long offset" z990 zarch
 e30000000056 oy RXY_RRRD "or with long offset" z990 zarch
-ed0000000067 stdy RXY_FRRD "load (long) with long offset" z990 zarch
-ed0000000066 stey RXY_FRRD "load (short) with long offset" z990 zarch
+ed0000000067 stdy RXY_FRRD "store (long) with long offset" z990 zarch
+ed0000000066 stey RXY_FRRD "store (short) with long offset" z990 zarch
 e30000000050 sty RXY_RRRD "store with long offset" z990 zarch
 eb000000009b stamy RSY_AARD "store access multiple with long offset" z990 zarch
 e30000000072 stcy RXY_RRRD "store character with long offset" z990 zarch
@@ -727,7 +697,7 @@ eb0000000044 bxhg RSY_RRRD "branch on index high 64" z990 zarch
 eb0000000045 bxleg RSY_RRRD "branch on index low or equal 64" z990 zarch
 eb0000000080 icmh RSY_RURD "insert characters under mask high with long offset" z990 zarch
 eb000000008e mvclu RSY_RRRD "move long unicode" z990 esa,zarch
-eb000000008f clclu RSY_RRRD "compare logical long unicode with long offset" z990 zarch
+eb000000008f clclu RSY_RRRD "compare logical long unicode with long offset" z990 esa,zarch
 eb0000000096 lmh RSY_RRRD "load multiple high" z990 zarch
 # new z990 instructions
 b98a cspg RRE_RR "compare and swap and purge" z990 zarch
@@ -781,6 +751,7 @@ c00c oihf RIL_RU "or immediate high" z9-109 zarch
 c00d oilf RIL_RU "or immediate low" z9-109 zarch
 c205 slfi RIL_RU "subtract logical immediate 32" z9-109 zarch
 c204 slgfi RIL_RU "subtract logical immediate 64<32" z9-109 zarch
+0104 ptff E "perform timing facility function" z9-109 zarch
 # z9-109 store facility list extended
 b2b0 stfle S_RD "store facility list extended" z9-109 zarch
 # z9-109 store clock fast
@@ -863,10 +834,10 @@ b3d5 ledtr RRF_UUFF "load rounded long dfp" z9-ec zarch
 b3dd ldxtr RRF_UUFF "load rounded extended dfp" z9-ec zarch
 b3d0 mdtr RRR_F0FF "multiply long dfp" z9-ec zarch
 b3d8 mxtr RRR_F0FF "multiply extended dfp" z9-ec zarch
-b3f5 qadtr RRF_FFFU "Quantize long dfp" z9-ec zarch
-b3fd qaxtr RRF_FFFU "Quantize extended dfp" z9-ec zarch
-b3f7 rrdtr RRF_FFFU "Reround long dfp" z9-ec zarch
-b3ff rrxtr RRF_FFFU "Reround extended dfp" z9-ec zarch
+b3f5 qadtr RRF_FUFF "Quantize long dfp" z9-ec zarch
+b3fd qaxtr RRF_FUFF "Quantize extended dfp" z9-ec zarch
+b3f7 rrdtr RRF_FFRU "Reround long dfp" z9-ec zarch
+b3ff rrxtr RRF_FFRU "Reround extended dfp" z9-ec zarch
 b2b9 srnmt S_RD "set rounding mode dfp" z9-ec zarch
 b385 sfasr RRE_R0 "set fpc and signal" z9-ec zarch
 ed0000000040 sldt RXF_FRRDF "shift coefficient left long dfp" z9-ec zarch
@@ -884,6 +855,7 @@ ed0000000059 tdgxt RXE_FRRD "test data group extended dfp" z9-ec zarch
 010a pfpo E "perform floating point operation" z9-ec zarch
 c801 ectg SSF_RRDRD "extract cpu time" z9-ec zarch
 c802 csst SSF_RRDRD "compare and swap and store" z9-ec zarch
+# The new instructions of the System z10 Enterprise Class
 eb000000006a asi SIY_IRD "add immediate (32<8)" z10 zarch
 eb000000007a agsi SIY_IRD "add immediate (64<8)" z10 zarch
 eb000000006e alsi SIY_IRD "add logical with signed immediate (32<8)" z10 zarch
@@ -891,29 +863,29 @@ eb000000007e algsi SIY_IRD "add logical with signed immediate (64<8)" z10 zarch
 c60d crl RIL_RP "compare relative long (32)" z10 zarch
 c608 cgrl RIL_RP "compare relative long (64)" z10 zarch
 c60c cgfrl RIL_RP "compare relative long (64<32)" z10 zarch
-ec00000000f6 crb*32 RRS_RRRD0 "compare and branch (32)" z10 zarch
+ec00000000f6 crb$32 RRS_RRRD0 "compare and branch (32)" z10 zarch
 ec00000000f6 crb RRS_RRRDU "compare and branch (32)" z10 zarch
-ec00000000e4 cgrb*32 RRS_RRRD0 "compare and branch (64)" z10 zarch
+ec00000000e4 cgrb$32 RRS_RRRD0 "compare and branch (64)" z10 zarch
 ec00000000e4 cgrb RRS_RRRDU "compare and branch (64)" z10 zarch
-ec0000000076 crj*32 RIE_RRP "compare and branch relative (32)" z10 zarch
+ec0000000076 crj$32 RIE_RRP "compare and branch relative (32)" z10 zarch
 ec0000000076 crj RIE_RRPU "compare and branch relative (32)" z10 zarch
-ec0000000064 cgrj*32 RIE_RRP0 "compare and branch relative (64)" z10 zarch
+ec0000000064 cgrj$32 RIE_RRP0 "compare and branch relative (64)" z10 zarch
 ec0000000064 cgrj RIE_RRPU "compare and branch relative (64)" z10 zarch
-ec00000000fe cib*12 RIS_R0RDI "compare immediate and branch (32<8)" z10 zarch
+ec00000000fe cib$12 RIS_R0RDI "compare immediate and branch (32<8)" z10 zarch
 ec00000000fe cib RIS_RURDI "compare immediate and branch (32<8)" z10 zarch
-ec00000000fc cgib*12 RIS_R0RDI "compare immediate and branch (64<8)" z10 zarch
+ec00000000fc cgib$12 RIS_R0RDI "compare immediate and branch (64<8)" z10 zarch
 ec00000000fc cgib RIS_RURDI "compare immediate and branch (64<8)" z10 zarch
-ec000000007e cij*12 RIE_R0PI "compare immediate and branch relative (32<8)" z10 zarch
+ec000000007e cij$12 RIE_R0PI "compare immediate and branch relative (32<8)" z10 zarch
 ec000000007e cij RIE_RUPI "compare immediate and branch relative (32<8)" z10 zarch
-ec000000007c cgij*12 RIE_R0PI "compare immediate and branch relative (64<8)" z10 zarch
+ec000000007c cgij$12 RIE_R0PI "compare immediate and branch relative (64<8)" z10 zarch
 ec000000007c cgij RIE_RUPI "compare immediate and branch relative (64<8)" z10 zarch
-b97200000000 crt*16 RRF_00RR "compare and trap" z10 zarch
+b97200000000 crt$16 RRF_00RR "compare and trap" z10 zarch
 b972 crt RRF_U0RR "compare and trap" z10 zarch
-b96000000000 cgrt*16 RRF_00RR "compare and trap 64" z10 zarch
+b96000000000 cgrt$16 RRF_00RR "compare and trap 64" z10 zarch
 b960 cgrt RRF_U0RR "compare and trap 64" z10 zarch
-ec0000000072 cit*32 RIE_R0I0 "compare immediate and trap (32<16)" z10 zarch
+ec0000000072 cit$32 RIE_R0I0 "compare immediate and trap (32<16)" z10 zarch
 ec0000000072 cit RIE_R0IU "compare immediate and trap (32<16)" z10 zarch
-ec0000000070 cgit*32 RIE_R0I0 "compare immediate and trap (64<16)" z10 zarch
+ec0000000070 cgit$32 RIE_R0I0 "compare immediate and trap (64<16)" z10 zarch
 ec0000000070 cgit RIE_R0IU "compare immediate and trap (64<16)" z10 zarch
 e30000000034 cgh RXY_RRRD "compare halfword (64<16)" z10 zarch
 e554 chhsi SIL_RDI "compare halfword immediate (16<16)" z10 zarch
@@ -929,29 +901,29 @@ c60a clgrl RIL_RP "compare logical relative long (64)" z10 zarch
 c60e clgfrl RIL_RP "compare logical relative long (64<32)" z10 zarch
 c607 clhrl RIL_RP "compare logical relative long (32<16)" z10 zarch
 c606 clghrl RIL_RP "compare logical relative long (64<16)" z10 zarch
-ec00000000f7 clrb*32 RRS_RRRD0 "compare logical and branch (32)" z10 zarch
+ec00000000f7 clrb$32 RRS_RRRD0 "compare logical and branch (32)" z10 zarch
 ec00000000f7 clrb RRS_RRRDU "compare logical and branch (32)" z10 zarch
-ec00000000e5 clgrb*32 RRS_RRRD0 "compare logical and branch (64)" z10 zarch
+ec00000000e5 clgrb$32 RRS_RRRD0 "compare logical and branch (64)" z10 zarch
 ec00000000e5 clgrb RRS_RRRDU "compare logical and branch (64)" z10 zarch
-ec0000000077 clrj*32 RIE_RRP "compare logical and branch relative (32)" z10 zarch
+ec0000000077 clrj$32 RIE_RRP "compare logical and branch relative (32)" z10 zarch
 ec0000000077 clrj RIE_RRPU "compare logical and branch relative (32)" z10 zarch
-ec0000000065 clgrj*32 RIE_RRP "compare logical and branch relative (64)" z10 zarch
+ec0000000065 clgrj$32 RIE_RRP "compare logical and branch relative (64)" z10 zarch
 ec0000000065 clgrj RIE_RRPU "compare logical and branch relative (64)" z10 zarch
-ec00000000ff clib*12 RIS_R0RDU "compare logical immediate and branch (32<8)" z10 zarch
+ec00000000ff clib$12 RIS_R0RDU "compare logical immediate and branch (32<8)" z10 zarch
 ec00000000ff clib RIS_RURDU "compare logical immediate and branch (32<8)" z10 zarch
-ec00000000fd clgib*12 RIS_R0RDU "compare logical immediate and branch (64<8)" z10 zarch
+ec00000000fd clgib$12 RIS_R0RDU "compare logical immediate and branch (64<8)" z10 zarch
 ec00000000fd clgib RIS_RURDU "compare logical immediate and branch (64<8)" z10 zarch
-ec000000007f clij*12 RIE_R0PU "compare logical immediate and branch relative (32<8)" z10 zarch
+ec000000007f clij$12 RIE_R0PU "compare logical immediate and branch relative (32<8)" z10 zarch
 ec000000007f clij RIE_RUPU "compare logical immediate and branch relative (32<8)" z10 zarch
-ec000000007d clgij*12 RIE_R0PU "compare logical immediate and branch relative (64<8)" z10 zarch
+ec000000007d clgij$12 RIE_R0PU "compare logical immediate and branch relative (64<8)" z10 zarch
 ec000000007d clgij RIE_RUPU "compare logical immediate and branch relative (64<8)" z10 zarch
-b97300000000 clrt*16 RRF_00RR "compare logical and trap (32)" z10 zarch
+b97300000000 clrt$16 RRF_00RR "compare logical and trap (32)" z10 zarch
 b973 clrt RRF_U0RR "compare logical and trap (32)" z10 zarch
-b96100000000 clgrt*16 RRF_00RR "compare logical and trap (64)" z10 zarch
+b96100000000 clgrt$16 RRF_00RR "compare logical and trap (64)" z10 zarch
 b961 clgrt RRF_U0RR "compare logical and trap (64)" z10 zarch
-ec0000000073 clfit*32 RIE_R0U0 "compare logical and trap (32<16)" z10 zarch
+ec0000000073 clfit$32 RIE_R0U0 "compare logical and trap (32<16)" z10 zarch
 ec0000000073 clfit RIE_R0UU "compare logical and trap (32<16)" z10 zarch
-ec0000000071 clgit*32 RIE_R0U0 "compare logical and trap (64<16)" z10 zarch
+ec0000000071 clgit$32 RIE_R0U0 "compare logical and trap (64<16)" z10 zarch
 ec0000000071 clgit RIE_R0UU "compare logical and trap (64<16)" z10 zarch
 eb000000004c ecag RSY_RRRD "extract cache attribute" z10 zarch
 c40d lrl RIL_RP "load relative long (32)" z10 zarch
This page took 0.044935 seconds and 4 git commands to generate.