Index: lib/Target/SystemZ/SystemZInstrFormats.td =================================================================== --- lib/Target/SystemZ/SystemZInstrFormats.td +++ lib/Target/SystemZ/SystemZInstrFormats.td @@ -1056,6 +1056,12 @@ let DisableEncoding = "$R1src"; } +class LoadMultipleRS opcode, RegisterOperand cls> + : InstRS { + let mayLoad = 1; +} + class LoadMultipleRSY opcode, RegisterOperand cls> : InstRSY { @@ -1137,6 +1143,12 @@ let AccessBytes = bytes; } +class StoreMultipleRS opcode, RegisterOperand cls> + : InstRS { + let mayStore = 1; +} + class StoreMultipleRSY opcode, RegisterOperand cls> : InstRSY { Index: lib/Target/SystemZ/SystemZInstrInfo.td =================================================================== --- lib/Target/SystemZ/SystemZInstrInfo.td +++ lib/Target/SystemZ/SystemZInstrInfo.td @@ -702,9 +702,13 @@ //===----------------------------------------------------------------------===// // Multi-register loads. +def LM : LoadMultipleRS<"lm", 0x98, GR32>; +def LMY : LoadMultipleRSY<"lmy", 0xEB98, GR32>; def LMG : LoadMultipleRSY<"lmg", 0xEB04, GR64>; // Multi-register stores. +def STM : StoreMultipleRS<"stm", 0x90, GR32>; +def STMY : StoreMultipleRSY<"stmy", 0xEB90, GR32>; def STMG : StoreMultipleRSY<"stmg", 0xEB24, GR64>; //===----------------------------------------------------------------------===// @@ -814,6 +818,13 @@ defm : InsertMem<"inserti8", IC, GR64, azextloadi8, bdxaddr12pair>; defm : InsertMem<"inserti8", ICY, GR64, azextloadi8, bdxaddr20pair>; +let mayLoad = 1, Defs = [CC] in { + def ICM : InstRS<0xBF, (outs GR32:$R1), (ins imm32zx4:$R3, bdaddr12only:$BD2), + "icm\t$R1, $R3, $BD2", []>; + def ICMY : InstRSY<0xEB81, (outs GR32:$R1), (ins imm32zx4:$R3, bdaddr20only:$BD2), + "icmy\t$R1, $R3, $BD2", []>; +} + // Insertions of a 16-bit immediate, leaving other bits unaffected. // We don't have or_as_insert equivalents of these operations because // OI is available instead. @@ -1187,6 +1198,7 @@ // Shift left. let hasSideEffects = 0 in { defm SLL : BinaryRSAndK<"sll", 0x89, 0xEBDF, shl, GR32>; + defm SLA : BinaryRSAndK<"sla", 0x8B, 0xEBDD, shl, GR32>; def SLLG : BinaryRSY<"sllg", 0xEB0D, shl, GR64>; } @@ -1363,8 +1375,14 @@ def TMHH64 : CompareAliasRI; defm TM : CompareSIPair<"tm", 0x91, 0xEB51, z_tm_mem, anyextloadi8, imm32zx8>; + + let isAsmParserOnly=1 in { + def TML : CompareRI<"tml", 0xA71, z_tm_reg, GR32, imm32ll16>; + def TMH : CompareRI<"tmh", 0xA70, z_tm_reg, GR32, imm32lh16>; + } } + //===----------------------------------------------------------------------===// // Prefetch //===----------------------------------------------------------------------===// @@ -1648,6 +1666,10 @@ "stfle\t$BD2", []>; +let hasSideEffects = 1 in { + def EX : InstRX<0x44, (outs), (ins GR64:$R1, bdxaddr12only:$XBD2), + "ex\t$R1, $XBD2", []>; +} //===----------------------------------------------------------------------===// Index: test/MC/SystemZ/insn-bad-z196.s =================================================================== --- test/MC/SystemZ/insn-bad-z196.s +++ test/MC/SystemZ/insn-bad-z196.s @@ -607,6 +607,20 @@ risblg %r0,%r0,256,0,0 #CHECK: error: invalid operand +#CHECK: slak %r0,%r0,-524289 +#CHECK: error: invalid operand +#CHECK: slak %r0,%r0,524288 +#CHECK: error: %r0 used in an address +#CHECK: slak %r0,%r0,0(%r0) +#CHECK: error: invalid use of indexed addressing +#CHECK: slak %r0,%r0,0(%r1,%r2) + + slak %r0,%r0,-524289 + slak %r0,%r0,524288 + slak %r0,%r0,0(%r0) + slak %r0,%r0,0(%r1,%r2) + +#CHECK: error: invalid operand #CHECK: sllk %r0,%r0,-524289 #CHECK: error: invalid operand #CHECK: sllk %r0,%r0,524288 Index: test/MC/SystemZ/insn-bad.s =================================================================== --- test/MC/SystemZ/insn-bad.s +++ test/MC/SystemZ/insn-bad.s @@ -1412,6 +1412,14 @@ dxbr %f2, %f0 #CHECK: error: invalid operand +#CHECK: ex %r0, -1 +#CHECK: error: invalid operand +#CHECK: ex %r0, 4096 + + ex %r0, -1 + ex %r0, 4096 + +#CHECK: error: invalid operand #CHECK: fidbr %f0, -1, %f0 #CHECK: error: invalid operand #CHECK: fidbr %f0, 16, %f0 @@ -1470,6 +1478,34 @@ ic %r0, 4096 #CHECK: error: invalid operand +#CHECK: icm %r0, 0, -1 +#CHECK: error: invalid operand +#CHECK: icm %r0, 0, 4096 +#CHECK: error: invalid operand +#CHECK: icm %r0, -1, 0 +#CHECK: error: invalid operand +#CHECK: icm %r0, 16, 0 + + icm %r0, 0, -1 + icm %r0, 0, 4096 + icm %r0, -1, 0 + icm %r0, 16, 0 + +#CHECK: error: invalid operand +#CHECK: icmy %r0, 0, -524289 +#CHECK: error: invalid operand +#CHECK: icmy %r0, 0, 524288 +#CHECK: error: invalid operand +#CHECK: icmy %r0, -1, 0 +#CHECK: error: invalid operand +#CHECK: icmy %r0, 16, 0 + + icmy %r0, 0, -524289 + icmy %r0, 0, 524288 + icmy %r0, -1, 0 + icmy %r0, 16, 0 + +#CHECK: error: invalid operand #CHECK: icy %r0, -524289 #CHECK: error: invalid operand #CHECK: icy %r0, 524288 @@ -1980,6 +2016,14 @@ llill %r0, 0x10000 #CHECK: error: invalid operand +#CHECK: lm %r0, %r0, 4096 +#CHECK: error: invalid use of indexed addressing +#CHECK: lm %r0, %r0, 0(%r1,%r2) + + lm %r0, %r0, 4096 + lm %r0, %r0, 0(%r1,%r2) + +#CHECK: error: invalid operand #CHECK: lmg %r0, %r0, -524289 #CHECK: error: invalid operand #CHECK: lmg %r0, %r0, 524288 @@ -1990,6 +2034,17 @@ lmg %r0, %r0, 524288 lmg %r0, %r0, 0(%r1,%r2) +#CHECK: error: invalid operand +#CHECK: lmy %r0, %r0, -524289 +#CHECK: error: invalid operand +#CHECK: lmy %r0, %r0, 524288 +#CHECK: error: invalid use of indexed addressing +#CHECK: lmy %r0, %r0, 0(%r1,%r2) + + lmy %r0, %r0, -524289 + lmy %r0, %r0, 524288 + lmy %r0, %r0, 0(%r1,%r2) + #CHECK: error: invalid register pair #CHECK: lnxbr %f0, %f2 #CHECK: error: invalid register pair @@ -3000,6 +3055,25 @@ slgrk %r2,%r3,%r4 #CHECK: error: invalid operand +#CHECK: sla %r0,-1 +#CHECK: error: invalid operand +#CHECK: sla %r0,4096 +#CHECK: error: %r0 used in an address +#CHECK: sla %r0,0(%r0) +#CHECK: error: invalid use of indexed addressing +#CHECK: sla %r0,0(%r1,%r2) + + sla %r0,-1 + sla %r0,4096 + sla %r0,0(%r0) + sla %r0,0(%r1,%r2) + +#CHECK: error: {{(instruction requires: distinct-ops)?}} +#CHECK: slak %r2,%r3,4(%r5) + + slak %r2,%r3,4(%r5) + +#CHECK: error: invalid operand #CHECK: sll %r0,-1 #CHECK: error: invalid operand #CHECK: sll %r0,4096 @@ -3264,6 +3338,14 @@ stfh %r0, 0 #CHECK: error: invalid operand +#CHECK: stm %r0, %r0, 4096 +#CHECK: error: invalid use of indexed addressing +#CHECK: stm %r0, %r0, 0(%r1,%r2) + + stm %r0, %r0, 4096 + stm %r0, %r0, 0(%r1,%r2) + +#CHECK: error: invalid operand #CHECK: stmg %r0, %r0, -524289 #CHECK: error: invalid operand #CHECK: stmg %r0, %r0, 524288 @@ -3274,6 +3356,17 @@ stmg %r0, %r0, 524288 stmg %r0, %r0, 0(%r1,%r2) +#CHECK: error: invalid operand +#CHECK: stmy %r0, %r0, -524289 +#CHECK: error: invalid operand +#CHECK: stmy %r0, %r0, 524288 +#CHECK: error: invalid use of indexed addressing +#CHECK: stmy %r0, %r0, 0(%r1,%r2) + + stmy %r0, %r0, -524289 + stmy %r0, %r0, 524288 + stmy %r0, %r0, 0(%r1,%r2) + #CHECK: error: offset out of range #CHECK: strl %r0, -0x1000000002 #CHECK: error: offset out of range @@ -3362,6 +3455,14 @@ tmhl %r0, 0x10000 #CHECK: error: invalid operand +#CHECK: tmh %r0, -1 +#CHECK: error: invalid operand +#CHECK: tmh %r0, 0x10000 + + tmh %r0, -1 + tmh %r0, 0x10000 + +#CHECK: error: invalid operand #CHECK: tmlh %r0, -1 #CHECK: error: invalid operand #CHECK: tmlh %r0, 0x10000 @@ -3370,6 +3471,14 @@ tmlh %r0, 0x10000 #CHECK: error: invalid operand +#CHECK: tml %r0, -1 +#CHECK: error: invalid operand +#CHECK: tml %r0, 0x10000 + + tml %r0, -1 + tml %r0, 0x10000 + +#CHECK: error: invalid operand #CHECK: tmll %r0, -1 #CHECK: error: invalid operand #CHECK: tmll %r0, 0x10000 Index: test/MC/SystemZ/insn-good-z196.s =================================================================== --- test/MC/SystemZ/insn-good-z196.s +++ test/MC/SystemZ/insn-good-z196.s @@ -1123,6 +1123,32 @@ sgrk %r15,%r0,%r0 sgrk %r7,%r8,%r9 +#CHECK: slak %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0xdd] +#CHECK: slak %r15, %r1, 0 # encoding: [0xeb,0xf1,0x00,0x00,0x00,0xdd] +#CHECK: slak %r1, %r15, 0 # encoding: [0xeb,0x1f,0x00,0x00,0x00,0xdd] +#CHECK: slak %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0xdd] +#CHECK: slak %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0xdd] +#CHECK: slak %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0xdd] +#CHECK: slak %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0xdd] +#CHECK: slak %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0xdd] +#CHECK: slak %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0xdd] +#CHECK: slak %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0xdd] +#CHECK: slak %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0xdd] +#CHECK: slak %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0xdd] + + slak %r0,%r0,0 + slak %r15,%r1,0 + slak %r1,%r15,0 + slak %r15,%r15,0 + slak %r0,%r0,-524288 + slak %r0,%r0,-1 + slak %r0,%r0,1 + slak %r0,%r0,524287 + slak %r0,%r0,0(%r1) + slak %r0,%r0,0(%r15) + slak %r0,%r0,524287(%r1) + slak %r0,%r0,524287(%r15) + #CHECK: slgrk %r0, %r0, %r0 # encoding: [0xb9,0xeb,0x00,0x00] #CHECK: slgrk %r0, %r0, %r15 # encoding: [0xb9,0xeb,0xf0,0x00] #CHECK: slgrk %r0, %r15, %r0 # encoding: [0xb9,0xeb,0x00,0x0f] Index: test/MC/SystemZ/insn-good.s =================================================================== --- test/MC/SystemZ/insn-good.s +++ test/MC/SystemZ/insn-good.s @@ -5326,6 +5326,22 @@ ear %r7, %a8 ear %r15, %a15 +#CHECK: ex %r0, 0 # encoding: [0x44,0x00,0x00,0x00] +#CHECK: ex %r0, 4095 # encoding: [0x44,0x00,0x0f,0xff] +#CHECK: ex %r0, 0(%r1) # encoding: [0x44,0x00,0x10,0x00] +#CHECK: ex %r0, 0(%r15) # encoding: [0x44,0x00,0xf0,0x00] +#CHECK: ex %r0, 4095(%r1,%r15) # encoding: [0x44,0x01,0xff,0xff] +#CHECK: ex %r0, 4095(%r15,%r1) # encoding: [0x44,0x0f,0x1f,0xff] +#CHECK: ex %r15, 0 # encoding: [0x44,0xf0,0x00,0x00] + + ex %r0, 0 + ex %r0, 4095 + ex %r0, 0(%r1) + ex %r0, 0(%r15) + ex %r0, 4095(%r1,%r15) + ex %r0, 4095(%r15,%r1) + ex %r15, 0 + #CHECK: fidbr %f0, 0, %f0 # encoding: [0xb3,0x5f,0x00,0x00] #CHECK: fidbr %f0, 0, %f15 # encoding: [0xb3,0x5f,0x00,0x0f] #CHECK: fidbr %f0, 15, %f0 # encoding: [0xb3,0x5f,0xf0,0x00] @@ -5388,6 +5404,44 @@ ic %r0, 4095(%r15,%r1) ic %r15, 0 +#CHECK: icm %r0, 0, 0 # encoding: [0xbf,0x00,0x00,0x00] +#CHECK: icm %r0, 15, 4095 # encoding: [0xbf,0x0f,0x0f,0xff] +#CHECK: icm %r0, 0, 0(%r1) # encoding: [0xbf,0x00,0x10,0x00] +#CHECK: icm %r0, 0, 0(%r15) # encoding: [0xbf,0x00,0xf0,0x00] +#CHECK: icm %r15, 15, 4095(%r1) # encoding: [0xbf,0xff,0x1f,0xff] +#CHECK: icm %r0, 0, 4095(%r15) # encoding: [0xbf,0x00,0xff,0xff] +#CHECK: icm %r15, 0, 0 # encoding: [0xbf,0xf0,0x00,0x00] + + icm %r0, 0, 0 + icm %r0, 15, 4095 + icm %r0, 0, 0(%r1) + icm %r0, 0, 0(%r15) + icm %r15, 15, 4095(%r1) + icm %r0, 0, 4095(%r15) + icm %r15, 0, 0 + +#CHECK: icmy %r0, 0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x81] +#CHECK: icmy %r0, 0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x81] +#CHECK: icmy %r0, 15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x81] +#CHECK: icmy %r0, 15, 1 # encoding: [0xeb,0x0f,0x00,0x01,0x00,0x81] +#CHECK: icmy %r0, 8, 524287 # encoding: [0xeb,0x08,0x0f,0xff,0x7f,0x81] +#CHECK: icmy %r0, 8, 0(%r1) # encoding: [0xeb,0x08,0x10,0x00,0x00,0x81] +#CHECK: icmy %r0, 4, 0(%r15) # encoding: [0xeb,0x04,0xf0,0x00,0x00,0x81] +#CHECK: icmy %r0, 4, 524287(%r15) # encoding: [0xeb,0x04,0xff,0xff,0x7f,0x81] +#CHECK: icmy %r0, 0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x81] +#CHECK: icmy %r15, 0, 0 # encoding: [0xeb,0xf0,0x00,0x00,0x00,0x81] + + icmy %r0, 0, -524288 + icmy %r0, 0, -1 + icmy %r0, 15, 0 + icmy %r0, 15, 1 + icmy %r0, 8, 524287 + icmy %r0, 8, 0(%r1) + icmy %r0, 4, 0(%r15) + icmy %r0, 4, 524287(%r15) + icmy %r0, 0, 524287(%r1) + icmy %r15, 0, 0 + #CHECK: icy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x73] #CHECK: icy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x73] #CHECK: icy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x73] @@ -6516,6 +6570,28 @@ llill %r0, 0xffff llill %r15, 0 +#CHECK: lm %r0, %r0, 0 # encoding: [0x98,0x00,0x00,0x00] +#CHECK: lm %r0, %r15, 0 # encoding: [0x98,0x0f,0x00,0x00] +#CHECK: lm %r14, %r15, 0 # encoding: [0x98,0xef,0x00,0x00] +#CHECK: lm %r15, %r15, 0 # encoding: [0x98,0xff,0x00,0x00] +#CHECK: lm %r0, %r0, 4095 # encoding: [0x98,0x00,0x0f,0xff] +#CHECK: lm %r0, %r0, 1 # encoding: [0x98,0x00,0x00,0x01] +#CHECK: lm %r0, %r0, 0(%r1) # encoding: [0x98,0x00,0x10,0x00] +#CHECK: lm %r0, %r0, 0(%r15) # encoding: [0x98,0x00,0xf0,0x00] +#CHECK: lm %r0, %r0, 4095(%r1) # encoding: [0x98,0x00,0x1f,0xff] +#CHECK: lm %r0, %r0, 4095(%r15) # encoding: [0x98,0x00,0xff,0xff] + + lm %r0,%r0,0 + lm %r0,%r15,0 + lm %r14,%r15,0 + lm %r15,%r15,0 + lm %r0,%r0,4095 + lm %r0,%r0,1 + lm %r0,%r0,0(%r1) + lm %r0,%r0,0(%r15) + lm %r0,%r0,4095(%r1) + lm %r0,%r0,4095(%r15) + #CHECK: lmg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x04] #CHECK: lmg %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x04] #CHECK: lmg %r14, %r15, 0 # encoding: [0xeb,0xef,0x00,0x00,0x00,0x04] @@ -6544,6 +6620,34 @@ lmg %r0,%r0,524287(%r1) lmg %r0,%r0,524287(%r15) +#CHECK: lmy %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x98] +#CHECK: lmy %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x98] +#CHECK: lmy %r14, %r15, 0 # encoding: [0xeb,0xef,0x00,0x00,0x00,0x98] +#CHECK: lmy %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x98] +#CHECK: lmy %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x98] +#CHECK: lmy %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x98] +#CHECK: lmy %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x98] +#CHECK: lmy %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x98] +#CHECK: lmy %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x98] +#CHECK: lmy %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x98] +#CHECK: lmy %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x98] +#CHECK: lmy %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x98] +#CHECK: lmy %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x98] + + lmy %r0,%r0,0 + lmy %r0,%r15,0 + lmy %r14,%r15,0 + lmy %r15,%r15,0 + lmy %r0,%r0,-524288 + lmy %r0,%r0,-1 + lmy %r0,%r0,0 + lmy %r0,%r0,1 + lmy %r0,%r0,524287 + lmy %r0,%r0,0(%r1) + lmy %r0,%r0,0(%r15) + lmy %r0,%r0,524287(%r1) + lmy %r0,%r0,524287(%r15) + #CHECK: lndbr %f0, %f9 # encoding: [0xb3,0x11,0x00,0x09] #CHECK: lndbr %f0, %f15 # encoding: [0xb3,0x11,0x00,0x0f] #CHECK: lndbr %f15, %f0 # encoding: [0xb3,0x11,0x00,0xf0] @@ -8528,6 +8632,24 @@ slgr %r15,%r0 slgr %r7,%r8 +#CHECK: sla %r0, 0 # encoding: [0x8b,0x00,0x00,0x00] +#CHECK: sla %r7, 0 # encoding: [0x8b,0x70,0x00,0x00] +#CHECK: sla %r15, 0 # encoding: [0x8b,0xf0,0x00,0x00] +#CHECK: sla %r0, 4095 # encoding: [0x8b,0x00,0x0f,0xff] +#CHECK: sla %r0, 0(%r1) # encoding: [0x8b,0x00,0x10,0x00] +#CHECK: sla %r0, 0(%r15) # encoding: [0x8b,0x00,0xf0,0x00] +#CHECK: sla %r0, 4095(%r1) # encoding: [0x8b,0x00,0x1f,0xff] +#CHECK: sla %r0, 4095(%r15) # encoding: [0x8b,0x00,0xff,0xff] + + sla %r0,0 + sla %r7,0 + sla %r15,0 + sla %r0,4095 + sla %r0,0(%r1) + sla %r0,0(%r15) + sla %r0,4095(%r1) + sla %r0,4095(%r15) + #CHECK: sll %r0, 0 # encoding: [0x89,0x00,0x00,0x00] #CHECK: sll %r7, 0 # encoding: [0x89,0x70,0x00,0x00] #CHECK: sll %r15, 0 # encoding: [0x89,0xf0,0x00,0x00] @@ -9094,6 +9216,28 @@ sthy %r0, 524287(%r15,%r1) sthy %r15, 0 +#CHECK: stm %r0, %r0, 0 # encoding: [0x90,0x00,0x00,0x00] +#CHECK: stm %r0, %r15, 0 # encoding: [0x90,0x0f,0x00,0x00] +#CHECK: stm %r14, %r15, 0 # encoding: [0x90,0xef,0x00,0x00] +#CHECK: stm %r15, %r15, 0 # encoding: [0x90,0xff,0x00,0x00] +#CHECK: stm %r0, %r0, 4095 # encoding: [0x90,0x00,0x0f,0xff] +#CHECK: stm %r0, %r0, 1 # encoding: [0x90,0x00,0x00,0x01] +#CHECK: stm %r0, %r0, 0(%r1) # encoding: [0x90,0x00,0x10,0x00] +#CHECK: stm %r0, %r0, 0(%r15) # encoding: [0x90,0x00,0xf0,0x00] +#CHECK: stm %r0, %r0, 4095(%r1) # encoding: [0x90,0x00,0x1f,0xff] +#CHECK: stm %r0, %r0, 4095(%r15) # encoding: [0x90,0x00,0xff,0xff] + + stm %r0,%r0,0 + stm %r0,%r15,0 + stm %r14,%r15,0 + stm %r15,%r15,0 + stm %r0,%r0,4095 + stm %r0,%r0,1 + stm %r0,%r0,0(%r1) + stm %r0,%r0,0(%r15) + stm %r0,%r0,4095(%r1) + stm %r0,%r0,4095(%r15) + #CHECK: stmg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x24] #CHECK: stmg %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x24] #CHECK: stmg %r14, %r15, 0 # encoding: [0xeb,0xef,0x00,0x00,0x00,0x24] @@ -9122,6 +9266,34 @@ stmg %r0,%r0,524287(%r1) stmg %r0,%r0,524287(%r15) +#CHECK: stmy %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x90] +#CHECK: stmy %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x90] +#CHECK: stmy %r14, %r15, 0 # encoding: [0xeb,0xef,0x00,0x00,0x00,0x90] +#CHECK: stmy %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x90] +#CHECK: stmy %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x90] +#CHECK: stmy %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x90] +#CHECK: stmy %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x90] +#CHECK: stmy %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x90] +#CHECK: stmy %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x90] +#CHECK: stmy %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x90] +#CHECK: stmy %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x90] +#CHECK: stmy %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x90] +#CHECK: stmy %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x90] + + stmy %r0,%r0,0 + stmy %r0,%r15,0 + stmy %r14,%r15,0 + stmy %r15,%r15,0 + stmy %r0,%r0,-524288 + stmy %r0,%r0,-1 + stmy %r0,%r0,0 + stmy %r0,%r0,1 + stmy %r0,%r0,524287 + stmy %r0,%r0,0(%r1) + stmy %r0,%r0,0(%r15) + stmy %r0,%r0,524287(%r1) + stmy %r0,%r0,524287(%r15) + #CHECK: strl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0f,A,A,A,A] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL strl %r0, -0x100000000 @@ -9325,6 +9497,16 @@ tmhl %r0, 0xffff tmhl %r15, 0 +#CHECK: tmh %r0, 0 # encoding: [0xa7,0x00,0x00,0x00] +#CHECK: tmh %r0, 32768 # encoding: [0xa7,0x00,0x80,0x00] +#CHECK: tmh %r0, 65535 # encoding: [0xa7,0x00,0xff,0xff] +#CHECK: tmh %r15, 0 # encoding: [0xa7,0xf0,0x00,0x00] + + tmh %r0, 0 + tmh %r0, 0x8000 + tmh %r0, 0xffff + tmh %r15, 0 + #CHECK: tmlh %r0, 0 # encoding: [0xa7,0x00,0x00,0x00] #CHECK: tmlh %r0, 32768 # encoding: [0xa7,0x00,0x80,0x00] #CHECK: tmlh %r0, 65535 # encoding: [0xa7,0x00,0xff,0xff] @@ -9335,6 +9517,16 @@ tmlh %r0, 0xffff tmlh %r15, 0 +#CHECK: tml %r0, 0 # encoding: [0xa7,0x01,0x00,0x00] +#CHECK: tml %r0, 32768 # encoding: [0xa7,0x01,0x80,0x00] +#CHECK: tml %r0, 65535 # encoding: [0xa7,0x01,0xff,0xff] +#CHECK: tml %r15, 0 # encoding: [0xa7,0xf1,0x00,0x00] + + tml %r0, 0 + tml %r0, 0x8000 + tml %r0, 0xffff + tml %r15, 0 + #CHECK: tmll %r0, 0 # encoding: [0xa7,0x01,0x00,0x00] #CHECK: tmll %r0, 32768 # encoding: [0xa7,0x01,0x80,0x00] #CHECK: tmll %r0, 65535 # encoding: [0xa7,0x01,0xff,0xff]