Skip to content

Commit

Permalink
[SystemZ] Add SVC instruction
Browse files Browse the repository at this point in the history
This is going to be useful for inline assembly only.

Author: koriakin
Differential Revision: http://reviews.llvm.org/D18952



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265943 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
uweigand committed Apr 11, 2016
1 parent 7ca333b commit 4901036
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 0 deletions.
11 changes: 11 additions & 0 deletions lib/Target/SystemZ/SystemZInstrFormats.td
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,17 @@ def getThreeOperandOpcode : InstrMapping {
//
//===----------------------------------------------------------------------===//

class InstI<bits<8> op, dag outs, dag ins, string asmstr, list<dag> 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<bits<12> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<4, outs, ins, asmstr, pattern> {
field bits<32> Inst;
Expand Down
4 changes: 4 additions & 0 deletions lib/Target/SystemZ/SystemZInstrInfo.td
Original file line number Diff line number Diff line change
Expand Up @@ -1570,6 +1570,10 @@ let mayLoad = 1, Defs = [CC] in
defm SRST : StringRRE<"srst", 0xb25e, z_search_string>;

// Other instructions for inline assembly
let hasSideEffects = 1, Defs = [CC], isCall = 1 in
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",
Expand Down
12 changes: 12 additions & 0 deletions test/MC/Disassembler/SystemZ/insns.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
10 changes: 10 additions & 0 deletions test/MC/SystemZ/insn-good.s
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down

0 comments on commit 4901036

Please sign in to comment.