From: Anirudh Prasad Date: Thu, 21 Oct 2021 13:45:33 +0000 (-0400) Subject: [SystemZ][z/OS] Additional test coverage for validating dialect instructions for... X-Git-Tag: upstream/15.0.7~28039 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fa111d30855ee4d74a4b87672ea50d03a74ad85f;p=platform%2Fupstream%2Fllvm.git [SystemZ][z/OS] Additional test coverage for validating dialect instructions for SystemZ - There are certain instructions most notably those with extended mnemonics that restricted to only the gnu/att variant - There are also certain instruction aliases/mnemonic aliases that are restricted only to the HLASM variant (see https://reviews.llvm.org/D97581, https://reviews.llvm.org/D94250 and https://reviews.llvm.org/D92185 for reference) - This patch adds a few tests to check for the behaviour introduced in the above patches. The testing coverage could not be added in at the same time, due to parallel work being done introducing the HLASM syntax Reviewed By: uweigand, abhina.sreeskantharajan Differential Revision: https://reviews.llvm.org/D112172 --- diff --git a/llvm/test/MC/SystemZ/insn-bad-zos-z13.s b/llvm/test/MC/SystemZ/insn-bad-zos-z13.s new file mode 100644 index 0000000..46960b8 --- /dev/null +++ b/llvm/test/MC/SystemZ/insn-bad-zos-z13.s @@ -0,0 +1,60 @@ +*For z13 only. +*RUN: not llvm-mc -triple s390x-ibm-zos -mcpu=z13 < %s 2> %t +*RUN: FileCheck < %t %s +*RUN: not llvm-mc -triple s390x-ibm-zos -mcpu=arch11 < %s 2> %t +*RUN: FileCheck < %t %s + + +*CHECK-COUNT-6: error: invalid instruction + lochihe 1,2 + locghihe 1,2 + lochhihe 1,2 + locfhrhe 1,3 + locfhhe 1,2(3) + stocfhhe 1,2(3) + + +*CHECK-COUNT-6: error: invalid instruction + lochile 1,2 + locghile 1,2 + lochhile 1,2 + locfhrle 1,3 + locfhle 1,2(3) + stocfhle 1,2(3) + + +*CHECK-COUNT-6: error: invalid instruction + lochilh 1,2 + locghilh 1,2 + lochhilh 1,2 + locfhrlh 1,3 + locfhlh 1,2(3) + stocfhlh 1,2(3) + + +*CHECK-COUNT-6: error: invalid instruction + lochinhe 1,2 + locghinhe 1,2 + lochhinhe 1,2 + locfhrnhe 1,3 + locfhnhe 1,2(3) + stocfhnhe 1,2(3) + + +*CHECK-COUNT-6: error: invalid instruction + lochinle 1,2 + locghinle 1,2 + lochhinle 1,2 + locfhrnle 1,3 + locfhnle 1,2(3) + stocfhnle 1,2(3) + + +*CHECK-COUNT-6: error: invalid instruction + lochinlh 1,2 + locghinlh 1,2 + lochhinlh 1,2 + locfhrnlh 1,3 + locfhnlh 1,2(3) + stocfhnlh 1,2(3) + diff --git a/llvm/test/MC/SystemZ/insn-bad-zos-z14.s b/llvm/test/MC/SystemZ/insn-bad-zos-z14.s new file mode 100644 index 0000000..a3a4cda --- /dev/null +++ b/llvm/test/MC/SystemZ/insn-bad-zos-z14.s @@ -0,0 +1,23 @@ +* For z14 only. +* RUN: not llvm-mc -triple s390x-ibm-zos -mcpu=z14 < %s 2> %t +* RUN: FileCheck < %t %s +* RUN: not llvm-mc -triple s390x-ibm-zos -mcpu=arch12 < %s 2> %t +* RUN: FileCheck < %t %s + +*CHECK: error: invalid instruction + binle 0(1) + +*CHECK: error: invalid instruction + binhe 0(1) + +*CHECK: error: invalid instruction + bilh 0(1) + +*CHECK: error: invalid instruction + binlh 0(1) + +*CHECK: error: invalid instruction + bihe 0(1) + +*CHECK: error: invalid instruction + bile 0(1) diff --git a/llvm/test/MC/SystemZ/insn-bad-zos-z15.s b/llvm/test/MC/SystemZ/insn-bad-zos-z15.s new file mode 100644 index 0000000..3e56b53 --- /dev/null +++ b/llvm/test/MC/SystemZ/insn-bad-zos-z15.s @@ -0,0 +1,41 @@ +* For z15 only. +* RUN: not llvm-mc -triple s390x-ibm-zos -mcpu=z15 < %s 2> %t +* RUN: FileCheck < %t %s +* RUN: not llvm-mc -triple s390x-ibm-zos -mcpu=arch13 < %s 2> %t +* RUN: FileCheck < %t %s + +*CHECK-COUNT-3: error: invalid instruction + selrnle 0,1,2 + selfhrnle 0,1,2 + selgrnle 0,1,2 + + +*CHECK-COUNT-3: error: invalid instruction + selrnhe 0,1,2 + selfhrnhe 0,1,2 + selgrnhe 0,1,2 + + +*CHECK-COUNT-3: error: invalid instruction + selrnlh 0,1,2 + selfhrnlh 0,1,2 + selgrnlh 0,1,2 + + +*CHECK-COUNT-3: error: invalid instruction + selrlh 0,1,2 + selfhrlh 0,1,2 + selgrlh 0,1,2 + + +*CHECK-COUNT-3: error: invalid instruction + selrhe 0,1,2 + selfhrhe 0,1,2 + selgrhe 0,1,2 + + +*CHECK-COUNT-3: error: invalid instruction + selrle 0,1,2 + selfhrle 0,1,2 + selgrle 0,1,2 + diff --git a/llvm/test/MC/SystemZ/insn-bad-zos-z196.s b/llvm/test/MC/SystemZ/insn-bad-zos-z196.s new file mode 100644 index 0000000..d792997 --- /dev/null +++ b/llvm/test/MC/SystemZ/insn-bad-zos-z196.s @@ -0,0 +1,59 @@ +* For z196 and above. +* RUN: not llvm-mc -triple s390x-ibm-zos -mcpu=z196 < %s 2> %t +* RUN: FileCheck < %t %s +* RUN: not llvm-mc -triple s390x-ibm-zos -mcpu=arch9 < %s 2> %t +* RUN: FileCheck < %t %s + +*CHECK-COUNT-6: error: invalid instruction + locrhe 1,2 + locgrhe 1,2 + loche 1,2(3) + locghe 1,2(3) + stoche 1,2(3) + stocghe 1,2(3) + + +*CHECK-COUNT-6: error: invalid instruction + locrle 1,2 + locgrle 1,2 + locle 1,2(3) + locgle 1,2(3) + stocle 1,2(3) + stocgle 1,2(3) + + +*CHECK-COUNT-6: error: invalid instruction + locrlh 1,2 + locgrlh 1,2 + loclh 1,2(3) + locglh 1,2(3) + stoclh 1,2(3) + stocglh 1,2(3) + + +*CHECK-COUNT-6: error: invalid instruction + locrnhe 1,2 + locgrnhe 1,2 + locnhe 1,2(3) + locgnhe 1,2(3) + stocnhe 1,2(3) + stocgnhe 1,2(3) + + +*CHECK-COUNT-6: error: invalid instruction + locrnle 1,2 + locgrnle 1,2 + locnle 1,2(3) + locgnle 1,2(3) + stocnle 1,2(3) + stocgnle 1,2(3) + + +*CHECK-COUNT-6: error: invalid instruction + locrnlh 1,2 + locgrnlh 1,2 + locnlh 1,2(3) + locgnlh 1,2(3) + stocnlh 1,2(3) + stocgnlh 1,2(3) + diff --git a/llvm/test/MC/SystemZ/insn-bad-zos.s b/llvm/test/MC/SystemZ/insn-bad-zos.s new file mode 100644 index 0000000..a80d937 --- /dev/null +++ b/llvm/test/MC/SystemZ/insn-bad-zos.s @@ -0,0 +1,158 @@ +* For z10 only. +* RUN: not llvm-mc -triple s390x-ibm-zos -mcpu=z10 < %s 2> %t +* RUN: FileCheck < %t %s +* RUN: not llvm-mc -triple s390x-ibm-zos -mcpu=arch8 < %s 2> %t +* RUN: FileCheck < %t %s + +*CHECK: error: invalid instruction + jgnop foo + +*CHECK: error: invalid instruction + jg foo + +*CHECK-COUNT-22: error: invalid instruction + jnle foo + brnle foo + jgnle foo + brnlel foo + bnle 0(1) + bnler 1 + crjnle 1,2,*+100 + cgrjnle 1,2,*+100 + cijnle 1,100,*+200 + cgijnle 1,100,*+200 + clrjnle 1,2,*+200 + clgrjnle 1,2,*+200 + clijnle 1,100,*+100 + clgijnle 1,100,*+100 + crtnle 0,foo + cgrtnle 0,foo + clrtnle 0,foo + clgrtnle 0,foo + citnle 1,foo + cgitnle 1,foo + clfitnle 1,foo + clgitnle 1,foo + + +*CHECK-COUNT-22: error: invalid instruction + jnhe foo + brnhe foo + jgnhe foo + brnhel foo + bnhe 0(1) + bnher 1 + crjnhe 1,2,*+100 + cgrjnhe 1,2,*+100 + cijnhe 1,100,*+200 + clgijnle 1,100,*+100 + cgijnhe 1,100,*+200 + clrjnhe 1,2,*+200 + clgrjnhe 1,2,*+200 + clijnhe 1,100,*+100 + crtnhe 0,1 + cgrtnhe 0,1 + clrtnhe 0,1 + clgrtnhe 0,1 + citnhe 1,1 + cgitnhe 1,1 + clfitnhe 1,1 + clgitnhe 1,1 + + +*CHECK-COUNT-22: error: invalid instruction + jnlh foo + brnlh foo + jgnlh foo + brnlhl foo + bnlh 0(1) + bnlhr 1 + crjnlh 1,2,*+200 + cgrjnlh 1,2,*+200 + cijnlh 1,100,*+200 + cgijnlh 1,100,*+200 + clrjnlh 1,2,*+200 + clgrjnlh 1,2,*+200 + clijnlh 1,100,*+100 + clgijnlh 1,100,*+100 + crtnlh 0,1 + cgrtnlh 0,1 + clrtnlh 0,1 + clgrtnlh 0,1 + citnlh 1,1 + cgitnlh 1,1 + clfitnlh 1,1 + clgitnlh 1,1 + +*CHECK-COUNT-22: error: invalid instruction + brlh foo + jglh foo + jllh foo + brlhl foo + blh 0(1) + blhr 1 + crjlh 1,2,*+100 + cgrjlh 1,2,*+100 + cijlh 1,100,*+200 + cgijlh 1,100,*+200 + clrjlh 1,2,*+200 + clgrjlh 1,2,*+200 + clijlh 1,100,*+100 + clgijlh 1,100,*+100 + crtlh 0,1 + cgrtlh 0,1 + clrtlh 0,1 + clgrtlh 0,1 + citlh 1,1 + cgitlh 1,1 + clfitlh 1,1 + clgitlh 1,1 + +*CHECK-COUNT-22: error: invalid instruction + jhe foo + brhe foo + jghe foo + brhel foo + bhe 0(1) + bher 1 + crjhe 1,2,*+200 + cgrjhe 1,2,*+200 + cijhe 1,100,*+200 + cgijhe 1,100,*+200 + clrjhe 1,2,*+200 + clgrjhe 1,2,*+200 + clijhe 1,100,*+100 + clgijhe 1,100,*+100 + crthe 0,1 + cgrthe 0,1 + clrthe 0,1 + clgrthe 0,1 + cithe 1,1 + cgithe 1,1 + clfithe 1,1 + clgithe 1,1 + +*CHECK-COUNT-22: error: invalid instruction + brle foo + jgle foo + jlle foo + brlel foo + ble 0(1) + bler 1 + crjle 1,2,*+200 + cgrjle 1,2,*+200 + cijle 1,100,*+200 + cgijle 1,100,*+200 + clrjle 1,2,*+200 + clgrjle 1,2,*+200 + clijle 1,100,*+200 + clgijle 1,100,*+100 + crtle 0,1 + cgrtle 0,1 + clrtle 0,1 + clgrtle 0,1 + citle 1,1 + cgitle 1,1 + clfitle 1,1 + clgitle 1,1 + diff --git a/llvm/test/MC/SystemZ/insn-good-zos-pcrel.s b/llvm/test/MC/SystemZ/insn-good-zos-pcrel.s new file mode 100644 index 0000000..7345207 --- /dev/null +++ b/llvm/test/MC/SystemZ/insn-good-zos-pcrel.s @@ -0,0 +1,102 @@ +* For z10 and above. +* RUN: llvm-mc -triple s390x-ibm-zos -show-encoding %s | FileCheck %s + +*CHECK: brcl 0, FOO * encoding: [0xc0,0x04,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL +*CHECK: brcl 0, FOO * encoding: [0xc0,0x04,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL + brcl 0,FOO + jlnop FOO + +*CHECK: jge FOO * encoding: [0xc0,0x84,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL +*CHECK: jge FOO * encoding: [0xc0,0x84,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL + jle FOO + brel FOO + +*CHECK: jgne FOO * encoding: [0xc0,0x74,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL +*CHECK: jgne FOO * encoding: [0xc0,0x74,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL + jlne FOO + brnel FOO + +*CHECK: jgh FOO * encoding: [0xc0,0x24,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL +*CHECK: jgh FOO * encoding: [0xc0,0x24,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL + jlh FOO + brhl FOO + +*CHECK: jgnh FOO * encoding: [0xc0,0xd4,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL +*CHECK: jgnh FOO * encoding: [0xc0,0xd4,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL + jlnh FOO + brnhl FOO + +*CHECK: jgl FOO * encoding: [0xc0,0x44,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL +*CHECK: jgl FOO * encoding: [0xc0,0x44,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL + jll FOO + brll FOO + +*CHECK: jgnl FOO * encoding: [0xc0,0xb4,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL +*CHECK: jgnl FOO * encoding: [0xc0,0xb4,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL + jlnl FOO + brnll FOO + +*CHECK: jgz FOO * encoding: [0xc0,0x84,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL +*CHECK: jgz FOO * encoding: [0xc0,0x84,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL + jlz FOO + brzl FOO + +*CHECK: jgnz FOO * encoding: [0xc0,0x74,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL +*CHECK: jgnz FOO * encoding: [0xc0,0x74,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL + jlnz FOO + brnzl FOO + +*CHECK: jgp FOO * encoding: [0xc0,0x24,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL +*CHECK: jgp FOO * encoding: [0xc0,0x24,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL + jlp FOO + brpl FOO + +*CHECK: jgnp FOO * encoding: [0xc0,0xd4,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL +*CHECK: jgnp FOO * encoding: [0xc0,0xd4,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL + jlnp FOO + brnpl FOO + +*CHECK: jgm FOO * encoding: [0xc0,0x44,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL +*CHECK: jgm FOO * encoding: [0xc0,0x44,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL + jlm FOO + brml FOO + + +*CHECK: jgnm FOO * encoding: [0xc0,0xb4,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL +*CHECK: jgnm FOO * encoding: [0xc0,0xb4,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL + jlnm FOO + brnml FOO + +*CHECK: jg FOO * encoding: [0xc0,0xf4,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL +*CHECK: jg FOO * encoding: [0xc0,0xf4,A,A,A,A] +*CHECK: fixup A - offset: 2, value: FOO+2, kind: FK_390_PC32DBL + jlu FOO + brul FOO +