Index: lib/Target/SystemZ/SystemZInstrFormats.td =================================================================== --- lib/Target/SystemZ/SystemZInstrFormats.td +++ lib/Target/SystemZ/SystemZInstrFormats.td @@ -158,6 +158,17 @@ // //===----------------------------------------------------------------------===// +class InstI op, dag outs, dag ins, string asmstr, list pattern> + : InstSystemZ<2, outs, ins, asmstr, pattern> { + field bits<16> Inst; + field bits<16> SoftFail = 0; + + bits<8> I1; + + let Inst{15-8} = op; + let Inst{7-0} = I1; +} + class InstRI op, dag outs, dag ins, string asmstr, list pattern> : InstSystemZ<4, outs, ins, asmstr, pattern> { field bits<32> Inst; Index: lib/Target/SystemZ/SystemZInstrInfo.td =================================================================== --- lib/Target/SystemZ/SystemZInstrInfo.td +++ lib/Target/SystemZ/SystemZInstrInfo.td @@ -1554,6 +1554,9 @@ defm SRST : StringRRE<"srst", 0xb25e, z_search_string>; // Other instructions for inline assembly +def SVC : InstI<0x0A, (outs), (ins imm32zx8:$I1), + "svc\t$I1", + []>; let hasSideEffects = 1, Defs = [CC], mayStore = 1 in def STCK : InstS<0xB205, (outs), (ins bdaddr12only:$BD2), "stck\t$BD2", Index: test/MC/Disassembler/SystemZ/insns.txt =================================================================== --- test/MC/Disassembler/SystemZ/insns.txt +++ test/MC/Disassembler/SystemZ/insns.txt @@ -8698,6 +8698,18 @@ # CHECK: sty %r15, 0 0xe3 0xf0 0x00 0x00 0x00 0x50 +# CHECK: svc 0 +0x0a 0x00 + +# CHECK: svc 3 +0x0a 0x03 + +# CHECK: svc 128 +0x0a 0x80 + +# CHECK: svc 255 +0x0a 0xff + # CHECK: sxbr %f0, %f0 0xb3 0x4b 0x00 0x00 Index: test/MC/SystemZ/insn-good.s =================================================================== --- test/MC/SystemZ/insn-good.s +++ test/MC/SystemZ/insn-good.s @@ -8973,6 +8973,16 @@ strvg %r0,524287(%r15,%r1) strvg %r15,0 +#CHECK: svc 0 # encoding: [0x0a,0x00] +#CHECK: svc 3 # encoding: [0x0a,0x03] +#CHECK: svc 128 # encoding: [0x0a,0x80] +#CHECK: svc 255 # encoding: [0x0a,0xff] + + svc 0 + svc 3 + svc 128 + svc 0xff + #CHECK: sty %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x50] #CHECK: sty %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x50] #CHECK: sty %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x50]