Compiler projects using llvm
# For z15 only.
# RUN: not llvm-mc -triple s390x-linux-gnu -mcpu=z15 < %s 2> %t
# RUN: FileCheck < %t %s
# RUN: not llvm-mc -triple s390x-linux-gnu -mcpu=arch13 < %s 2> %t
# RUN: FileCheck < %t %s

#CHECK: error: invalid register pair
#CHECK: dfltcc	%r1, %r2, %r4
#CHECK: error: invalid register pair
#CHECK: dfltcc	%r2, %r1, %r4

	dfltcc	%r1, %r2, %r4
	dfltcc	%r2, %r1, %r4

#CHECK: error: invalid register pair
#CHECK: kdsa	%r0, %r1

	kdsa	%r0, %r1

#CHECK: error: instruction requires: bear-enhancement
#CHECK: lbear	0

	lbear	0

#CHECK: error: invalid operand
#CHECK: ldrv	%f0, -1
#CHECK: error: invalid operand
#CHECK: ldrv	%f0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: ldrv	%f0, 0(%v1,%r2)

	ldrv	%f0, -1
	ldrv	%f0, 4096
	ldrv	%f0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: lerv	%f0, -1
#CHECK: error: invalid operand
#CHECK: lerv	%f0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: lerv	%f0, 0(%v1,%r2)

	lerv	%f0, -1
	lerv	%f0, 4096
	lerv	%f0, 0(%v1,%r2)

#CHECK: error: instruction requires: bear-enhancement
#CHECK: lpswey	0

	lpswey	0

#CHECK: error: invalid use of indexed addressing
#CHECK: mvcrl	160(%r1,%r15),160(%r15)
#CHECK: error: invalid operand
#CHECK: mvcrl	-1(%r1),160(%r15)
#CHECK: error: invalid operand
#CHECK: mvcrl	4096(%r1),160(%r15)
#CHECK: error: invalid operand
#CHECK: mvcrl	0(%r1),-1(%r15)
#CHECK: error: invalid operand
#CHECK: mvcrl	0(%r1),4096(%r15)

        mvcrl	160(%r1,%r15),160(%r15)
        mvcrl	-1(%r1),160(%r15)
        mvcrl	4096(%r1),160(%r15)
        mvcrl	0(%r1),-1(%r15)
        mvcrl	0(%r1),4096(%r15)

#CHECK: error: instruction requires: nnp-assist
#CHECK: nnpa

	nnpa

#CHECK: error: invalid operand
#CHECK: popcnt	%r2, %r4, -1
#CHECK: error: invalid operand
#CHECK: popcnt	%r2, %r4, 16

	popcnt	%r2, %r4, -1
	popcnt	%r2, %r4, 16

#CHECK: error: instruction requires: processor-activity-instrumentation
#CHECK: qpaci	0

	qpaci	0

#CHECK: error: instruction requires: reset-dat-protection
#CHECK: rdp	%r0, %r0, %r0

	rdp	%r0, %r0, %r0

#CHECK: error: invalid operand
#CHECK: selgr	%r0, %r0, %r0, -1
#CHECK: error: invalid operand
#CHECK: selgr	%r0, %r0, %r0, 16

	selgr	%r0, %r0, %r0, -1
	selgr	%r0, %r0, %r0, 16

#CHECK: error: invalid operand
#CHECK: selfhr	%r0, %r0, %r0, -1
#CHECK: error: invalid operand
#CHECK: selfhr	%r0, %r0, %r0, 16

	selfhr	%r0, %r0, %r0, -1
	selfhr	%r0, %r0, %r0, 16

#CHECK: error: invalid operand
#CHECK: selr	%r0, %r0, %r0, -1
#CHECK: error: invalid operand
#CHECK: selr	%r0, %r0, %r0, 16

	selr	%r0, %r0, %r0, -1
	selr	%r0, %r0, %r0, 16

#CHECK: error: invalid register pair
#CHECK: sortl	%r1, %r2
#CHECK: error: invalid register pair
#CHECK: sortl	%r2, %r1

	sortl	%r1, %r2
	sortl	%r2, %r1

#CHECK: error: instruction requires: bear-enhancement
#CHECK: stbear	0

	stbear	0

#CHECK: error: invalid operand
#CHECK: stdrv	%f0, -1
#CHECK: error: invalid operand
#CHECK: stdrv	%f0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: stdrv	%f0, 0(%v1,%r2)

	stdrv	%f0, -1
	stdrv	%f0, 4096
	stdrv	%f0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: sterv	%f0, -1
#CHECK: error: invalid operand
#CHECK: sterv	%f0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: sterv	%f0, 0(%v1,%r2)

	sterv	%f0, -1
	sterv	%f0, 4096
	sterv	%f0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vcefb	%v0, %v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vcefb	%v0, %v0, 0, 16
#CHECK: error: invalid operand
#CHECK: vcefb	%v0, %v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vcefb	%v0, %v0, 16, 0

	vcefb	%v0, %v0, 0, -1
	vcefb	%v0, %v0, 0, 16
	vcefb	%v0, %v0, -1, 0
	vcefb	%v0, %v0, 16, 0

#CHECK: error: invalid operand
#CHECK: vcelfb	%v0, %v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vcelfb	%v0, %v0, 0, 16
#CHECK: error: invalid operand
#CHECK: vcelfb	%v0, %v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vcelfb	%v0, %v0, 16, 0

	vcelfb	%v0, %v0, 0, -1
	vcelfb	%v0, %v0, 0, 16
	vcelfb	%v0, %v0, -1, 0
	vcelfb	%v0, %v0, 16, 0

#CHECK: error: invalid operand
#CHECK: vcfeb	%v0, %v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vcfeb	%v0, %v0, 0, 16
#CHECK: error: invalid operand
#CHECK: vcfeb	%v0, %v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vcfeb	%v0, %v0, 16, 0

	vcfeb	%v0, %v0, 0, -1
	vcfeb	%v0, %v0, 0, 16
	vcfeb	%v0, %v0, -1, 0
	vcfeb	%v0, %v0, 16, 0

#CHECK: error: invalid operand
#CHECK: vcfpl	%v0, %v0, 0, 0, -1
#CHECK: error: invalid operand
#CHECK: vcfpl	%v0, %v0, 0, 0, 16
#CHECK: error: invalid operand
#CHECK: vcfpl	%v0, %v0, 0, -1, 0
#CHECK: error: invalid operand
#CHECK: vcfpl	%v0, %v0, 0, 16, 0
#CHECK: error: invalid operand
#CHECK: vcfpl	%v0, %v0, -1, 0, 0
#CHECK: error: invalid operand
#CHECK: vcfpl	%v0, %v0, 16, 0, 0

	vcfpl	%v0, %v0, 0, 0, -1
	vcfpl	%v0, %v0, 0, 0, 16
	vcfpl	%v0, %v0, 0, -1, 0
	vcfpl	%v0, %v0, 0, 16, 0
	vcfpl	%v0, %v0, -1, 0, 0
	vcfpl	%v0, %v0, 16, 0, 0

#CHECK: error: invalid operand
#CHECK: vcfps	%v0, %v0, 0, 0, -1
#CHECK: error: invalid operand
#CHECK: vcfps	%v0, %v0, 0, 0, 16
#CHECK: error: invalid operand
#CHECK: vcfps	%v0, %v0, 0, -1, 0
#CHECK: error: invalid operand
#CHECK: vcfps	%v0, %v0, 0, 16, 0
#CHECK: error: invalid operand
#CHECK: vcfps	%v0, %v0, -1, 0, 0
#CHECK: error: invalid operand
#CHECK: vcfps	%v0, %v0, 16, 0, 0

	vcfps	%v0, %v0, 0, 0, -1
	vcfps	%v0, %v0, 0, 0, 16
	vcfps	%v0, %v0, 0, -1, 0
	vcfps	%v0, %v0, 0, 16, 0
	vcfps	%v0, %v0, -1, 0, 0
	vcfps	%v0, %v0, 16, 0, 0

#CHECK: error: instruction requires: nnp-assist
#CHECK: vcfn	%v0, %v0, 0, 0

	vcfn	%v0, %v0, 0, 0

#CHECK: error: invalid operand
#CHECK: vclfeb	%v0, %v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vclfeb	%v0, %v0, 0, 16
#CHECK: error: invalid operand
#CHECK: vclfeb	%v0, %v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vclfeb	%v0, %v0, 16, 0

	vclfeb	%v0, %v0, 0, -1
	vclfeb	%v0, %v0, 0, 16
	vclfeb	%v0, %v0, -1, 0
	vclfeb	%v0, %v0, 16, 0

#CHECK: error: invalid operand
#CHECK: vclfp	%v0, %v0, 0, 0, -1
#CHECK: error: invalid operand
#CHECK: vclfp	%v0, %v0, 0, 0, 16
#CHECK: error: invalid operand
#CHECK: vclfp	%v0, %v0, 0, -1, 0
#CHECK: error: invalid operand
#CHECK: vclfp	%v0, %v0, 0, 16, 0
#CHECK: error: invalid operand
#CHECK: vclfp	%v0, %v0, -1, 0, 0
#CHECK: error: invalid operand
#CHECK: vclfp	%v0, %v0, 16, 0, 0

	vclfp	%v0, %v0, 0, 0, -1
	vclfp	%v0, %v0, 0, 0, 16
	vclfp	%v0, %v0, 0, -1, 0
	vclfp	%v0, %v0, 0, 16, 0
	vclfp	%v0, %v0, -1, 0, 0
	vclfp	%v0, %v0, 16, 0, 0

#CHECK: error: instruction requires: nnp-assist
#CHECK: vclfnl	%v0, %v0, 0, 0

	vclfnl	%v0, %v0, 0, 0

#CHECK: error: instruction requires: nnp-assist
#CHECK: vclfnh	%v0, %v0, 0, 0

	vclfnh	%v0, %v0, 0, 0

#CHECK: error: instruction requires: vector-packed-decimal-enhancement-2
#CHECK: vclzdp	%v0, %v0, 0

	vclzdp	%v0, %v0, 0

#CHECK: error: instruction requires: nnp-assist
#CHECK: vcnf	%v0, %v0, 0, 0

	vcnf	%v0, %v0, 0, 0

#CHECK: error: instruction requires: nnp-assist
#CHECK: vcrnf	%v0, %v0, %v0, 0, 0

	vcrnf	%v0, %v0, %v0, 0, 0

#CHECK: error: invalid operand
#CHECK: vcsfp	%v0, %v0, 0, 0, -1
#CHECK: error: invalid operand
#CHECK: vcsfp	%v0, %v0, 0, 0, 16
#CHECK: error: invalid operand
#CHECK: vcsfp	%v0, %v0, 0, -1, 0
#CHECK: error: invalid operand
#CHECK: vcsfp	%v0, %v0, 0, 16, 0
#CHECK: error: invalid operand
#CHECK: vcsfp	%v0, %v0, -1, 0, 0
#CHECK: error: invalid operand
#CHECK: vcsfp	%v0, %v0, 16, 0, 0

	vcsfp	%v0, %v0, 0, 0, -1
	vcsfp	%v0, %v0, 0, 0, 16
	vcsfp	%v0, %v0, 0, -1, 0
	vcsfp	%v0, %v0, 0, 16, 0
	vcsfp	%v0, %v0, -1, 0, 0
	vcsfp	%v0, %v0, 16, 0, 0

#CHECK: error: instruction requires: vector-packed-decimal-enhancement-2
#CHECK: vschp	%v0, %v0, %v0, 0, 0

	vschp	%v0, %v0, %v0, 0, 0

#CHECK: error: instruction requires: vector-packed-decimal-enhancement-2
#CHECK: vschsp	%v0, %v0, %v0, 0

	vschsp	%v0, %v0, %v0, 0

#CHECK: error: instruction requires: vector-packed-decimal-enhancement-2
#CHECK: vschdp	%v0, %v0, %v0, 0

	vschdp	%v0, %v0, %v0, 0

#CHECK: error: instruction requires: vector-packed-decimal-enhancement-2
#CHECK: vschxp	%v0, %v0, %v0, 0

	vschxp	%v0, %v0, %v0, 0

#CHECK: error: instruction requires: vector-packed-decimal-enhancement-2
#CHECK: vcsph	%v0, %v0, %v0, 0

	vcsph	%v0, %v0, %v0, 0

#CHECK: error: instruction requires: vector-packed-decimal-enhancement-2
#CHECK: vscshp	%v0, %v0, %v0

	vscshp	%v0, %v0, %v0

#CHECK: error: invalid operand
#CHECK: vcvb	%r0, %v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vcvb	%r0, %v0, 0, 16

	vcvb	%r0, %v0, 0, -1
	vcvb	%r0, %v0, 0, 16

#CHECK: error: invalid operand
#CHECK: vcvbg	%r0, %v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vcvbg	%r0, %v0, 0, 16

	vcvbg	%r0, %v0, 0, -1
	vcvbg	%r0, %v0, 0, 16

#CHECK: error: invalid operand
#CHECK: vlbr	%v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vlbr	%v0, 0, 16
#CHECK: error: invalid operand
#CHECK: vlbr	%v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vlbr	%v0, 4096, 0
#CHECK: error: invalid use of vector addressing
#CHECK: vlbr	%v0, 0(%v1,%r2), 0

	vlbr	%v0, 0, -1
	vlbr	%v0, 0, 16
	vlbr	%v0, -1, 0
	vlbr	%v0, 4096, 0
	vlbr	%v0, 0(%v1,%r2), 0

#CHECK: error: invalid operand
#CHECK: vlbrf	%v0, -1
#CHECK: error: invalid operand
#CHECK: vlbrf	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vlbrf	%v0, 0(%v1,%r2)

	vlbrf	%v0, -1
	vlbrf	%v0, 4096
	vlbrf	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vlbrg	%v0, -1
#CHECK: error: invalid operand
#CHECK: vlbrg	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vlbrg	%v0, 0(%v1,%r2)

	vlbrg	%v0, -1
	vlbrg	%v0, 4096
	vlbrg	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vlbrh	%v0, -1
#CHECK: error: invalid operand
#CHECK: vlbrh	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vlbrh	%v0, 0(%v1,%r2)

	vlbrh	%v0, -1
	vlbrh	%v0, 4096
	vlbrh	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vlbrq	%v0, -1
#CHECK: error: invalid operand
#CHECK: vlbrq	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vlbrq	%v0, 0(%v1,%r2)

	vlbrq	%v0, -1
	vlbrq	%v0, 4096
	vlbrq	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vlbrrep	%v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vlbrrep	%v0, 0, 16
#CHECK: error: invalid operand
#CHECK: vlbrrep	%v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vlbrrep	%v0, 4096, 0
#CHECK: error: invalid use of vector addressing
#CHECK: vlbrrep	%v0, 0(%v1,%r2), 0

	vlbrrep	%v0, 0, -1
	vlbrrep	%v0, 0, 16
	vlbrrep	%v0, -1, 0
	vlbrrep	%v0, 4096, 0
	vlbrrep	%v0, 0(%v1,%r2), 0

#CHECK: error: invalid operand
#CHECK: vlbrrepf %v0, -1
#CHECK: error: invalid operand
#CHECK: vlbrrepf %v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vlbrrepf %v0, 0(%v1,%r2)

	vlbrrepf %v0, -1
	vlbrrepf %v0, 4096
	vlbrrepf %v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vlbrrepg %v0, -1
#CHECK: error: invalid operand
#CHECK: vlbrrepg %v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vlbrrepg %v0, 0(%v1,%r2)

	vlbrrepg %v0, -1
	vlbrrepg %v0, 4096
	vlbrrepg %v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vlbrreph %v0, -1
#CHECK: error: invalid operand
#CHECK: vlbrreph %v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vlbrreph %v0, 0(%v1,%r2)

	vlbrreph %v0, -1
	vlbrreph %v0, 4096
	vlbrreph %v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vlebrf	%v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vlebrf	%v0, 0, 4
#CHECK: error: invalid operand
#CHECK: vlebrf	%v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vlebrf	%v0, 4096, 0
#CHECK: error: invalid use of vector addressing
#CHECK: vlebrf	%v0, 0(%v1,%r2), 0

	vlebrf	%v0, 0, -1
	vlebrf	%v0, 0, 4
	vlebrf	%v0, -1, 0
	vlebrf	%v0, 4096, 0
	vlebrf	%v0, 0(%v1,%r2), 0

#CHECK: error: invalid operand
#CHECK: vlebrg	%v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vlebrg	%v0, 0, 2
#CHECK: error: invalid operand
#CHECK: vlebrg	%v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vlebrg	%v0, 4096, 0
#CHECK: error: invalid use of vector addressing
#CHECK: vlebrg	%v0, 0(%v1,%r2), 0

	vlebrg	%v0, 0, -1
	vlebrg	%v0, 0, 2
	vlebrg	%v0, -1, 0
	vlebrg	%v0, 4096, 0
	vlebrg	%v0, 0(%v1,%r2), 0

#CHECK: error: invalid operand
#CHECK: vlebrh	%v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vlebrh	%v0, 0, 8
#CHECK: error: invalid operand
#CHECK: vlebrh	%v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vlebrh	%v0, 4096, 0
#CHECK: error: invalid use of vector addressing
#CHECK: vlebrh	%v0, 0(%v1,%r2), 0

	vlebrh	%v0, 0, -1
	vlebrh	%v0, 0, 8
	vlebrh	%v0, -1, 0
	vlebrh	%v0, 4096, 0
	vlebrh	%v0, 0(%v1,%r2), 0

#CHECK: error: invalid operand
#CHECK: vler	%v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vler	%v0, 0, 16
#CHECK: error: invalid operand
#CHECK: vler	%v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vler	%v0, 4096, 0
#CHECK: error: invalid use of vector addressing
#CHECK: vler	%v0, 0(%v1,%r2), 0

	vler	%v0, 0, -1
	vler	%v0, 0, 16
	vler	%v0, -1, 0
	vler	%v0, 4096, 0
	vler	%v0, 0(%v1,%r2), 0

#CHECK: error: invalid operand
#CHECK: vlerf	%v0, -1
#CHECK: error: invalid operand
#CHECK: vlerf	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vlerf	%v0, 0(%v1,%r2)

	vlerf	%v0, -1
	vlerf	%v0, 4096
	vlerf	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vlerg	%v0, -1
#CHECK: error: invalid operand
#CHECK: vlerg	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vlerg	%v0, 0(%v1,%r2)

	vlerg	%v0, -1
	vlerg	%v0, 4096
	vlerg	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vlerh	%v0, -1
#CHECK: error: invalid operand
#CHECK: vlerh	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vlerh	%v0, 0(%v1,%r2)

	vlerh	%v0, -1
	vlerh	%v0, 4096
	vlerh	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vllebrz	%v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vllebrz	%v0, 0, 16
#CHECK: error: invalid operand
#CHECK: vllebrz	%v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vllebrz	%v0, 4096, 0
#CHECK: error: invalid use of vector addressing
#CHECK: vllebrz	%v0, 0(%v1,%r2), 0

	vllebrz	%v0, 0, -1
	vllebrz	%v0, 0, 16
	vllebrz	%v0, -1, 0
	vllebrz	%v0, 4096, 0
	vllebrz	%v0, 0(%v1,%r2), 0

#CHECK: error: invalid operand
#CHECK: vllebrze	%v0, -1
#CHECK: error: invalid operand
#CHECK: vllebrze	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vllebrze	%v0, 0(%v1,%r2)

	vllebrze	%v0, -1
	vllebrze	%v0, 4096
	vllebrze	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vllebrzf	%v0, -1
#CHECK: error: invalid operand
#CHECK: vllebrzf	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vllebrzf	%v0, 0(%v1,%r2)

	vllebrzf	%v0, -1
	vllebrzf	%v0, 4096
	vllebrzf	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vllebrzg	%v0, -1
#CHECK: error: invalid operand
#CHECK: vllebrzg	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vllebrzg	%v0, 0(%v1,%r2)

	vllebrzg	%v0, -1
	vllebrzg	%v0, 4096
	vllebrzg	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vllebrzh	%v0, -1
#CHECK: error: invalid operand
#CHECK: vllebrzh	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vllebrzh	%v0, 0(%v1,%r2)

	vllebrzh	%v0, -1
	vllebrzh	%v0, 4096
	vllebrzh	%v0, 0(%v1,%r2)

#CHECK: error: instruction requires: vector-packed-decimal-enhancement-2
#CHECK: vpkzr	%v0, %v0, %v0, 0, 0

	vpkzr	%v0, %v0, %v0, 0, 0

#CHECK: error: invalid operand
#CHECK: vsld	%v0, %v0, %v0, -1
#CHECK: error: invalid operand
#CHECK: vsld	%v0, %v0, %v0, 256

	vsld	%v0, %v0, %v0, -1
	vsld	%v0, %v0, %v0, 256

#CHECK: error: invalid operand
#CHECK: vsrd	%v0, %v0, %v0, -1
#CHECK: error: invalid operand
#CHECK: vsrd	%v0, %v0, %v0, 256

	vsrd	%v0, %v0, %v0, -1
	vsrd	%v0, %v0, %v0, 256

#CHECK: error: instruction requires: vector-packed-decimal-enhancement-2
#CHECK: vsrpr	%v0, %v0, %v0, 0, 0

	vsrpr	%v0, %v0, %v0, 0, 0

#CHECK: error: invalid operand
#CHECK: vstbr	%v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vstbr	%v0, 0, 16
#CHECK: error: invalid operand
#CHECK: vstbr	%v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vstbr	%v0, 4096, 0
#CHECK: error: invalid use of vector addressing
#CHECK: vstbr	%v0, 0(%v1,%r2), 0

	vstbr	%v0, 0, -1
	vstbr	%v0, 0, 16
	vstbr	%v0, -1, 0
	vstbr	%v0, 4096, 0
	vstbr	%v0, 0(%v1,%r2), 0

#CHECK: error: invalid operand
#CHECK: vstbrf	%v0, -1
#CHECK: error: invalid operand
#CHECK: vstbrf	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vstbrf	%v0, 0(%v1,%r2)

	vstbrf	%v0, -1
	vstbrf	%v0, 4096
	vstbrf	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vstbrg	%v0, -1
#CHECK: error: invalid operand
#CHECK: vstbrg	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vstbrg	%v0, 0(%v1,%r2)

	vstbrg	%v0, -1
	vstbrg	%v0, 4096
	vstbrg	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vstbrh	%v0, -1
#CHECK: error: invalid operand
#CHECK: vstbrh	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vstbrh	%v0, 0(%v1,%r2)

	vstbrh	%v0, -1
	vstbrh	%v0, 4096
	vstbrh	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vstbrq	%v0, -1
#CHECK: error: invalid operand
#CHECK: vstbrq	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vstbrq	%v0, 0(%v1,%r2)

	vstbrq	%v0, -1
	vstbrq	%v0, 4096
	vstbrq	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vstebrf	%v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vstebrf	%v0, 0, 4
#CHECK: error: invalid operand
#CHECK: vstebrf	%v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vstebrf	%v0, 4096, 0
#CHECK: error: invalid use of vector addressing
#CHECK: vstebrf	%v0, 0(%v1,%r2), 0

	vstebrf	%v0, 0, -1
	vstebrf	%v0, 0, 4
	vstebrf	%v0, -1, 0
	vstebrf	%v0, 4096, 0
	vstebrf	%v0, 0(%v1,%r2), 0

#CHECK: error: invalid operand
#CHECK: vstebrg	%v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vstebrg	%v0, 0, 2
#CHECK: error: invalid operand
#CHECK: vstebrg	%v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vstebrg	%v0, 4096, 0
#CHECK: error: invalid use of vector addressing
#CHECK: vstebrg	%v0, 0(%v1,%r2), 0

	vstebrg	%v0, 0, -1
	vstebrg	%v0, 0, 2
	vstebrg	%v0, -1, 0
	vstebrg	%v0, 4096, 0
	vstebrg	%v0, 0(%v1,%r2), 0

#CHECK: error: invalid operand
#CHECK: vstebrh	%v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vstebrh	%v0, 0, 8
#CHECK: error: invalid operand
#CHECK: vstebrh	%v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vstebrh	%v0, 4096, 0
#CHECK: error: invalid use of vector addressing
#CHECK: vstebrh	%v0, 0(%v1,%r2), 0

	vstebrh	%v0, 0, -1
	vstebrh	%v0, 0, 8
	vstebrh	%v0, -1, 0
	vstebrh	%v0, 4096, 0
	vstebrh	%v0, 0(%v1,%r2), 0

#CHECK: error: invalid operand
#CHECK: vster	%v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vster	%v0, 0, 16
#CHECK: error: invalid operand
#CHECK: vster	%v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vster	%v0, 4096, 0
#CHECK: error: invalid use of vector addressing
#CHECK: vster	%v0, 0(%v1,%r2), 0

	vster	%v0, 0, -1
	vster	%v0, 0, 16
	vster	%v0, -1, 0
	vster	%v0, 4096, 0
	vster	%v0, 0(%v1,%r2), 0

#CHECK: error: invalid operand
#CHECK: vsterf	%v0, -1
#CHECK: error: invalid operand
#CHECK: vsterf	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vsterf	%v0, 0(%v1,%r2)

	vsterf	%v0, -1
	vsterf	%v0, 4096
	vsterf	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vsterg	%v0, -1
#CHECK: error: invalid operand
#CHECK: vsterg	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vsterg	%v0, 0(%v1,%r2)

	vsterg	%v0, -1
	vsterg	%v0, 4096
	vsterg	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vsterh	%v0, -1
#CHECK: error: invalid operand
#CHECK: vsterh	%v0, 4096
#CHECK: error: invalid use of vector addressing
#CHECK: vsterh	%v0, 0(%v1,%r2)

	vsterh	%v0, -1
	vsterh	%v0, 4096
	vsterh	%v0, 0(%v1,%r2)

#CHECK: error: invalid operand
#CHECK: vstrs    %v0, %v0, %v0, %v0, 0, -1
#CHECK: error: invalid operand
#CHECK: vstrs    %v0, %v0, %v0, %v0, 0, 16
#CHECK: error: invalid operand
#CHECK: vstrs    %v0, %v0, %v0, %v0, -1, 0
#CHECK: error: invalid operand
#CHECK: vstrs    %v0, %v0, %v0, %v0, 16, 0
#CHECK: error: too few operands
#CHECK: vstrs    %v0, %v0, %v0, %v0
#CHECK: error: invalid operand
#CHECK: vstrs    %v0, %v0, %v0, %v0, 0, 0, 0

	vstrs    %v0, %v0, %v0, %v0, 0, -1
	vstrs    %v0, %v0, %v0, %v0, 0, 16
	vstrs    %v0, %v0, %v0, %v0, -1, 0
	vstrs    %v0, %v0, %v0, %v0, 16, 0
	vstrs    %v0, %v0, %v0, %v0
	vstrs    %v0, %v0, %v0, %v0, 0, 0, 0

#CHECK: error: invalid operand
#CHECK: vstrsb   %v0, %v0, %v0, %v0, -1
#CHECK: error: invalid operand
#CHECK: vstrsb   %v0, %v0, %v0, %v0, 16
#CHECK: error: too few operands
#CHECK: vstrsb   %v0, %v0, %v0
#CHECK: error: invalid operand
#CHECK: vstrsb   %v0, %v0, %v0, %v0, 0, 0

	vstrsb   %v0, %v0, %v0, %v0, -1
	vstrsb   %v0, %v0, %v0, %v0, 16
	vstrsb   %v0, %v0, %v0
	vstrsb   %v0, %v0, %v0, %v0, 0, 0

#CHECK: error: invalid operand
#CHECK: vstrsf   %v0, %v0, %v0, %v0, -1
#CHECK: error: invalid operand
#CHECK: vstrsf   %v0, %v0, %v0, %v0, 16
#CHECK: error: too few operands
#CHECK: vstrsf   %v0, %v0, %v0
#CHECK: error: invalid operand
#CHECK: vstrsf   %v0, %v0, %v0, %v0, 0, 0

	vstrsf   %v0, %v0, %v0, %v0, -1
	vstrsf   %v0, %v0, %v0, %v0, 16
	vstrsf   %v0, %v0, %v0
	vstrsf   %v0, %v0, %v0, %v0, 0, 0

#CHECK: error: invalid operand
#CHECK: vstrsh   %v0, %v0, %v0, %v0, -1
#CHECK: error: invalid operand
#CHECK: vstrsh   %v0, %v0, %v0, %v0, 16
#CHECK: error: too few operands
#CHECK: vstrsh   %v0, %v0, %v0
#CHECK: error: invalid operand
#CHECK: vstrsh   %v0, %v0, %v0, %v0, 0, 0

	vstrsh   %v0, %v0, %v0, %v0, -1
	vstrsh   %v0, %v0, %v0, %v0, 16
	vstrsh   %v0, %v0, %v0
	vstrsh   %v0, %v0, %v0, %v0, 0, 0

#CHECK: error: invalid operand
#CHECK: vstrszb  %v0, %v0, %v0, %v0, -1
#CHECK: error: invalid operand
#CHECK: vstrszb  %v0, %v0, %v0, %v0, 16
#CHECK: error: too few operands
#CHECK: vstrszb  %v0, %v0, %v0
#CHECK: error: invalid operand
#CHECK: vstrszb  %v0, %v0, %v0, %v0, 0, 0

	vstrszb  %v0, %v0, %v0, %v0, -1
	vstrszb  %v0, %v0, %v0, %v0, 16
	vstrszb  %v0, %v0, %v0
	vstrszb  %v0, %v0, %v0, %v0, 0, 0

#CHECK: error: invalid operand
#CHECK: vstrszf  %v0, %v0, %v0, %v0, -1
#CHECK: error: invalid operand
#CHECK: vstrszf  %v0, %v0, %v0, %v0, 16
#CHECK: error: too few operands
#CHECK: vstrszf  %v0, %v0, %v0
#CHECK: error: invalid operand
#CHECK: vstrszf  %v0, %v0, %v0, %v0, 0, 0

	vstrszf  %v0, %v0, %v0, %v0, -1
	vstrszf  %v0, %v0, %v0, %v0, 16
	vstrszf  %v0, %v0, %v0
	vstrszf  %v0, %v0, %v0, %v0, 0, 0

#CHECK: error: invalid operand
#CHECK: vstrszh  %v0, %v0, %v0, %v0, -1
#CHECK: error: invalid operand
#CHECK: vstrszh  %v0, %v0, %v0, %v0, 16
#CHECK: error: too few operands
#CHECK: vstrszh  %v0, %v0, %v0
#CHECK: error: invalid operand
#CHECK: vstrszh  %v0, %v0, %v0, %v0, 0, 0

	vstrszh  %v0, %v0, %v0, %v0, -1
	vstrszh  %v0, %v0, %v0, %v0, 16
	vstrszh  %v0, %v0, %v0
	vstrszh  %v0, %v0, %v0, %v0, 0, 0

#CHECK: error: instruction requires: vector-packed-decimal-enhancement-2
#CHECK: vupkzh	%v0, %v0, 0

	vupkzh	%v0, %v0, 0

#CHECK: error: instruction requires: vector-packed-decimal-enhancement-2
#CHECK: vupkzl	%v0, %v0, 0

	vupkzl	%v0, %v0, 0

#CHECK: error: invalid operand
#CHECK: wcefb	%v0, %v0, 0, -1
#CHECK: error: invalid operand
#CHECK: wcefb	%v0, %v0, 0, 16
#CHECK: error: invalid operand
#CHECK: wcefb	%v0, %v0, -1, 0
#CHECK: error: invalid operand
#CHECK: wcefb	%v0, %v0, 16, 0

	wcefb	%v0, %v0, 0, -1
	wcefb	%v0, %v0, 0, 16
	wcefb	%v0, %v0, -1, 0
	wcefb	%v0, %v0, 16, 0

#CHECK: error: invalid operand
#CHECK: wcelfb	%v0, %v0, 0, -1
#CHECK: error: invalid operand
#CHECK: wcelfb	%v0, %v0, 0, 16
#CHECK: error: invalid operand
#CHECK: wcelfb	%v0, %v0, -1, 0
#CHECK: error: invalid operand
#CHECK: wcelfb	%v0, %v0, 16, 0

	wcelfb	%v0, %v0, 0, -1
	wcelfb	%v0, %v0, 0, 16
	wcelfb	%v0, %v0, -1, 0
	wcelfb	%v0, %v0, 16, 0

#CHECK: error: invalid operand
#CHECK: wcfeb	%v0, %v0, 0, -1
#CHECK: error: invalid operand
#CHECK: wcfeb	%v0, %v0, 0, 16
#CHECK: error: invalid operand
#CHECK: wcfeb	%v0, %v0, -1, 0
#CHECK: error: invalid operand
#CHECK: wcfeb	%v0, %v0, 16, 0

	wcfeb	%v0, %v0, 0, -1
	wcfeb	%v0, %v0, 0, 16
	wcfeb	%v0, %v0, -1, 0
	wcfeb	%v0, %v0, 16, 0

#CHECK: error: invalid operand
#CHECK: wclfeb	%v0, %v0, 0, -1
#CHECK: error: invalid operand
#CHECK: wclfeb	%v0, %v0, 0, 16
#CHECK: error: invalid operand
#CHECK: wclfeb	%v0, %v0, -1, 0
#CHECK: error: invalid operand
#CHECK: wclfeb	%v0, %v0, 16, 0

	wclfeb	%v0, %v0, 0, -1
	wclfeb	%v0, %v0, 0, 16
	wclfeb	%v0, %v0, -1, 0
	wclfeb	%v0, %v0, 16, 0