From 3f484e68cc6bf62ccff44c2cdb1a70aaf015d088 Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Tue, 30 May 2017 10:15:16 +0000 Subject: [PATCH] [SystemZ] Add decimal floating-point instructions This adds assembler / disassembler support for the decimal floating-point instructions. Since LLVM does not yet have support for decimal float types, these cannot be used for codegen at this point. llvm-svn: 304203 --- llvm/lib/Target/SystemZ/SystemZ.td | 1 + llvm/lib/Target/SystemZ/SystemZFeatures.td | 14 +- llvm/lib/Target/SystemZ/SystemZInstrDFP.td | 231 ++++ llvm/lib/Target/SystemZ/SystemZInstrFormats.td | 57 + llvm/lib/Target/SystemZ/SystemZScheduleZ13.td | 124 ++ llvm/lib/Target/SystemZ/SystemZScheduleZ196.td | 112 ++ llvm/lib/Target/SystemZ/SystemZScheduleZEC12.td | 118 ++ llvm/lib/Target/SystemZ/SystemZSubtarget.cpp | 2 + llvm/lib/Target/SystemZ/SystemZSubtarget.h | 8 + llvm/test/MC/Disassembler/SystemZ/insns-z13.txt | 108 ++ llvm/test/MC/Disassembler/SystemZ/insns.txt | 1422 +++++++++++++++++++++++ llvm/test/MC/SystemZ/insn-bad-z13.s | 146 +++ llvm/test/MC/SystemZ/insn-bad-z196.s | 368 ++++++ llvm/test/MC/SystemZ/insn-bad-zEC12.s | 166 +++ llvm/test/MC/SystemZ/insn-bad.s | 528 +++++++++ llvm/test/MC/SystemZ/insn-good-z13.s | 80 ++ llvm/test/MC/SystemZ/insn-good-z196.s | 336 ++++++ llvm/test/MC/SystemZ/insn-good-zEC12.s | 80 ++ llvm/test/MC/SystemZ/insn-good.s | 699 +++++++++++ 19 files changed, 4599 insertions(+), 1 deletion(-) create mode 100644 llvm/lib/Target/SystemZ/SystemZInstrDFP.td diff --git a/llvm/lib/Target/SystemZ/SystemZ.td b/llvm/lib/Target/SystemZ/SystemZ.td index 18cf5d3..c5f3244 100644 --- a/llvm/lib/Target/SystemZ/SystemZ.td +++ b/llvm/lib/Target/SystemZ/SystemZ.td @@ -55,6 +55,7 @@ include "SystemZInstrInfo.td" include "SystemZInstrVector.td" include "SystemZInstrFP.td" include "SystemZInstrHFP.td" +include "SystemZInstrDFP.td" def SystemZInstrInfo : InstrInfo {} diff --git a/llvm/lib/Target/SystemZ/SystemZFeatures.td b/llvm/lib/Target/SystemZ/SystemZFeatures.td index 7bfa378..ffb0b8d 100644 --- a/llvm/lib/Target/SystemZ/SystemZFeatures.td +++ b/llvm/lib/Target/SystemZ/SystemZFeatures.td @@ -115,12 +115,18 @@ def FeatureTransactionalExecution : SystemZFeature< "Assume that the transactional-execution facility is installed" >; +def FeatureDFPZonedConversion : SystemZFeature< + "dfp-zoned-conversion", "DFPZonedConversion", + "Assume that the DFP zoned-conversion facility is installed" +>; + def Arch10NewFeatures : SystemZFeatureList<[ FeatureExecutionHint, FeatureLoadAndTrap, FeatureMiscellaneousExtensions, FeatureProcessorAssist, - FeatureTransactionalExecution + FeatureTransactionalExecution, + FeatureDFPZonedConversion ]>; //===----------------------------------------------------------------------===// @@ -144,6 +150,11 @@ def FeatureMessageSecurityAssist5 : SystemZFeature< "Assume that the message-security-assist extension facility 5 is installed" >; +def FeatureDFPPackedConversion : SystemZFeature< + "dfp-packed-conversion", "DFPPackedConversion", + "Assume that the DFP packed-conversion facility is installed" +>; + def FeatureVector : SystemZFeature< "vector", "Vector", "Assume that the vectory facility is installed" @@ -154,6 +165,7 @@ def Arch11NewFeatures : SystemZFeatureList<[ FeatureLoadAndZeroRightmostByte, FeatureLoadStoreOnCond2, FeatureMessageSecurityAssist5, + FeatureDFPPackedConversion, FeatureVector ]>; diff --git a/llvm/lib/Target/SystemZ/SystemZInstrDFP.td b/llvm/lib/Target/SystemZ/SystemZInstrDFP.td new file mode 100644 index 0000000..08ab2d7 --- /dev/null +++ b/llvm/lib/Target/SystemZ/SystemZInstrDFP.td @@ -0,0 +1,231 @@ +//==- SystemZInstrDFP.td - Floating-point SystemZ instructions -*- tblgen-*-==// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// The instructions in this file implement SystemZ decimal floating-point +// arithmetic. These instructions are inot currently used for code generation, +// are provided for use with the assembler and disassembler only. If LLVM +// ever supports decimal floating-point types (_Decimal64 etc.), they can +// also be used for code generation for those types. +// +//===----------------------------------------------------------------------===// + +//===----------------------------------------------------------------------===// +// Move instructions +//===----------------------------------------------------------------------===// + +// Load and test. +let Defs = [CC] in { + def LTDTR : UnaryRRE<"ltdtr", 0xB3D6, null_frag, FP64, FP64>; + def LTXTR : UnaryRRE<"ltxtr", 0xB3DE, null_frag, FP128, FP128>; +} + + +//===----------------------------------------------------------------------===// +// Conversion instructions +//===----------------------------------------------------------------------===// + +// Convert floating-point values to narrower representations. The destination +// of LDXTR is a 128-bit value, but only the first register of the pair is used. +def LEDTR : TernaryRRFe<"ledtr", 0xB3D5, FP32, FP64>; +def LDXTR : TernaryRRFe<"ldxtr", 0xB3DD, FP128, FP128>; + +// Extend floating-point values to wider representations. +def LDETR : BinaryRRFd<"ldetr", 0xB3D4, FP64, FP32>; +def LXDTR : BinaryRRFd<"lxdtr", 0xB3DC, FP128, FP64>; + +// Convert a signed integer value to a floating-point one. +def CDGTR : UnaryRRE<"cdgtr", 0xB3F1, null_frag, FP64, GR64>; +def CXGTR : UnaryRRE<"cxgtr", 0xB3F9, null_frag, FP128, GR64>; +let Predicates = [FeatureFPExtension] in { + def CDGTRA : TernaryRRFe<"cdgtra", 0xB3F1, FP64, GR64>; + def CXGTRA : TernaryRRFe<"cxgtra", 0xB3F9, FP128, GR64>; + def CDFTR : TernaryRRFe<"cdftr", 0xB951, FP64, GR32>; + def CXFTR : TernaryRRFe<"cxftr", 0xB959, FP128, GR32>; +} + +// Convert an unsigned integer value to a floating-point one. +let Predicates = [FeatureFPExtension] in { + def CDLGTR : TernaryRRFe<"cdlgtr", 0xB952, FP64, GR64>; + def CXLGTR : TernaryRRFe<"cxlgtr", 0xB95A, FP128, GR64>; + def CDLFTR : TernaryRRFe<"cdlftr", 0xB953, FP64, GR32>; + def CXLFTR : TernaryRRFe<"cxlftr", 0xB95B, FP128, GR32>; +} + +// Convert a floating-point value to a signed integer value. +let Defs = [CC] in { + def CGDTR : BinaryRRFe<"cgdtr", 0xB3E1, GR64, FP64>; + def CGXTR : BinaryRRFe<"cgxtr", 0xB3E9, GR64, FP128>; + let Predicates = [FeatureFPExtension] in { + def CGDTRA : TernaryRRFe<"cgdtra", 0xB3E1, GR64, FP64>; + def CGXTRA : TernaryRRFe<"cgxtra", 0xB3E9, GR64, FP128>; + def CFDTR : TernaryRRFe<"cfdtr", 0xB941, GR32, FP64>; + def CFXTR : TernaryRRFe<"cfxtr", 0xB949, GR32, FP128>; + } +} + +// Convert a floating-point value to an unsigned integer value. +let Defs = [CC] in { + let Predicates = [FeatureFPExtension] in { + def CLGDTR : TernaryRRFe<"clgdtr", 0xB942, GR64, FP64>; + def CLGXTR : TernaryRRFe<"clgxtr", 0xB94A, GR64, FP128>; + def CLFDTR : TernaryRRFe<"clfdtr", 0xB943, GR32, FP64>; + def CLFXTR : TernaryRRFe<"clfxtr", 0xB94B, GR32, FP128>; + } +} + +// Convert a packed value to a floating-point one. +def CDSTR : UnaryRRE<"cdstr", 0xB3F3, null_frag, FP64, GR64>; +def CXSTR : UnaryRRE<"cxstr", 0xB3FB, null_frag, FP128, GR128>; +def CDUTR : UnaryRRE<"cdutr", 0xB3F2, null_frag, FP64, GR64>; +def CXUTR : UnaryRRE<"cxutr", 0xB3FA, null_frag, FP128, GR128>; + +// Convert a floating-point value to a packed value. +def CSDTR : BinaryRRFd<"csdtr", 0xB3E3, GR64, FP64>; +def CSXTR : BinaryRRFd<"csxtr", 0xB3EB, GR128, FP128>; +def CUDTR : UnaryRRE<"cudtr", 0xB3E2, null_frag, GR64, FP64>; +def CUXTR : UnaryRRE<"cuxtr", 0xB3EA, null_frag, GR128, FP128>; + +// Convert from/to memory values in the zoned format. +let Predicates = [FeatureDFPZonedConversion] in { + def CDZT : BinaryRSL<"cdzt", 0xEDAA, FP64>; + def CXZT : BinaryRSL<"cxzt", 0xEDAB, FP128>; + def CZDT : StoreBinaryRSL<"czdt", 0xEDA8, FP64>; + def CZXT : StoreBinaryRSL<"czxt", 0xEDA9, FP128>; +} + +// Convert from/to memory values in the packed format. +let Predicates = [FeatureDFPPackedConversion] in { + def CDPT : BinaryRSL<"cdpt", 0xEDAE, FP64>; + def CXPT : BinaryRSL<"cxpt", 0xEDAF, FP128>; + def CPDT : StoreBinaryRSL<"cpdt", 0xEDAC, FP64>; + def CPXT : StoreBinaryRSL<"cpxt", 0xEDAD, FP128>; +} + +// Perform floating-point operation. +let Defs = [CC, R1L, F0Q], Uses = [R0L, F4Q] in + def PFPO : SideEffectInherentE<"pfpo", 0x010A>; + + +//===----------------------------------------------------------------------===// +// Unary arithmetic +//===----------------------------------------------------------------------===// + +// Round to an integer, with the second operand (M3) specifying the rounding +// mode. M4 can be set to 4 to suppress detection of inexact conditions. +def FIDTR : TernaryRRFe<"fidtr", 0xB3D7, FP64, FP64>; +def FIXTR : TernaryRRFe<"fixtr", 0xB3DF, FP128, FP128>; + +// Extract biased exponent. +def EEDTR : UnaryRRE<"eedtr", 0xB3E5, null_frag, FP64, FP64>; +def EEXTR : UnaryRRE<"eextr", 0xB3ED, null_frag, FP128, FP128>; + +// Extract significance. +def ESDTR : UnaryRRE<"esdtr", 0xB3E7, null_frag, FP64, FP64>; +def ESXTR : UnaryRRE<"esxtr", 0xB3EF, null_frag, FP128, FP128>; + + +//===----------------------------------------------------------------------===// +// Binary arithmetic +//===----------------------------------------------------------------------===// + +// Addition. +let Defs = [CC] in { + let isCommutable = 1 in { + def ADTR : BinaryRRFa<"adtr", 0xB3D2, null_frag, FP64, FP64, FP64>; + def AXTR : BinaryRRFa<"axtr", 0xB3DA, null_frag, FP128, FP128, FP128>; + } + let Predicates = [FeatureFPExtension] in { + def ADTRA : TernaryRRFa<"adtra", 0xB3D2, FP64, FP64, FP64>; + def AXTRA : TernaryRRFa<"axtra", 0xB3DA, FP128, FP128, FP128>; + } +} + +// Subtraction. +let Defs = [CC] in { + def SDTR : BinaryRRFa<"sdtr", 0xB3D3, null_frag, FP64, FP64, FP64>; + def SXTR : BinaryRRFa<"sxtr", 0xB3DB, null_frag, FP128, FP128, FP128>; + let Predicates = [FeatureFPExtension] in { + def SDTRA : TernaryRRFa<"sdtra", 0xB3D3, FP64, FP64, FP64>; + def SXTRA : TernaryRRFa<"sxtra", 0xB3DB, FP128, FP128, FP128>; + } +} + +// Multiplication. +let isCommutable = 1 in { + def MDTR : BinaryRRFa<"mdtr", 0xB3D0, null_frag, FP64, FP64, FP64>; + def MXTR : BinaryRRFa<"mxtr", 0xB3D8, null_frag, FP128, FP128, FP128>; +} +let Predicates = [FeatureFPExtension] in { + def MDTRA : TernaryRRFa<"mdtra", 0xB3D0, FP64, FP64, FP64>; + def MXTRA : TernaryRRFa<"mxtra", 0xB3D8, FP128, FP128, FP128>; +} + +// Division. +def DDTR : BinaryRRFa<"ddtr", 0xB3D1, null_frag, FP64, FP64, FP64>; +def DXTR : BinaryRRFa<"dxtr", 0xB3D9, null_frag, FP128, FP128, FP128>; +let Predicates = [FeatureFPExtension] in { + def DDTRA : TernaryRRFa<"ddtra", 0xB3D1, FP64, FP64, FP64>; + def DXTRA : TernaryRRFa<"dxtra", 0xB3D9, FP128, FP128, FP128>; +} + +// Quantize. +def QADTR : TernaryRRFb<"qadtr", 0xB3F5, FP64, FP64, FP64>; +def QAXTR : TernaryRRFb<"qaxtr", 0xB3FD, FP128, FP128, FP128>; + +// Reround. +def RRDTR : TernaryRRFb<"rrdtr", 0xB3F7, FP64, FP64, FP64>; +def RRXTR : TernaryRRFb<"rrxtr", 0xB3FF, FP128, FP128, FP128>; + +// Shift significand left/right. +def SLDT : BinaryRXF<"sldt", 0xED40, null_frag, FP64, FP64, null_frag, 0>; +def SLXT : BinaryRXF<"slxt", 0xED48, null_frag, FP128, FP128, null_frag, 0>; +def SRDT : BinaryRXF<"srdt", 0xED41, null_frag, FP64, FP64, null_frag, 0>; +def SRXT : BinaryRXF<"srxt", 0xED49, null_frag, FP128, FP128, null_frag, 0>; + +// Insert biased exponent. +def IEDTR : BinaryRRFb<"iedtr", 0xB3F6, null_frag, FP64, FP64, FP64>; +def IEXTR : BinaryRRFb<"iextr", 0xB3FE, null_frag, FP128, FP128, FP128>; + + +//===----------------------------------------------------------------------===// +// Comparisons +//===----------------------------------------------------------------------===// + +// Compare. +let Defs = [CC] in { + def CDTR : CompareRRE<"cdtr", 0xB3E4, null_frag, FP64, FP64>; + def CXTR : CompareRRE<"cxtr", 0xB3EC, null_frag, FP128, FP128>; +} + +// Compare and signal. +let Defs = [CC] in { + def KDTR : CompareRRE<"kdtr", 0xB3E0, null_frag, FP64, FP64>; + def KXTR : CompareRRE<"kxtr", 0xB3E8, null_frag, FP128, FP128>; +} + +// Compare biased exponent. +let Defs = [CC] in { + def CEDTR : CompareRRE<"cedtr", 0xB3F4, null_frag, FP64, FP64>; + def CEXTR : CompareRRE<"cextr", 0xB3FC, null_frag, FP128, FP128>; +} + +// Test Data Class. +let Defs = [CC] in { + def TDCET : TestRXE<"tdcet", 0xED50, null_frag, FP32>; + def TDCDT : TestRXE<"tdcdt", 0xED54, null_frag, FP64>; + def TDCXT : TestRXE<"tdcxt", 0xED58, null_frag, FP128>; +} + +// Test Data Group. +let Defs = [CC] in { + def TDGET : TestRXE<"tdget", 0xED51, null_frag, FP32>; + def TDGDT : TestRXE<"tdgdt", 0xED55, null_frag, FP64>; + def TDGXT : TestRXE<"tdgxt", 0xED59, null_frag, FP128>; +} + diff --git a/llvm/lib/Target/SystemZ/SystemZInstrFormats.td b/llvm/lib/Target/SystemZ/SystemZInstrFormats.td index ddef284..5f6115e 100644 --- a/llvm/lib/Target/SystemZ/SystemZInstrFormats.td +++ b/llvm/lib/Target/SystemZ/SystemZInstrFormats.td @@ -527,6 +527,22 @@ class InstRRFc op, dag outs, dag ins, string asmstr, list pattern> let Inst{3-0} = R2; } +class InstRRFd op, dag outs, dag ins, string asmstr, list pattern> + : InstSystemZ<4, outs, ins, asmstr, pattern> { + field bits<32> Inst; + field bits<32> SoftFail = 0; + + bits<4> R1; + bits<4> R2; + bits<4> M4; + + let Inst{31-16} = op; + let Inst{15-12} = 0; + let Inst{11-8} = M4; + let Inst{7-4} = R1; + let Inst{3-0} = R2; +} + class InstRRFe op, dag outs, dag ins, string asmstr, list pattern> : InstSystemZ<4, outs, ins, asmstr, pattern> { field bits<32> Inst; @@ -725,6 +741,22 @@ class InstRSLa op, dag outs, dag ins, string asmstr, list pattern> let Inst{7-0} = op{7-0}; } +class InstRSLb op, dag outs, dag ins, string asmstr, list pattern> + : InstSystemZ<6, outs, ins, asmstr, pattern> { + field bits<48> Inst; + field bits<48> SoftFail = 0; + + bits<4> R1; + bits<24> BDL2; + bits<4> M3; + + let Inst{47-40} = op{15-8}; + let Inst{39-16} = BDL2; + let Inst{15-12} = R1; + let Inst{11-8} = M3; + let Inst{7-0} = op{7-0}; +} + class InstRSYa op, dag outs, dag ins, string asmstr, list pattern> : InstSystemZ<6, outs, ins, asmstr, pattern> { field bits<48> Inst; @@ -2817,6 +2849,11 @@ multiclass BinaryMemRRFcOpt opcode, def Opt : UnaryMemRRFc; } +class BinaryRRFd opcode, RegisterOperand cls1, + RegisterOperand cls2> + : InstRRFd; + class BinaryRRFe opcode, RegisterOperand cls1, RegisterOperand cls2> : InstRRFe opcode1, bits<16> opcode2, } } +class BinaryRSL opcode, RegisterOperand cls> + : InstRSLb { + let mayLoad = 1; +} + class BinaryRX opcode, SDPatternOperator operator, RegisterOperand cls, SDPatternOperator load, bits<5> bytes, AddressingMode mode = bdxaddr12only> @@ -3315,6 +3359,13 @@ multiclass StoreBinaryRSPair rsOpcode, } } +class StoreBinaryRSL opcode, RegisterOperand cls> + : InstRSLb { + let mayStore = 1; +} + class StoreBinaryVRV opcode, bits<5> bytes, Immediate index> : InstVRV opcode, (ins bdaddr12only:$BD1, bdaddr12only:$BD2, cls:$R3), mnemonic#"\t$BD1, $BD2, $R3", []>; +class TernaryRRFa opcode, + RegisterOperand cls1, RegisterOperand cls2, + RegisterOperand cls3> + : InstRRFa; + class TernaryRRFb opcode, RegisterOperand cls1, RegisterOperand cls2, RegisterOperand cls3> diff --git a/llvm/lib/Target/SystemZ/SystemZScheduleZ13.td b/llvm/lib/Target/SystemZ/SystemZScheduleZ13.td index 0a89ae3..5f5f2f6 100644 --- a/llvm/lib/Target/SystemZ/SystemZScheduleZ13.td +++ b/llvm/lib/Target/SystemZ/SystemZScheduleZ13.td @@ -1016,6 +1016,130 @@ def : InstRW<[VecXsPm, Lat4], (instregex "C(E|D)R$")>; def : InstRW<[VecDF, VecDF, Lat20, GroupAlone], (instregex "CXR$")>; +// ------------------------ Decimal floating point -------------------------- // + +//===----------------------------------------------------------------------===// +// DFP: Move instructions +//===----------------------------------------------------------------------===// + +// Load and Test +def : InstRW<[VecDF], (instregex "LTDTR$")>; +def : InstRW<[VecDF2, VecDF2, Lat11, GroupAlone], (instregex "LTXTR$")>; + +//===----------------------------------------------------------------------===// +// DFP: Conversion instructions +//===----------------------------------------------------------------------===// + +// Load rounded +def : InstRW<[VecDF, Lat15], (instregex "LEDTR$")>; +def : InstRW<[VecDF, VecDF, Lat20], (instregex "LDXTR$")>; + +// Load lengthened +def : InstRW<[VecDF], (instregex "LDETR$")>; +def : InstRW<[VecDF2, VecDF2, Lat11, GroupAlone], (instregex "LXDTR$")>; + +// Convert from fixed / logical +def : InstRW<[FXb, VecDF, Lat30, BeginGroup], (instregex "CD(F|G)TR(A)?$")>; +def : InstRW<[FXb, VecDF2, VecDF2, Lat30, GroupAlone], (instregex "CX(F|G)TR(A)?$")>; +def : InstRW<[FXb, VecDF, Lat30, BeginGroup], (instregex "CDL(F|G)TR$")>; +def : InstRW<[FXb, VecDF2, VecDF2, Lat30, GroupAlone], (instregex "CXL(F|G)TR$")>; + +// Convert to fixed / logical +def : InstRW<[FXb, VecDF, Lat30, BeginGroup], (instregex "C(F|G)DTR(A)?$")>; +def : InstRW<[FXb, VecDF, VecDF, Lat30, BeginGroup], (instregex "C(F|G)XTR(A)?$")>; +def : InstRW<[FXb, VecDF, Lat30, BeginGroup], (instregex "CL(F|G)DTR$")>; +def : InstRW<[FXb, VecDF, VecDF, Lat30, BeginGroup], (instregex "CL(F|G)XTR$")>; + +// Convert from / to signed / unsigned packed +def : InstRW<[FXb, VecDF, Lat9, BeginGroup], (instregex "CD(S|U)TR$")>; +def : InstRW<[FXb, FXb, VecDF2, VecDF2, Lat15, GroupAlone], (instregex "CX(S|U)TR$")>; +def : InstRW<[FXb, VecDF, Lat12, BeginGroup], (instregex "C(S|U)DTR$")>; +def : InstRW<[FXb, FXb, VecDF2, VecDF2, Lat15, BeginGroup], (instregex "C(S|U)XTR$")>; + +// Convert from / to zoned +def : InstRW<[LSU, VecDF, Lat11, BeginGroup], (instregex "CDZT$")>; +def : InstRW<[LSU, LSU, VecDF2, VecDF2, Lat15, GroupAlone], (instregex "CXZT$")>; +def : InstRW<[FXb, LSU, VecDF, Lat11, BeginGroup], (instregex "CZDT$")>; +def : InstRW<[FXb, LSU, VecDF, VecDF, Lat15, GroupAlone], (instregex "CZXT$")>; + +// Convert from / to packed +def : InstRW<[LSU, VecDF, Lat11, BeginGroup], (instregex "CDPT$")>; +def : InstRW<[LSU, LSU, VecDF2, VecDF2, Lat15, GroupAlone], (instregex "CXPT$")>; +def : InstRW<[FXb, LSU, VecDF, Lat11, BeginGroup], (instregex "CPDT$")>; +def : InstRW<[FXb, LSU, VecDF, VecDF, Lat15, GroupAlone], (instregex "CPXT$")>; + +// Perform floating-point operation +def : InstRW<[LSU, Lat30, GroupAlone], (instregex "PFPO$")>; + +//===----------------------------------------------------------------------===// +// DFP: Unary arithmetic +//===----------------------------------------------------------------------===// + +// Load FP integer +def : InstRW<[VecDF], (instregex "FIDTR$")>; +def : InstRW<[VecDF2, VecDF2, Lat11, GroupAlone], (instregex "FIXTR$")>; + +// Extract biased exponent +def : InstRW<[FXb, VecDF, Lat12, BeginGroup], (instregex "EEDTR$")>; +def : InstRW<[FXb, VecDF, Lat12, BeginGroup], (instregex "EEXTR$")>; + +// Extract significance +def : InstRW<[FXb, VecDF, Lat12, BeginGroup], (instregex "ESDTR$")>; +def : InstRW<[FXb, VecDF, VecDF, Lat15, BeginGroup], (instregex "ESXTR$")>; + +//===----------------------------------------------------------------------===// +// DFP: Binary arithmetic +//===----------------------------------------------------------------------===// + +// Addition +def : InstRW<[VecDF], (instregex "ADTR(A)?$")>; +def : InstRW<[VecDF2, VecDF2, Lat11, GroupAlone], (instregex "AXTR(A)?$")>; + +// Subtraction +def : InstRW<[VecDF], (instregex "SDTR(A)?$")>; +def : InstRW<[VecDF2, VecDF2, Lat11, GroupAlone], (instregex "SXTR(A)?$")>; + +// Multiply +def : InstRW<[VecDF, Lat30], (instregex "MDTR(A)?$")>; +def : InstRW<[VecDF2, VecDF2, Lat30, GroupAlone], (instregex "MXTR(A)?$")>; + +// Division +def : InstRW<[VecDF, Lat30], (instregex "DDTR(A)?$")>; +def : InstRW<[VecDF2, VecDF2, Lat30, GroupAlone], (instregex "DXTR(A)?$")>; + +// Quantize +def : InstRW<[VecDF], (instregex "QADTR$")>; +def : InstRW<[VecDF2, VecDF2, Lat11, GroupAlone], (instregex "QAXTR$")>; + +// Reround +def : InstRW<[FXb, VecDF, Lat11], (instregex "RRDTR$")>; +def : InstRW<[FXb, VecDF2, VecDF2, Lat15, GroupAlone], (instregex "RRXTR$")>; + +// Shift significand left/right +def : InstRW<[LSU, VecDF, Lat11], (instregex "S(L|R)DT$")>; +def : InstRW<[LSU, VecDF2, VecDF2, Lat15, GroupAlone], (instregex "S(L|R)XT$")>; + +// Insert biased exponent +def : InstRW<[FXb, VecDF, Lat11], (instregex "IEDTR$")>; +def : InstRW<[FXb, VecDF2, VecDF2, Lat15, GroupAlone], (instregex "IEXTR$")>; + +//===----------------------------------------------------------------------===// +// DFP: Comparisons +//===----------------------------------------------------------------------===// + +// Compare +def : InstRW<[VecDF], (instregex "(K|C)DTR$")>; +def : InstRW<[VecDF, VecDF, Lat11, GroupAlone], (instregex "(K|C)XTR$")>; + +// Compare biased exponent +def : InstRW<[VecDF], (instregex "CEDTR$")>; +def : InstRW<[VecDF], (instregex "CEXTR$")>; + +// Test Data Class/Group +def : InstRW<[LSU, VecDF, Lat11], (instregex "TD(C|G)(E|D)T$")>; +def : InstRW<[LSU, VecDF2, VecDF2, Lat15, GroupAlone], (instregex "TD(C|G)XT$")>; + + // --------------------------------- Vector --------------------------------- // //===----------------------------------------------------------------------===// diff --git a/llvm/lib/Target/SystemZ/SystemZScheduleZ196.td b/llvm/lib/Target/SystemZ/SystemZScheduleZ196.td index 5eaa5ad..126eac2 100644 --- a/llvm/lib/Target/SystemZ/SystemZScheduleZ196.td +++ b/llvm/lib/Target/SystemZ/SystemZScheduleZ196.td @@ -946,5 +946,117 @@ def : InstRW<[FPU, LSU, Lat12], (instregex "C(E|D)$")>; def : InstRW<[FPU], (instregex "C(E|D)R$")>; def : InstRW<[FPU, FPU, Lat15], (instregex "CXR$")>; + +// ------------------------ Decimal floating point -------------------------- // + +//===----------------------------------------------------------------------===// +// DFP: Move instructions +//===----------------------------------------------------------------------===// + +// Load and Test +def : InstRW<[DFU, Lat20], (instregex "LTDTR$")>; +def : InstRW<[DFU2, DFU2, Lat20, GroupAlone], (instregex "LTXTR$")>; + +//===----------------------------------------------------------------------===// +// DFP: Conversion instructions +//===----------------------------------------------------------------------===// + +// Load rounded +def : InstRW<[DFU, Lat30], (instregex "LEDTR$")>; +def : InstRW<[DFU, DFU, Lat30], (instregex "LDXTR$")>; + +// Load lengthened +def : InstRW<[DFU, Lat20], (instregex "LDETR$")>; +def : InstRW<[DFU2, DFU2, Lat20, GroupAlone], (instregex "LXDTR$")>; + +// Convert from fixed / logical +def : InstRW<[FXU, DFU, Lat30, GroupAlone], (instregex "CD(F|G)TR(A)?$")>; +def : InstRW<[FXU, DFU2, DFU2, Lat30, GroupAlone], (instregex "CX(F|G)TR(A)?$")>; +def : InstRW<[FXU, DFU, Lat11, GroupAlone], (instregex "CDL(F|G)TR$")>; +def : InstRW<[FXU, DFU2, DFU2, Lat11, GroupAlone], (instregex "CXL(F|G)TR$")>; + +// Convert to fixed / logical +def : InstRW<[FXU, DFU, Lat30, GroupAlone], (instregex "C(F|G)DTR(A)?$")>; +def : InstRW<[FXU, DFU, DFU, Lat30, GroupAlone], (instregex "C(F|G)XTR(A)?$")>; +def : InstRW<[FXU, DFU, Lat30, GroupAlone], (instregex "CL(F|G)DTR$")>; +def : InstRW<[FXU, DFU, DFU, Lat30, GroupAlone], (instregex "CL(F|G)XTR$")>; + +// Convert from / to signed / unsigned packed +def : InstRW<[FXU, DFU, Lat12, GroupAlone], (instregex "CD(S|U)TR$")>; +def : InstRW<[FXU, FXU, DFU2, DFU2, Lat20, GroupAlone], (instregex "CX(S|U)TR$")>; +def : InstRW<[FXU, DFU, Lat12, GroupAlone], (instregex "C(S|U)DTR$")>; +def : InstRW<[FXU, FXU, DFU2, DFU2, Lat20, GroupAlone], (instregex "C(S|U)XTR$")>; + +// Perform floating-point operation +def : InstRW<[LSU, Lat30, GroupAlone], (instregex "PFPO$")>; + +//===----------------------------------------------------------------------===// +// DFP: Unary arithmetic +//===----------------------------------------------------------------------===// + +// Load FP integer +def : InstRW<[DFU, Lat20], (instregex "FIDTR$")>; +def : InstRW<[DFU2, DFU2, Lat20, GroupAlone], (instregex "FIXTR$")>; + +// Extract biased exponent +def : InstRW<[FXU, DFU, Lat15, GroupAlone], (instregex "EEDTR$")>; +def : InstRW<[FXU, DFU, Lat15, GroupAlone], (instregex "EEXTR$")>; + +// Extract significance +def : InstRW<[FXU, DFU, Lat15, GroupAlone], (instregex "ESDTR$")>; +def : InstRW<[FXU, DFU, DFU, Lat20, GroupAlone], (instregex "ESXTR$")>; + +//===----------------------------------------------------------------------===// +// DFP: Binary arithmetic +//===----------------------------------------------------------------------===// + +// Addition +def : InstRW<[DFU, Lat30], (instregex "ADTR(A)?$")>; +def : InstRW<[DFU2, DFU2, Lat30, GroupAlone], (instregex "AXTR(A)?$")>; + +// Subtraction +def : InstRW<[DFU, Lat30], (instregex "SDTR(A)?$")>; +def : InstRW<[DFU2, DFU2, Lat30, GroupAlone], (instregex "SXTR(A)?$")>; + +// Multiply +def : InstRW<[DFU, Lat30], (instregex "MDTR(A)?$")>; +def : InstRW<[DFU2, DFU2, Lat30, GroupAlone], (instregex "MXTR(A)?$")>; + +// Division +def : InstRW<[DFU, Lat30], (instregex "DDTR(A)?$")>; +def : InstRW<[DFU2, DFU2, Lat30, GroupAlone], (instregex "DXTR(A)?$")>; + +// Quantize +def : InstRW<[DFU, Lat30], (instregex "QADTR$")>; +def : InstRW<[DFU2, DFU2, Lat30, GroupAlone], (instregex "QAXTR$")>; + +// Reround +def : InstRW<[FXU, DFU, Lat30], (instregex "RRDTR$")>; +def : InstRW<[FXU, DFU2, DFU2, Lat30, GroupAlone], (instregex "RRXTR$")>; + +// Shift significand left/right +def : InstRW<[LSU, DFU, Lat11], (instregex "S(L|R)DT$")>; +def : InstRW<[LSU, DFU2, DFU2, Lat15, GroupAlone], (instregex "S(L|R)XT$")>; + +// Insert biased exponent +def : InstRW<[FXU, DFU, Lat11], (instregex "IEDTR$")>; +def : InstRW<[FXU, DFU2, DFU2, Lat15, GroupAlone], (instregex "IEXTR$")>; + +//===----------------------------------------------------------------------===// +// DFP: Comparisons +//===----------------------------------------------------------------------===// + +// Compare +def : InstRW<[DFU, Lat11], (instregex "(K|C)DTR$")>; +def : InstRW<[DFU, DFU, Lat15, GroupAlone], (instregex "(K|C)XTR$")>; + +// Compare biased exponent +def : InstRW<[DFU, Lat8], (instregex "CEDTR$")>; +def : InstRW<[DFU, Lat9], (instregex "CEXTR$")>; + +// Test Data Class/Group +def : InstRW<[LSU, DFU, Lat15], (instregex "TD(C|G)(E|D)T$")>; +def : InstRW<[LSU, DFU2, DFU2, Lat15, GroupAlone], (instregex "TD(C|G)XT$")>; + } diff --git a/llvm/lib/Target/SystemZ/SystemZScheduleZEC12.td b/llvm/lib/Target/SystemZ/SystemZScheduleZEC12.td index c016054..d38ca64d 100644 --- a/llvm/lib/Target/SystemZ/SystemZScheduleZEC12.td +++ b/llvm/lib/Target/SystemZ/SystemZScheduleZEC12.td @@ -984,5 +984,123 @@ def : InstRW<[FPU, LSU, Lat12], (instregex "C(E|D)$")>; def : InstRW<[FPU], (instregex "C(E|D)R$")>; def : InstRW<[FPU, FPU, Lat15], (instregex "CXR$")>; + +// ------------------------ Decimal floating point -------------------------- // + +//===----------------------------------------------------------------------===// +// DFP: Move instructions +//===----------------------------------------------------------------------===// + +// Load and Test +def : InstRW<[DFU, Lat20], (instregex "LTDTR$")>; +def : InstRW<[DFU2, DFU2, Lat20, GroupAlone], (instregex "LTXTR$")>; + +//===----------------------------------------------------------------------===// +// DFP: Conversion instructions +//===----------------------------------------------------------------------===// + +// Load rounded +def : InstRW<[DFU, Lat30], (instregex "LEDTR$")>; +def : InstRW<[DFU, DFU, Lat30], (instregex "LDXTR$")>; + +// Load lengthened +def : InstRW<[DFU, Lat20], (instregex "LDETR$")>; +def : InstRW<[DFU2, DFU2, Lat20, GroupAlone], (instregex "LXDTR$")>; + +// Convert from fixed / logical +def : InstRW<[FXU, DFU, Lat30, GroupAlone], (instregex "CD(F|G)TR(A)?$")>; +def : InstRW<[FXU, DFU2, DFU2, Lat30, GroupAlone], (instregex "CX(F|G)TR(A)?$")>; +def : InstRW<[FXU, DFU, Lat11, GroupAlone], (instregex "CDL(F|G)TR$")>; +def : InstRW<[FXU, DFU2, DFU2, Lat11, GroupAlone], (instregex "CXL(F|G)TR$")>; + +// Convert to fixed / logical +def : InstRW<[FXU, DFU, Lat30, GroupAlone], (instregex "C(F|G)DTR(A)?$")>; +def : InstRW<[FXU, DFU, DFU, Lat30, GroupAlone], (instregex "C(F|G)XTR(A)?$")>; +def : InstRW<[FXU, DFU, Lat30, GroupAlone], (instregex "CL(F|G)DTR$")>; +def : InstRW<[FXU, DFU, DFU, Lat30, GroupAlone], (instregex "CL(F|G)XTR$")>; + +// Convert from / to signed / unsigned packed +def : InstRW<[FXU, DFU, Lat12, GroupAlone], (instregex "CD(S|U)TR$")>; +def : InstRW<[FXU, FXU, DFU2, DFU2, Lat20, GroupAlone], (instregex "CX(S|U)TR$")>; +def : InstRW<[FXU, DFU, Lat12, GroupAlone], (instregex "C(S|U)DTR$")>; +def : InstRW<[FXU, FXU, DFU2, DFU2, Lat20, GroupAlone], (instregex "C(S|U)XTR$")>; + +// Convert from / to zoned +def : InstRW<[LSU, DFU2, Lat7, GroupAlone], (instregex "CDZT$")>; +def : InstRW<[LSU, LSU, DFU2, DFU2, Lat10, GroupAlone], (instregex "CXZT$")>; +def : InstRW<[FXU, LSU, DFU, Lat11, GroupAlone], (instregex "CZDT$")>; +def : InstRW<[FXU, LSU, DFU, DFU, Lat15, GroupAlone], (instregex "CZXT$")>; + +// Perform floating-point operation +def : InstRW<[LSU, Lat30, GroupAlone], (instregex "PFPO$")>; + +//===----------------------------------------------------------------------===// +// DFP: Unary arithmetic +//===----------------------------------------------------------------------===// + +// Load FP integer +def : InstRW<[DFU, Lat20], (instregex "FIDTR$")>; +def : InstRW<[DFU2, DFU2, Lat20, GroupAlone], (instregex "FIXTR$")>; + +// Extract biased exponent +def : InstRW<[FXU, DFU, Lat15, GroupAlone], (instregex "EEDTR$")>; +def : InstRW<[FXU, DFU, Lat15, GroupAlone], (instregex "EEXTR$")>; + +// Extract significance +def : InstRW<[FXU, DFU, Lat15, GroupAlone], (instregex "ESDTR$")>; +def : InstRW<[FXU, DFU, DFU, Lat20, GroupAlone], (instregex "ESXTR$")>; + +//===----------------------------------------------------------------------===// +// DFP: Binary arithmetic +//===----------------------------------------------------------------------===// + +// Addition +def : InstRW<[DFU, Lat30], (instregex "ADTR(A)?$")>; +def : InstRW<[DFU2, DFU2, Lat30, GroupAlone], (instregex "AXTR(A)?$")>; + +// Subtraction +def : InstRW<[DFU, Lat30], (instregex "SDTR(A)?$")>; +def : InstRW<[DFU2, DFU2, Lat30, GroupAlone], (instregex "SXTR(A)?$")>; + +// Multiply +def : InstRW<[DFU, Lat30], (instregex "MDTR(A)?$")>; +def : InstRW<[DFU2, DFU2, Lat30, GroupAlone], (instregex "MXTR(A)?$")>; + +// Division +def : InstRW<[DFU, Lat30], (instregex "DDTR(A)?$")>; +def : InstRW<[DFU2, DFU2, Lat30, GroupAlone], (instregex "DXTR(A)?$")>; + +// Quantize +def : InstRW<[DFU, Lat30], (instregex "QADTR$")>; +def : InstRW<[DFU2, DFU2, Lat30, GroupAlone], (instregex "QAXTR$")>; + +// Reround +def : InstRW<[FXU, DFU, Lat30], (instregex "RRDTR$")>; +def : InstRW<[FXU, DFU2, DFU2, Lat30, GroupAlone], (instregex "RRXTR$")>; + +// Shift significand left/right +def : InstRW<[LSU, DFU, Lat11], (instregex "S(L|R)DT$")>; +def : InstRW<[LSU, DFU2, DFU2, Lat15, GroupAlone], (instregex "S(L|R)XT$")>; + +// Insert biased exponent +def : InstRW<[FXU, DFU, Lat11], (instregex "IEDTR$")>; +def : InstRW<[FXU, DFU2, DFU2, Lat15, GroupAlone], (instregex "IEXTR$")>; + +//===----------------------------------------------------------------------===// +// DFP: Comparisons +//===----------------------------------------------------------------------===// + +// Compare +def : InstRW<[DFU, Lat11], (instregex "(K|C)DTR$")>; +def : InstRW<[DFU, DFU, Lat15, GroupAlone], (instregex "(K|C)XTR$")>; + +// Compare biased exponent +def : InstRW<[DFU, Lat8], (instregex "CEDTR$")>; +def : InstRW<[DFU, Lat9], (instregex "CEXTR$")>; + +// Test Data Class/Group +def : InstRW<[LSU, DFU, Lat15], (instregex "TD(C|G)(E|D)T$")>; +def : InstRW<[LSU, DFU2, DFU2, Lat15, GroupAlone], (instregex "TD(C|G)XT$")>; + } diff --git a/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp b/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp index 022679a..0ab0c2f 100644 --- a/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp +++ b/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp @@ -42,8 +42,10 @@ SystemZSubtarget::SystemZSubtarget(const Triple &TT, const std::string &CPU, HasMiscellaneousExtensions(false), HasExecutionHint(false), HasLoadAndTrap(false), HasTransactionalExecution(false), HasProcessorAssist(false), + HasDFPZonedConversion(false), HasVector(false), HasLoadStoreOnCond2(false), HasLoadAndZeroRightmostByte(false), HasMessageSecurityAssist5(false), + HasDFPPackedConversion(false), TargetTriple(TT), InstrInfo(initializeSubtargetDependencies(CPU, FS)), TLInfo(TM, *this), TSInfo(), FrameLowering() {} diff --git a/llvm/lib/Target/SystemZ/SystemZSubtarget.h b/llvm/lib/Target/SystemZ/SystemZSubtarget.h index 770dd7c..36e5192 100644 --- a/llvm/lib/Target/SystemZ/SystemZSubtarget.h +++ b/llvm/lib/Target/SystemZ/SystemZSubtarget.h @@ -47,10 +47,12 @@ protected: bool HasLoadAndTrap; bool HasTransactionalExecution; bool HasProcessorAssist; + bool HasDFPZonedConversion; bool HasVector; bool HasLoadStoreOnCond2; bool HasLoadAndZeroRightmostByte; bool HasMessageSecurityAssist5; + bool HasDFPPackedConversion; private: Triple TargetTriple; @@ -133,6 +135,9 @@ public: // Return true if the target has the processor-assist facility. bool hasProcessorAssist() const { return HasProcessorAssist; } + // Return true if the target has the DFP zoned-conversion facility. + bool hasDFPZonedConversion() const { return HasDFPZonedConversion; } + // Return true if the target has the load-and-zero-rightmost-byte facility. bool hasLoadAndZeroRightmostByte() const { return HasLoadAndZeroRightmostByte; @@ -142,6 +147,9 @@ public: // extension facility 5. bool hasMessageSecurityAssist5() const { return HasMessageSecurityAssist5; } + // Return true if the target has the DFP packed-conversion facility. + bool hasDFPPackedConversion() const { return HasDFPPackedConversion; } + // Return true if the target has the vector facility. bool hasVector() const { return HasVector; } diff --git a/llvm/test/MC/Disassembler/SystemZ/insns-z13.txt b/llvm/test/MC/Disassembler/SystemZ/insns-z13.txt index 4f5ec43..c48bdee 100644 --- a/llvm/test/MC/Disassembler/SystemZ/insns-z13.txt +++ b/llvm/test/MC/Disassembler/SystemZ/insns-z13.txt @@ -2,6 +2,114 @@ # RUN: llvm-mc --disassemble %s -triple=s390x-linux-gnu -mcpu=z13 \ # RUN: | FileCheck %s +# CHECK: cdpt %f0, 0(1), 0 +0xed 0x00 0x00 0x00 0x00 0xae + +# CHECK: cdpt %f15, 0(1), 0 +0xed 0x00 0x00 0x00 0xf0 0xae + +# CHECK: cdpt %f0, 0(1), 15 +0xed 0x00 0x00 0x00 0x0f 0xae + +# CHECK: cdpt %f0, 0(1,%r1), 0 +0xed 0x00 0x10 0x00 0x00 0xae + +# CHECK: cdpt %f0, 0(1,%r15), 0 +0xed 0x00 0xf0 0x00 0x00 0xae + +# CHECK: cdpt %f0, 4095(1,%r1), 0 +0xed 0x00 0x1f 0xff 0x00 0xae + +# CHECK: cdpt %f0, 4095(1,%r15), 0 +0xed 0x00 0xff 0xff 0x00 0xae + +# CHECK: cdpt %f0, 0(256,%r1), 0 +0xed 0xff 0x10 0x00 0x00 0xae + +# CHECK: cdpt %f0, 0(256,%r15), 0 +0xed 0xff 0xf0 0x00 0x00 0xae + +# CHECK: cpdt %f0, 0(1), 0 +0xed 0x00 0x00 0x00 0x00 0xac + +# CHECK: cpdt %f15, 0(1), 0 +0xed 0x00 0x00 0x00 0xf0 0xac + +# CHECK: cpdt %f0, 0(1), 15 +0xed 0x00 0x00 0x00 0x0f 0xac + +# CHECK: cpdt %f0, 0(1,%r1), 0 +0xed 0x00 0x10 0x00 0x00 0xac + +# CHECK: cpdt %f0, 0(1,%r15), 0 +0xed 0x00 0xf0 0x00 0x00 0xac + +# CHECK: cpdt %f0, 4095(1,%r1), 0 +0xed 0x00 0x1f 0xff 0x00 0xac + +# CHECK: cpdt %f0, 4095(1,%r15), 0 +0xed 0x00 0xff 0xff 0x00 0xac + +# CHECK: cpdt %f0, 0(256,%r1), 0 +0xed 0xff 0x10 0x00 0x00 0xac + +# CHECK: cpdt %f0, 0(256,%r15), 0 +0xed 0xff 0xf0 0x00 0x00 0xac + +# CHECK: cpxt %f0, 0(1), 0 +0xed 0x00 0x00 0x00 0x00 0xad + +# CHECK: cpxt %f13, 0(1), 0 +0xed 0x00 0x00 0x00 0xd0 0xad + +# CHECK: cpxt %f0, 0(1), 15 +0xed 0x00 0x00 0x00 0x0f 0xad + +# CHECK: cpxt %f0, 0(1,%r1), 0 +0xed 0x00 0x10 0x00 0x00 0xad + +# CHECK: cpxt %f0, 0(1,%r15), 0 +0xed 0x00 0xf0 0x00 0x00 0xad + +# CHECK: cpxt %f0, 4095(1,%r1), 0 +0xed 0x00 0x1f 0xff 0x00 0xad + +# CHECK: cpxt %f0, 4095(1,%r15), 0 +0xed 0x00 0xff 0xff 0x00 0xad + +# CHECK: cpxt %f0, 0(256,%r1), 0 +0xed 0xff 0x10 0x00 0x00 0xad + +# CHECK: cpxt %f0, 0(256,%r15), 0 +0xed 0xff 0xf0 0x00 0x00 0xad + +# CHECK: cxpt %f0, 0(1), 0 +0xed 0x00 0x00 0x00 0x00 0xaf + +# CHECK: cxpt %f13, 0(1), 0 +0xed 0x00 0x00 0x00 0xd0 0xaf + +# CHECK: cxpt %f0, 0(1), 15 +0xed 0x00 0x00 0x00 0x0f 0xaf + +# CHECK: cxpt %f0, 0(1,%r1), 0 +0xed 0x00 0x10 0x00 0x00 0xaf + +# CHECK: cxpt %f0, 0(1,%r15), 0 +0xed 0x00 0xf0 0x00 0x00 0xaf + +# CHECK: cxpt %f0, 4095(1,%r1), 0 +0xed 0x00 0x1f 0xff 0x00 0xaf + +# CHECK: cxpt %f0, 4095(1,%r15), 0 +0xed 0x00 0xff 0xff 0x00 0xaf + +# CHECK: cxpt %f0, 0(256,%r1), 0 +0xed 0xff 0x10 0x00 0x00 0xaf + +# CHECK: cxpt %f0, 0(256,%r15), 0 +0xed 0xff 0xf0 0x00 0x00 0xaf + # CHECK: lcbb %r0, 0, 0 0xe7 0x00 0x00 0x00 0x00 0x27 diff --git a/llvm/test/MC/Disassembler/SystemZ/insns.txt b/llvm/test/MC/Disassembler/SystemZ/insns.txt index 6917021..75f7f96 100644 --- a/llvm/test/MC/Disassembler/SystemZ/insns.txt +++ b/llvm/test/MC/Disassembler/SystemZ/insns.txt @@ -88,6 +88,39 @@ # CHECK: adr %f15, %f0 0x2a 0xf0 +# CHECK: adtr %f0, %f0, %f0 +0xb3 0xd2 0x00 0x00 + +# CHECK: adtr %f0, %f0, %f15 +0xb3 0xd2 0xf0 0x00 + +# CHECK: adtr %f0, %f15, %f0 +0xb3 0xd2 0x00 0x0f + +# CHECK: adtr %f15, %f0, %f0 +0xb3 0xd2 0x00 0xf0 + +# CHECK: adtr %f7, %f8, %f9 +0xb3 0xd2 0x90 0x78 + +# CHECK: adtra %f0, %f0, %f0, 1 +0xb3 0xd2 0x01 0x00 + +# CHECK: adtra %f0, %f0, %f0, 15 +0xb3 0xd2 0x0f 0x00 + +# CHECK: adtra %f0, %f0, %f15, 1 +0xb3 0xd2 0xf1 0x00 + +# CHECK: adtra %f0, %f15, %f0, 1 +0xb3 0xd2 0x01 0x0f + +# CHECK: adtra %f15, %f0, %f0, 1 +0xb3 0xd2 0x01 0xf0 + +# CHECK: adtra %f7, %f8, %f9, 10 +0xb3 0xd2 0x9a 0x78 + # CHECK: ae %f0, 0 0x7a 0x00 0x00 0x00 @@ -1012,6 +1045,39 @@ # CHECK: axr %f13, %f0 0x36 0xd0 +# CHECK: axtr %f0, %f0, %f0 +0xb3 0xda 0x00 0x00 + +# CHECK: axtr %f0, %f0, %f13 +0xb3 0xda 0xd0 0x00 + +# CHECK: axtr %f0, %f13, %f0 +0xb3 0xda 0x00 0x0d + +# CHECK: axtr %f13, %f0, %f0 +0xb3 0xda 0x00 0xd0 + +# CHECK: axtr %f8, %f8, %f8 +0xb3 0xda 0x80 0x88 + +# CHECK: axtra %f0, %f0, %f0, 1 +0xb3 0xda 0x01 0x00 + +# CHECK: axtra %f0, %f0, %f0, 15 +0xb3 0xda 0x0f 0x00 + +# CHECK: axtra %f0, %f0, %f13, 1 +0xb3 0xda 0xd1 0x00 + +# CHECK: axtra %f0, %f13, %f0, 1 +0xb3 0xda 0x01 0x0d + +# CHECK: axtra %f13, %f0, %f0, 1 +0xb3 0xda 0x01 0xd0 + +# CHECK: axtra %f8, %f8, %f8, 8 +0xb3 0xda 0x88 0x88 + # CHECK: ay %r0, -524288 0xe3 0x00 0x00 0x00 0x80 0x5a @@ -1594,6 +1660,24 @@ # CHECK: cdfr %f15, %r15 0xb3 0xb5 0x00 0xff +# CHECK: cdftr %f0, 0, %r0, 0 +0xb9 0x51 0x00 0x00 + +# CHECK: cdftr %f0, 0, %r0, 15 +0xb9 0x51 0x0f 0x00 + +# CHECK: cdftr %f0, 0, %r15, 0 +0xb9 0x51 0x00 0x0f + +# CHECK: cdftr %f0, 15, %r0, 0 +0xb9 0x51 0xf0 0x00 + +# CHECK: cdftr %f4, 5, %r6, 7 +0xb9 0x51 0x57 0x46 + +# CHECK: cdftr %f15, 0, %r0, 0 +0xb9 0x51 0x00 0xf0 + # CHECK: cdgbr %f0, %r0 0xb3 0xa5 0x00 0x00 @@ -1642,6 +1726,39 @@ # CHECK: cdgr %f15, %r15 0xb3 0xc5 0x00 0xff +# CHECK: cdgtr %f0, %r0 +0xb3 0xf1 0x00 0x00 + +# CHECK: cdgtr %f0, %r15 +0xb3 0xf1 0x00 0x0f + +# CHECK: cdgtr %f15, %r0 +0xb3 0xf1 0x00 0xf0 + +# CHECK: cdgtr %f7, %r8 +0xb3 0xf1 0x00 0x78 + +# CHECK: cdgtr %f15, %r15 +0xb3 0xf1 0x00 0xff + +# CHECK: cdgtra %f0, 0, %r0, 1 +0xb3 0xf1 0x01 0x00 + +# CHECK: cdgtra %f0, 0, %r0, 15 +0xb3 0xf1 0x0f 0x00 + +# CHECK: cdgtra %f0, 0, %r15, 1 +0xb3 0xf1 0x01 0x0f + +# CHECK: cdgtra %f0, 15, %r0, 1 +0xb3 0xf1 0xf1 0x00 + +# CHECK: cdgtra %f4, 5, %r6, 7 +0xb3 0xf1 0x57 0x46 + +# CHECK: cdgtra %f15, 0, %r0, 1 +0xb3 0xf1 0x01 0xf0 + # CHECK: cdlfbr %f0, 0, %r0, 1 0xb3 0x91 0x01 0x00 @@ -1660,6 +1777,24 @@ # CHECK: cdlfbr %f15, 0, %r0, 1 0xb3 0x91 0x01 0xf0 +# CHECK: cdlftr %f0, 0, %r0, 0 +0xb9 0x53 0x00 0x00 + +# CHECK: cdlftr %f0, 0, %r0, 15 +0xb9 0x53 0x0f 0x00 + +# CHECK: cdlftr %f0, 0, %r15, 0 +0xb9 0x53 0x00 0x0f + +# CHECK: cdlftr %f0, 15, %r0, 0 +0xb9 0x53 0xf0 0x00 + +# CHECK: cdlftr %f4, 5, %r6, 7 +0xb9 0x53 0x57 0x46 + +# CHECK: cdlftr %f15, 0, %r0, 0 +0xb9 0x53 0x00 0xf0 + # CHECK: cdlgbr %f0, 0, %r0, 1 0xb3 0xa1 0x01 0x00 @@ -1678,6 +1813,24 @@ # CHECK: cdlgbr %f15, 0, %r0, 1 0xb3 0xa1 0x01 0xf0 +# CHECK: cdlgtr %f0, 0, %r0, 0 +0xb9 0x52 0x00 0x00 + +# CHECK: cdlgtr %f0, 0, %r0, 15 +0xb9 0x52 0x0f 0x00 + +# CHECK: cdlgtr %f0, 0, %r15, 0 +0xb9 0x52 0x00 0x0f + +# CHECK: cdlgtr %f0, 15, %r0, 0 +0xb9 0x52 0xf0 0x00 + +# CHECK: cdlgtr %f4, 5, %r6, 7 +0xb9 0x52 0x57 0x46 + +# CHECK: cdlgtr %f15, 0, %r0, 0 +0xb9 0x52 0x00 0xf0 + # CHECK: cdr %f0, %f0 0x29 0x00 @@ -1747,6 +1900,21 @@ # CHECK: cdsg %r14, %r0, 0 0xeb 0xe0 0x00 0x00 0x00 0x3e +# CHECK: cdstr %f0, %r0 +0xb3 0xf3 0x00 0x00 + +# CHECK: cdstr %f0, %r15 +0xb3 0xf3 0x00 0x0f + +# CHECK: cdstr %f15, %r0 +0xb3 0xf3 0x00 0xf0 + +# CHECK: cdstr %f7, %r8 +0xb3 0xf3 0x00 0x78 + +# CHECK: cdstr %f15, %r15 +0xb3 0xf3 0x00 0xff + # CHECK: cdsy %r0, %r0, -524288 0xeb 0x00 0x00 0x00 0x80 0x31 @@ -1780,6 +1948,60 @@ # CHECK: cdsy %r14, %r0, 0 0xeb 0xe0 0x00 0x00 0x00 0x31 +# CHECK: cdtr %f0, %f0 +0xb3 0xe4 0x00 0x00 + +# CHECK: cdtr %f0, %f15 +0xb3 0xe4 0x00 0x0f + +# CHECK: cdtr %f7, %f8 +0xb3 0xe4 0x00 0x78 + +# CHECK: cdtr %f15, %f0 +0xb3 0xe4 0x00 0xf0 + +# CHECK: cdutr %f0, %r0 +0xb3 0xf2 0x00 0x00 + +# CHECK: cdutr %f0, %r15 +0xb3 0xf2 0x00 0x0f + +# CHECK: cdutr %f15, %r0 +0xb3 0xf2 0x00 0xf0 + +# CHECK: cdutr %f7, %r8 +0xb3 0xf2 0x00 0x78 + +# CHECK: cdutr %f15, %r15 +0xb3 0xf2 0x00 0xff + +# CHECK: cdzt %f0, 0(1), 0 +0xed 0x00 0x00 0x00 0x00 0xaa + +# CHECK: cdzt %f15, 0(1), 0 +0xed 0x00 0x00 0x00 0xf0 0xaa + +# CHECK: cdzt %f0, 0(1), 15 +0xed 0x00 0x00 0x00 0x0f 0xaa + +# CHECK: cdzt %f0, 0(1,%r1), 0 +0xed 0x00 0x10 0x00 0x00 0xaa + +# CHECK: cdzt %f0, 0(1,%r15), 0 +0xed 0x00 0xf0 0x00 0x00 0xaa + +# CHECK: cdzt %f0, 4095(1,%r1), 0 +0xed 0x00 0x1f 0xff 0x00 0xaa + +# CHECK: cdzt %f0, 4095(1,%r15), 0 +0xed 0x00 0xff 0xff 0x00 0xaa + +# CHECK: cdzt %f0, 0(256,%r1), 0 +0xed 0xff 0x10 0x00 0x00 0xaa + +# CHECK: cdzt %f0, 0(256,%r15), 0 +0xed 0xff 0xf0 0x00 0x00 0xaa + # CHECK: ce %f0, 0 0x79 0x00 0x00 0x00 @@ -1834,6 +2056,18 @@ # CHECK: cebr %f15, %f0 0xb3 0x09 0x00 0xf0 +# CHECK: cedtr %f0, %f0 +0xb3 0xf4 0x00 0x00 + +# CHECK: cedtr %f0, %f15 +0xb3 0xf4 0x00 0x0f + +# CHECK: cedtr %f7, %f8 +0xb3 0xf4 0x00 0x78 + +# CHECK: cedtr %f15, %f0 +0xb3 0xf4 0x00 0xf0 + # CHECK: cefbr %f0, %r0 0xb3 0x94 0x00 0x00 @@ -1978,6 +2212,18 @@ # CHECK: cer %f15, %f0 0x39 0xf0 +# CHECK: cextr %f0, %f0 +0xb3 0xfc 0x00 0x00 + +# CHECK: cextr %f0, %f13 +0xb3 0xfc 0x00 0x0d + +# CHECK: cextr %f8, %f8 +0xb3 0xfc 0x00 0x88 + +# CHECK: cextr %f13, %f0 +0xb3 0xfc 0x00 0xd0 + # CHECK: cfc 0 0xb2 0x1a 0x00 0x00 @@ -2044,6 +2290,24 @@ # CHECK: cfdr %r15, 0, %f0 0xb3 0xb9 0x00 0xf0 +# CHECK: cfdtr %r0, 0, %f0, 0 +0xb9 0x41 0x00 0x00 + +# CHECK: cfdtr %r0, 0, %f0, 15 +0xb9 0x41 0x0f 0x00 + +# CHECK: cfdtr %r0, 0, %f15, 0 +0xb9 0x41 0x00 0x0f + +# CHECK: cfdtr %r0, 15, %f0, 0 +0xb9 0x41 0xf0 0x00 + +# CHECK: cfdtr %r4, 5, %f6, 7 +0xb9 0x41 0x57 0x46 + +# CHECK: cfdtr %r15, 0, %f0, 0 +0xb9 0x41 0x00 0xf0 + # CHECK: cfebr %r0, 0, %f0 0xb3 0x98 0x00 0x00 @@ -2158,6 +2422,24 @@ # CHECK: cfxr %r15, 0, %f0 0xb3 0xba 0x00 0xf0 +# CHECK: cfxtr %r0, 0, %f0, 0 +0xb9 0x49 0x00 0x00 + +# CHECK: cfxtr %r0, 0, %f0, 15 +0xb9 0x49 0x0f 0x00 + +# CHECK: cfxtr %r0, 0, %f13, 0 +0xb9 0x49 0x00 0x0d + +# CHECK: cfxtr %r0, 15, %f0, 0 +0xb9 0x49 0xf0 0x00 + +# CHECK: cfxtr %r7, 5, %f8, 9 +0xb9 0x49 0x59 0x78 + +# CHECK: cfxtr %r15, 0, %f0, 0 +0xb9 0x49 0x00 0xf0 + # CHECK: cg %r0, -524288 0xe3 0x00 0x00 0x00 0x80 0x20 @@ -2236,6 +2518,39 @@ # CHECK: cgdr %r15, 0, %f0 0xb3 0xc9 0x00 0xf0 +# CHECK: cgdtr %r0, 0, %f0 +0xb3 0xe1 0x00 0x00 + +# CHECK: cgdtr %r0, 0, %f15 +0xb3 0xe1 0x00 0x0f + +# CHECK: cgdtr %r0, 15, %f0 +0xb3 0xe1 0xf0 0x00 + +# CHECK: cgdtr %r4, 5, %f6 +0xb3 0xe1 0x50 0x46 + +# CHECK: cgdtr %r15, 0, %f0 +0xb3 0xe1 0x00 0xf0 + +# CHECK: cgdtra %r0, 0, %f0, 1 +0xb3 0xe1 0x01 0x00 + +# CHECK: cgdtra %r0, 0, %f0, 15 +0xb3 0xe1 0x0f 0x00 + +# CHECK: cgdtra %r0, 0, %f15, 1 +0xb3 0xe1 0x01 0x0f + +# CHECK: cgdtra %r0, 15, %f0, 1 +0xb3 0xe1 0xf1 0x00 + +# CHECK: cgdtra %r4, 5, %f6, 7 +0xb3 0xe1 0x57 0x46 + +# CHECK: cgdtra %r15, 0, %f0, 1 +0xb3 0xe1 0x01 0xf0 + # CHECK: cgebr %r0, 0, %f0 0xb3 0xa8 0x00 0x00 @@ -2659,6 +2974,39 @@ # CHECK: cgxr %r15, 0, %f0 0xb3 0xca 0x00 0xf0 +# CHECK: cgxtr %r0, 0, %f0 +0xb3 0xe9 0x00 0x00 + +# CHECK: cgxtr %r0, 0, %f13 +0xb3 0xe9 0x00 0x0d + +# CHECK: cgxtr %r0, 15, %f0 +0xb3 0xe9 0xf0 0x00 + +# CHECK: cgxtr %r4, 5, %f8 +0xb3 0xe9 0x50 0x48 + +# CHECK: cgxtr %r15, 0, %f0 +0xb3 0xe9 0x00 0xf0 + +# CHECK: cgxtra %r0, 0, %f0, 1 +0xb3 0xe9 0x01 0x00 + +# CHECK: cgxtra %r0, 0, %f0, 15 +0xb3 0xe9 0x0f 0x00 + +# CHECK: cgxtra %r0, 0, %f13, 1 +0xb3 0xe9 0x01 0x0d + +# CHECK: cgxtra %r0, 15, %f0, 1 +0xb3 0xe9 0xf1 0x00 + +# CHECK: cgxtra %r7, 5, %f8, 9 +0xb3 0xe9 0x59 0x78 + +# CHECK: cgxtra %r15, 0, %f0, 1 +0xb3 0xe9 0x01 0xf0 + # CHECK: ch %r0, 0 0x49 0x00 0x00 0x00 @@ -3082,6 +3430,24 @@ # CHECK: clfdbr %r15, 0, %f0, 1 0xb3 0x9d 0x01 0xf0 +# CHECK: clfdtr %r0, 0, %f0, 0 +0xb9 0x43 0x00 0x00 + +# CHECK: clfdtr %r0, 0, %f0, 15 +0xb9 0x43 0x0f 0x00 + +# CHECK: clfdtr %r0, 0, %f15, 0 +0xb9 0x43 0x00 0x0f + +# CHECK: clfdtr %r0, 15, %f0, 0 +0xb9 0x43 0xf0 0x00 + +# CHECK: clfdtr %r4, 5, %f6, 7 +0xb9 0x43 0x57 0x46 + +# CHECK: clfdtr %r15, 0, %f0, 0 +0xb9 0x43 0x00 0xf0 + # CHECK: clfebr %r0, 0, %f0, 1 0xb3 0x9c 0x01 0x00 @@ -3118,6 +3484,24 @@ # CHECK: clfxbr %r15, 0, %f0, 1 0xb3 0x9e 0x01 0xf0 +# CHECK: clfxtr %r0, 0, %f0, 0 +0xb9 0x4b 0x00 0x00 + +# CHECK: clfxtr %r0, 0, %f0, 15 +0xb9 0x4b 0x0f 0x00 + +# CHECK: clfxtr %r0, 0, %f13, 0 +0xb9 0x4b 0x00 0x0d + +# CHECK: clfxtr %r0, 15, %f0, 0 +0xb9 0x4b 0xf0 0x00 + +# CHECK: clfxtr %r7, 5, %f8, 9 +0xb9 0x4b 0x59 0x78 + +# CHECK: clfxtr %r15, 0, %f0, 0 +0xb9 0x4b 0x00 0xf0 + # CHECK: clgdbr %r0, 0, %f0, 1 0xb3 0xad 0x01 0x00 @@ -3136,6 +3520,24 @@ # CHECK: clgdbr %r15, 0, %f0, 1 0xb3 0xad 0x01 0xf0 +# CHECK: clgdtr %r0, 0, %f0, 0 +0xb9 0x42 0x00 0x00 + +# CHECK: clgdtr %r0, 0, %f0, 15 +0xb9 0x42 0x0f 0x00 + +# CHECK: clgdtr %r0, 0, %f15, 0 +0xb9 0x42 0x00 0x0f + +# CHECK: clgdtr %r0, 15, %f0, 0 +0xb9 0x42 0xf0 0x00 + +# CHECK: clgdtr %r4, 5, %f6, 7 +0xb9 0x42 0x57 0x46 + +# CHECK: clgdtr %r15, 0, %f0, 0 +0xb9 0x42 0x00 0xf0 + # CHECK: clgebr %r0, 0, %f0, 1 0xb3 0xac 0x01 0x00 @@ -3244,6 +3646,24 @@ # CHECK: clgxbr %r15, 0, %f0, 1 0xb3 0xae 0x01 0xf0 +# CHECK: clgxtr %r0, 0, %f0, 0 +0xb9 0x4a 0x00 0x00 + +# CHECK: clgxtr %r0, 0, %f0, 15 +0xb9 0x4a 0x0f 0x00 + +# CHECK: clgxtr %r0, 0, %f13, 0 +0xb9 0x4a 0x00 0x0d + +# CHECK: clgxtr %r0, 15, %f0, 0 +0xb9 0x4a 0xf0 0x00 + +# CHECK: clgxtr %r7, 5, %f8, 9 +0xb9 0x4a 0x59 0x78 + +# CHECK: clgxtr %r15, 0, %f0, 0 +0xb9 0x4a 0x00 0xf0 + # CHECK: clfhsi 0, 0 0xe5 0x5d 0x00 0x00 0x00 0x00 @@ -4204,6 +4624,21 @@ # CHECK: cs %r15, %r0, 0 0xba 0xf0 0x00 0x00 +# CHECK: csdtr %r0, %f0, 0 +0xb3 0xe3 0x00 0x00 + +# CHECK: csdtr %r0, %f15, 0 +0xb3 0xe3 0x00 0x0f + +# CHECK: csdtr %r0, %f0, 15 +0xb3 0xe3 0x0f 0x00 + +# CHECK: csdtr %r4, %f5, 6 +0xb3 0xe3 0x06 0x45 + +# CHECK: csdtr %r15, %f0, 0 +0xb3 0xe3 0x00 0xf0 + # CHECK: csg %r0, %r0, -524288 0xeb 0x00 0x00 0x00 0x80 0x30 @@ -4258,6 +4693,21 @@ # CHECK: csst 4095(%r1), 0(%r15), %r2 0xc8 0x22 0x1f 0xff 0xf0 0x00 +# CHECK: csxtr %r0, %f0, 0 +0xb3 0xeb 0x00 0x00 + +# CHECK: csxtr %r0, %f13, 0 +0xb3 0xeb 0x00 0x0d + +# CHECK: csxtr %r0, %f0, 15 +0xb3 0xeb 0x0f 0x00 + +# CHECK: csxtr %r4, %f5, 6 +0xb3 0xeb 0x06 0x45 + +# CHECK: csxtr %r14, %f0, 0 +0xb3 0xeb 0x00 0xe0 + # CHECK: csy %r0, %r0, -524288 0xeb 0x00 0x00 0x00 0x80 0x14 @@ -4387,6 +4837,21 @@ # CHECK: cu42 %r6, %r8 0xb9 0xb3 0x00 0x68 +# CHECK: cudtr %r0, %f0 +0xb3 0xe2 0x00 0x00 + +# CHECK: cudtr %r0, %f15 +0xb3 0xe2 0x00 0x0f + +# CHECK: cudtr %r15, %f0 +0xb3 0xe2 0x00 0xf0 + +# CHECK: cudtr %r7, %f8 +0xb3 0xe2 0x00 0x78 + +# CHECK: cudtr %r15, %f15 +0xb3 0xe2 0x00 0xff + # CHECK: cuse %r0, %r0 0xb2 0x57 0x00 0x00 @@ -4399,6 +4864,21 @@ # CHECK: cuse %r6, %r8 0xb2 0x57 0x00 0x68 +# CHECK: cuxtr %r0, %f0 +0xb3 0xea 0x00 0x00 + +# CHECK: cuxtr %r0, %f13 +0xb3 0xea 0x00 0x0d + +# CHECK: cuxtr %r14, %f0 +0xb3 0xea 0x00 0xe0 + +# CHECK: cuxtr %r6, %f8 +0xb3 0xea 0x00 0x68 + +# CHECK: cuxtr %r14, %f13 +0xb3 0xea 0x00 0xed + # CHECK: cvb %r0, 0 0x4f 0x00 0x00 0x00 @@ -4621,6 +5101,24 @@ # CHECK: cxfr %f13, %r15 0xb3 0xb6 0x00 0xdf +# CHECK: cxftr %f0, 0, %r0, 0 +0xb9 0x59 0x00 0x00 + +# CHECK: cxftr %f0, 0, %r0, 15 +0xb9 0x59 0x0f 0x00 + +# CHECK: cxftr %f0, 0, %r15, 0 +0xb9 0x59 0x00 0x0f + +# CHECK: cxftr %f0, 15, %r0, 0 +0xb9 0x59 0xf0 0x00 + +# CHECK: cxftr %f4, 5, %r9, 10 +0xb9 0x59 0x5a 0x49 + +# CHECK: cxftr %f13, 0, %r0, 0 +0xb9 0x59 0x00 0xd0 + # CHECK: cxgbr %f0, %r0 0xb3 0xa6 0x00 0x00 @@ -4669,6 +5167,39 @@ # CHECK: cxgr %f13, %r15 0xb3 0xc6 0x00 0xdf +# CHECK: cxgtr %f0, %r0 +0xb3 0xf9 0x00 0x00 + +# CHECK: cxgtr %f0, %r15 +0xb3 0xf9 0x00 0x0f + +# CHECK: cxgtr %f13, %r0 +0xb3 0xf9 0x00 0xd0 + +# CHECK: cxgtr %f8, %r7 +0xb3 0xf9 0x00 0x87 + +# CHECK: cxgtr %f13, %r15 +0xb3 0xf9 0x00 0xdf + +# CHECK: cxgtra %f0, 0, %r0, 1 +0xb3 0xf9 0x01 0x00 + +# CHECK: cxgtra %f0, 0, %r0, 15 +0xb3 0xf9 0x0f 0x00 + +# CHECK: cxgtra %f0, 0, %r15, 1 +0xb3 0xf9 0x01 0x0f + +# CHECK: cxgtra %f0, 15, %r0, 1 +0xb3 0xf9 0xf1 0x00 + +# CHECK: cxgtra %f4, 5, %r9, 10 +0xb3 0xf9 0x5a 0x49 + +# CHECK: cxgtra %f13, 0, %r0, 1 +0xb3 0xf9 0x01 0xd0 + # CHECK: cxlfbr %f0, 0, %r0, 1 0xb3 0x92 0x01 0x00 @@ -4687,6 +5218,24 @@ # CHECK: cxlfbr %f13, 0, %r0, 1 0xb3 0x92 0x01 0xd0 +# CHECK: cxlftr %f0, 0, %r0, 0 +0xb9 0x5b 0x00 0x00 + +# CHECK: cxlftr %f0, 0, %r0, 15 +0xb9 0x5b 0x0f 0x00 + +# CHECK: cxlftr %f0, 0, %r15, 0 +0xb9 0x5b 0x00 0x0f + +# CHECK: cxlftr %f0, 15, %r0, 0 +0xb9 0x5b 0xf0 0x00 + +# CHECK: cxlftr %f4, 5, %r9, 10 +0xb9 0x5b 0x5a 0x49 + +# CHECK: cxlftr %f13, 0, %r0, 0 +0xb9 0x5b 0x00 0xd0 + # CHECK: cxlgbr %f0, 0, %r0, 1 0xb3 0xa2 0x01 0x00 @@ -4705,6 +5254,24 @@ # CHECK: cxlgbr %f13, 0, %r0, 1 0xb3 0xa2 0x01 0xd0 +# CHECK: cxlgtr %f0, 0, %r0, 0 +0xb9 0x5a 0x00 0x00 + +# CHECK: cxlgtr %f0, 0, %r0, 15 +0xb9 0x5a 0x0f 0x00 + +# CHECK: cxlgtr %f0, 0, %r15, 0 +0xb9 0x5a 0x00 0x0f + +# CHECK: cxlgtr %f0, 15, %r0, 0 +0xb9 0x5a 0xf0 0x00 + +# CHECK: cxlgtr %f4, 5, %r9, 10 +0xb9 0x5a 0x5a 0x49 + +# CHECK: cxlgtr %f13, 0, %r0, 0 +0xb9 0x5a 0x00 0xd0 + # CHECK: cxr %f0, %f0 0xb3 0x69 0x00 0x00 @@ -4717,6 +5284,75 @@ # CHECK: cxr %f13, %f0 0xb3 0x69 0x00 0xd0 +# CHECK: cxstr %f0, %r0 +0xb3 0xfb 0x00 0x00 + +# CHECK: cxstr %f0, %r14 +0xb3 0xfb 0x00 0x0e + +# CHECK: cxstr %f13, %r0 +0xb3 0xfb 0x00 0xd0 + +# CHECK: cxstr %f8, %r6 +0xb3 0xfb 0x00 0x86 + +# CHECK: cxstr %f13, %r14 +0xb3 0xfb 0x00 0xde + +# CHECK: cxtr %f0, %f0 +0xb3 0xec 0x00 0x00 + +# CHECK: cxtr %f0, %f13 +0xb3 0xec 0x00 0x0d + +# CHECK: cxtr %f8, %f8 +0xb3 0xec 0x00 0x88 + +# CHECK: cxtr %f13, %f0 +0xb3 0xec 0x00 0xd0 + +# CHECK: cxutr %f0, %r0 +0xb3 0xfa 0x00 0x00 + +# CHECK: cxutr %f0, %r14 +0xb3 0xfa 0x00 0x0e + +# CHECK: cxutr %f13, %r0 +0xb3 0xfa 0x00 0xd0 + +# CHECK: cxutr %f8, %r6 +0xb3 0xfa 0x00 0x86 + +# CHECK: cxutr %f13, %r14 +0xb3 0xfa 0x00 0xde + +# CHECK: cxzt %f0, 0(1), 0 +0xed 0x00 0x00 0x00 0x00 0xab + +# CHECK: cxzt %f13, 0(1), 0 +0xed 0x00 0x00 0x00 0xd0 0xab + +# CHECK: cxzt %f0, 0(1), 15 +0xed 0x00 0x00 0x00 0x0f 0xab + +# CHECK: cxzt %f0, 0(1,%r1), 0 +0xed 0x00 0x10 0x00 0x00 0xab + +# CHECK: cxzt %f0, 0(1,%r15), 0 +0xed 0x00 0xf0 0x00 0x00 0xab + +# CHECK: cxzt %f0, 4095(1,%r1), 0 +0xed 0x00 0x1f 0xff 0x00 0xab + +# CHECK: cxzt %f0, 4095(1,%r15), 0 +0xed 0x00 0xff 0xff 0x00 0xab + +# CHECK: cxzt %f0, 0(256,%r1), 0 +0xed 0xff 0x10 0x00 0x00 0xab + +# CHECK: cxzt %f0, 0(256,%r15), 0 +0xed 0xff 0xf0 0x00 0x00 0xab + # CHECK: cy %r0, -524288 0xe3 0x00 0x00 0x00 0x80 0x59 @@ -4747,6 +5383,60 @@ # CHECK: cy %r15, 0 0xe3 0xf0 0x00 0x00 0x00 0x59 +# CHECK: czdt %f0, 0(1), 0 +0xed 0x00 0x00 0x00 0x00 0xa8 + +# CHECK: czdt %f15, 0(1), 0 +0xed 0x00 0x00 0x00 0xf0 0xa8 + +# CHECK: czdt %f0, 0(1), 15 +0xed 0x00 0x00 0x00 0x0f 0xa8 + +# CHECK: czdt %f0, 0(1,%r1), 0 +0xed 0x00 0x10 0x00 0x00 0xa8 + +# CHECK: czdt %f0, 0(1,%r15), 0 +0xed 0x00 0xf0 0x00 0x00 0xa8 + +# CHECK: czdt %f0, 4095(1,%r1), 0 +0xed 0x00 0x1f 0xff 0x00 0xa8 + +# CHECK: czdt %f0, 4095(1,%r15), 0 +0xed 0x00 0xff 0xff 0x00 0xa8 + +# CHECK: czdt %f0, 0(256,%r1), 0 +0xed 0xff 0x10 0x00 0x00 0xa8 + +# CHECK: czdt %f0, 0(256,%r15), 0 +0xed 0xff 0xf0 0x00 0x00 0xa8 + +# CHECK: czxt %f0, 0(1), 0 +0xed 0x00 0x00 0x00 0x00 0xa9 + +# CHECK: czxt %f13, 0(1), 0 +0xed 0x00 0x00 0x00 0xd0 0xa9 + +# CHECK: czxt %f0, 0(1), 15 +0xed 0x00 0x00 0x00 0x0f 0xa9 + +# CHECK: czxt %f0, 0(1,%r1), 0 +0xed 0x00 0x10 0x00 0x00 0xa9 + +# CHECK: czxt %f0, 0(1,%r15), 0 +0xed 0x00 0xf0 0x00 0x00 0xa9 + +# CHECK: czxt %f0, 4095(1,%r1), 0 +0xed 0x00 0x1f 0xff 0x00 0xa9 + +# CHECK: czxt %f0, 4095(1,%r15), 0 +0xed 0x00 0xff 0xff 0x00 0xa9 + +# CHECK: czxt %f0, 0(256,%r1), 0 +0xed 0xff 0x10 0x00 0x00 0xa9 + +# CHECK: czxt %f0, 0(256,%r15), 0 +0xed 0xff 0xf0 0x00 0x00 0xa9 + # CHECK: d %r0, 0 0x5d 0x00 0x00 0x00 @@ -4834,6 +5524,39 @@ # CHECK: ddr %f15, %f0 0x2d 0xf0 +# CHECK: ddtr %f0, %f0, %f0 +0xb3 0xd1 0x00 0x00 + +# CHECK: ddtr %f0, %f0, %f15 +0xb3 0xd1 0xf0 0x00 + +# CHECK: ddtr %f0, %f15, %f0 +0xb3 0xd1 0x00 0x0f + +# CHECK: ddtr %f15, %f0, %f0 +0xb3 0xd1 0x00 0xf0 + +# CHECK: ddtr %f7, %f8, %f9 +0xb3 0xd1 0x90 0x78 + +# CHECK: ddtra %f0, %f0, %f0, 1 +0xb3 0xd1 0x01 0x00 + +# CHECK: ddtra %f0, %f0, %f0, 15 +0xb3 0xd1 0x0f 0x00 + +# CHECK: ddtra %f0, %f0, %f15, 1 +0xb3 0xd1 0xf1 0x00 + +# CHECK: ddtra %f0, %f15, %f0, 1 +0xb3 0xd1 0x01 0x0f + +# CHECK: ddtra %f15, %f0, %f0, 1 +0xb3 0xd1 0x01 0xf0 + +# CHECK: ddtra %f7, %f8, %f9, 10 +0xb3 0xd1 0x9a 0x78 + # CHECK: de %f0, 0 0x7d 0x00 0x00 0x00 @@ -5182,6 +5905,39 @@ # CHECK: dxr %f13, %f0 0xb2 0x2d 0x00 0xd0 +# CHECK: dxtr %f0, %f0, %f0 +0xb3 0xd9 0x00 0x00 + +# CHECK: dxtr %f0, %f0, %f13 +0xb3 0xd9 0xd0 0x00 + +# CHECK: dxtr %f0, %f13, %f0 +0xb3 0xd9 0x00 0x0d + +# CHECK: dxtr %f13, %f0, %f0 +0xb3 0xd9 0x00 0xd0 + +# CHECK: dxtr %f8, %f8, %f8 +0xb3 0xd9 0x80 0x88 + +# CHECK: dxtra %f0, %f0, %f0, 1 +0xb3 0xd9 0x01 0x00 + +# CHECK: dxtra %f0, %f0, %f0, 15 +0xb3 0xd9 0x0f 0x00 + +# CHECK: dxtra %f0, %f0, %f13, 1 +0xb3 0xd9 0xd1 0x00 + +# CHECK: dxtra %f0, %f13, %f0, 1 +0xb3 0xd9 0x01 0x0d + +# CHECK: dxtra %f13, %f0, %f0, 1 +0xb3 0xd9 0x01 0xd0 + +# CHECK: dxtra %f8, %f8, %f8, 8 +0xb3 0xd9 0x88 0x88 + # CHECK: ear %r0, %a0 0xb2 0x4f 0x00 0x00 @@ -5329,6 +6085,30 @@ # CHECK: edmk 0(256,%r15), 0 0xdf 0xff 0xf0 0x00 0x00 0x00 +# CHECK: eedtr %f0, %f9 +0xb3 0xe5 0x00 0x09 + +# CHECK: eedtr %f0, %f15 +0xb3 0xe5 0x00 0x0f + +# CHECK: eedtr %f15, %f0 +0xb3 0xe5 0x00 0xf0 + +# CHECK: eedtr %f15, %f9 +0xb3 0xe5 0x00 0xf9 + +# CHECK: eextr %f0, %f8 +0xb3 0xed 0x00 0x08 + +# CHECK: eextr %f0, %f13 +0xb3 0xed 0x00 0x0d + +# CHECK: eextr %f13, %f0 +0xb3 0xed 0x00 0xd0 + +# CHECK: eextr %f13, %f9 +0xb3 0xed 0x00 0xd9 + # CHECK: efpc %r0 0xb3 0x8c 0x00 0x00 @@ -5350,6 +6130,30 @@ # CHECK: epsw %r6, %r8 0xb9 0x8d 0x00 0x68 +# CHECK: esdtr %f0, %f9 +0xb3 0xe7 0x00 0x09 + +# CHECK: esdtr %f0, %f15 +0xb3 0xe7 0x00 0x0f + +# CHECK: esdtr %f15, %f0 +0xb3 0xe7 0x00 0xf0 + +# CHECK: esdtr %f15, %f9 +0xb3 0xe7 0x00 0xf9 + +# CHECK: esxtr %f0, %f8 +0xb3 0xef 0x00 0x08 + +# CHECK: esxtr %f0, %f13 +0xb3 0xef 0x00 0x0d + +# CHECK: esxtr %f13, %f0 +0xb3 0xef 0x00 0xd0 + +# CHECK: esxtr %f13, %f9 +0xb3 0xef 0x00 0xd9 + # CHECK: etnd %r0 0xb2 0xec 0x00 0x00 @@ -5425,6 +6229,24 @@ # CHECK: fidr %f15, %f0 0xb3 0x7f 0x00 0xf0 +# CHECK: fidtr %f0, 0, %f0, 0 +0xb3 0xd7 0x00 0x00 + +# CHECK: fidtr %f0, 0, %f0, 15 +0xb3 0xd7 0x0f 0x00 + +# CHECK: fidtr %f0, 0, %f15, 0 +0xb3 0xd7 0x00 0x0f + +# CHECK: fidtr %f0, 15, %f0, 0 +0xb3 0xd7 0xf0 0x00 + +# CHECK: fidtr %f4, 5, %f6, 7 +0xb3 0xd7 0x57 0x46 + +# CHECK: fidtr %f15, 0, %f0, 0 +0xb3 0xd7 0x00 0xf0 + # CHECK: fiebr %f0, 0, %f0 0xb3 0x57 0x00 0x00 @@ -5515,6 +6337,24 @@ # CHECK: fixr %f13, %f0 0xb3 0x67 0x00 0xd0 +# CHECK: fixtr %f0, 0, %f0, 0 +0xb3 0xdf 0x00 0x00 + +# CHECK: fixtr %f0, 0, %f0, 15 +0xb3 0xdf 0x0f 0x00 + +# CHECK: fixtr %f0, 0, %f13, 0 +0xb3 0xdf 0x00 0x0d + +# CHECK: fixtr %f0, 15, %f0, 0 +0xb3 0xdf 0xf0 0x00 + +# CHECK: fixtr %f4, 5, %f8, 9 +0xb3 0xdf 0x59 0x48 + +# CHECK: fixtr %f13, 0, %f0, 0 +0xb3 0xdf 0x00 0xd0 + # CHECK: flogr %r0, %r0 0xb9 0x83 0x00 0x00 @@ -5683,6 +6523,42 @@ # CHECK: icy %r15, 0 0xe3 0xf0 0x00 0x00 0x00 0x73 +# CHECK: iedtr %f0, %f0, %f0 +0xb3 0xf6 0x00 0x00 + +# CHECK: iedtr %f0, %f0, %f15 +0xb3 0xf6 0x00 0x0f + +# CHECK: iedtr %f0, %f15, %f0 +0xb3 0xf6 0xf0 0x00 + +# CHECK: iedtr %f15, %f0, %f0 +0xb3 0xf6 0x00 0xf0 + +# CHECK: iedtr %f1, %f2, %f3 +0xb3 0xf6 0x20 0x13 + +# CHECK: iedtr %f15, %f15, %f15 +0xb3 0xf6 0xf0 0xff + +# CHECK: iextr %f0, %f0, %f0 +0xb3 0xfe 0x00 0x00 + +# CHECK: iextr %f0, %f0, %f13 +0xb3 0xfe 0x00 0x0d + +# CHECK: iextr %f0, %f13, %f0 +0xb3 0xfe 0xd0 0x00 + +# CHECK: iextr %f13, %f0, %f0 +0xb3 0xfe 0x00 0xd0 + +# CHECK: iextr %f1, %f8, %f4 +0xb3 0xfe 0x80 0x14 + +# CHECK: iextr %f13, %f13, %f13 +0xb3 0xfe 0xd0 0xdd + # CHECK: iihf %r0, 0 0xc0 0x08 0x00 0x00 0x00 0x00 @@ -5791,6 +6667,18 @@ # CHECK: kdbr %f15, %f0 0xb3 0x18 0x00 0xf0 +# CHECK: kdtr %f0, %f0 +0xb3 0xe0 0x00 0x00 + +# CHECK: kdtr %f0, %f15 +0xb3 0xe0 0x00 0x0f + +# CHECK: kdtr %f7, %f8 +0xb3 0xe0 0x00 0x78 + +# CHECK: kdtr %f15, %f0 +0xb3 0xe0 0x00 0xf0 + # CHECK: keb %f0, 0 0xed 0x00 0x00 0x00 0x00 0x08 @@ -5932,6 +6820,18 @@ # CHECK: kxbr %f13, %f0 0xb3 0x48 0x00 0xd0 +# CHECK: kxtr %f0, %f0 +0xb3 0xe8 0x00 0x00 + +# CHECK: kxtr %f0, %f13 +0xb3 0xe8 0x00 0x0d + +# CHECK: kxtr %f8, %f8 +0xb3 0xe8 0x00 0x88 + +# CHECK: kxtr %f13, %f0 +0xb3 0xe8 0x00 0xd0 + # CHECK: l %r0, 0 0x58 0x00 0x00 0x00 @@ -6741,6 +7641,18 @@ # CHECK: lder %f15, %f0 0xb3 0x24 0x00 0xf0 +# CHECK: ldetr %f0, %f0, 15 +0xb3 0xd4 0x0f 0x00 + +# CHECK: ldetr %f0, %f15, 0 +0xb3 0xd4 0x00 0x0f + +# CHECK: ldetr %f7, %f8, 9 +0xb3 0xd4 0x09 0x78 + +# CHECK: ldetr %f15, %f0, 0 +0xb3 0xd4 0x00 0xf0 + # CHECK: ldgr %f0, %r0 0xb3 0xc1 0x00 0x00 @@ -6816,6 +7728,24 @@ # CHECK: ldxr %f15, %f13 0x25 0xfd +# CHECK: ldxtr %f0, 0, %f0, 0 +0xb3 0xdd 0x00 0x00 + +# CHECK: ldxtr %f0, 0, %f0, 15 +0xb3 0xdd 0x0f 0x00 + +# CHECK: ldxtr %f0, 0, %f13, 0 +0xb3 0xdd 0x00 0x0d + +# CHECK: ldxtr %f0, 15, %f0, 0 +0xb3 0xdd 0xf0 0x00 + +# CHECK: ldxtr %f4, 5, %f8, 9 +0xb3 0xdd 0x59 0x48 + +# CHECK: ldxtr %f13, 0, %f0, 0 +0xb3 0xdd 0x00 0xd0 + # CHECK: ldy %f0, -524288 0xed 0x00 0x00 0x00 0x80 0x65 @@ -6915,6 +7845,21 @@ # CHECK: ledr %f15, %f15 0x35 0xff +# CHECK: ledtr %f0, 0, %f0, 15 +0xb3 0xd5 0x0f 0x00 + +# CHECK: ledtr %f0, 0, %f15, 0 +0xb3 0xd5 0x00 0x0f + +# CHECK: ledtr %f0, 15, %f0, 0 +0xb3 0xd5 0xf0 0x00 + +# CHECK: ledtr %f4, 5, %f6, 7 +0xb3 0xd5 0x57 0x46 + +# CHECK: ledtr %f15, 0, %f0, 0 +0xb3 0xd5 0x00 0xf0 + # CHECK: ler %f0, %f9 0x38 0x09 @@ -8703,6 +9648,18 @@ # CHECK: ltdr %f15, %f9 0x22 0xf9 +# CHECK: ltdtr %f0, %f9 +0xb3 0xd6 0x00 0x09 + +# CHECK: ltdtr %f0, %f15 +0xb3 0xd6 0x00 0x0f + +# CHECK: ltdtr %f15, %f0 +0xb3 0xd6 0x00 0xf0 + +# CHECK: ltdtr %f15, %f9 +0xb3 0xd6 0x00 0xf9 + # CHECK: ltebr %f0, %f9 0xb3 0x02 0x00 0x09 @@ -8847,6 +9804,18 @@ # CHECK: ltxr %f13, %f9 0xb3 0x62 0x00 0xd9 +# CHECK: ltxtr %f0, %f9 +0xb3 0xde 0x00 0x09 + +# CHECK: ltxtr %f0, %f13 +0xb3 0xde 0x00 0x0d + +# CHECK: ltxtr %f13, %f0 +0xb3 0xde 0x00 0xd0 + +# CHECK: ltxtr %f13, %f9 +0xb3 0xde 0x00 0xd9 + # CHECK: lxd %f0, 4095 0xed 0x00 0x0f 0xff 0x00 0x25 @@ -8910,6 +9879,18 @@ # CHECK: lxdr %f13, %f15 0xb3 0x25 0x00 0xdf +# CHECK: lxdtr %f0, %f0, 15 +0xb3 0xdc 0x0f 0x00 + +# CHECK: lxdtr %f0, %f15, 0 +0xb3 0xdc 0x00 0x0f + +# CHECK: lxdtr %f5, %f8, 9 +0xb3 0xdc 0x09 0x58 + +# CHECK: lxdtr %f13, %f0, 0 +0xb3 0xdc 0x00 0xd0 + # CHECK: lxe %f0, 4095 0xed 0x00 0x0f 0xff 0x00 0x26 @@ -9531,6 +10512,39 @@ # CHECK: mdr %f15, %f0 0x2c 0xf0 +# CHECK: mdtr %f0, %f0, %f0 +0xb3 0xd0 0x00 0x00 + +# CHECK: mdtr %f0, %f0, %f15 +0xb3 0xd0 0xf0 0x00 + +# CHECK: mdtr %f0, %f15, %f0 +0xb3 0xd0 0x00 0x0f + +# CHECK: mdtr %f15, %f0, %f0 +0xb3 0xd0 0x00 0xf0 + +# CHECK: mdtr %f7, %f8, %f9 +0xb3 0xd0 0x90 0x78 + +# CHECK: mdtra %f0, %f0, %f0, 1 +0xb3 0xd0 0x01 0x00 + +# CHECK: mdtra %f0, %f0, %f0, 15 +0xb3 0xd0 0x0f 0x00 + +# CHECK: mdtra %f0, %f0, %f15, 1 +0xb3 0xd0 0xf1 0x00 + +# CHECK: mdtra %f0, %f15, %f0, 1 +0xb3 0xd0 0x01 0x0f + +# CHECK: mdtra %f15, %f0, %f0, 1 +0xb3 0xd0 0x01 0xf0 + +# CHECK: mdtra %f7, %f8, %f9, 10 +0xb3 0xd0 0x9a 0x78 + # CHECK: mee %f0, 0 0xed 0x00 0x00 0x00 0x00 0x37 @@ -10737,6 +11751,39 @@ # CHECK: mxr %f13, %f13 0x26 0xdd +# CHECK: mxtr %f0, %f0, %f0 +0xb3 0xd8 0x00 0x00 + +# CHECK: mxtr %f0, %f0, %f13 +0xb3 0xd8 0xd0 0x00 + +# CHECK: mxtr %f0, %f13, %f0 +0xb3 0xd8 0x00 0x0d + +# CHECK: mxtr %f13, %f0, %f0 +0xb3 0xd8 0x00 0xd0 + +# CHECK: mxtr %f8, %f8, %f8 +0xb3 0xd8 0x80 0x88 + +# CHECK: mxtra %f0, %f0, %f0, 1 +0xb3 0xd8 0x01 0x00 + +# CHECK: mxtra %f0, %f0, %f0, 15 +0xb3 0xd8 0x0f 0x00 + +# CHECK: mxtra %f0, %f0, %f13, 1 +0xb3 0xd8 0xd1 0x00 + +# CHECK: mxtra %f0, %f13, %f0, 1 +0xb3 0xd8 0x01 0x0d + +# CHECK: mxtra %f13, %f0, %f0, 1 +0xb3 0xd8 0x01 0xd0 + +# CHECK: mxtra %f8, %f8, %f8, 8 +0xb3 0xd8 0x88 0x88 + # CHECK: my %f0, %f0, 0 0xed 0x00 0x00 0x00 0x00 0x3b @@ -11529,6 +12576,9 @@ # CHECK: pfd 15, 0 0xe3 0xf0 0x00 0x00 0x00 0x36 +# CHECK: pfpo +0x01 0x0a + # CHECK: pka 0, 0(1) 0xe9 0x00 0x00 0x00 0x00 0x00 @@ -11652,6 +12702,42 @@ # CHECK: pr 0x01 0x01 +# CHECK: qadtr %f0, %f0, %f0, 0 +0xb3 0xf5 0x00 0x00 + +# CHECK: qadtr %f0, %f0, %f0, 15 +0xb3 0xf5 0x0f 0x00 + +# CHECK: qadtr %f0, %f0, %f15, 0 +0xb3 0xf5 0x00 0x0f + +# CHECK: qadtr %f0, %f15, %f0, 0 +0xb3 0xf5 0xf0 0x00 + +# CHECK: qadtr %f4, %f5, %f6, 7 +0xb3 0xf5 0x57 0x46 + +# CHECK: qadtr %f15, %f0, %f0, 0 +0xb3 0xf5 0x00 0xf0 + +# CHECK: qaxtr %f0, %f0, %f0, 0 +0xb3 0xfd 0x00 0x00 + +# CHECK: qaxtr %f0, %f0, %f0, 15 +0xb3 0xfd 0x0f 0x00 + +# CHECK: qaxtr %f0, %f0, %f13, 0 +0xb3 0xfd 0x00 0x0d + +# CHECK: qaxtr %f0, %f13, %f0, 0 +0xb3 0xfd 0xd0 0x00 + +# CHECK: qaxtr %f8, %f8, %f8, 8 +0xb3 0xfd 0x88 0x88 + +# CHECK: qaxtr %f13, %f0, %f0, 0 +0xb3 0xfd 0x00 0xd0 + # CHECK: risbg %r0, %r0, 0, 0, 0 0xec 0x00 0x00 0x00 0x00 0x55 @@ -11850,6 +12936,42 @@ # CHECK: rosbg %r4, %r5, 6, 7, 8 0xec 0x45 0x06 0x07 0x08 0x56 +# CHECK: rrdtr %f0, %f0, %f0, 0 +0xb3 0xf7 0x00 0x00 + +# CHECK: rrdtr %f0, %f0, %f0, 15 +0xb3 0xf7 0x0f 0x00 + +# CHECK: rrdtr %f0, %f0, %f15, 0 +0xb3 0xf7 0x00 0x0f + +# CHECK: rrdtr %f0, %f15, %f0, 0 +0xb3 0xf7 0xf0 0x00 + +# CHECK: rrdtr %f4, %f5, %f6, 7 +0xb3 0xf7 0x57 0x46 + +# CHECK: rrdtr %f15, %f0, %f0, 0 +0xb3 0xf7 0x00 0xf0 + +# CHECK: rrxtr %f0, %f0, %f0, 0 +0xb3 0xff 0x00 0x00 + +# CHECK: rrxtr %f0, %f0, %f0, 15 +0xb3 0xff 0x0f 0x00 + +# CHECK: rrxtr %f0, %f0, %f13, 0 +0xb3 0xff 0x00 0x0d + +# CHECK: rrxtr %f0, %f13, %f0, 0 +0xb3 0xff 0xd0 0x00 + +# CHECK: rrxtr %f8, %f8, %f8, 8 +0xb3 0xff 0x88 0x88 + +# CHECK: rrxtr %f13, %f0, %f0, 0 +0xb3 0xff 0x00 0xd0 + # CHECK: rxsbg %r0, %r0, 0, 0, 0 0xec 0x00 0x00 0x00 0x00 0x57 @@ -11982,6 +13104,39 @@ # CHECK: sdr %f15, %f0 0x2b 0xf0 +# CHECK: sdtr %f0, %f0, %f0 +0xb3 0xd3 0x00 0x00 + +# CHECK: sdtr %f0, %f0, %f15 +0xb3 0xd3 0xf0 0x00 + +# CHECK: sdtr %f0, %f15, %f0 +0xb3 0xd3 0x00 0x0f + +# CHECK: sdtr %f15, %f0, %f0 +0xb3 0xd3 0x00 0xf0 + +# CHECK: sdtr %f7, %f8, %f9 +0xb3 0xd3 0x90 0x78 + +# CHECK: sdtra %f0, %f0, %f0, 1 +0xb3 0xd3 0x01 0x00 + +# CHECK: sdtra %f0, %f0, %f0, 15 +0xb3 0xd3 0x0f 0x00 + +# CHECK: sdtra %f0, %f0, %f15, 1 +0xb3 0xd3 0xf1 0x00 + +# CHECK: sdtra %f0, %f15, %f0, 1 +0xb3 0xd3 0x01 0x0f + +# CHECK: sdtra %f15, %f0, %f0, 1 +0xb3 0xd3 0x01 0xf0 + +# CHECK: sdtra %f7, %f8, %f9, 10 +0xb3 0xd3 0x9a 0x78 + # CHECK: se %f0, 0 0x7b 0x00 0x00 0x00 @@ -12456,6 +13611,33 @@ # CHECK: sldl %r0, 4095(%r15) 0x8d 0x00 0xff 0xff +# CHECK: sldt %f0, %f0, 0 +0xed 0x00 0x00 0x00 0x00 0x40 + +# CHECK: sldt %f0, %f0, 4095 +0xed 0x00 0x0f 0xff 0x00 0x40 + +# CHECK: sldt %f0, %f0, 0(%r1) +0xed 0x00 0x10 0x00 0x00 0x40 + +# CHECK: sldt %f0, %f0, 0(%r15) +0xed 0x00 0xf0 0x00 0x00 0x40 + +# CHECK: sldt %f0, %f0, 4095(%r1,%r15) +0xed 0x01 0xff 0xff 0x00 0x40 + +# CHECK: sldt %f0, %f0, 4095(%r15,%r1) +0xed 0x0f 0x1f 0xff 0x00 0x40 + +# CHECK: sldt %f0, %f15, 0 +0xed 0xf0 0x00 0x00 0x00 0x40 + +# CHECK: sldt %f15, %f0, 0 +0xed 0x00 0x00 0x00 0xf0 0x40 + +# CHECK: sldt %f15, %f15, 0 +0xed 0xf0 0x00 0x00 0xf0 0x40 + # CHECK: slfi %r0, 0 0xc2 0x05 0x00 0x00 0x00 0x00 @@ -12678,6 +13860,33 @@ # CHECK: slrk %r2, %r3, %r4 0xb9 0xfb 0x40 0x23 +# CHECK: slxt %f0, %f0, 0 +0xed 0x00 0x00 0x00 0x00 0x48 + +# CHECK: slxt %f0, %f0, 4095 +0xed 0x00 0x0f 0xff 0x00 0x48 + +# CHECK: slxt %f0, %f0, 0(%r1) +0xed 0x00 0x10 0x00 0x00 0x48 + +# CHECK: slxt %f0, %f0, 0(%r15) +0xed 0x00 0xf0 0x00 0x00 0x48 + +# CHECK: slxt %f0, %f0, 4095(%r1,%r15) +0xed 0x01 0xff 0xff 0x00 0x48 + +# CHECK: slxt %f0, %f0, 4095(%r15,%r1) +0xed 0x0f 0x1f 0xff 0x00 0x48 + +# CHECK: slxt %f0, %f13, 0 +0xed 0xd0 0x00 0x00 0x00 0x48 + +# CHECK: slxt %f13, %f0, 0 +0xed 0x00 0x00 0x00 0xd0 0x48 + +# CHECK: slxt %f13, %f13, 0 +0xed 0xd0 0x00 0x00 0xd0 0x48 + # CHECK: sly %r0, -524288 0xe3 0x00 0x00 0x00 0x80 0x5f @@ -13071,6 +14280,33 @@ # CHECK: srdl %r0, 4095(%r15) 0x8c 0x00 0xff 0xff +# CHECK: srdt %f0, %f0, 0 +0xed 0x00 0x00 0x00 0x00 0x41 + +# CHECK: srdt %f0, %f0, 4095 +0xed 0x00 0x0f 0xff 0x00 0x41 + +# CHECK: srdt %f0, %f0, 0(%r1) +0xed 0x00 0x10 0x00 0x00 0x41 + +# CHECK: srdt %f0, %f0, 0(%r15) +0xed 0x00 0xf0 0x00 0x00 0x41 + +# CHECK: srdt %f0, %f0, 4095(%r1,%r15) +0xed 0x01 0xff 0xff 0x00 0x41 + +# CHECK: srdt %f0, %f0, 4095(%r15,%r1) +0xed 0x0f 0x1f 0xff 0x00 0x41 + +# CHECK: srdt %f0, %f15, 0 +0xed 0xf0 0x00 0x00 0x00 0x41 + +# CHECK: srdt %f15, %f0, 0 +0xed 0x00 0x00 0x00 0xf0 0x41 + +# CHECK: srdt %f15, %f15, 0 +0xed 0xf0 0x00 0x00 0xf0 0x41 + # CHECK: srk %r0, %r0, %r0 0xb9 0xf9 0x00 0x00 @@ -13290,6 +14526,33 @@ # CHECK: srstu %r7, %r8 0xb9 0xbe 0x00 0x78 +# CHECK: srxt %f0, %f0, 0 +0xed 0x00 0x00 0x00 0x00 0x49 + +# CHECK: srxt %f0, %f0, 4095 +0xed 0x00 0x0f 0xff 0x00 0x49 + +# CHECK: srxt %f0, %f0, 0(%r1) +0xed 0x00 0x10 0x00 0x00 0x49 + +# CHECK: srxt %f0, %f0, 0(%r15) +0xed 0x00 0xf0 0x00 0x00 0x49 + +# CHECK: srxt %f0, %f0, 4095(%r1,%r15) +0xed 0x01 0xff 0xff 0x00 0x49 + +# CHECK: srxt %f0, %f0, 4095(%r15,%r1) +0xed 0x0f 0x1f 0xff 0x00 0x49 + +# CHECK: srxt %f0, %f13, 0 +0xed 0xd0 0x00 0x00 0x00 0x49 + +# CHECK: srxt %f13, %f0, 0 +0xed 0x00 0x00 0x00 0xd0 0x49 + +# CHECK: srxt %f13, %f13, 0 +0xed 0xd0 0x00 0x00 0xd0 0x49 + # CHECK: st %r0, 0 0x50 0x00 0x00 0x00 @@ -14388,6 +15651,39 @@ # CHECK: sxr %f13, %f0 0x37 0xd0 +# CHECK: sxtr %f0, %f0, %f0 +0xb3 0xdb 0x00 0x00 + +# CHECK: sxtr %f0, %f0, %f13 +0xb3 0xdb 0xd0 0x00 + +# CHECK: sxtr %f0, %f13, %f0 +0xb3 0xdb 0x00 0x0d + +# CHECK: sxtr %f13, %f0, %f0 +0xb3 0xdb 0x00 0xd0 + +# CHECK: sxtr %f8, %f8, %f8 +0xb3 0xdb 0x80 0x88 + +# CHECK: sxtra %f0, %f0, %f0, 1 +0xb3 0xdb 0x01 0x00 + +# CHECK: sxtra %f0, %f0, %f0, 15 +0xb3 0xdb 0x0f 0x00 + +# CHECK: sxtra %f0, %f0, %f13, 1 +0xb3 0xdb 0xd1 0x00 + +# CHECK: sxtra %f0, %f13, %f0, 1 +0xb3 0xdb 0x01 0x0d + +# CHECK: sxtra %f13, %f0, %f0, 1 +0xb3 0xdb 0x01 0xd0 + +# CHECK: sxtra %f8, %f8, %f8, 8 +0xb3 0xdb 0x88 0x88 + # CHECK: sy %r0, -524288 0xe3 0x00 0x00 0x00 0x80 0x5b @@ -14598,6 +15894,132 @@ # CHECK: tcxb %f13, 0 0xed 0xd0 0x00 0x00 0x00 0x12 +# CHECK: tdcdt %f0, 0 +0xed 0x00 0x00 0x00 0x00 0x54 + +# CHECK: tdcdt %f0, 4095 +0xed 0x00 0x0f 0xff 0x00 0x54 + +# CHECK: tdcdt %f0, 0(%r1) +0xed 0x00 0x10 0x00 0x00 0x54 + +# CHECK: tdcdt %f0, 0(%r15) +0xed 0x00 0xf0 0x00 0x00 0x54 + +# CHECK: tdcdt %f0, 4095(%r1,%r15) +0xed 0x01 0xff 0xff 0x00 0x54 + +# CHECK: tdcdt %f0, 4095(%r15,%r1) +0xed 0x0f 0x1f 0xff 0x00 0x54 + +# CHECK: tdcdt %f15, 0 +0xed 0xf0 0x00 0x00 0x00 0x54 + +# CHECK: tdcet %f0, 0 +0xed 0x00 0x00 0x00 0x00 0x50 + +# CHECK: tdcet %f0, 4095 +0xed 0x00 0x0f 0xff 0x00 0x50 + +# CHECK: tdcet %f0, 0(%r1) +0xed 0x00 0x10 0x00 0x00 0x50 + +# CHECK: tdcet %f0, 0(%r15) +0xed 0x00 0xf0 0x00 0x00 0x50 + +# CHECK: tdcet %f0, 4095(%r1,%r15) +0xed 0x01 0xff 0xff 0x00 0x50 + +# CHECK: tdcet %f0, 4095(%r15,%r1) +0xed 0x0f 0x1f 0xff 0x00 0x50 + +# CHECK: tdcet %f15, 0 +0xed 0xf0 0x00 0x00 0x00 0x50 + +# CHECK: tdcxt %f0, 0 +0xed 0x00 0x00 0x00 0x00 0x58 + +# CHECK: tdcxt %f0, 4095 +0xed 0x00 0x0f 0xff 0x00 0x58 + +# CHECK: tdcxt %f0, 0(%r1) +0xed 0x00 0x10 0x00 0x00 0x58 + +# CHECK: tdcxt %f0, 0(%r15) +0xed 0x00 0xf0 0x00 0x00 0x58 + +# CHECK: tdcxt %f0, 4095(%r1,%r15) +0xed 0x01 0xff 0xff 0x00 0x58 + +# CHECK: tdcxt %f0, 4095(%r15,%r1) +0xed 0x0f 0x1f 0xff 0x00 0x58 + +# CHECK: tdcxt %f13, 0 +0xed 0xd0 0x00 0x00 0x00 0x58 + +# CHECK: tdgdt %f0, 0 +0xed 0x00 0x00 0x00 0x00 0x55 + +# CHECK: tdgdt %f0, 4095 +0xed 0x00 0x0f 0xff 0x00 0x55 + +# CHECK: tdgdt %f0, 0(%r1) +0xed 0x00 0x10 0x00 0x00 0x55 + +# CHECK: tdgdt %f0, 0(%r15) +0xed 0x00 0xf0 0x00 0x00 0x55 + +# CHECK: tdgdt %f0, 4095(%r1,%r15) +0xed 0x01 0xff 0xff 0x00 0x55 + +# CHECK: tdgdt %f0, 4095(%r15,%r1) +0xed 0x0f 0x1f 0xff 0x00 0x55 + +# CHECK: tdgdt %f15, 0 +0xed 0xf0 0x00 0x00 0x00 0x55 + +# CHECK: tdget %f0, 0 +0xed 0x00 0x00 0x00 0x00 0x51 + +# CHECK: tdget %f0, 4095 +0xed 0x00 0x0f 0xff 0x00 0x51 + +# CHECK: tdget %f0, 0(%r1) +0xed 0x00 0x10 0x00 0x00 0x51 + +# CHECK: tdget %f0, 0(%r15) +0xed 0x00 0xf0 0x00 0x00 0x51 + +# CHECK: tdget %f0, 4095(%r1,%r15) +0xed 0x01 0xff 0xff 0x00 0x51 + +# CHECK: tdget %f0, 4095(%r15,%r1) +0xed 0x0f 0x1f 0xff 0x00 0x51 + +# CHECK: tdget %f15, 0 +0xed 0xf0 0x00 0x00 0x00 0x51 + +# CHECK: tdgxt %f0, 0 +0xed 0x00 0x00 0x00 0x00 0x59 + +# CHECK: tdgxt %f0, 4095 +0xed 0x00 0x0f 0xff 0x00 0x59 + +# CHECK: tdgxt %f0, 0(%r1) +0xed 0x00 0x10 0x00 0x00 0x59 + +# CHECK: tdgxt %f0, 0(%r15) +0xed 0x00 0xf0 0x00 0x00 0x59 + +# CHECK: tdgxt %f0, 4095(%r1,%r15) +0xed 0x01 0xff 0xff 0x00 0x59 + +# CHECK: tdgxt %f0, 4095(%r15,%r1) +0xed 0x0f 0x1f 0xff 0x00 0x59 + +# CHECK: tdgxt %f13, 0 +0xed 0xd0 0x00 0x00 0x00 0x59 + # CHECK: tend 0xb2 0xf8 0x00 0x00 diff --git a/llvm/test/MC/SystemZ/insn-bad-z13.s b/llvm/test/MC/SystemZ/insn-bad-z13.s index 82f47fe..e9fac44 100644 --- a/llvm/test/MC/SystemZ/insn-bad-z13.s +++ b/llvm/test/MC/SystemZ/insn-bad-z13.s @@ -5,6 +5,152 @@ # RUN: FileCheck < %t %s #CHECK: error: invalid operand +#CHECK: cdpt %f0, 0(1), -1 +#CHECK: error: invalid operand +#CHECK: cdpt %f0, 0(1), 16 +#CHECK: error: missing length in address +#CHECK: cdpt %f0, 0, 0 +#CHECK: error: missing length in address +#CHECK: cdpt %f0, 0(%r1), 0 +#CHECK: error: invalid operand +#CHECK: cdpt %f0, 0(0,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cdpt %f0, 0(257,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cdpt %f0, -1(1,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cdpt %f0, 4096(1,%r1), 0 +#CHECK: error: %r0 used in an address +#CHECK: cdpt %f0, 0(1,%r0), 0 +#CHECK: error: invalid use of indexed addressing +#CHECK: cdpt %f0, 0(%r1,%r2), 0 +#CHECK: error: unknown token in expression +#CHECK: cdpt %f0, 0(-), 0 + + cdpt %f0, 0(1), -1 + cdpt %f0, 0(1), 16 + cdpt %f0, 0, 0 + cdpt %f0, 0(%r1), 0 + cdpt %f0, 0(0,%r1), 0 + cdpt %f0, 0(257,%r1), 0 + cdpt %f0, -1(1,%r1), 0 + cdpt %f0, 4096(1,%r1), 0 + cdpt %f0, 0(1,%r0), 0 + cdpt %f0, 0(%r1,%r2), 0 + cdpt %f0, 0(-), 0 + +#CHECK: error: invalid operand +#CHECK: cpdt %f0, 0(1), -1 +#CHECK: error: invalid operand +#CHECK: cpdt %f0, 0(1), 16 +#CHECK: error: missing length in address +#CHECK: cpdt %f0, 0, 0 +#CHECK: error: missing length in address +#CHECK: cpdt %f0, 0(%r1), 0 +#CHECK: error: invalid operand +#CHECK: cpdt %f0, 0(0,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cpdt %f0, 0(257,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cpdt %f0, -1(1,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cpdt %f0, 4096(1,%r1), 0 +#CHECK: error: %r0 used in an address +#CHECK: cpdt %f0, 0(1,%r0), 0 +#CHECK: error: invalid use of indexed addressing +#CHECK: cpdt %f0, 0(%r1,%r2), 0 +#CHECK: error: unknown token in expression +#CHECK: cpdt %f0, 0(-), 0 + + cpdt %f0, 0(1), -1 + cpdt %f0, 0(1), 16 + cpdt %f0, 0, 0 + cpdt %f0, 0(%r1), 0 + cpdt %f0, 0(0,%r1), 0 + cpdt %f0, 0(257,%r1), 0 + cpdt %f0, -1(1,%r1), 0 + cpdt %f0, 4096(1,%r1), 0 + cpdt %f0, 0(1,%r0), 0 + cpdt %f0, 0(%r1,%r2), 0 + cpdt %f0, 0(-), 0 + +#CHECK: error: invalid operand +#CHECK: cpxt %f0, 0(1), -1 +#CHECK: error: invalid operand +#CHECK: cpxt %f0, 0(1), 16 +#CHECK: error: missing length in address +#CHECK: cpxt %f0, 0, 0 +#CHECK: error: missing length in address +#CHECK: cpxt %f0, 0(%r1), 0 +#CHECK: error: invalid operand +#CHECK: cpxt %f0, 0(0,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cpxt %f0, 0(257,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cpxt %f0, -1(1,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cpxt %f0, 4096(1,%r1), 0 +#CHECK: error: %r0 used in an address +#CHECK: cpxt %f0, 0(1,%r0), 0 +#CHECK: error: invalid use of indexed addressing +#CHECK: cpxt %f0, 0(%r1,%r2), 0 +#CHECK: error: unknown token in expression +#CHECK: cpxt %f0, 0(-), 0 +#CHECK: error: invalid register pair +#CHECK: cpxt %f15, 0(1), 0 + + cpxt %f0, 0(1), -1 + cpxt %f0, 0(1), 16 + cpxt %f0, 0, 0 + cpxt %f0, 0(%r1), 0 + cpxt %f0, 0(0,%r1), 0 + cpxt %f0, 0(257,%r1), 0 + cpxt %f0, -1(1,%r1), 0 + cpxt %f0, 4096(1,%r1), 0 + cpxt %f0, 0(1,%r0), 0 + cpxt %f0, 0(%r1,%r2), 0 + cpxt %f0, 0(-), 0 + cpxt %f15, 0(1), 0 + +#CHECK: error: invalid operand +#CHECK: cxpt %f0, 0(1), -1 +#CHECK: error: invalid operand +#CHECK: cxpt %f0, 0(1), 16 +#CHECK: error: missing length in address +#CHECK: cxpt %f0, 0, 0 +#CHECK: error: missing length in address +#CHECK: cxpt %f0, 0(%r1), 0 +#CHECK: error: invalid operand +#CHECK: cxpt %f0, 0(0,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cxpt %f0, 0(257,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cxpt %f0, -1(1,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cxpt %f0, 4096(1,%r1), 0 +#CHECK: error: %r0 used in an address +#CHECK: cxpt %f0, 0(1,%r0), 0 +#CHECK: error: invalid use of indexed addressing +#CHECK: cxpt %f0, 0(%r1,%r2), 0 +#CHECK: error: unknown token in expression +#CHECK: cxpt %f0, 0(-), 0 +#CHECK: error: invalid register pair +#CHECK: cxpt %f15, 0(1), 0 + + cxpt %f0, 0(1), -1 + cxpt %f0, 0(1), 16 + cxpt %f0, 0, 0 + cxpt %f0, 0(%r1), 0 + cxpt %f0, 0(0,%r1), 0 + cxpt %f0, 0(257,%r1), 0 + cxpt %f0, -1(1,%r1), 0 + cxpt %f0, 4096(1,%r1), 0 + cxpt %f0, 0(1,%r0), 0 + cxpt %f0, 0(%r1,%r2), 0 + cxpt %f0, 0(-), 0 + cxpt %f15, 0(1), 0 + +#CHECK: error: invalid operand #CHECK: lcbb %r0, 0, -1 #CHECK: error: invalid operand #CHECK: lcbb %r0, 0, 16 diff --git a/llvm/test/MC/SystemZ/insn-bad-z196.s b/llvm/test/MC/SystemZ/insn-bad-z196.s index 04c19ff..78d50bc 100644 --- a/llvm/test/MC/SystemZ/insn-bad-z196.s +++ b/llvm/test/MC/SystemZ/insn-bad-z196.s @@ -5,6 +5,14 @@ # RUN: FileCheck < %t %s #CHECK: error: invalid operand +#CHECK: adtra %f0, %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: adtra %f0, %f0, %f0, 16 + + adtra %f0, %f0, %f0, -1 + adtra %f0, %f0, %f0, 16 + +#CHECK: error: invalid operand #CHECK: aghik %r0, %r1, -32769 #CHECK: error: invalid operand #CHECK: aghik %r0, %r1, 32768 @@ -34,6 +42,23 @@ aih %r0, (-1 << 31) - 1 aih %r0, (1 << 31) +#CHECK: error: invalid operand +#CHECK: axtra %f0, %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: axtra %f0, %f0, %f0, 16 +#CHECK: error: invalid register pair +#CHECK: axtra %f0, %f0, %f2, 0 +#CHECK: error: invalid register pair +#CHECK: axtra %f0, %f2, %f0, 0 +#CHECK: error: invalid register pair +#CHECK: axtra %f2, %f0, %f0, 0 + + axtra %f0, %f0, %f0, -1 + axtra %f0, %f0, %f0, 16 + axtra %f0, %f0, %f2, 0 + axtra %f0, %f2, %f0, 0 + axtra %f2, %f0, %f0, 0 + #CHECK: error: instruction requires: execution-hint #CHECK: bpp 0, 0, 0 @@ -73,6 +98,20 @@ cdfbra %f0, 16, %r0, 0 #CHECK: error: invalid operand +#CHECK: cdftr %f0, 0, %r0, -1 +#CHECK: error: invalid operand +#CHECK: cdftr %f0, 0, %r0, 16 +#CHECK: error: invalid operand +#CHECK: cdftr %f0, -1, %r0, 0 +#CHECK: error: invalid operand +#CHECK: cdftr %f0, 16, %r0, 0 + + cdftr %f0, 0, %r0, -1 + cdftr %f0, 0, %r0, 16 + cdftr %f0, -1, %r0, 0 + cdftr %f0, 16, %r0, 0 + +#CHECK: error: invalid operand #CHECK: cdgbra %f0, 0, %r0, -1 #CHECK: error: invalid operand #CHECK: cdgbra %f0, 0, %r0, 16 @@ -87,6 +126,20 @@ cdgbra %f0, 16, %r0, 0 #CHECK: error: invalid operand +#CHECK: cdgtra %f0, 0, %r0, -1 +#CHECK: error: invalid operand +#CHECK: cdgtra %f0, 0, %r0, 16 +#CHECK: error: invalid operand +#CHECK: cdgtra %f0, -1, %r0, 0 +#CHECK: error: invalid operand +#CHECK: cdgtra %f0, 16, %r0, 0 + + cdgtra %f0, 0, %r0, -1 + cdgtra %f0, 0, %r0, 16 + cdgtra %f0, -1, %r0, 0 + cdgtra %f0, 16, %r0, 0 + +#CHECK: error: invalid operand #CHECK: cdlfbr %f0, 0, %r0, -1 #CHECK: error: invalid operand #CHECK: cdlfbr %f0, 0, %r0, 16 @@ -101,6 +154,25 @@ cdlfbr %f0, 16, %r0, 0 #CHECK: error: invalid operand +#CHECK: cdlftr %f0, 0, %r0, -1 +#CHECK: error: invalid operand +#CHECK: cdlftr %f0, 0, %r0, 16 +#CHECK: error: invalid operand +#CHECK: cdlftr %f0, -1, %r0, 0 +#CHECK: error: invalid operand +#CHECK: cdlftr %f0, 16, %r0, 0 + + cdlftr %f0, 0, %r0, -1 + cdlftr %f0, 0, %r0, 16 + cdlftr %f0, -1, %r0, 0 + cdlftr %f0, 16, %r0, 0 + +#CHECK: error: instruction requires: dfp-zoned-conversion +#CHECK: cdzt %f0, 0(1), 0 + + cdzt %f0, 0(1), 0 + +#CHECK: error: invalid operand #CHECK: cdlgbr %f0, 0, %r0, -1 #CHECK: error: invalid operand #CHECK: cdlgbr %f0, 0, %r0, 16 @@ -115,6 +187,20 @@ cdlgbr %f0, 16, %r0, 0 #CHECK: error: invalid operand +#CHECK: cdlgtr %f0, 0, %r0, -1 +#CHECK: error: invalid operand +#CHECK: cdlgtr %f0, 0, %r0, 16 +#CHECK: error: invalid operand +#CHECK: cdlgtr %f0, -1, %r0, 0 +#CHECK: error: invalid operand +#CHECK: cdlgtr %f0, 16, %r0, 0 + + cdlgtr %f0, 0, %r0, -1 + cdlgtr %f0, 0, %r0, 16 + cdlgtr %f0, -1, %r0, 0 + cdlgtr %f0, 16, %r0, 0 + +#CHECK: error: invalid operand #CHECK: cefbra %f0, 0, %r0, -1 #CHECK: error: invalid operand #CHECK: cefbra %f0, 0, %r0, 16 @@ -185,6 +271,20 @@ cfdbra %r0, 16, %f0, 0 #CHECK: error: invalid operand +#CHECK: cfdtr %r0, 0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: cfdtr %r0, 0, %f0, 16 +#CHECK: error: invalid operand +#CHECK: cfdtr %r0, -1, %f0, 0 +#CHECK: error: invalid operand +#CHECK: cfdtr %r0, 16, %f0, 0 + + cfdtr %r0, 0, %f0, -1 + cfdtr %r0, 0, %f0, 16 + cfdtr %r0, -1, %f0, 0 + cfdtr %r0, 16, %f0, 0 + +#CHECK: error: invalid operand #CHECK: cfebra %r0, 0, %f0, -1 #CHECK: error: invalid operand #CHECK: cfebra %r0, 0, %f0, 16 @@ -216,6 +316,23 @@ cfxbra %r0, 0, %f14, 0 #CHECK: error: invalid operand +#CHECK: cfxtr %r0, 0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: cfxtr %r0, 0, %f0, 16 +#CHECK: error: invalid operand +#CHECK: cfxtr %r0, -1, %f0, 0 +#CHECK: error: invalid operand +#CHECK: cfxtr %r0, 16, %f0, 0 +#CHECK: error: invalid register pair +#CHECK: cfxtr %r0, 0, %f14, 0 + + cfxtr %r0, 0, %f0, -1 + cfxtr %r0, 0, %f0, 16 + cfxtr %r0, -1, %f0, 0 + cfxtr %r0, 16, %f0, 0 + cfxtr %r0, 0, %f14, 0 + +#CHECK: error: invalid operand #CHECK: cgdbra %r0, 0, %f0, -1 #CHECK: error: invalid operand #CHECK: cgdbra %r0, 0, %f0, 16 @@ -230,6 +347,20 @@ cgdbra %r0, 16, %f0, 0 #CHECK: error: invalid operand +#CHECK: cgdtra %r0, 0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: cgdtra %r0, 0, %f0, 16 +#CHECK: error: invalid operand +#CHECK: cgdtra %r0, -1, %f0, 0 +#CHECK: error: invalid operand +#CHECK: cgdtra %r0, 16, %f0, 0 + + cgdtra %r0, 0, %f0, -1 + cgdtra %r0, 0, %f0, 16 + cgdtra %r0, -1, %f0, 0 + cgdtra %r0, 16, %f0, 0 + +#CHECK: error: invalid operand #CHECK: cgebra %r0, 0, %f0, -1 #CHECK: error: invalid operand #CHECK: cgebra %r0, 0, %f0, 16 @@ -261,6 +392,23 @@ cgxbra %r0, 0, %f14, 0 #CHECK: error: invalid operand +#CHECK: cgxtra %r0, 0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: cgxtra %r0, 0, %f0, 16 +#CHECK: error: invalid operand +#CHECK: cgxtra %r0, -1, %f0, 0 +#CHECK: error: invalid operand +#CHECK: cgxtra %r0, 16, %f0, 0 +#CHECK: error: invalid register pair +#CHECK: cgxtra %r0, 0, %f14, 0 + + cgxtra %r0, 0, %f0, -1 + cgxtra %r0, 0, %f0, 16 + cgxtra %r0, -1, %f0, 0 + cgxtra %r0, 16, %f0, 0 + cgxtra %r0, 0, %f14, 0 + +#CHECK: error: invalid operand #CHECK: chf %r0, -524289 #CHECK: error: invalid operand #CHECK: chf %r0, 524288 @@ -291,6 +439,20 @@ clfdbr %r0, 16, %f0, 0 #CHECK: error: invalid operand +#CHECK: clfdtr %r0, 0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: clfdtr %r0, 0, %f0, 16 +#CHECK: error: invalid operand +#CHECK: clfdtr %r0, -1, %f0, 0 +#CHECK: error: invalid operand +#CHECK: clfdtr %r0, 16, %f0, 0 + + clfdtr %r0, 0, %f0, -1 + clfdtr %r0, 0, %f0, 16 + clfdtr %r0, -1, %f0, 0 + clfdtr %r0, 16, %f0, 0 + +#CHECK: error: invalid operand #CHECK: clfebr %r0, 0, %f0, -1 #CHECK: error: invalid operand #CHECK: clfebr %r0, 0, %f0, 16 @@ -322,6 +484,23 @@ clfxbr %r0, 0, %f14, 0 #CHECK: error: invalid operand +#CHECK: clfxtr %r0, 0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: clfxtr %r0, 0, %f0, 16 +#CHECK: error: invalid operand +#CHECK: clfxtr %r0, -1, %f0, 0 +#CHECK: error: invalid operand +#CHECK: clfxtr %r0, 16, %f0, 0 +#CHECK: error: invalid register pair +#CHECK: clfxtr %r0, 0, %f14, 0 + + clfxtr %r0, 0, %f0, -1 + clfxtr %r0, 0, %f0, 16 + clfxtr %r0, -1, %f0, 0 + clfxtr %r0, 16, %f0, 0 + clfxtr %r0, 0, %f14, 0 + +#CHECK: error: invalid operand #CHECK: clgdbr %r0, 0, %f0, -1 #CHECK: error: invalid operand #CHECK: clgdbr %r0, 0, %f0, 16 @@ -336,6 +515,20 @@ clgdbr %r0, 16, %f0, 0 #CHECK: error: invalid operand +#CHECK: clgdtr %r0, 0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: clgdtr %r0, 0, %f0, 16 +#CHECK: error: invalid operand +#CHECK: clgdtr %r0, -1, %f0, 0 +#CHECK: error: invalid operand +#CHECK: clgdtr %r0, 16, %f0, 0 + + clgdtr %r0, 0, %f0, -1 + clgdtr %r0, 0, %f0, 16 + clgdtr %r0, -1, %f0, 0 + clgdtr %r0, 16, %f0, 0 + +#CHECK: error: invalid operand #CHECK: clgebr %r0, 0, %f0, -1 #CHECK: error: invalid operand #CHECK: clgebr %r0, 0, %f0, 16 @@ -367,6 +560,23 @@ clgxbr %r0, 0, %f14, 0 #CHECK: error: invalid operand +#CHECK: clgxtr %r0, 0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: clgxtr %r0, 0, %f0, 16 +#CHECK: error: invalid operand +#CHECK: clgxtr %r0, -1, %f0, 0 +#CHECK: error: invalid operand +#CHECK: clgxtr %r0, 16, %f0, 0 +#CHECK: error: invalid register pair +#CHECK: clgxtr %r0, 0, %f14, 0 + + clgxtr %r0, 0, %f0, -1 + clgxtr %r0, 0, %f0, 16 + clgxtr %r0, -1, %f0, 0 + clgxtr %r0, 16, %f0, 0 + clgxtr %r0, 0, %f14, 0 + +#CHECK: error: invalid operand #CHECK: clhf %r0, -524289 #CHECK: error: invalid operand #CHECK: clhf %r0, 524288 @@ -400,6 +610,23 @@ cxfbra %f2, 0, %r0, 0 #CHECK: error: invalid operand +#CHECK: cxftr %f0, 0, %r0, -1 +#CHECK: error: invalid operand +#CHECK: cxftr %f0, 0, %r0, 16 +#CHECK: error: invalid operand +#CHECK: cxftr %f0, -1, %r0, 0 +#CHECK: error: invalid operand +#CHECK: cxftr %f0, 16, %r0, 0 +#CHECK: error: invalid register pair +#CHECK: cxftr %f2, 0, %r0, 0 + + cxftr %f0, 0, %r0, -1 + cxftr %f0, 0, %r0, 16 + cxftr %f0, -1, %r0, 0 + cxftr %f0, 16, %r0, 0 + cxftr %f2, 0, %r0, 0 + +#CHECK: error: invalid operand #CHECK: cxgbra %f0, 0, %r0, -1 #CHECK: error: invalid operand #CHECK: cxgbra %f0, 0, %r0, 16 @@ -417,6 +644,23 @@ cxgbra %f2, 0, %r0, 0 #CHECK: error: invalid operand +#CHECK: cxgtra %f0, 0, %r0, -1 +#CHECK: error: invalid operand +#CHECK: cxgtra %f0, 0, %r0, 16 +#CHECK: error: invalid operand +#CHECK: cxgtra %f0, -1, %r0, 0 +#CHECK: error: invalid operand +#CHECK: cxgtra %f0, 16, %r0, 0 +#CHECK: error: invalid register pair +#CHECK: cxgtra %f2, 0, %r0, 0 + + cxgtra %f0, 0, %r0, -1 + cxgtra %f0, 0, %r0, 16 + cxgtra %f0, -1, %r0, 0 + cxgtra %f0, 16, %r0, 0 + cxgtra %f2, 0, %r0, 0 + +#CHECK: error: invalid operand #CHECK: cxlfbr %f0, 0, %r0, -1 #CHECK: error: invalid operand #CHECK: cxlfbr %f0, 0, %r0, 16 @@ -434,6 +678,23 @@ cxlfbr %f2, 0, %r0, 0 #CHECK: error: invalid operand +#CHECK: cxlftr %f0, 0, %r0, -1 +#CHECK: error: invalid operand +#CHECK: cxlftr %f0, 0, %r0, 16 +#CHECK: error: invalid operand +#CHECK: cxlftr %f0, -1, %r0, 0 +#CHECK: error: invalid operand +#CHECK: cxlftr %f0, 16, %r0, 0 +#CHECK: error: invalid register pair +#CHECK: cxlftr %f2, 0, %r0, 0 + + cxlftr %f0, 0, %r0, -1 + cxlftr %f0, 0, %r0, 16 + cxlftr %f0, -1, %r0, 0 + cxlftr %f0, 16, %r0, 0 + cxlftr %f2, 0, %r0, 0 + +#CHECK: error: invalid operand #CHECK: cxlgbr %f0, 0, %r0, -1 #CHECK: error: invalid operand #CHECK: cxlgbr %f0, 0, %r0, 16 @@ -450,6 +711,63 @@ cxlgbr %f0, 16, %r0, 0 cxlgbr %f2, 0, %r0, 0 +#CHECK: error: invalid operand +#CHECK: cxlgtr %f0, 0, %r0, -1 +#CHECK: error: invalid operand +#CHECK: cxlgtr %f0, 0, %r0, 16 +#CHECK: error: invalid operand +#CHECK: cxlgtr %f0, -1, %r0, 0 +#CHECK: error: invalid operand +#CHECK: cxlgtr %f0, 16, %r0, 0 +#CHECK: error: invalid register pair +#CHECK: cxlgtr %f2, 0, %r0, 0 + + cxlgtr %f0, 0, %r0, -1 + cxlgtr %f0, 0, %r0, 16 + cxlgtr %f0, -1, %r0, 0 + cxlgtr %f0, 16, %r0, 0 + cxlgtr %f2, 0, %r0, 0 + +#CHECK: error: instruction requires: dfp-zoned-conversion +#CHECK: cxzt %f0, 0(1), 0 + + cxzt %f0, 0(1), 0 + +#CHECK: error: instruction requires: dfp-zoned-conversion +#CHECK: czdt %f0, 0(1), 0 + + czdt %f0, 0(1), 0 + +#CHECK: error: instruction requires: dfp-zoned-conversion +#CHECK: czxt %f0, 0(1), 0 + + czxt %f0, 0(1), 0 + +#CHECK: error: invalid operand +#CHECK: ddtra %f0, %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: ddtra %f0, %f0, %f0, 16 + + ddtra %f0, %f0, %f0, -1 + ddtra %f0, %f0, %f0, 16 + +#CHECK: error: invalid operand +#CHECK: dxtra %f0, %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: dxtra %f0, %f0, %f0, 16 +#CHECK: error: invalid register pair +#CHECK: dxtra %f0, %f0, %f2, 0 +#CHECK: error: invalid register pair +#CHECK: dxtra %f0, %f2, %f0, 0 +#CHECK: error: invalid register pair +#CHECK: dxtra %f2, %f0, %f0, 0 + + dxtra %f0, %f0, %f0, -1 + dxtra %f0, %f0, %f0, 16 + dxtra %f0, %f0, %f2, 0 + dxtra %f0, %f2, %f0, 0 + dxtra %f2, %f0, %f0, 0 + #CHECK: error: instruction requires: transactional-execution #CHECK: etnd %r7 @@ -824,6 +1142,31 @@ lpdg %r2, 0(%r1), -1(%r15) lpdg %r2, 0(%r1), 4096(%r15) +#CHECK: error: invalid operand +#CHECK: mdtra %f0, %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: mdtra %f0, %f0, %f0, 16 + + mdtra %f0, %f0, %f0, -1 + mdtra %f0, %f0, %f0, 16 + +#CHECK: error: invalid operand +#CHECK: mxtra %f0, %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: mxtra %f0, %f0, %f0, 16 +#CHECK: error: invalid register pair +#CHECK: mxtra %f0, %f0, %f2, 0 +#CHECK: error: invalid register pair +#CHECK: mxtra %f0, %f2, %f0, 0 +#CHECK: error: invalid register pair +#CHECK: mxtra %f2, %f0, %f0, 0 + + mxtra %f0, %f0, %f0, -1 + mxtra %f0, %f0, %f0, 16 + mxtra %f0, %f0, %f2, 0 + mxtra %f0, %f2, %f0, 0 + mxtra %f2, %f0, %f0, 0 + #CHECK: error: instruction requires: execution-hint #CHECK: niai 0, 0 @@ -885,6 +1228,14 @@ risblg %r0,%r0,256,0,0 #CHECK: error: invalid operand +#CHECK: sdtra %f0, %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: sdtra %f0, %f0, %f0, 16 + + sdtra %f0, %f0, %f0, -1 + sdtra %f0, %f0, %f0, 16 + +#CHECK: error: invalid operand #CHECK: slak %r0,%r0,-524289 #CHECK: error: invalid operand #CHECK: slak %r0,%r0,524288 @@ -1009,6 +1360,23 @@ stocg %r0,524288,1 stocg %r0,0(%r1,%r2),1 +#CHECK: error: invalid operand +#CHECK: sxtra %f0, %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: sxtra %f0, %f0, %f0, 16 +#CHECK: error: invalid register pair +#CHECK: sxtra %f0, %f0, %f2, 0 +#CHECK: error: invalid register pair +#CHECK: sxtra %f0, %f2, %f0, 0 +#CHECK: error: invalid register pair +#CHECK: sxtra %f2, %f0, %f0, 0 + + sxtra %f0, %f0, %f0, -1 + sxtra %f0, %f0, %f0, 16 + sxtra %f0, %f0, %f2, 0 + sxtra %f0, %f2, %f0, 0 + sxtra %f2, %f0, %f0, 0 + #CHECK: error: instruction requires: transactional-execution #CHECK: tabort 4095(%r1) diff --git a/llvm/test/MC/SystemZ/insn-bad-zEC12.s b/llvm/test/MC/SystemZ/insn-bad-zEC12.s index 4bc3be3..80197a3 100644 --- a/llvm/test/MC/SystemZ/insn-bad-zEC12.s +++ b/llvm/test/MC/SystemZ/insn-bad-zEC12.s @@ -62,6 +62,46 @@ bprp 0, 0, 1 bprp 0, 0, 0x1000000 +#CHECK: error: instruction requires: dfp-packed-conversion +#CHECK: cdpt %f0, 0(1), 0 + + cdpt %f0, 0(1), 0 + +#CHECK: error: invalid operand +#CHECK: cdzt %f0, 0(1), -1 +#CHECK: error: invalid operand +#CHECK: cdzt %f0, 0(1), 16 +#CHECK: error: missing length in address +#CHECK: cdzt %f0, 0, 0 +#CHECK: error: missing length in address +#CHECK: cdzt %f0, 0(%r1), 0 +#CHECK: error: invalid operand +#CHECK: cdzt %f0, 0(0,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cdzt %f0, 0(257,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cdzt %f0, -1(1,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cdzt %f0, 4096(1,%r1), 0 +#CHECK: error: %r0 used in an address +#CHECK: cdzt %f0, 0(1,%r0), 0 +#CHECK: error: invalid use of indexed addressing +#CHECK: cdzt %f0, 0(%r1,%r2), 0 +#CHECK: error: unknown token in expression +#CHECK: cdzt %f0, 0(-), 0 + + cdzt %f0, 0(1), -1 + cdzt %f0, 0(1), 16 + cdzt %f0, 0, 0 + cdzt %f0, 0(%r1), 0 + cdzt %f0, 0(0,%r1), 0 + cdzt %f0, 0(257,%r1), 0 + cdzt %f0, -1(1,%r1), 0 + cdzt %f0, 4096(1,%r1), 0 + cdzt %f0, 0(1,%r0), 0 + cdzt %f0, 0(%r1,%r2), 0 + cdzt %f0, 0(-), 0 + #CHECK: error: invalid operand #CHECK: clgt %r0, -1, 0 #CHECK: error: invalid operand @@ -112,6 +152,132 @@ cltno %r0, 0 clto %r0, 0 +#CHECK: error: instruction requires: dfp-packed-conversion +#CHECK: cpdt %f0, 0(1), 0 + + cpdt %f0, 0(1), 0 + +#CHECK: error: instruction requires: dfp-packed-conversion +#CHECK: cpxt %f0, 0(1), 0 + + cpxt %f0, 0(1), 0 + +#CHECK: error: instruction requires: dfp-packed-conversion +#CHECK: cxpt %f0, 0(1), 0 + + cxpt %f0, 0(1), 0 + +#CHECK: error: invalid operand +#CHECK: cxzt %f0, 0(1), -1 +#CHECK: error: invalid operand +#CHECK: cxzt %f0, 0(1), 16 +#CHECK: error: missing length in address +#CHECK: cxzt %f0, 0, 0 +#CHECK: error: missing length in address +#CHECK: cxzt %f0, 0(%r1), 0 +#CHECK: error: invalid operand +#CHECK: cxzt %f0, 0(0,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cxzt %f0, 0(257,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cxzt %f0, -1(1,%r1), 0 +#CHECK: error: invalid operand +#CHECK: cxzt %f0, 4096(1,%r1), 0 +#CHECK: error: %r0 used in an address +#CHECK: cxzt %f0, 0(1,%r0), 0 +#CHECK: error: invalid use of indexed addressing +#CHECK: cxzt %f0, 0(%r1,%r2), 0 +#CHECK: error: unknown token in expression +#CHECK: cxzt %f0, 0(-), 0 +#CHECK: error: invalid register pair +#CHECK: cxzt %f15, 0(1), 0 + + cxzt %f0, 0(1), -1 + cxzt %f0, 0(1), 16 + cxzt %f0, 0, 0 + cxzt %f0, 0(%r1), 0 + cxzt %f0, 0(0,%r1), 0 + cxzt %f0, 0(257,%r1), 0 + cxzt %f0, -1(1,%r1), 0 + cxzt %f0, 4096(1,%r1), 0 + cxzt %f0, 0(1,%r0), 0 + cxzt %f0, 0(%r1,%r2), 0 + cxzt %f0, 0(-), 0 + cxzt %f15, 0(1), 0 + +#CHECK: error: invalid operand +#CHECK: czdt %f0, 0(1), -1 +#CHECK: error: invalid operand +#CHECK: czdt %f0, 0(1), 16 +#CHECK: error: missing length in address +#CHECK: czdt %f0, 0, 0 +#CHECK: error: missing length in address +#CHECK: czdt %f0, 0(%r1), 0 +#CHECK: error: invalid operand +#CHECK: czdt %f0, 0(0,%r1), 0 +#CHECK: error: invalid operand +#CHECK: czdt %f0, 0(257,%r1), 0 +#CHECK: error: invalid operand +#CHECK: czdt %f0, -1(1,%r1), 0 +#CHECK: error: invalid operand +#CHECK: czdt %f0, 4096(1,%r1), 0 +#CHECK: error: %r0 used in an address +#CHECK: czdt %f0, 0(1,%r0), 0 +#CHECK: error: invalid use of indexed addressing +#CHECK: czdt %f0, 0(%r1,%r2), 0 +#CHECK: error: unknown token in expression +#CHECK: czdt %f0, 0(-), 0 + + czdt %f0, 0(1), -1 + czdt %f0, 0(1), 16 + czdt %f0, 0, 0 + czdt %f0, 0(%r1), 0 + czdt %f0, 0(0,%r1), 0 + czdt %f0, 0(257,%r1), 0 + czdt %f0, -1(1,%r1), 0 + czdt %f0, 4096(1,%r1), 0 + czdt %f0, 0(1,%r0), 0 + czdt %f0, 0(%r1,%r2), 0 + czdt %f0, 0(-), 0 + +#CHECK: error: invalid operand +#CHECK: czxt %f0, 0(1), -1 +#CHECK: error: invalid operand +#CHECK: czxt %f0, 0(1), 16 +#CHECK: error: missing length in address +#CHECK: czxt %f0, 0, 0 +#CHECK: error: missing length in address +#CHECK: czxt %f0, 0(%r1), 0 +#CHECK: error: invalid operand +#CHECK: czxt %f0, 0(0,%r1), 0 +#CHECK: error: invalid operand +#CHECK: czxt %f0, 0(257,%r1), 0 +#CHECK: error: invalid operand +#CHECK: czxt %f0, -1(1,%r1), 0 +#CHECK: error: invalid operand +#CHECK: czxt %f0, 4096(1,%r1), 0 +#CHECK: error: %r0 used in an address +#CHECK: czxt %f0, 0(1,%r0), 0 +#CHECK: error: invalid use of indexed addressing +#CHECK: czxt %f0, 0(%r1,%r2), 0 +#CHECK: error: unknown token in expression +#CHECK: czxt %f0, 0(-), 0 +#CHECK: error: invalid register pair +#CHECK: czxt %f15, 0(1), 0 + + czxt %f0, 0(1), -1 + czxt %f0, 0(1), 16 + czxt %f0, 0, 0 + czxt %f0, 0(%r1), 0 + czxt %f0, 0(0,%r1), 0 + czxt %f0, 0(257,%r1), 0 + czxt %f0, -1(1,%r1), 0 + czxt %f0, 4096(1,%r1), 0 + czxt %f0, 0(1,%r0), 0 + czxt %f0, 0(%r1,%r2), 0 + czxt %f0, 0(-), 0 + czxt %f15, 0(1), 0 + #CHECK: error: invalid operand #CHECK: lat %r0, -524289 #CHECK: error: invalid operand diff --git a/llvm/test/MC/SystemZ/insn-bad.s b/llvm/test/MC/SystemZ/insn-bad.s index da9a531..259ad05 100644 --- a/llvm/test/MC/SystemZ/insn-bad.s +++ b/llvm/test/MC/SystemZ/insn-bad.s @@ -28,6 +28,11 @@ adb %f0, -1 adb %f0, 4096 +#CHECK: error: instruction requires: fp-extension +#CHECK: adtra %f0, %f0, %f0, 0 + + adtra %f0, %f0, %f0, 0 + #CHECK: error: invalid operand #CHECK: ae %f0, -1 #CHECK: error: invalid operand @@ -376,6 +381,22 @@ axr %f0, %f2 axr %f2, %f0 +#CHECK: error: invalid register pair +#CHECK: axtr %f0, %f0, %f2 +#CHECK: error: invalid register pair +#CHECK: axtr %f0, %f2, %f0 +#CHECK: error: invalid register pair +#CHECK: axtr %f2, %f0, %f0 + + axtr %f0, %f0, %f2 + axtr %f0, %f2, %f0 + axtr %f2, %f0, %f0 + +#CHECK: error: instruction requires: fp-extension +#CHECK: axtra %f0, %f0, %f0, 0 + + axtra %f0, %f0, %f0, 0 + #CHECK: error: invalid operand #CHECK: ay %r0, -524289 #CHECK: error: invalid operand @@ -673,20 +694,40 @@ cdfbra %f0, 0, %r0, 0 #CHECK: error: instruction requires: fp-extension +#CHECK: cdftr %f0, 0, %r0, 0 + + cdftr %f0, 0, %r0, 0 + +#CHECK: error: instruction requires: fp-extension #CHECK: cdgbra %f0, 0, %r0, 0 cdgbra %f0, 0, %r0, 0 #CHECK: error: instruction requires: fp-extension +#CHECK: cdgtra %f0, 0, %r0, 0 + + cdgtra %f0, 0, %r0, 0 + +#CHECK: error: instruction requires: fp-extension #CHECK: cdlfbr %f0, 0, %r0, 0 cdlfbr %f0, 0, %r0, 0 #CHECK: error: instruction requires: fp-extension +#CHECK: cdlftr %f0, 0, %r0, 0 + + cdlftr %f0, 0, %r0, 0 + +#CHECK: error: instruction requires: fp-extension #CHECK: cdlgbr %f0, 0, %r0, 0 cdlgbr %f0, 0, %r0, 0 +#CHECK: error: instruction requires: fp-extension +#CHECK: cdlgtr %f0, 0, %r0, 0 + + cdlgtr %f0, 0, %r0, 0 + #CHECK: error: invalid register pair #CHECK: cds %r1, %r0, 0 #CHECK: error: invalid register pair @@ -774,6 +815,14 @@ celgbr %f0, 0, %r0, 0 +#CHECK: error: invalid register pair +#CHECK: cextr %f0, %f2 +#CHECK: error: invalid register pair +#CHECK: cextr %f2, %f0 + + cextr %f0, %f2 + cextr %f2, %f0 + #CHECK: error: invalid operand #CHECK: cfc -1 #CHECK: error: invalid operand @@ -798,6 +847,11 @@ cfdbra %r0, 0, %f0, 0 +#CHECK: error: instruction requires: fp-extension +#CHECK: cfdtr %r0, 0, %f0, 0 + + cfdtr %r0, 0, %f0, 0 + #CHECK: error: invalid operand #CHECK: cfebr %r0, -1, %f0 #CHECK: error: invalid operand @@ -835,6 +889,11 @@ cfxbra %r0, 0, %f0, 0 +#CHECK: error: instruction requires: fp-extension +#CHECK: cfxtr %r0, 0, %f0, 0 + + cfxtr %r0, 0, %f0, 0 + #CHECK: error: invalid operand #CHECK: cfxr %r0, -1, %f0 #CHECK: error: invalid operand @@ -868,6 +927,19 @@ cgdbra %r0, 0, %f0, 0 #CHECK: error: invalid operand +#CHECK: cgdtr %r0, -1, %f0 +#CHECK: error: invalid operand +#CHECK: cgdtr %r0, 16, %f0 + + cgdtr %r0, -1, %f0 + cgdtr %r0, 16, %f0 + +#CHECK: error: instruction requires: fp-extension +#CHECK: cgdtra %r0, 0, %f0, 0 + + cgdtra %r0, 0, %f0, 0 + +#CHECK: error: invalid operand #CHECK: cgebr %r0, -1, %f0 #CHECK: error: invalid operand #CHECK: cgebr %r0, 16, %f0 @@ -1065,6 +1137,22 @@ cgxbra %r0, 0, %f0, 0 #CHECK: error: invalid operand +#CHECK: cgxtr %r0, -1, %f0 +#CHECK: error: invalid operand +#CHECK: cgxtr %r0, 16, %f0 +#CHECK: error: invalid register pair +#CHECK: cgxtr %r0, 0, %f2 + + cgxtr %r0, -1, %f0 + cgxtr %r0, 16, %f0 + cgxtr %r0, 0, %f2 + +#CHECK: error: instruction requires: fp-extension +#CHECK: cgxtra %r0, 0, %f0, 0 + + cgxtra %r0, 0, %f0, 0 + +#CHECK: error: invalid operand #CHECK: cgxr %r0, -1, %f0 #CHECK: error: invalid operand #CHECK: cgxr %r0, 16, %f0 @@ -1303,6 +1391,11 @@ clfdbr %r0, 0, %f0, 0 #CHECK: error: instruction requires: fp-extension +#CHECK: clfdtr %r0, 0, %f0, 0 + + clfdtr %r0, 0, %f0, 0 + +#CHECK: error: instruction requires: fp-extension #CHECK: clfebr %r0, 0, %f0, 0 clfebr %r0, 0, %f0, 0 @@ -1351,6 +1444,11 @@ clfxbr %r0, 0, %f0, 0 +#CHECK: error: instruction requires: fp-extension +#CHECK: clfxtr %r0, 0, %f0, 0 + + clfxtr %r0, 0, %f0, 0 + #CHECK: error: invalid operand #CHECK: clg %r0, -524289 #CHECK: error: invalid operand @@ -1365,6 +1463,11 @@ clgdbr %r0, 0, %f0, 0 #CHECK: error: instruction requires: fp-extension +#CHECK: clgdtr %r0, 0, %f0, 0 + + clgdtr %r0, 0, %f0, 0 + +#CHECK: error: instruction requires: fp-extension #CHECK: clgebr %r0, 0, %f0, 0 clgebr %r0, 0, %f0, 0 @@ -1515,6 +1618,11 @@ clgxbr %r0, 0, %f0, 0 +#CHECK: error: instruction requires: fp-extension +#CHECK: clgxtr %r0, 0, %f0, 0 + + clgxtr %r0, 0, %f0, 0 + #CHECK: error: instruction requires: high-word #CHECK: clhf %r0, 0 @@ -1831,6 +1939,14 @@ cs %r0, %r0, 0(%r1,%r2) #CHECK: error: invalid operand +#CHECK: csdtr %r0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: csdtr %r0, %f0, 16 + + csdtr %r0, %f0, -1 + csdtr %r0, %f0, 16 + +#CHECK: error: invalid operand #CHECK: csg %r0, %r0, -524289 #CHECK: error: invalid operand #CHECK: csg %r0, %r0, 524288 @@ -1859,6 +1975,20 @@ csst 0(%r1), 4096(%r15), %r2 #CHECK: error: invalid operand +#CHECK: csxtr %r0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: csxtr %r0, %f0, 16 +#CHECK: error: invalid register pair +#CHECK: csxtr %r0, %f2, 0 +#CHECK: error: invalid register pair +#CHECK: csxtr %r1, %f0, 0 + + csxtr %r0, %f0, -1 + csxtr %r0, %f0, 16 + csxtr %r0, %f2, 0 + csxtr %r1, %f0, 0 + +#CHECK: error: invalid operand #CHECK: csy %r0, %r0, -524289 #CHECK: error: invalid operand #CHECK: csy %r0, %r0, 524288 @@ -1977,6 +2107,14 @@ cuutf %r2, %r4, -1 cuutf %r2, %r4, 16 +#CHECK: error: invalid register pair +#CHECK: cuxtr %r0, %f2 +#CHECK: error: invalid register pair +#CHECK: cuxtr %r1, %f0 + + cuxtr %r0, %f2 + cuxtr %r1, %f0 + #CHECK: error: invalid operand #CHECK: cvb %r0, -1 #CHECK: error: invalid operand @@ -2043,6 +2181,11 @@ cxfbra %f0, 0, %r0, 0 +#CHECK: error: instruction requires: fp-extension +#CHECK: cxftr %f0, 0, %r0, 0 + + cxftr %f0, 0, %r0, 0 + #CHECK: error: invalid register pair #CHECK: cxfr %f2, %r0 @@ -2063,16 +2206,36 @@ cxgr %f2, %r0 +#CHECK: error: invalid register pair +#CHECK: cxgtr %f2, %r0 + + cxgtr %f2, %r0 + +#CHECK: error: instruction requires: fp-extension +#CHECK: cxgtra %f0, 0, %r0, 0 + + cxgtra %f0, 0, %r0, 0 + #CHECK: error: instruction requires: fp-extension #CHECK: cxlfbr %f0, 0, %r0, 0 cxlfbr %f0, 0, %r0, 0 #CHECK: error: instruction requires: fp-extension +#CHECK: cxlftr %f0, 0, %r0, 0 + + cxlftr %f0, 0, %r0, 0 + +#CHECK: error: instruction requires: fp-extension #CHECK: cxlgbr %f0, 0, %r0, 0 cxlgbr %f0, 0, %r0, 0 +#CHECK: error: instruction requires: fp-extension +#CHECK: cxlgtr %f0, 0, %r0, 0 + + cxlgtr %f0, 0, %r0, 0 + #CHECK: error: invalid register pair #CHECK: cxr %f0, %f2 #CHECK: error: invalid register pair @@ -2081,6 +2244,30 @@ cxr %f0, %f2 cxr %f2, %f0 +#CHECK: error: invalid register pair +#CHECK: cxstr %f0, %r1 +#CHECK: error: invalid register pair +#CHECK: cxstr %f2, %r0 + + cxstr %f0, %r1 + cxstr %f2, %r0 + +#CHECK: error: invalid register pair +#CHECK: cxtr %f0, %f2 +#CHECK: error: invalid register pair +#CHECK: cxtr %f2, %f0 + + cxtr %f0, %f2 + cxtr %f2, %f0 + +#CHECK: error: invalid register pair +#CHECK: cxutr %f0, %r1 +#CHECK: error: invalid register pair +#CHECK: cxutr %f2, %r0 + + cxutr %f0, %r1 + cxutr %f2, %r0 + #CHECK: error: invalid operand #CHECK: cy %r0, -524289 #CHECK: error: invalid operand @@ -2116,6 +2303,11 @@ ddb %f0, -1 ddb %f0, 4096 +#CHECK: error: instruction requires: fp-extension +#CHECK: ddtra %f0, %f0, %f0, 0 + + ddtra %f0, %f0, %f0, 0 + #CHECK: error: invalid operand #CHECK: de %f0, -1 #CHECK: error: invalid operand @@ -2286,6 +2478,22 @@ dxr %f0, %f2 dxr %f2, %f0 +#CHECK: error: invalid register pair +#CHECK: dxtr %f0, %f0, %f2 +#CHECK: error: invalid register pair +#CHECK: dxtr %f0, %f2, %f0 +#CHECK: error: invalid register pair +#CHECK: dxtr %f2, %f0, %f0 + + dxtr %f0, %f0, %f2 + dxtr %f0, %f2, %f0 + dxtr %f2, %f0, %f0 + +#CHECK: error: instruction requires: fp-extension +#CHECK: dxtra %f0, %f0, %f0, 0 + + dxtra %f0, %f0, %f0, 0 + #CHECK: error: invalid operand #CHECK: ecag %r0, %r0, -524289 #CHECK: error: invalid operand @@ -2402,6 +2610,22 @@ edmk 0(1,%r2), 0(%r1,%r2) edmk 0(-), 0 +#CHECK: error: invalid register pair +#CHECK: eextr %f0, %f2 +#CHECK: error: invalid register pair +#CHECK: eextr %f2, %f0 + + eextr %f0, %f2 + eextr %f2, %f0 + +#CHECK: error: invalid register pair +#CHECK: esxtr %f0, %f2 +#CHECK: error: invalid register pair +#CHECK: esxtr %f2, %f0 + + esxtr %f0, %f2 + esxtr %f2, %f0 + #CHECK: error: invalid operand #CHECK: ex %r0, -1 #CHECK: error: invalid operand @@ -2424,6 +2648,20 @@ fidbra %f0, 0, %f0, 0 #CHECK: error: invalid operand +#CHECK: fidtr %f0, 0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: fidtr %f0, 0, %f0, 16 +#CHECK: error: invalid operand +#CHECK: fidtr %f0, -1, %f0, 0 +#CHECK: error: invalid operand +#CHECK: fidtr %f0, 16, %f0, 0 + + fidtr %f0, 0, %f0, -1 + fidtr %f0, 0, %f0, 16 + fidtr %f0, -1, %f0, 0 + fidtr %f0, 16, %f0, 0 + +#CHECK: error: invalid operand #CHECK: fiebr %f0, -1, %f0 #CHECK: error: invalid operand #CHECK: fiebr %f0, 16, %f0 @@ -2463,6 +2701,26 @@ fixr %f0, %f2 fixr %f2, %f0 +#CHECK: error: invalid operand +#CHECK: fixtr %f0, 0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: fixtr %f0, 0, %f0, 16 +#CHECK: error: invalid operand +#CHECK: fixtr %f0, -1, %f0, 0 +#CHECK: error: invalid operand +#CHECK: fixtr %f0, 16, %f0, 0 +#CHECK: error: invalid register pair +#CHECK: fixtr %f0, 0, %f2, 0 +#CHECK: error: invalid register pair +#CHECK: fixtr %f2, 0, %f0, 0 + + fixtr %f0, 0, %f0, -1 + fixtr %f0, 0, %f0, 16 + fixtr %f0, -1, %f0, 0 + fixtr %f0, 16, %f0, 0 + fixtr %f0, 0, %f2, 0 + fixtr %f2, 0, %f0, 0 + #CHECK: error: invalid register pair #CHECK: flogr %r1, %r0 @@ -2526,6 +2784,17 @@ icy %r0, -524289 icy %r0, 524288 +#CHECK: error: invalid register pair +#CHECK: iextr %f0, %f0, %f2 +#CHECK: error: invalid register pair +#CHECK: iextr %f0, %f2, %f0 +#CHECK: error: invalid register pair +#CHECK: iextr %f2, %f0, %f0 + + iextr %f0, %f0, %f2 + iextr %f0, %f2, %f0 + iextr %f2, %f0, %f0 + #CHECK: error: invalid operand #CHECK: iihf %r0, -1 #CHECK: error: invalid operand @@ -2644,6 +2913,14 @@ kxbr %f0, %f2 kxbr %f2, %f0 +#CHECK: error: invalid register pair +#CHECK: kxtr %f0, %f2 +#CHECK: error: invalid register pair +#CHECK: kxtr %f2, %f0 + + kxtr %f0, %f2 + kxtr %f2, %f0 + #CHECK: error: invalid operand #CHECK: l %r0, -1 #CHECK: error: invalid operand @@ -2802,6 +3079,14 @@ ldeb %f0, -1 ldeb %f0, 4096 +#CHECK: error: invalid operand +#CHECK: ldetr %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: ldetr %f0, %f0, 16 + + ldetr %f0, %f0, -1 + ldetr %f0, %f0, 16 + #CHECK: error: invalid register pair #CHECK: ldxbr %f0, %f2 #CHECK: error: invalid register pair @@ -2821,6 +3106,26 @@ ldxr %f0, %f2 #CHECK: error: invalid operand +#CHECK: ldxtr %f0, 0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: ldxtr %f0, 0, %f0, 16 +#CHECK: error: invalid operand +#CHECK: ldxtr %f0, -1, %f0, 0 +#CHECK: error: invalid operand +#CHECK: ldxtr %f0, 16, %f0, 0 +#CHECK: error: invalid register pair +#CHECK: ldxtr %f0, 0, %f2, 0 +#CHECK: error: invalid register pair +#CHECK: ldxtr %f2, 0, %f0, 0 + + ldxtr %f0, 0, %f0, -1 + ldxtr %f0, 0, %f0, 16 + ldxtr %f0, -1, %f0, 0 + ldxtr %f0, 16, %f0, 0 + ldxtr %f0, 0, %f2, 0 + ldxtr %f2, 0, %f0, 0 + +#CHECK: error: invalid operand #CHECK: ldy %f0, -524289 #CHECK: error: invalid operand #CHECK: ldy %f0, 524288 @@ -2841,6 +3146,20 @@ ledbra %f0, 0, %f0, 0 +#CHECK: error: invalid operand +#CHECK: ledtr %f0, 0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: ledtr %f0, 0, %f0, 16 +#CHECK: error: invalid operand +#CHECK: ledtr %f0, -1, %f0, 0 +#CHECK: error: invalid operand +#CHECK: ledtr %f0, 16, %f0, 0 + + ledtr %f0, 0, %f0, -1 + ledtr %f0, 0, %f0, 16 + ledtr %f0, -1, %f0, 0 + ledtr %f0, 16, %f0, 0 + #CHECK: error: invalid register pair #CHECK: lexbr %f0, %f2 #CHECK: error: invalid register pair @@ -3365,6 +3684,14 @@ ltxr %f0, %f14 ltxr %f14, %f0 +#CHECK: error: invalid register pair +#CHECK: ltxtr %f0, %f14 +#CHECK: error: invalid register pair +#CHECK: ltxtr %f14, %f0 + + ltxtr %f0, %f14 + ltxtr %f14, %f0 + #CHECK: error: invalid operand #CHECK: lxd %f0, -1 #CHECK: error: invalid operand @@ -3398,6 +3725,17 @@ lxdr %f2, %f0 #CHECK: error: invalid operand +#CHECK: lxdtr %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: lxdtr %f0, %f0, 16 +#CHECK: error: invalid register pair +#CHECK: lxdtr %f2, %f0, 0 + + lxdtr %f0, %f0, -1 + lxdtr %f0, %f0, 16 + lxdtr %f2, %f0, 0 + +#CHECK: error: invalid operand #CHECK: lxe %f0, -1 #CHECK: error: invalid operand #CHECK: lxe %f0, 4096 @@ -3574,6 +3912,11 @@ mdeb %f0, -1 mdeb %f0, 4096 +#CHECK: error: instruction requires: fp-extension +#CHECK: mdtra %f0, %f0, %f0, 0 + + mdtra %f0, %f0, %f0, 0 + #CHECK: error: invalid operand #CHECK: me %f0, -1 #CHECK: error: invalid operand @@ -4244,6 +4587,22 @@ mxr %f0, %f2 mxr %f2, %f0 +#CHECK: error: invalid register pair +#CHECK: mxtr %f0, %f0, %f2 +#CHECK: error: invalid register pair +#CHECK: mxtr %f0, %f2, %f0 +#CHECK: error: invalid register pair +#CHECK: mxtr %f2, %f0, %f0 + + mxtr %f0, %f0, %f2 + mxtr %f0, %f2, %f0 + mxtr %f2, %f0, %f0 + +#CHECK: error: instruction requires: fp-extension +#CHECK: mxtra %f0, %f0, %f0, 0 + + mxtra %f0, %f0, %f0, 0 + #CHECK: error: invalid operand #CHECK: my %f0, %f0, -1 #CHECK: error: invalid operand @@ -4803,6 +5162,31 @@ pr %r0 #CHECK: error: invalid operand +#CHECK: qadtr %f0, %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: qadtr %f0, %f0, %f0, 16 + + qadtr %f0, %f0, %f0, -1 + qadtr %f0, %f0, %f0, 16 + +#CHECK: error: invalid operand +#CHECK: qaxtr %f0, %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: qaxtr %f0, %f0, %f0, 16 +#CHECK: error: invalid register pair +#CHECK: qaxtr %f0, %f0, %f2, 0 +#CHECK: error: invalid register pair +#CHECK: qaxtr %f0, %f2, %f0, 0 +#CHECK: error: invalid register pair +#CHECK: qaxtr %f2, %f0, %f0, 0 + + qaxtr %f0, %f0, %f0, -1 + qaxtr %f0, %f0, %f0, 16 + qaxtr %f0, %f0, %f2, 0 + qaxtr %f0, %f2, %f0, 0 + qaxtr %f2, %f0, %f0, 0 + +#CHECK: error: invalid operand #CHECK: risbg %r0,%r0,0,0,-1 #CHECK: error: invalid operand #CHECK: risbg %r0,%r0,0,0,64 @@ -4901,6 +5285,31 @@ rosbg %r0,%r0,256,0,0 #CHECK: error: invalid operand +#CHECK: rrdtr %f0, %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: rrdtr %f0, %f0, %f0, 16 + + rrdtr %f0, %f0, %f0, -1 + rrdtr %f0, %f0, %f0, 16 + +#CHECK: error: invalid operand +#CHECK: rrxtr %f0, %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: rrxtr %f0, %f0, %f0, 16 +#CHECK: error: invalid register pair +#CHECK: rrxtr %f0, %f0, %f2, 0 +#CHECK: error: invalid register pair +#CHECK: rrxtr %f0, %f2, %f0, 0 +#CHECK: error: invalid register pair +#CHECK: rrxtr %f2, %f0, %f0, 0 + + rrxtr %f0, %f0, %f0, -1 + rrxtr %f0, %f0, %f0, 16 + rrxtr %f0, %f0, %f2, 0 + rrxtr %f0, %f2, %f0, 0 + rrxtr %f2, %f0, %f0, 0 + +#CHECK: error: invalid operand #CHECK: rxsbg %r0,%r0,0,0,-1 #CHECK: error: invalid operand #CHECK: rxsbg %r0,%r0,0,0,64 @@ -4944,6 +5353,11 @@ sdb %f0, -1 sdb %f0, 4096 +#CHECK: error: instruction requires: fp-extension +#CHECK: sdtra %f0, %f0, %f0, 0 + + sdtra %f0, %f0, %f0, 0 + #CHECK: error: invalid operand #CHECK: se %f0, -1 #CHECK: error: invalid operand @@ -5089,6 +5503,14 @@ sldl %r0,0(%r1,%r2) #CHECK: error: invalid operand +#CHECK: sldt %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: sldt %f0, %f0, 4096 + + sldt %f0, %f0, -1 + sldt %f0, %f0, 4096 + +#CHECK: error: invalid operand #CHECK: slfi %r0, -1 #CHECK: error: invalid operand #CHECK: slfi %r0, (1 << 32) @@ -5164,6 +5586,20 @@ slrk %r2,%r3,%r4 #CHECK: error: invalid operand +#CHECK: slxt %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: slxt %f0, %f0, 4096 +#CHECK: error: invalid register pair +#CHECK: slxt %f0, %f2, 0 +#CHECK: error: invalid register pair +#CHECK: slxt %f2, %f0, 0 + + slxt %f0, %f0, -1 + slxt %f0, %f0, 4096 + slxt %f0, %f2, 0 + slxt %f2, %f0, 0 + +#CHECK: error: invalid operand #CHECK: sly %r0, -524289 #CHECK: error: invalid operand #CHECK: sly %r0, 524288 @@ -5339,6 +5775,14 @@ srdl %r0,0(%r0) srdl %r0,0(%r1,%r2) +#CHECK: error: invalid operand +#CHECK: srdt %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: srdt %f0, %f0, 4096 + + srdt %f0, %f0, -1 + srdt %f0, %f0, 4096 + #CHECK: error: instruction requires: distinct-ops #CHECK: srk %r2,%r3,%r4 @@ -5455,6 +5899,20 @@ srp 0(-), 0, 0 #CHECK: error: invalid operand +#CHECK: srxt %f0, %f0, -1 +#CHECK: error: invalid operand +#CHECK: srxt %f0, %f0, 4096 +#CHECK: error: invalid register pair +#CHECK: srxt %f0, %f2, 0 +#CHECK: error: invalid register pair +#CHECK: srxt %f2, %f0, 0 + + srxt %f0, %f0, -1 + srxt %f0, %f0, 4096 + srxt %f0, %f2, 0 + srxt %f2, %f0, 0 + +#CHECK: error: invalid operand #CHECK: st %r0, -1 #CHECK: error: invalid operand #CHECK: st %r0, 4096 @@ -5788,6 +6246,22 @@ sxr %f0, %f2 sxr %f2, %f0 +#CHECK: error: invalid register pair +#CHECK: sxtr %f0, %f0, %f2 +#CHECK: error: invalid register pair +#CHECK: sxtr %f0, %f2, %f0 +#CHECK: error: invalid register pair +#CHECK: sxtr %f2, %f0, %f0 + + sxtr %f0, %f0, %f2 + sxtr %f0, %f2, %f0 + sxtr %f2, %f0, %f0 + +#CHECK: error: instruction requires: fp-extension +#CHECK: sxtra %f0, %f0, %f0, 0 + + sxtra %f0, %f0, %f0, 0 + #CHECK: error: invalid operand #CHECK: sy %r0, -524289 #CHECK: error: invalid operand @@ -5837,6 +6311,60 @@ tcxb %f0, 4096 #CHECK: error: invalid operand +#CHECK: tdcdt %f0, -1 +#CHECK: error: invalid operand +#CHECK: tdcdt %f0, 4096 + + tdcdt %f0, -1 + tdcdt %f0, 4096 + +#CHECK: error: invalid operand +#CHECK: tdcet %f0, -1 +#CHECK: error: invalid operand +#CHECK: tdcet %f0, 4096 + + tdcet %f0, -1 + tdcet %f0, 4096 + +#CHECK: error: invalid operand +#CHECK: tdcxt %f0, -1 +#CHECK: error: invalid operand +#CHECK: tdcxt %f0, 4096 +#CHECK: error: invalid register pair +#CHECK: tdcxt %f2, 0 + + tdcxt %f0, -1 + tdcxt %f0, 4096 + tdcxt %f2, 0 + +#CHECK: error: invalid operand +#CHECK: tdgdt %f0, -1 +#CHECK: error: invalid operand +#CHECK: tdgdt %f0, 4096 + + tdgdt %f0, -1 + tdgdt %f0, 4096 + +#CHECK: error: invalid operand +#CHECK: tdget %f0, -1 +#CHECK: error: invalid operand +#CHECK: tdget %f0, 4096 + + tdget %f0, -1 + tdget %f0, 4096 + +#CHECK: error: invalid operand +#CHECK: tdgxt %f0, -1 +#CHECK: error: invalid operand +#CHECK: tdgxt %f0, 4096 +#CHECK: error: invalid register pair +#CHECK: tdgxt %f2, 0 + + tdgxt %f0, -1 + tdgxt %f0, 4096 + tdgxt %f2, 0 + +#CHECK: error: invalid operand #CHECK: tm -1, 0 #CHECK: error: invalid operand #CHECK: tm 4096, 0 diff --git a/llvm/test/MC/SystemZ/insn-good-z13.s b/llvm/test/MC/SystemZ/insn-good-z13.s index cbfcfa9..6a4beff 100644 --- a/llvm/test/MC/SystemZ/insn-good-z13.s +++ b/llvm/test/MC/SystemZ/insn-good-z13.s @@ -4,6 +4,86 @@ # RUN: llvm-mc -triple s390x-linux-gnu -mcpu=arch11 -show-encoding %s \ # RUN: | FileCheck %s +#CHECK: cdpt %f0, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0xae] +#CHECK: cdpt %f15, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0xf0,0xae] +#CHECK: cdpt %f0, 0(1), 15 # encoding: [0xed,0x00,0x00,0x00,0x0f,0xae] +#CHECK: cdpt %f0, 0(1,%r1), 0 # encoding: [0xed,0x00,0x10,0x00,0x00,0xae] +#CHECK: cdpt %f0, 0(1,%r15), 0 # encoding: [0xed,0x00,0xf0,0x00,0x00,0xae] +#CHECK: cdpt %f0, 4095(1,%r1), 0 # encoding: [0xed,0x00,0x1f,0xff,0x00,0xae] +#CHECK: cdpt %f0, 4095(1,%r15), 0 # encoding: [0xed,0x00,0xff,0xff,0x00,0xae] +#CHECK: cdpt %f0, 0(256,%r1), 0 # encoding: [0xed,0xff,0x10,0x00,0x00,0xae] +#CHECK: cdpt %f0, 0(256,%r15), 0 # encoding: [0xed,0xff,0xf0,0x00,0x00,0xae] + + cdpt %f0, 0(1), 0 + cdpt %f15, 0(1), 0 + cdpt %f0, 0(1), 15 + cdpt %f0, 0(1,%r1), 0 + cdpt %f0, 0(1,%r15), 0 + cdpt %f0, 4095(1,%r1), 0 + cdpt %f0, 4095(1,%r15), 0 + cdpt %f0, 0(256,%r1), 0 + cdpt %f0, 0(256,%r15), 0 + +#CHECK: cpdt %f0, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0xac] +#CHECK: cpdt %f15, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0xf0,0xac] +#CHECK: cpdt %f0, 0(1), 15 # encoding: [0xed,0x00,0x00,0x00,0x0f,0xac] +#CHECK: cpdt %f0, 0(1,%r1), 0 # encoding: [0xed,0x00,0x10,0x00,0x00,0xac] +#CHECK: cpdt %f0, 0(1,%r15), 0 # encoding: [0xed,0x00,0xf0,0x00,0x00,0xac] +#CHECK: cpdt %f0, 4095(1,%r1), 0 # encoding: [0xed,0x00,0x1f,0xff,0x00,0xac] +#CHECK: cpdt %f0, 4095(1,%r15), 0 # encoding: [0xed,0x00,0xff,0xff,0x00,0xac] +#CHECK: cpdt %f0, 0(256,%r1), 0 # encoding: [0xed,0xff,0x10,0x00,0x00,0xac] +#CHECK: cpdt %f0, 0(256,%r15), 0 # encoding: [0xed,0xff,0xf0,0x00,0x00,0xac] + + cpdt %f0, 0(1), 0 + cpdt %f15, 0(1), 0 + cpdt %f0, 0(1), 15 + cpdt %f0, 0(1,%r1), 0 + cpdt %f0, 0(1,%r15), 0 + cpdt %f0, 4095(1,%r1), 0 + cpdt %f0, 4095(1,%r15), 0 + cpdt %f0, 0(256,%r1), 0 + cpdt %f0, 0(256,%r15), 0 + +#CHECK: cpxt %f0, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0xad] +#CHECK: cpxt %f13, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0xd0,0xad] +#CHECK: cpxt %f0, 0(1), 15 # encoding: [0xed,0x00,0x00,0x00,0x0f,0xad] +#CHECK: cpxt %f0, 0(1,%r1), 0 # encoding: [0xed,0x00,0x10,0x00,0x00,0xad] +#CHECK: cpxt %f0, 0(1,%r15), 0 # encoding: [0xed,0x00,0xf0,0x00,0x00,0xad] +#CHECK: cpxt %f0, 4095(1,%r1), 0 # encoding: [0xed,0x00,0x1f,0xff,0x00,0xad] +#CHECK: cpxt %f0, 4095(1,%r15), 0 # encoding: [0xed,0x00,0xff,0xff,0x00,0xad] +#CHECK: cpxt %f0, 0(256,%r1), 0 # encoding: [0xed,0xff,0x10,0x00,0x00,0xad] +#CHECK: cpxt %f0, 0(256,%r15), 0 # encoding: [0xed,0xff,0xf0,0x00,0x00,0xad] + + cpxt %f0, 0(1), 0 + cpxt %f13, 0(1), 0 + cpxt %f0, 0(1), 15 + cpxt %f0, 0(1,%r1), 0 + cpxt %f0, 0(1,%r15), 0 + cpxt %f0, 4095(1,%r1), 0 + cpxt %f0, 4095(1,%r15), 0 + cpxt %f0, 0(256,%r1), 0 + cpxt %f0, 0(256,%r15), 0 + +#CHECK: cxpt %f0, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0xaf] +#CHECK: cxpt %f13, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0xd0,0xaf] +#CHECK: cxpt %f0, 0(1), 15 # encoding: [0xed,0x00,0x00,0x00,0x0f,0xaf] +#CHECK: cxpt %f0, 0(1,%r1), 0 # encoding: [0xed,0x00,0x10,0x00,0x00,0xaf] +#CHECK: cxpt %f0, 0(1,%r15), 0 # encoding: [0xed,0x00,0xf0,0x00,0x00,0xaf] +#CHECK: cxpt %f0, 4095(1,%r1), 0 # encoding: [0xed,0x00,0x1f,0xff,0x00,0xaf] +#CHECK: cxpt %f0, 4095(1,%r15), 0 # encoding: [0xed,0x00,0xff,0xff,0x00,0xaf] +#CHECK: cxpt %f0, 0(256,%r1), 0 # encoding: [0xed,0xff,0x10,0x00,0x00,0xaf] +#CHECK: cxpt %f0, 0(256,%r15), 0 # encoding: [0xed,0xff,0xf0,0x00,0x00,0xaf] + + cxpt %f0, 0(1), 0 + cxpt %f13, 0(1), 0 + cxpt %f0, 0(1), 15 + cxpt %f0, 0(1,%r1), 0 + cxpt %f0, 0(1,%r15), 0 + cxpt %f0, 4095(1,%r1), 0 + cxpt %f0, 4095(1,%r15), 0 + cxpt %f0, 0(256,%r1), 0 + cxpt %f0, 0(256,%r15), 0 + #CHECK: lcbb %r0, 0, 0 # encoding: [0xe7,0x00,0x00,0x00,0x00,0x27] #CHECK: lcbb %r0, 0, 15 # encoding: [0xe7,0x00,0x00,0x00,0xf0,0x27] #CHECK: lcbb %r0, 4095, 0 # encoding: [0xe7,0x00,0x0f,0xff,0x00,0x27] diff --git a/llvm/test/MC/SystemZ/insn-good-z196.s b/llvm/test/MC/SystemZ/insn-good-z196.s index 02c473c..31d257d 100644 --- a/llvm/test/MC/SystemZ/insn-good-z196.s +++ b/llvm/test/MC/SystemZ/insn-good-z196.s @@ -2,6 +2,20 @@ # RUN: llvm-mc -triple s390x-linux-gnu -mcpu=z196 -show-encoding %s | FileCheck %s # RUN: llvm-mc -triple s390x-linux-gnu -mcpu=arch9 -show-encoding %s | FileCheck %s +#CHECK: adtra %f0, %f0, %f0, 0 # encoding: [0xb3,0xd2,0x00,0x00] +#CHECK: adtra %f0, %f0, %f0, 15 # encoding: [0xb3,0xd2,0x0f,0x00] +#CHECK: adtra %f0, %f0, %f15, 0 # encoding: [0xb3,0xd2,0xf0,0x00] +#CHECK: adtra %f0, %f15, %f0, 0 # encoding: [0xb3,0xd2,0x00,0x0f] +#CHECK: adtra %f15, %f0, %f0, 0 # encoding: [0xb3,0xd2,0x00,0xf0] +#CHECK: adtra %f7, %f8, %f9, 10 # encoding: [0xb3,0xd2,0x9a,0x78] + + adtra %f0, %f0, %f0, 0 + adtra %f0, %f0, %f0, 15 + adtra %f0, %f0, %f15, 0 + adtra %f0, %f15, %f0, 0 + adtra %f15, %f0, %f0, 0 + adtra %f7, %f8, %f9, 10 + #CHECK: aghik %r0, %r0, -32768 # encoding: [0xec,0x00,0x80,0x00,0x00,0xd9] #CHECK: aghik %r0, %r0, -1 # encoding: [0xec,0x00,0xff,0xff,0x00,0xd9] #CHECK: aghik %r0, %r0, 0 # encoding: [0xec,0x00,0x00,0x00,0x00,0xd9] @@ -136,6 +150,20 @@ ark %r15,%r0,%r0 ark %r7,%r8,%r9 +#CHECK: axtra %f0, %f0, %f0, 0 # encoding: [0xb3,0xda,0x00,0x00] +#CHECK: axtra %f0, %f0, %f0, 15 # encoding: [0xb3,0xda,0x0f,0x00] +#CHECK: axtra %f0, %f0, %f13, 0 # encoding: [0xb3,0xda,0xd0,0x00] +#CHECK: axtra %f0, %f13, %f0, 0 # encoding: [0xb3,0xda,0x00,0x0d] +#CHECK: axtra %f13, %f0, %f0, 0 # encoding: [0xb3,0xda,0x00,0xd0] +#CHECK: axtra %f8, %f8, %f8, 8 # encoding: [0xb3,0xda,0x88,0x88] + + axtra %f0, %f0, %f0, 0 + axtra %f0, %f0, %f0, 15 + axtra %f0, %f0, %f13, 0 + axtra %f0, %f13, %f0, 0 + axtra %f13, %f0, %f0, 0 + axtra %f8, %f8, %f8, 8 + #CHECK: brcth %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xcc,0x06,A,A,A,A] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL brcth %r0, -0x100000000 @@ -187,6 +215,20 @@ cdfbra %f4, 5, %r6, 7 cdfbra %f15, 0, %r0, 0 +#CHECK: cdftr %f0, 0, %r0, 0 # encoding: [0xb9,0x51,0x00,0x00] +#CHECK: cdftr %f0, 0, %r0, 15 # encoding: [0xb9,0x51,0x0f,0x00] +#CHECK: cdftr %f0, 0, %r15, 0 # encoding: [0xb9,0x51,0x00,0x0f] +#CHECK: cdftr %f0, 15, %r0, 0 # encoding: [0xb9,0x51,0xf0,0x00] +#CHECK: cdftr %f4, 5, %r6, 7 # encoding: [0xb9,0x51,0x57,0x46] +#CHECK: cdftr %f15, 0, %r0, 0 # encoding: [0xb9,0x51,0x00,0xf0] + + cdftr %f0, 0, %r0, 0 + cdftr %f0, 0, %r0, 15 + cdftr %f0, 0, %r15, 0 + cdftr %f0, 15, %r0, 0 + cdftr %f4, 5, %r6, 7 + cdftr %f15, 0, %r0, 0 + #CHECK: cdgbra %f0, 0, %r0, 0 # encoding: [0xb3,0xa5,0x00,0x00] #CHECK: cdgbra %f0, 0, %r0, 15 # encoding: [0xb3,0xa5,0x0f,0x00] #CHECK: cdgbra %f0, 0, %r15, 0 # encoding: [0xb3,0xa5,0x00,0x0f] @@ -201,6 +243,20 @@ cdgbra %f4, 5, %r6, 7 cdgbra %f15, 0, %r0, 0 +#CHECK: cdgtra %f0, 0, %r0, 0 # encoding: [0xb3,0xf1,0x00,0x00] +#CHECK: cdgtra %f0, 0, %r0, 15 # encoding: [0xb3,0xf1,0x0f,0x00] +#CHECK: cdgtra %f0, 0, %r15, 0 # encoding: [0xb3,0xf1,0x00,0x0f] +#CHECK: cdgtra %f0, 15, %r0, 0 # encoding: [0xb3,0xf1,0xf0,0x00] +#CHECK: cdgtra %f4, 5, %r6, 7 # encoding: [0xb3,0xf1,0x57,0x46] +#CHECK: cdgtra %f15, 0, %r0, 0 # encoding: [0xb3,0xf1,0x00,0xf0] + + cdgtra %f0, 0, %r0, 0 + cdgtra %f0, 0, %r0, 15 + cdgtra %f0, 0, %r15, 0 + cdgtra %f0, 15, %r0, 0 + cdgtra %f4, 5, %r6, 7 + cdgtra %f15, 0, %r0, 0 + #CHECK: cdlfbr %f0, 0, %r0, 0 # encoding: [0xb3,0x91,0x00,0x00] #CHECK: cdlfbr %f0, 0, %r0, 15 # encoding: [0xb3,0x91,0x0f,0x00] #CHECK: cdlfbr %f0, 0, %r15, 0 # encoding: [0xb3,0x91,0x00,0x0f] @@ -215,6 +271,20 @@ cdlfbr %f4, 5, %r6, 7 cdlfbr %f15, 0, %r0, 0 +#CHECK: cdlftr %f0, 0, %r0, 0 # encoding: [0xb9,0x53,0x00,0x00] +#CHECK: cdlftr %f0, 0, %r0, 15 # encoding: [0xb9,0x53,0x0f,0x00] +#CHECK: cdlftr %f0, 0, %r15, 0 # encoding: [0xb9,0x53,0x00,0x0f] +#CHECK: cdlftr %f0, 15, %r0, 0 # encoding: [0xb9,0x53,0xf0,0x00] +#CHECK: cdlftr %f4, 5, %r6, 7 # encoding: [0xb9,0x53,0x57,0x46] +#CHECK: cdlftr %f15, 0, %r0, 0 # encoding: [0xb9,0x53,0x00,0xf0] + + cdlftr %f0, 0, %r0, 0 + cdlftr %f0, 0, %r0, 15 + cdlftr %f0, 0, %r15, 0 + cdlftr %f0, 15, %r0, 0 + cdlftr %f4, 5, %r6, 7 + cdlftr %f15, 0, %r0, 0 + #CHECK: cdlgbr %f0, 0, %r0, 0 # encoding: [0xb3,0xa1,0x00,0x00] #CHECK: cdlgbr %f0, 0, %r0, 15 # encoding: [0xb3,0xa1,0x0f,0x00] #CHECK: cdlgbr %f0, 0, %r15, 0 # encoding: [0xb3,0xa1,0x00,0x0f] @@ -229,6 +299,20 @@ cdlgbr %f4, 5, %r6, 7 cdlgbr %f15, 0, %r0, 0 +#CHECK: cdlgtr %f0, 0, %r0, 0 # encoding: [0xb9,0x52,0x00,0x00] +#CHECK: cdlgtr %f0, 0, %r0, 15 # encoding: [0xb9,0x52,0x0f,0x00] +#CHECK: cdlgtr %f0, 0, %r15, 0 # encoding: [0xb9,0x52,0x00,0x0f] +#CHECK: cdlgtr %f0, 15, %r0, 0 # encoding: [0xb9,0x52,0xf0,0x00] +#CHECK: cdlgtr %f4, 5, %r6, 7 # encoding: [0xb9,0x52,0x57,0x46] +#CHECK: cdlgtr %f15, 0, %r0, 0 # encoding: [0xb9,0x52,0x00,0xf0] + + cdlgtr %f0, 0, %r0, 0 + cdlgtr %f0, 0, %r0, 15 + cdlgtr %f0, 0, %r15, 0 + cdlgtr %f0, 15, %r0, 0 + cdlgtr %f4, 5, %r6, 7 + cdlgtr %f15, 0, %r0, 0 + #CHECK: cefbra %f0, 0, %r0, 0 # encoding: [0xb3,0x94,0x00,0x00] #CHECK: cefbra %f0, 0, %r0, 15 # encoding: [0xb3,0x94,0x0f,0x00] #CHECK: cefbra %f0, 0, %r15, 0 # encoding: [0xb3,0x94,0x00,0x0f] @@ -299,6 +383,20 @@ cfdbra %r4, 5, %f6, 7 cfdbra %r15, 0, %f0, 0 +#CHECK: cfdtr %r0, 0, %f0, 0 # encoding: [0xb9,0x41,0x00,0x00] +#CHECK: cfdtr %r0, 0, %f0, 15 # encoding: [0xb9,0x41,0x0f,0x00] +#CHECK: cfdtr %r0, 0, %f15, 0 # encoding: [0xb9,0x41,0x00,0x0f] +#CHECK: cfdtr %r0, 15, %f0, 0 # encoding: [0xb9,0x41,0xf0,0x00] +#CHECK: cfdtr %r4, 5, %f6, 7 # encoding: [0xb9,0x41,0x57,0x46] +#CHECK: cfdtr %r15, 0, %f0, 0 # encoding: [0xb9,0x41,0x00,0xf0] + + cfdtr %r0, 0, %f0, 0 + cfdtr %r0, 0, %f0, 15 + cfdtr %r0, 0, %f15, 0 + cfdtr %r0, 15, %f0, 0 + cfdtr %r4, 5, %f6, 7 + cfdtr %r15, 0, %f0, 0 + #CHECK: cfebra %r0, 0, %f0, 0 # encoding: [0xb3,0x98,0x00,0x00] #CHECK: cfebra %r0, 0, %f0, 15 # encoding: [0xb3,0x98,0x0f,0x00] #CHECK: cfebra %r0, 0, %f15, 0 # encoding: [0xb3,0x98,0x00,0x0f] @@ -327,6 +425,20 @@ cfxbra %r7, 5, %f8, 9 cfxbra %r15, 0, %f0, 0 +#CHECK: cfxtr %r0, 0, %f0, 0 # encoding: [0xb9,0x49,0x00,0x00] +#CHECK: cfxtr %r0, 0, %f0, 15 # encoding: [0xb9,0x49,0x0f,0x00] +#CHECK: cfxtr %r0, 0, %f13, 0 # encoding: [0xb9,0x49,0x00,0x0d] +#CHECK: cfxtr %r0, 15, %f0, 0 # encoding: [0xb9,0x49,0xf0,0x00] +#CHECK: cfxtr %r7, 5, %f8, 9 # encoding: [0xb9,0x49,0x59,0x78] +#CHECK: cfxtr %r15, 0, %f0, 0 # encoding: [0xb9,0x49,0x00,0xf0] + + cfxtr %r0, 0, %f0, 0 + cfxtr %r0, 0, %f0, 15 + cfxtr %r0, 0, %f13, 0 + cfxtr %r0, 15, %f0, 0 + cfxtr %r7, 5, %f8, 9 + cfxtr %r15, 0, %f0, 0 + #CHECK: cgdbra %r0, 0, %f0, 0 # encoding: [0xb3,0xa9,0x00,0x00] #CHECK: cgdbra %r0, 0, %f0, 15 # encoding: [0xb3,0xa9,0x0f,0x00] #CHECK: cgdbra %r0, 0, %f15, 0 # encoding: [0xb3,0xa9,0x00,0x0f] @@ -341,6 +453,20 @@ cgdbra %r4, 5, %f6, 7 cgdbra %r15, 0, %f0, 0 +#CHECK: cgdtra %r0, 0, %f0, 0 # encoding: [0xb3,0xe1,0x00,0x00] +#CHECK: cgdtra %r0, 0, %f0, 15 # encoding: [0xb3,0xe1,0x0f,0x00] +#CHECK: cgdtra %r0, 0, %f15, 0 # encoding: [0xb3,0xe1,0x00,0x0f] +#CHECK: cgdtra %r0, 15, %f0, 0 # encoding: [0xb3,0xe1,0xf0,0x00] +#CHECK: cgdtra %r4, 5, %f6, 7 # encoding: [0xb3,0xe1,0x57,0x46] +#CHECK: cgdtra %r15, 0, %f0, 0 # encoding: [0xb3,0xe1,0x00,0xf0] + + cgdtra %r0, 0, %f0, 0 + cgdtra %r0, 0, %f0, 15 + cgdtra %r0, 0, %f15, 0 + cgdtra %r0, 15, %f0, 0 + cgdtra %r4, 5, %f6, 7 + cgdtra %r15, 0, %f0, 0 + #CHECK: cgebra %r0, 0, %f0, 0 # encoding: [0xb3,0xa8,0x00,0x00] #CHECK: cgebra %r0, 0, %f0, 15 # encoding: [0xb3,0xa8,0x0f,0x00] #CHECK: cgebra %r0, 0, %f15, 0 # encoding: [0xb3,0xa8,0x00,0x0f] @@ -369,6 +495,20 @@ cgxbra %r7, 5, %f8, 9 cgxbra %r15, 0, %f0, 0 +#CHECK: cgxtra %r0, 0, %f0, 0 # encoding: [0xb3,0xe9,0x00,0x00] +#CHECK: cgxtra %r0, 0, %f0, 15 # encoding: [0xb3,0xe9,0x0f,0x00] +#CHECK: cgxtra %r0, 0, %f13, 0 # encoding: [0xb3,0xe9,0x00,0x0d] +#CHECK: cgxtra %r0, 15, %f0, 0 # encoding: [0xb3,0xe9,0xf0,0x00] +#CHECK: cgxtra %r7, 5, %f8, 9 # encoding: [0xb3,0xe9,0x59,0x78] +#CHECK: cgxtra %r15, 0, %f0, 0 # encoding: [0xb3,0xe9,0x00,0xf0] + + cgxtra %r0, 0, %f0, 0 + cgxtra %r0, 0, %f0, 15 + cgxtra %r0, 0, %f13, 0 + cgxtra %r0, 15, %f0, 0 + cgxtra %r7, 5, %f8, 9 + cgxtra %r15, 0, %f0, 0 + #CHECK: chf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0xcd] #CHECK: chf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0xcd] #CHECK: chf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0xcd] @@ -419,6 +559,20 @@ clfdbr %r4, 5, %f6, 7 clfdbr %r15, 0, %f0, 0 +#CHECK: clfdtr %r0, 0, %f0, 0 # encoding: [0xb9,0x43,0x00,0x00] +#CHECK: clfdtr %r0, 0, %f0, 15 # encoding: [0xb9,0x43,0x0f,0x00] +#CHECK: clfdtr %r0, 0, %f15, 0 # encoding: [0xb9,0x43,0x00,0x0f] +#CHECK: clfdtr %r0, 15, %f0, 0 # encoding: [0xb9,0x43,0xf0,0x00] +#CHECK: clfdtr %r4, 5, %f6, 7 # encoding: [0xb9,0x43,0x57,0x46] +#CHECK: clfdtr %r15, 0, %f0, 0 # encoding: [0xb9,0x43,0x00,0xf0] + + clfdtr %r0, 0, %f0, 0 + clfdtr %r0, 0, %f0, 15 + clfdtr %r0, 0, %f15, 0 + clfdtr %r0, 15, %f0, 0 + clfdtr %r4, 5, %f6, 7 + clfdtr %r15, 0, %f0, 0 + #CHECK: clfebr %r0, 0, %f0, 0 # encoding: [0xb3,0x9c,0x00,0x00] #CHECK: clfebr %r0, 0, %f0, 15 # encoding: [0xb3,0x9c,0x0f,0x00] #CHECK: clfebr %r0, 0, %f15, 0 # encoding: [0xb3,0x9c,0x00,0x0f] @@ -447,6 +601,20 @@ clfxbr %r7, 5, %f8, 9 clfxbr %r15, 0, %f0, 0 +#CHECK: clfxtr %r0, 0, %f0, 0 # encoding: [0xb9,0x4b,0x00,0x00] +#CHECK: clfxtr %r0, 0, %f0, 15 # encoding: [0xb9,0x4b,0x0f,0x00] +#CHECK: clfxtr %r0, 0, %f13, 0 # encoding: [0xb9,0x4b,0x00,0x0d] +#CHECK: clfxtr %r0, 15, %f0, 0 # encoding: [0xb9,0x4b,0xf0,0x00] +#CHECK: clfxtr %r7, 5, %f8, 9 # encoding: [0xb9,0x4b,0x59,0x78] +#CHECK: clfxtr %r15, 0, %f0, 0 # encoding: [0xb9,0x4b,0x00,0xf0] + + clfxtr %r0, 0, %f0, 0 + clfxtr %r0, 0, %f0, 15 + clfxtr %r0, 0, %f13, 0 + clfxtr %r0, 15, %f0, 0 + clfxtr %r7, 5, %f8, 9 + clfxtr %r15, 0, %f0, 0 + #CHECK: clgdbr %r0, 0, %f0, 0 # encoding: [0xb3,0xad,0x00,0x00] #CHECK: clgdbr %r0, 0, %f0, 15 # encoding: [0xb3,0xad,0x0f,0x00] #CHECK: clgdbr %r0, 0, %f15, 0 # encoding: [0xb3,0xad,0x00,0x0f] @@ -461,6 +629,20 @@ clgdbr %r4, 5, %f6, 7 clgdbr %r15, 0, %f0, 0 +#CHECK: clgdtr %r0, 0, %f0, 0 # encoding: [0xb9,0x42,0x00,0x00] +#CHECK: clgdtr %r0, 0, %f0, 15 # encoding: [0xb9,0x42,0x0f,0x00] +#CHECK: clgdtr %r0, 0, %f15, 0 # encoding: [0xb9,0x42,0x00,0x0f] +#CHECK: clgdtr %r0, 15, %f0, 0 # encoding: [0xb9,0x42,0xf0,0x00] +#CHECK: clgdtr %r4, 5, %f6, 7 # encoding: [0xb9,0x42,0x57,0x46] +#CHECK: clgdtr %r15, 0, %f0, 0 # encoding: [0xb9,0x42,0x00,0xf0] + + clgdtr %r0, 0, %f0, 0 + clgdtr %r0, 0, %f0, 15 + clgdtr %r0, 0, %f15, 0 + clgdtr %r0, 15, %f0, 0 + clgdtr %r4, 5, %f6, 7 + clgdtr %r15, 0, %f0, 0 + #CHECK: clgebr %r0, 0, %f0, 0 # encoding: [0xb3,0xac,0x00,0x00] #CHECK: clgebr %r0, 0, %f0, 15 # encoding: [0xb3,0xac,0x0f,0x00] #CHECK: clgebr %r0, 0, %f15, 0 # encoding: [0xb3,0xac,0x00,0x0f] @@ -489,6 +671,20 @@ clgxbr %r7, 5, %f8, 9 clgxbr %r15, 0, %f0, 0 +#CHECK: clgxtr %r0, 0, %f0, 0 # encoding: [0xb9,0x4a,0x00,0x00] +#CHECK: clgxtr %r0, 0, %f0, 15 # encoding: [0xb9,0x4a,0x0f,0x00] +#CHECK: clgxtr %r0, 0, %f13, 0 # encoding: [0xb9,0x4a,0x00,0x0d] +#CHECK: clgxtr %r0, 15, %f0, 0 # encoding: [0xb9,0x4a,0xf0,0x00] +#CHECK: clgxtr %r7, 5, %f8, 9 # encoding: [0xb9,0x4a,0x59,0x78] +#CHECK: clgxtr %r15, 0, %f0, 0 # encoding: [0xb9,0x4a,0x00,0xf0] + + clgxtr %r0, 0, %f0, 0 + clgxtr %r0, 0, %f0, 15 + clgxtr %r0, 0, %f13, 0 + clgxtr %r0, 15, %f0, 0 + clgxtr %r7, 5, %f8, 9 + clgxtr %r15, 0, %f0, 0 + #CHECK: clhf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0xcf] #CHECK: clhf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0xcf] #CHECK: clhf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0xcf] @@ -535,6 +731,20 @@ cxfbra %f4, 5, %r9, 10 cxfbra %f13, 0, %r0, 0 +#CHECK: cxftr %f0, 0, %r0, 0 # encoding: [0xb9,0x59,0x00,0x00] +#CHECK: cxftr %f0, 0, %r0, 15 # encoding: [0xb9,0x59,0x0f,0x00] +#CHECK: cxftr %f0, 0, %r15, 0 # encoding: [0xb9,0x59,0x00,0x0f] +#CHECK: cxftr %f0, 15, %r0, 0 # encoding: [0xb9,0x59,0xf0,0x00] +#CHECK: cxftr %f4, 5, %r9, 10 # encoding: [0xb9,0x59,0x5a,0x49] +#CHECK: cxftr %f13, 0, %r0, 0 # encoding: [0xb9,0x59,0x00,0xd0] + + cxftr %f0, 0, %r0, 0 + cxftr %f0, 0, %r0, 15 + cxftr %f0, 0, %r15, 0 + cxftr %f0, 15, %r0, 0 + cxftr %f4, 5, %r9, 10 + cxftr %f13, 0, %r0, 0 + #CHECK: cxgbra %f0, 0, %r0, 0 # encoding: [0xb3,0xa6,0x00,0x00] #CHECK: cxgbra %f0, 0, %r0, 15 # encoding: [0xb3,0xa6,0x0f,0x00] #CHECK: cxgbra %f0, 0, %r15, 0 # encoding: [0xb3,0xa6,0x00,0x0f] @@ -549,6 +759,20 @@ cxgbra %f4, 5, %r9, 10 cxgbra %f13, 0, %r0, 0 +#CHECK: cxgtra %f0, 0, %r0, 0 # encoding: [0xb3,0xf9,0x00,0x00] +#CHECK: cxgtra %f0, 0, %r0, 15 # encoding: [0xb3,0xf9,0x0f,0x00] +#CHECK: cxgtra %f0, 0, %r15, 0 # encoding: [0xb3,0xf9,0x00,0x0f] +#CHECK: cxgtra %f0, 15, %r0, 0 # encoding: [0xb3,0xf9,0xf0,0x00] +#CHECK: cxgtra %f4, 5, %r9, 10 # encoding: [0xb3,0xf9,0x5a,0x49] +#CHECK: cxgtra %f13, 0, %r0, 0 # encoding: [0xb3,0xf9,0x00,0xd0] + + cxgtra %f0, 0, %r0, 0 + cxgtra %f0, 0, %r0, 15 + cxgtra %f0, 0, %r15, 0 + cxgtra %f0, 15, %r0, 0 + cxgtra %f4, 5, %r9, 10 + cxgtra %f13, 0, %r0, 0 + #CHECK: cxlfbr %f0, 0, %r0, 0 # encoding: [0xb3,0x92,0x00,0x00] #CHECK: cxlfbr %f0, 0, %r0, 15 # encoding: [0xb3,0x92,0x0f,0x00] #CHECK: cxlfbr %f0, 0, %r15, 0 # encoding: [0xb3,0x92,0x00,0x0f] @@ -563,6 +787,20 @@ cxlfbr %f4, 5, %r9, 10 cxlfbr %f13, 0, %r0, 0 +#CHECK: cxlftr %f0, 0, %r0, 0 # encoding: [0xb9,0x5b,0x00,0x00] +#CHECK: cxlftr %f0, 0, %r0, 15 # encoding: [0xb9,0x5b,0x0f,0x00] +#CHECK: cxlftr %f0, 0, %r15, 0 # encoding: [0xb9,0x5b,0x00,0x0f] +#CHECK: cxlftr %f0, 15, %r0, 0 # encoding: [0xb9,0x5b,0xf0,0x00] +#CHECK: cxlftr %f4, 5, %r9, 10 # encoding: [0xb9,0x5b,0x5a,0x49] +#CHECK: cxlftr %f13, 0, %r0, 0 # encoding: [0xb9,0x5b,0x00,0xd0] + + cxlftr %f0, 0, %r0, 0 + cxlftr %f0, 0, %r0, 15 + cxlftr %f0, 0, %r15, 0 + cxlftr %f0, 15, %r0, 0 + cxlftr %f4, 5, %r9, 10 + cxlftr %f13, 0, %r0, 0 + #CHECK: cxlgbr %f0, 0, %r0, 0 # encoding: [0xb3,0xa2,0x00,0x00] #CHECK: cxlgbr %f0, 0, %r0, 15 # encoding: [0xb3,0xa2,0x0f,0x00] #CHECK: cxlgbr %f0, 0, %r15, 0 # encoding: [0xb3,0xa2,0x00,0x0f] @@ -577,6 +815,48 @@ cxlgbr %f4, 5, %r9, 10 cxlgbr %f13, 0, %r0, 0 +#CHECK: cxlgtr %f0, 0, %r0, 0 # encoding: [0xb9,0x5a,0x00,0x00] +#CHECK: cxlgtr %f0, 0, %r0, 15 # encoding: [0xb9,0x5a,0x0f,0x00] +#CHECK: cxlgtr %f0, 0, %r15, 0 # encoding: [0xb9,0x5a,0x00,0x0f] +#CHECK: cxlgtr %f0, 15, %r0, 0 # encoding: [0xb9,0x5a,0xf0,0x00] +#CHECK: cxlgtr %f4, 5, %r9, 10 # encoding: [0xb9,0x5a,0x5a,0x49] +#CHECK: cxlgtr %f13, 0, %r0, 0 # encoding: [0xb9,0x5a,0x00,0xd0] + + cxlgtr %f0, 0, %r0, 0 + cxlgtr %f0, 0, %r0, 15 + cxlgtr %f0, 0, %r15, 0 + cxlgtr %f0, 15, %r0, 0 + cxlgtr %f4, 5, %r9, 10 + cxlgtr %f13, 0, %r0, 0 + +#CHECK: ddtra %f0, %f0, %f0, 0 # encoding: [0xb3,0xd1,0x00,0x00] +#CHECK: ddtra %f0, %f0, %f0, 15 # encoding: [0xb3,0xd1,0x0f,0x00] +#CHECK: ddtra %f0, %f0, %f15, 0 # encoding: [0xb3,0xd1,0xf0,0x00] +#CHECK: ddtra %f0, %f15, %f0, 0 # encoding: [0xb3,0xd1,0x00,0x0f] +#CHECK: ddtra %f15, %f0, %f0, 0 # encoding: [0xb3,0xd1,0x00,0xf0] +#CHECK: ddtra %f7, %f8, %f9, 10 # encoding: [0xb3,0xd1,0x9a,0x78] + + ddtra %f0, %f0, %f0, 0 + ddtra %f0, %f0, %f0, 15 + ddtra %f0, %f0, %f15, 0 + ddtra %f0, %f15, %f0, 0 + ddtra %f15, %f0, %f0, 0 + ddtra %f7, %f8, %f9, 10 + +#CHECK: dxtra %f0, %f0, %f0, 0 # encoding: [0xb3,0xd9,0x00,0x00] +#CHECK: dxtra %f0, %f0, %f0, 15 # encoding: [0xb3,0xd9,0x0f,0x00] +#CHECK: dxtra %f0, %f0, %f13, 0 # encoding: [0xb3,0xd9,0xd0,0x00] +#CHECK: dxtra %f0, %f13, %f0, 0 # encoding: [0xb3,0xd9,0x00,0x0d] +#CHECK: dxtra %f13, %f0, %f0, 0 # encoding: [0xb3,0xd9,0x00,0xd0] +#CHECK: dxtra %f8, %f8, %f8, 8 # encoding: [0xb3,0xd9,0x88,0x88] + + dxtra %f0, %f0, %f0, 0 + dxtra %f0, %f0, %f0, 15 + dxtra %f0, %f0, %f13, 0 + dxtra %f0, %f13, %f0, 0 + dxtra %f13, %f0, %f0, 0 + dxtra %f8, %f8, %f8, 8 + #CHECK: fidbra %f0, 0, %f0, 0 # encoding: [0xb3,0x5f,0x00,0x00] #CHECK: fidbra %f0, 0, %f0, 15 # encoding: [0xb3,0x5f,0x0f,0x00] #CHECK: fidbra %f0, 0, %f15, 0 # encoding: [0xb3,0x5f,0x00,0x0f] @@ -1285,6 +1565,34 @@ lpdg %r2, 0(%r1), 1(%r15) lpdg %r2, 0(%r1), 4095(%r15) +#CHECK: mdtra %f0, %f0, %f0, 0 # encoding: [0xb3,0xd0,0x00,0x00] +#CHECK: mdtra %f0, %f0, %f0, 15 # encoding: [0xb3,0xd0,0x0f,0x00] +#CHECK: mdtra %f0, %f0, %f15, 0 # encoding: [0xb3,0xd0,0xf0,0x00] +#CHECK: mdtra %f0, %f15, %f0, 0 # encoding: [0xb3,0xd0,0x00,0x0f] +#CHECK: mdtra %f15, %f0, %f0, 0 # encoding: [0xb3,0xd0,0x00,0xf0] +#CHECK: mdtra %f7, %f8, %f9, 10 # encoding: [0xb3,0xd0,0x9a,0x78] + + mdtra %f0, %f0, %f0, 0 + mdtra %f0, %f0, %f0, 15 + mdtra %f0, %f0, %f15, 0 + mdtra %f0, %f15, %f0, 0 + mdtra %f15, %f0, %f0, 0 + mdtra %f7, %f8, %f9, 10 + +#CHECK: mxtra %f0, %f0, %f0, 0 # encoding: [0xb3,0xd8,0x00,0x00] +#CHECK: mxtra %f0, %f0, %f0, 15 # encoding: [0xb3,0xd8,0x0f,0x00] +#CHECK: mxtra %f0, %f0, %f13, 0 # encoding: [0xb3,0xd8,0xd0,0x00] +#CHECK: mxtra %f0, %f13, %f0, 0 # encoding: [0xb3,0xd8,0x00,0x0d] +#CHECK: mxtra %f13, %f0, %f0, 0 # encoding: [0xb3,0xd8,0x00,0xd0] +#CHECK: mxtra %f8, %f8, %f8, 8 # encoding: [0xb3,0xd8,0x88,0x88] + + mxtra %f0, %f0, %f0, 0 + mxtra %f0, %f0, %f0, 15 + mxtra %f0, %f0, %f13, 0 + mxtra %f0, %f13, %f0, 0 + mxtra %f13, %f0, %f0, 0 + mxtra %f8, %f8, %f8, 8 + #CHECK: ngrk %r0, %r0, %r0 # encoding: [0xb9,0xe4,0x00,0x00] #CHECK: ngrk %r0, %r0, %r15 # encoding: [0xb9,0xe4,0xf0,0x00] #CHECK: ngrk %r0, %r15, %r0 # encoding: [0xb9,0xe4,0x00,0x0f] @@ -1379,6 +1687,20 @@ risblg %r15,%r0,0,0,0 risblg %r4,%r5,6,7,8 +#CHECK: sdtra %f0, %f0, %f0, 0 # encoding: [0xb3,0xd3,0x00,0x00] +#CHECK: sdtra %f0, %f0, %f0, 15 # encoding: [0xb3,0xd3,0x0f,0x00] +#CHECK: sdtra %f0, %f0, %f15, 0 # encoding: [0xb3,0xd3,0xf0,0x00] +#CHECK: sdtra %f0, %f15, %f0, 0 # encoding: [0xb3,0xd3,0x00,0x0f] +#CHECK: sdtra %f15, %f0, %f0, 0 # encoding: [0xb3,0xd3,0x00,0xf0] +#CHECK: sdtra %f7, %f8, %f9, 10 # encoding: [0xb3,0xd3,0x9a,0x78] + + sdtra %f0, %f0, %f0, 0 + sdtra %f0, %f0, %f0, 15 + sdtra %f0, %f0, %f15, 0 + sdtra %f0, %f15, %f0, 0 + sdtra %f15, %f0, %f0, 0 + sdtra %f7, %f8, %f9, 10 + #CHECK: sgrk %r0, %r0, %r0 # encoding: [0xb9,0xe9,0x00,0x00] #CHECK: sgrk %r0, %r0, %r15 # encoding: [0xb9,0xe9,0xf0,0x00] #CHECK: sgrk %r0, %r15, %r0 # encoding: [0xb9,0xe9,0x00,0x0f] @@ -1731,6 +2053,20 @@ stocgnp %r1,2(%r3) stocgno %r1,2(%r3) +#CHECK: sxtra %f0, %f0, %f0, 0 # encoding: [0xb3,0xdb,0x00,0x00] +#CHECK: sxtra %f0, %f0, %f0, 15 # encoding: [0xb3,0xdb,0x0f,0x00] +#CHECK: sxtra %f0, %f0, %f13, 0 # encoding: [0xb3,0xdb,0xd0,0x00] +#CHECK: sxtra %f0, %f13, %f0, 0 # encoding: [0xb3,0xdb,0x00,0x0d] +#CHECK: sxtra %f13, %f0, %f0, 0 # encoding: [0xb3,0xdb,0x00,0xd0] +#CHECK: sxtra %f8, %f8, %f8, 8 # encoding: [0xb3,0xdb,0x88,0x88] + + sxtra %f0, %f0, %f0, 0 + sxtra %f0, %f0, %f0, 15 + sxtra %f0, %f0, %f13, 0 + sxtra %f0, %f13, %f0, 0 + sxtra %f13, %f0, %f0, 0 + sxtra %f8, %f8, %f8, 8 + #CHECK: xgrk %r0, %r0, %r0 # encoding: [0xb9,0xe7,0x00,0x00] #CHECK: xgrk %r0, %r0, %r15 # encoding: [0xb9,0xe7,0xf0,0x00] #CHECK: xgrk %r0, %r15, %r0 # encoding: [0xb9,0xe7,0x00,0x0f] diff --git a/llvm/test/MC/SystemZ/insn-good-zEC12.s b/llvm/test/MC/SystemZ/insn-good-zEC12.s index 275d68d..2fe6c46 100644 --- a/llvm/test/MC/SystemZ/insn-good-zEC12.s +++ b/llvm/test/MC/SystemZ/insn-good-zEC12.s @@ -114,6 +114,26 @@ bprp 8, branch, target@plt bprp 9, branch@plt, target@plt +#CHECK: cdzt %f0, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0xaa] +#CHECK: cdzt %f15, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0xf0,0xaa] +#CHECK: cdzt %f0, 0(1), 15 # encoding: [0xed,0x00,0x00,0x00,0x0f,0xaa] +#CHECK: cdzt %f0, 0(1,%r1), 0 # encoding: [0xed,0x00,0x10,0x00,0x00,0xaa] +#CHECK: cdzt %f0, 0(1,%r15), 0 # encoding: [0xed,0x00,0xf0,0x00,0x00,0xaa] +#CHECK: cdzt %f0, 4095(1,%r1), 0 # encoding: [0xed,0x00,0x1f,0xff,0x00,0xaa] +#CHECK: cdzt %f0, 4095(1,%r15), 0 # encoding: [0xed,0x00,0xff,0xff,0x00,0xaa] +#CHECK: cdzt %f0, 0(256,%r1), 0 # encoding: [0xed,0xff,0x10,0x00,0x00,0xaa] +#CHECK: cdzt %f0, 0(256,%r15), 0 # encoding: [0xed,0xff,0xf0,0x00,0x00,0xaa] + + cdzt %f0, 0(1), 0 + cdzt %f15, 0(1), 0 + cdzt %f0, 0(1), 15 + cdzt %f0, 0(1,%r1), 0 + cdzt %f0, 0(1,%r15), 0 + cdzt %f0, 4095(1,%r1), 0 + cdzt %f0, 4095(1,%r15), 0 + cdzt %f0, 0(256,%r1), 0 + cdzt %f0, 0(256,%r15), 0 + #CHECK: clt %r0, 12, -524288 # encoding: [0xeb,0x0c,0x00,0x00,0x80,0x23] #CHECK: clt %r0, 12, -1 # encoding: [0xeb,0x0c,0x0f,0xff,0xff,0x23] #CHECK: clt %r0, 12, 0 # encoding: [0xeb,0x0c,0x00,0x00,0x00,0x23] @@ -178,6 +198,66 @@ clgtnl %r0, 0(%r15) clgtnh %r0, 0(%r15) +#CHECK: cxzt %f0, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0xab] +#CHECK: cxzt %f13, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0xd0,0xab] +#CHECK: cxzt %f0, 0(1), 15 # encoding: [0xed,0x00,0x00,0x00,0x0f,0xab] +#CHECK: cxzt %f0, 0(1,%r1), 0 # encoding: [0xed,0x00,0x10,0x00,0x00,0xab] +#CHECK: cxzt %f0, 0(1,%r15), 0 # encoding: [0xed,0x00,0xf0,0x00,0x00,0xab] +#CHECK: cxzt %f0, 4095(1,%r1), 0 # encoding: [0xed,0x00,0x1f,0xff,0x00,0xab] +#CHECK: cxzt %f0, 4095(1,%r15), 0 # encoding: [0xed,0x00,0xff,0xff,0x00,0xab] +#CHECK: cxzt %f0, 0(256,%r1), 0 # encoding: [0xed,0xff,0x10,0x00,0x00,0xab] +#CHECK: cxzt %f0, 0(256,%r15), 0 # encoding: [0xed,0xff,0xf0,0x00,0x00,0xab] + + cxzt %f0, 0(1), 0 + cxzt %f13, 0(1), 0 + cxzt %f0, 0(1), 15 + cxzt %f0, 0(1,%r1), 0 + cxzt %f0, 0(1,%r15), 0 + cxzt %f0, 4095(1,%r1), 0 + cxzt %f0, 4095(1,%r15), 0 + cxzt %f0, 0(256,%r1), 0 + cxzt %f0, 0(256,%r15), 0 + +#CHECK: czdt %f0, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0xa8] +#CHECK: czdt %f15, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0xf0,0xa8] +#CHECK: czdt %f0, 0(1), 15 # encoding: [0xed,0x00,0x00,0x00,0x0f,0xa8] +#CHECK: czdt %f0, 0(1,%r1), 0 # encoding: [0xed,0x00,0x10,0x00,0x00,0xa8] +#CHECK: czdt %f0, 0(1,%r15), 0 # encoding: [0xed,0x00,0xf0,0x00,0x00,0xa8] +#CHECK: czdt %f0, 4095(1,%r1), 0 # encoding: [0xed,0x00,0x1f,0xff,0x00,0xa8] +#CHECK: czdt %f0, 4095(1,%r15), 0 # encoding: [0xed,0x00,0xff,0xff,0x00,0xa8] +#CHECK: czdt %f0, 0(256,%r1), 0 # encoding: [0xed,0xff,0x10,0x00,0x00,0xa8] +#CHECK: czdt %f0, 0(256,%r15), 0 # encoding: [0xed,0xff,0xf0,0x00,0x00,0xa8] + + czdt %f0, 0(1), 0 + czdt %f15, 0(1), 0 + czdt %f0, 0(1), 15 + czdt %f0, 0(1,%r1), 0 + czdt %f0, 0(1,%r15), 0 + czdt %f0, 4095(1,%r1), 0 + czdt %f0, 4095(1,%r15), 0 + czdt %f0, 0(256,%r1), 0 + czdt %f0, 0(256,%r15), 0 + +#CHECK: czxt %f0, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0xa9] +#CHECK: czxt %f13, 0(1), 0 # encoding: [0xed,0x00,0x00,0x00,0xd0,0xa9] +#CHECK: czxt %f0, 0(1), 15 # encoding: [0xed,0x00,0x00,0x00,0x0f,0xa9] +#CHECK: czxt %f0, 0(1,%r1), 0 # encoding: [0xed,0x00,0x10,0x00,0x00,0xa9] +#CHECK: czxt %f0, 0(1,%r15), 0 # encoding: [0xed,0x00,0xf0,0x00,0x00,0xa9] +#CHECK: czxt %f0, 4095(1,%r1), 0 # encoding: [0xed,0x00,0x1f,0xff,0x00,0xa9] +#CHECK: czxt %f0, 4095(1,%r15), 0 # encoding: [0xed,0x00,0xff,0xff,0x00,0xa9] +#CHECK: czxt %f0, 0(256,%r1), 0 # encoding: [0xed,0xff,0x10,0x00,0x00,0xa9] +#CHECK: czxt %f0, 0(256,%r15), 0 # encoding: [0xed,0xff,0xf0,0x00,0x00,0xa9] + + czxt %f0, 0(1), 0 + czxt %f13, 0(1), 0 + czxt %f0, 0(1), 15 + czxt %f0, 0(1,%r1), 0 + czxt %f0, 0(1,%r15), 0 + czxt %f0, 4095(1,%r1), 0 + czxt %f0, 4095(1,%r15), 0 + czxt %f0, 0(256,%r1), 0 + czxt %f0, 0(256,%r15), 0 + #CHECK: etnd %r0 # encoding: [0xb2,0xec,0x00,0x00] #CHECK: etnd %r15 # encoding: [0xb2,0xec,0x00,0xf0] #CHECK: etnd %r7 # encoding: [0xb2,0xec,0x00,0x70] diff --git a/llvm/test/MC/SystemZ/insn-good.s b/llvm/test/MC/SystemZ/insn-good.s index 3e633de..73162e4 100644 --- a/llvm/test/MC/SystemZ/insn-good.s +++ b/llvm/test/MC/SystemZ/insn-good.s @@ -69,6 +69,18 @@ adr %f7, %f8 adr %f15, %f0 +#CHECK: adtr %f0, %f0, %f0 # encoding: [0xb3,0xd2,0x00,0x00] +#CHECK: adtr %f0, %f0, %f15 # encoding: [0xb3,0xd2,0xf0,0x00] +#CHECK: adtr %f0, %f15, %f0 # encoding: [0xb3,0xd2,0x00,0x0f] +#CHECK: adtr %f15, %f0, %f0 # encoding: [0xb3,0xd2,0x00,0xf0] +#CHECK: adtr %f7, %f8, %f9 # encoding: [0xb3,0xd2,0x90,0x78] + + adtr %f0, %f0, %f0 + adtr %f0, %f0, %f15 + adtr %f0, %f15, %f0 + adtr %f15, %f0, %f0 + adtr %f7, %f8, %f9 + #CHECK: ae %f0, 0 # encoding: [0x7a,0x00,0x00,0x00] #CHECK: ae %f0, 4095 # encoding: [0x7a,0x00,0x0f,0xff] #CHECK: ae %f0, 0(%r1) # encoding: [0x7a,0x00,0x10,0x00] @@ -695,6 +707,18 @@ axr %f8, %f8 axr %f13, %f0 +#CHECK: axtr %f0, %f0, %f0 # encoding: [0xb3,0xda,0x00,0x00] +#CHECK: axtr %f0, %f0, %f13 # encoding: [0xb3,0xda,0xd0,0x00] +#CHECK: axtr %f0, %f13, %f0 # encoding: [0xb3,0xda,0x00,0x0d] +#CHECK: axtr %f13, %f0, %f0 # encoding: [0xb3,0xda,0x00,0xd0] +#CHECK: axtr %f8, %f8, %f8 # encoding: [0xb3,0xda,0x80,0x88] + + axtr %f0, %f0, %f0 + axtr %f0, %f0, %f13 + axtr %f0, %f13, %f0 + axtr %f13, %f0, %f0 + axtr %f8, %f8, %f8 + #CHECK: ay %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x5a] #CHECK: ay %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x5a] #CHECK: ay %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x5a] @@ -2089,6 +2113,18 @@ cdgr %f7, %r8 cdgr %f15, %r15 +#CHECK: cdgtr %f0, %r0 # encoding: [0xb3,0xf1,0x00,0x00] +#CHECK: cdgtr %f0, %r15 # encoding: [0xb3,0xf1,0x00,0x0f] +#CHECK: cdgtr %f15, %r0 # encoding: [0xb3,0xf1,0x00,0xf0] +#CHECK: cdgtr %f7, %r8 # encoding: [0xb3,0xf1,0x00,0x78] +#CHECK: cdgtr %f15, %r15 # encoding: [0xb3,0xf1,0x00,0xff] + + cdgtr %f0, %r0 + cdgtr %f0, %r15 + cdgtr %f15, %r0 + cdgtr %f7, %r8 + cdgtr %f15, %r15 + #CHECK: cdr %f0, %f0 # encoding: [0x29,0x00] #CHECK: cdr %f0, %f15 # encoding: [0x29,0x0f] #CHECK: cdr %f7, %f8 # encoding: [0x29,0x78] @@ -2141,6 +2177,18 @@ cdsg %r0, %r14, 0 cdsg %r14, %r0, 0 +#CHECK: cdstr %f0, %r0 # encoding: [0xb3,0xf3,0x00,0x00] +#CHECK: cdstr %f0, %r15 # encoding: [0xb3,0xf3,0x00,0x0f] +#CHECK: cdstr %f15, %r0 # encoding: [0xb3,0xf3,0x00,0xf0] +#CHECK: cdstr %f7, %r8 # encoding: [0xb3,0xf3,0x00,0x78] +#CHECK: cdstr %f15, %r15 # encoding: [0xb3,0xf3,0x00,0xff] + + cdstr %f0, %r0 + cdstr %f0, %r15 + cdstr %f15, %r0 + cdstr %f7, %r8 + cdstr %f15, %r15 + #CHECK: cdsy %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x31] #CHECK: cdsy %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x31] #CHECK: cdsy %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x31] @@ -2165,6 +2213,28 @@ cdsy %r0, %r14, 0 cdsy %r14, %r0, 0 +#CHECK: cdtr %f0, %f0 # encoding: [0xb3,0xe4,0x00,0x00] +#CHECK: cdtr %f0, %f15 # encoding: [0xb3,0xe4,0x00,0x0f] +#CHECK: cdtr %f7, %f8 # encoding: [0xb3,0xe4,0x00,0x78] +#CHECK: cdtr %f15, %f0 # encoding: [0xb3,0xe4,0x00,0xf0] + + cdtr %f0, %f0 + cdtr %f0, %f15 + cdtr %f7, %f8 + cdtr %f15, %f0 + +#CHECK: cdutr %f0, %r0 # encoding: [0xb3,0xf2,0x00,0x00] +#CHECK: cdutr %f0, %r15 # encoding: [0xb3,0xf2,0x00,0x0f] +#CHECK: cdutr %f15, %r0 # encoding: [0xb3,0xf2,0x00,0xf0] +#CHECK: cdutr %f7, %r8 # encoding: [0xb3,0xf2,0x00,0x78] +#CHECK: cdutr %f15, %r15 # encoding: [0xb3,0xf2,0x00,0xff] + + cdutr %f0, %r0 + cdutr %f0, %r15 + cdutr %f15, %r0 + cdutr %f7, %r8 + cdutr %f15, %r15 + #CHECK: ce %f0, 0 # encoding: [0x79,0x00,0x00,0x00] #CHECK: ce %f0, 4095 # encoding: [0x79,0x00,0x0f,0xff] #CHECK: ce %f0, 0(%r1) # encoding: [0x79,0x00,0x10,0x00] @@ -2207,6 +2277,16 @@ cebr %f7, %f8 cebr %f15, %f0 +#CHECK: cedtr %f0, %f0 # encoding: [0xb3,0xf4,0x00,0x00] +#CHECK: cedtr %f0, %f15 # encoding: [0xb3,0xf4,0x00,0x0f] +#CHECK: cedtr %f7, %f8 # encoding: [0xb3,0xf4,0x00,0x78] +#CHECK: cedtr %f15, %f0 # encoding: [0xb3,0xf4,0x00,0xf0] + + cedtr %f0, %f0 + cedtr %f0, %f15 + cedtr %f7, %f8 + cedtr %f15, %f0 + #CHECK: cefbr %f0, %r0 # encoding: [0xb3,0x94,0x00,0x00] #CHECK: cefbr %f0, %r15 # encoding: [0xb3,0x94,0x00,0x0f] #CHECK: cefbr %f15, %r0 # encoding: [0xb3,0x94,0x00,0xf0] @@ -2265,6 +2345,16 @@ cer %f7, %f8 cer %f15, %f0 +#CHECK: cextr %f0, %f0 # encoding: [0xb3,0xfc,0x00,0x00] +#CHECK: cextr %f0, %f13 # encoding: [0xb3,0xfc,0x00,0x0d] +#CHECK: cextr %f8, %f8 # encoding: [0xb3,0xfc,0x00,0x88] +#CHECK: cextr %f13, %f0 # encoding: [0xb3,0xfc,0x00,0xd0] + + cextr %f0, %f0 + cextr %f0, %f13 + cextr %f8, %f8 + cextr %f13, %f0 + #CHECK: cfc 0 # encoding: [0xb2,0x1a,0x00,0x00] #CHECK: cfc 0(%r1) # encoding: [0xb2,0x1a,0x10,0x00] #CHECK: cfc 0(%r15) # encoding: [0xb2,0x1a,0xf0,0x00] @@ -2411,6 +2501,18 @@ cgdr %r4, 5, %f6 cgdr %r15, 0, %f0 +#CHECK: cgdtr %r0, 0, %f0 # encoding: [0xb3,0xe1,0x00,0x00] +#CHECK: cgdtr %r0, 0, %f15 # encoding: [0xb3,0xe1,0x00,0x0f] +#CHECK: cgdtr %r0, 15, %f0 # encoding: [0xb3,0xe1,0xf0,0x00] +#CHECK: cgdtr %r4, 5, %f6 # encoding: [0xb3,0xe1,0x50,0x46] +#CHECK: cgdtr %r15, 0, %f0 # encoding: [0xb3,0xe1,0x00,0xf0] + + cgdtr %r0, 0, %f0 + cgdtr %r0, 0, %f15 + cgdtr %r0, 15, %f0 + cgdtr %r4, 5, %f6 + cgdtr %r15, 0, %f0 + #CHECK: cgebr %r0, 0, %f0 # encoding: [0xb3,0xa8,0x00,0x00] #CHECK: cgebr %r0, 0, %f15 # encoding: [0xb3,0xa8,0x00,0x0f] #CHECK: cgebr %r0, 15, %f0 # encoding: [0xb3,0xa8,0xf0,0x00] @@ -3349,6 +3451,18 @@ cgxr %r4, 5, %f8 cgxr %r15, 0, %f0 +#CHECK: cgxtr %r0, 0, %f0 # encoding: [0xb3,0xe9,0x00,0x00] +#CHECK: cgxtr %r0, 0, %f13 # encoding: [0xb3,0xe9,0x00,0x0d] +#CHECK: cgxtr %r0, 15, %f0 # encoding: [0xb3,0xe9,0xf0,0x00] +#CHECK: cgxtr %r4, 5, %f8 # encoding: [0xb3,0xe9,0x50,0x48] +#CHECK: cgxtr %r15, 0, %f0 # encoding: [0xb3,0xe9,0x00,0xf0] + + cgxtr %r0, 0, %f0 + cgxtr %r0, 0, %f13 + cgxtr %r0, 15, %f0 + cgxtr %r4, 5, %f8 + cgxtr %r15, 0, %f0 + #CHECK: ch %r0, 0 # encoding: [0x49,0x00,0x00,0x00] #CHECK: ch %r0, 4095 # encoding: [0x49,0x00,0x0f,0xff] #CHECK: ch %r0, 0(%r1) # encoding: [0x49,0x00,0x10,0x00] @@ -6143,6 +6257,18 @@ cs %r0, %r15, 0 cs %r15, %r0, 0 +#CHECK: csdtr %r0, %f0, 0 # encoding: [0xb3,0xe3,0x00,0x00] +#CHECK: csdtr %r0, %f15, 0 # encoding: [0xb3,0xe3,0x00,0x0f] +#CHECK: csdtr %r0, %f0, 15 # encoding: [0xb3,0xe3,0x0f,0x00] +#CHECK: csdtr %r4, %f5, 6 # encoding: [0xb3,0xe3,0x06,0x45] +#CHECK: csdtr %r15, %f0, 0 # encoding: [0xb3,0xe3,0x00,0xf0] + + csdtr %r0, %f0, 0 + csdtr %r0, %f15, 0 + csdtr %r0, %f0, 15 + csdtr %r4, %f5, 6 + csdtr %r15, %f0, 0 + #CHECK: csg %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x30] #CHECK: csg %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x30] #CHECK: csg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x30] @@ -6181,6 +6307,18 @@ csst 0(%r1), 1(%r15), %r2 csst 0(%r1), 4095(%r15), %r2 +#CHECK: csxtr %r0, %f0, 0 # encoding: [0xb3,0xeb,0x00,0x00] +#CHECK: csxtr %r0, %f13, 0 # encoding: [0xb3,0xeb,0x00,0x0d] +#CHECK: csxtr %r0, %f0, 15 # encoding: [0xb3,0xeb,0x0f,0x00] +#CHECK: csxtr %r4, %f5, 6 # encoding: [0xb3,0xeb,0x06,0x45] +#CHECK: csxtr %r14, %f0, 0 # encoding: [0xb3,0xeb,0x00,0xe0] + + csxtr %r0, %f0, 0 + csxtr %r0, %f13, 0 + csxtr %r0, %f0, 15 + csxtr %r4, %f5, 6 + csxtr %r14, %f0, 0 + #CHECK: csy %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x14] #CHECK: csy %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x14] #CHECK: csy %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x14] @@ -6281,6 +6419,18 @@ cu42 %r14, %r0 cu42 %r6, %r8 +#CHECK: cudtr %r0, %f0 # encoding: [0xb3,0xe2,0x00,0x00] +#CHECK: cudtr %r0, %f15 # encoding: [0xb3,0xe2,0x00,0x0f] +#CHECK: cudtr %r15, %f0 # encoding: [0xb3,0xe2,0x00,0xf0] +#CHECK: cudtr %r7, %f8 # encoding: [0xb3,0xe2,0x00,0x78] +#CHECK: cudtr %r15, %f15 # encoding: [0xb3,0xe2,0x00,0xff] + + cudtr %r0, %f0 + cudtr %r0, %f15 + cudtr %r15, %f0 + cudtr %r7, %f8 + cudtr %r15, %f15 + #CHECK: cuse %r0, %r8 # encoding: [0xb2,0x57,0x00,0x08] #CHECK: cuse %r0, %r14 # encoding: [0xb2,0x57,0x00,0x0e] #CHECK: cuse %r14, %r0 # encoding: [0xb2,0x57,0x00,0xe0] @@ -6319,6 +6469,18 @@ cuutf %r4, %r12, 0 cuutf %r4, %r12, 15 +#CHECK: cuxtr %r0, %f0 # encoding: [0xb3,0xea,0x00,0x00] +#CHECK: cuxtr %r0, %f13 # encoding: [0xb3,0xea,0x00,0x0d] +#CHECK: cuxtr %r14, %f0 # encoding: [0xb3,0xea,0x00,0xe0] +#CHECK: cuxtr %r6, %f8 # encoding: [0xb3,0xea,0x00,0x68] +#CHECK: cuxtr %r14, %f13 # encoding: [0xb3,0xea,0x00,0xed] + + cuxtr %r0, %f0 + cuxtr %r0, %f13 + cuxtr %r14, %f0 + cuxtr %r6, %f8 + cuxtr %r14, %f13 + #CHECK: cvb %r0, 0 # encoding: [0x4f,0x00,0x00,0x00] #CHECK: cvb %r0, 4095 # encoding: [0x4f,0x00,0x0f,0xff] #CHECK: cvb %r0, 0(%r1) # encoding: [0x4f,0x00,0x10,0x00] @@ -6497,6 +6659,18 @@ cxgr %f8, %r7 cxgr %f13, %r15 +#CHECK: cxgtr %f0, %r0 # encoding: [0xb3,0xf9,0x00,0x00] +#CHECK: cxgtr %f0, %r15 # encoding: [0xb3,0xf9,0x00,0x0f] +#CHECK: cxgtr %f13, %r0 # encoding: [0xb3,0xf9,0x00,0xd0] +#CHECK: cxgtr %f8, %r7 # encoding: [0xb3,0xf9,0x00,0x87] +#CHECK: cxgtr %f13, %r15 # encoding: [0xb3,0xf9,0x00,0xdf] + + cxgtr %f0, %r0 + cxgtr %f0, %r15 + cxgtr %f13, %r0 + cxgtr %f8, %r7 + cxgtr %f13, %r15 + #CHECK: cxr %f0, %f0 # encoding: [0xb3,0x69,0x00,0x00] #CHECK: cxr %f0, %f13 # encoding: [0xb3,0x69,0x00,0x0d] #CHECK: cxr %f8, %f8 # encoding: [0xb3,0x69,0x00,0x88] @@ -6507,6 +6681,40 @@ cxr %f8, %f8 cxr %f13, %f0 +#CHECK: cxstr %f0, %r0 # encoding: [0xb3,0xfb,0x00,0x00] +#CHECK: cxstr %f0, %r14 # encoding: [0xb3,0xfb,0x00,0x0e] +#CHECK: cxstr %f13, %r0 # encoding: [0xb3,0xfb,0x00,0xd0] +#CHECK: cxstr %f8, %r6 # encoding: [0xb3,0xfb,0x00,0x86] +#CHECK: cxstr %f13, %r14 # encoding: [0xb3,0xfb,0x00,0xde] + + cxstr %f0, %r0 + cxstr %f0, %r14 + cxstr %f13, %r0 + cxstr %f8, %r6 + cxstr %f13, %r14 + +#CHECK: cxtr %f0, %f0 # encoding: [0xb3,0xec,0x00,0x00] +#CHECK: cxtr %f0, %f13 # encoding: [0xb3,0xec,0x00,0x0d] +#CHECK: cxtr %f8, %f8 # encoding: [0xb3,0xec,0x00,0x88] +#CHECK: cxtr %f13, %f0 # encoding: [0xb3,0xec,0x00,0xd0] + + cxtr %f0, %f0 + cxtr %f0, %f13 + cxtr %f8, %f8 + cxtr %f13, %f0 + +#CHECK: cxutr %f0, %r0 # encoding: [0xb3,0xfa,0x00,0x00] +#CHECK: cxutr %f0, %r14 # encoding: [0xb3,0xfa,0x00,0x0e] +#CHECK: cxutr %f13, %r0 # encoding: [0xb3,0xfa,0x00,0xd0] +#CHECK: cxutr %f8, %r6 # encoding: [0xb3,0xfa,0x00,0x86] +#CHECK: cxutr %f13, %r14 # encoding: [0xb3,0xfa,0x00,0xde] + + cxutr %f0, %r0 + cxutr %f0, %r14 + cxutr %f13, %r0 + cxutr %f8, %r6 + cxutr %f13, %r14 + #CHECK: cy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x59] #CHECK: cy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x59] #CHECK: cy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x59] @@ -6597,6 +6805,18 @@ ddr %f7, %f8 ddr %f15, %f0 +#CHECK: ddtr %f0, %f0, %f0 # encoding: [0xb3,0xd1,0x00,0x00] +#CHECK: ddtr %f0, %f0, %f15 # encoding: [0xb3,0xd1,0xf0,0x00] +#CHECK: ddtr %f0, %f15, %f0 # encoding: [0xb3,0xd1,0x00,0x0f] +#CHECK: ddtr %f15, %f0, %f0 # encoding: [0xb3,0xd1,0x00,0xf0] +#CHECK: ddtr %f7, %f8, %f9 # encoding: [0xb3,0xd1,0x90,0x78] + + ddtr %f0, %f0, %f0 + ddtr %f0, %f0, %f15 + ddtr %f0, %f15, %f0 + ddtr %f15, %f0, %f0 + ddtr %f7, %f8, %f9 + #CHECK: de %f0, 0 # encoding: [0x7d,0x00,0x00,0x00] #CHECK: de %f0, 4095 # encoding: [0x7d,0x00,0x0f,0xff] #CHECK: de %f0, 0(%r1) # encoding: [0x7d,0x00,0x10,0x00] @@ -6865,6 +7085,18 @@ dxr %f8, %f8 dxr %f13, %f0 +#CHECK: dxtr %f0, %f0, %f0 # encoding: [0xb3,0xd9,0x00,0x00] +#CHECK: dxtr %f0, %f0, %f13 # encoding: [0xb3,0xd9,0xd0,0x00] +#CHECK: dxtr %f0, %f13, %f0 # encoding: [0xb3,0xd9,0x00,0x0d] +#CHECK: dxtr %f13, %f0, %f0 # encoding: [0xb3,0xd9,0x00,0xd0] +#CHECK: dxtr %f8, %f8, %f8 # encoding: [0xb3,0xd9,0x80,0x88] + + dxtr %f0, %f0, %f0 + dxtr %f0, %f0, %f13 + dxtr %f0, %f13, %f0 + dxtr %f13, %f0, %f0 + dxtr %f8, %f8, %f8 + #CHECK: ear %r0, %a0 # encoding: [0xb2,0x4f,0x00,0x00] #CHECK: ear %r0, %a15 # encoding: [0xb2,0x4f,0x00,0x0f] #CHECK: ear %r15, %a0 # encoding: [0xb2,0x4f,0x00,0xf0] @@ -6971,6 +7203,26 @@ edmk 0(256,%r1), 0 edmk 0(256,%r15), 0 +#CHECK: eedtr %f0, %f9 # encoding: [0xb3,0xe5,0x00,0x09] +#CHECK: eedtr %f0, %f15 # encoding: [0xb3,0xe5,0x00,0x0f] +#CHECK: eedtr %f15, %f0 # encoding: [0xb3,0xe5,0x00,0xf0] +#CHECK: eedtr %f15, %f9 # encoding: [0xb3,0xe5,0x00,0xf9] + + eedtr %f0,%f9 + eedtr %f0,%f15 + eedtr %f15,%f0 + eedtr %f15,%f9 + +#CHECK: eextr %f0, %f8 # encoding: [0xb3,0xed,0x00,0x08] +#CHECK: eextr %f0, %f13 # encoding: [0xb3,0xed,0x00,0x0d] +#CHECK: eextr %f13, %f0 # encoding: [0xb3,0xed,0x00,0xd0] +#CHECK: eextr %f13, %f9 # encoding: [0xb3,0xed,0x00,0xd9] + + eextr %f0,%f8 + eextr %f0,%f13 + eextr %f13,%f0 + eextr %f13,%f9 + #CHECK: efpc %r0 # encoding: [0xb3,0x8c,0x00,0x00] #CHECK: efpc %r1 # encoding: [0xb3,0x8c,0x00,0x10] #CHECK: efpc %r15 # encoding: [0xb3,0x8c,0x00,0xf0] @@ -6989,6 +7241,26 @@ epsw %r15, %r0 epsw %r15, %r8 +#CHECK: esdtr %f0, %f9 # encoding: [0xb3,0xe7,0x00,0x09] +#CHECK: esdtr %f0, %f15 # encoding: [0xb3,0xe7,0x00,0x0f] +#CHECK: esdtr %f15, %f0 # encoding: [0xb3,0xe7,0x00,0xf0] +#CHECK: esdtr %f15, %f9 # encoding: [0xb3,0xe7,0x00,0xf9] + + esdtr %f0,%f9 + esdtr %f0,%f15 + esdtr %f15,%f0 + esdtr %f15,%f9 + +#CHECK: esxtr %f0, %f8 # encoding: [0xb3,0xef,0x00,0x08] +#CHECK: esxtr %f0, %f13 # encoding: [0xb3,0xef,0x00,0x0d] +#CHECK: esxtr %f13, %f0 # encoding: [0xb3,0xef,0x00,0xd0] +#CHECK: esxtr %f13, %f9 # encoding: [0xb3,0xef,0x00,0xd9] + + esxtr %f0,%f8 + esxtr %f0,%f13 + esxtr %f13,%f0 + esxtr %f13,%f9 + #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] @@ -7064,6 +7336,20 @@ fidr %f4, %f6 fidr %f15, %f0 +#CHECK: fidtr %f0, 0, %f0, 0 # encoding: [0xb3,0xd7,0x00,0x00] +#CHECK: fidtr %f0, 0, %f0, 15 # encoding: [0xb3,0xd7,0x0f,0x00] +#CHECK: fidtr %f0, 0, %f15, 0 # encoding: [0xb3,0xd7,0x00,0x0f] +#CHECK: fidtr %f0, 15, %f0, 0 # encoding: [0xb3,0xd7,0xf0,0x00] +#CHECK: fidtr %f4, 5, %f6, 7 # encoding: [0xb3,0xd7,0x57,0x46] +#CHECK: fidtr %f15, 0, %f0, 0 # encoding: [0xb3,0xd7,0x00,0xf0] + + fidtr %f0, 0, %f0, 0 + fidtr %f0, 0, %f0, 15 + fidtr %f0, 0, %f15, 0 + fidtr %f0, 15, %f0, 0 + fidtr %f4, 5, %f6, 7 + fidtr %f15, 0, %f0, 0 + #CHECK: fiebr %f0, 0, %f0 # encoding: [0xb3,0x57,0x00,0x00] #CHECK: fiebr %f0, 0, %f15 # encoding: [0xb3,0x57,0x00,0x0f] #CHECK: fiebr %f0, 15, %f0 # encoding: [0xb3,0x57,0xf0,0x00] @@ -7108,6 +7394,20 @@ fixr %f4, %f8 fixr %f13, %f0 +#CHECK: fixtr %f0, 0, %f0, 0 # encoding: [0xb3,0xdf,0x00,0x00] +#CHECK: fixtr %f0, 0, %f0, 15 # encoding: [0xb3,0xdf,0x0f,0x00] +#CHECK: fixtr %f0, 0, %f13, 0 # encoding: [0xb3,0xdf,0x00,0x0d] +#CHECK: fixtr %f0, 15, %f0, 0 # encoding: [0xb3,0xdf,0xf0,0x00] +#CHECK: fixtr %f4, 5, %f8, 9 # encoding: [0xb3,0xdf,0x59,0x48] +#CHECK: fixtr %f13, 0, %f0, 0 # encoding: [0xb3,0xdf,0x00,0xd0] + + fixtr %f0, 0, %f0, 0 + fixtr %f0, 0, %f0, 15 + fixtr %f0, 0, %f13, 0 + fixtr %f0, 15, %f0, 0 + fixtr %f4, 5, %f8, 9 + fixtr %f13, 0, %f0, 0 + #CHECK: flogr %r0, %r0 # encoding: [0xb9,0x83,0x00,0x00] #CHECK: flogr %r0, %r15 # encoding: [0xb9,0x83,0x00,0x0f] #CHECK: flogr %r10, %r9 # encoding: [0xb9,0x83,0x00,0xa9] @@ -7236,6 +7536,34 @@ icy %r0, 524287(%r15,%r1) icy %r15, 0 +#CHECK: iedtr %f0, %f0, %f0 # encoding: [0xb3,0xf6,0x00,0x00] +#CHECK: iedtr %f0, %f0, %f15 # encoding: [0xb3,0xf6,0x00,0x0f] +#CHECK: iedtr %f0, %f15, %f0 # encoding: [0xb3,0xf6,0xf0,0x00] +#CHECK: iedtr %f15, %f0, %f0 # encoding: [0xb3,0xf6,0x00,0xf0] +#CHECK: iedtr %f1, %f2, %f3 # encoding: [0xb3,0xf6,0x20,0x13] +#CHECK: iedtr %f15, %f15, %f15 # encoding: [0xb3,0xf6,0xf0,0xff] + + iedtr %f0, %f0, %f0 + iedtr %f0, %f0, %f15 + iedtr %f0, %f15, %f0 + iedtr %f15, %f0, %f0 + iedtr %f1, %f2, %f3 + iedtr %f15, %f15, %f15 + +#CHECK: iextr %f0, %f0, %f0 # encoding: [0xb3,0xfe,0x00,0x00] +#CHECK: iextr %f0, %f0, %f13 # encoding: [0xb3,0xfe,0x00,0x0d] +#CHECK: iextr %f0, %f13, %f0 # encoding: [0xb3,0xfe,0xd0,0x00] +#CHECK: iextr %f13, %f0, %f0 # encoding: [0xb3,0xfe,0x00,0xd0] +#CHECK: iextr %f1, %f8, %f4 # encoding: [0xb3,0xfe,0x80,0x14] +#CHECK: iextr %f13, %f13, %f13 # encoding: [0xb3,0xfe,0xd0,0xdd] + + iextr %f0, %f0, %f0 + iextr %f0, %f0, %f13 + iextr %f0, %f13, %f0 + iextr %f13, %f0, %f0 + iextr %f1, %f8, %f4 + iextr %f13, %f13, %f13 + #CHECK: iihf %r0, 0 # encoding: [0xc0,0x08,0x00,0x00,0x00,0x00] #CHECK: iihf %r0, 4294967295 # encoding: [0xc0,0x08,0xff,0xff,0xff,0xff] #CHECK: iihf %r15, 0 # encoding: [0xc0,0xf8,0x00,0x00,0x00,0x00] @@ -7326,6 +7654,16 @@ kdbr %f7, %f8 kdbr %f15, %f0 +#CHECK: kdtr %f0, %f0 # encoding: [0xb3,0xe0,0x00,0x00] +#CHECK: kdtr %f0, %f15 # encoding: [0xb3,0xe0,0x00,0x0f] +#CHECK: kdtr %f7, %f8 # encoding: [0xb3,0xe0,0x00,0x78] +#CHECK: kdtr %f15, %f0 # encoding: [0xb3,0xe0,0x00,0xf0] + + kdtr %f0, %f0 + kdtr %f0, %f15 + kdtr %f7, %f8 + kdtr %f15, %f0 + #CHECK: keb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x08] #CHECK: keb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x08] #CHECK: keb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x08] @@ -7412,6 +7750,16 @@ kxbr %f8, %f8 kxbr %f13, %f0 +#CHECK: kxtr %f0, %f0 # encoding: [0xb3,0xe8,0x00,0x00] +#CHECK: kxtr %f0, %f13 # encoding: [0xb3,0xe8,0x00,0x0d] +#CHECK: kxtr %f8, %f8 # encoding: [0xb3,0xe8,0x00,0x88] +#CHECK: kxtr %f13, %f0 # encoding: [0xb3,0xe8,0x00,0xd0] + + kxtr %f0, %f0 + kxtr %f0, %f13 + kxtr %f8, %f8 + kxtr %f13, %f0 + #CHECK: l %r0, 0 # encoding: [0x58,0x00,0x00,0x00] #CHECK: l %r0, 4095 # encoding: [0x58,0x00,0x0f,0xff] #CHECK: l %r0, 0(%r1) # encoding: [0x58,0x00,0x10,0x00] @@ -7775,6 +8123,16 @@ lder %f7, %f8 lder %f15, %f0 +#CHECK: ldetr %f0, %f0, 15 # encoding: [0xb3,0xd4,0x0f,0x00] +#CHECK: ldetr %f0, %f15, 0 # encoding: [0xb3,0xd4,0x00,0x0f] +#CHECK: ldetr %f7, %f8, 9 # encoding: [0xb3,0xd4,0x09,0x78] +#CHECK: ldetr %f15, %f0, 0 # encoding: [0xb3,0xd4,0x00,0xf0] + + ldetr %f0, %f0, 15 + ldetr %f0, %f15, 0 + ldetr %f7, %f8, 9 + ldetr %f15, %f0, 0 + #CHECK: ldgr %f0, %r0 # encoding: [0xb3,0xc1,0x00,0x00] #CHECK: ldgr %f0, %r15 # encoding: [0xb3,0xc1,0x00,0x0f] #CHECK: ldgr %f15, %r0 # encoding: [0xb3,0xc1,0x00,0xf0] @@ -7821,6 +8179,20 @@ ldxr %f15, %f0 ldxr %f15, %f13 +#CHECK: ldxtr %f0, 0, %f0, 0 # encoding: [0xb3,0xdd,0x00,0x00] +#CHECK: ldxtr %f0, 0, %f0, 15 # encoding: [0xb3,0xdd,0x0f,0x00] +#CHECK: ldxtr %f0, 0, %f13, 0 # encoding: [0xb3,0xdd,0x00,0x0d] +#CHECK: ldxtr %f0, 15, %f0, 0 # encoding: [0xb3,0xdd,0xf0,0x00] +#CHECK: ldxtr %f4, 5, %f8, 9 # encoding: [0xb3,0xdd,0x59,0x48] +#CHECK: ldxtr %f13, 0, %f0, 0 # encoding: [0xb3,0xdd,0x00,0xd0] + + ldxtr %f0, 0, %f0, 0 + ldxtr %f0, 0, %f0, 15 + ldxtr %f0, 0, %f13, 0 + ldxtr %f0, 15, %f0, 0 + ldxtr %f4, 5, %f8, 9 + ldxtr %f13, 0, %f0, 0 + #CHECK: ldy %f0, -524288 # encoding: [0xed,0x00,0x00,0x00,0x80,0x65] #CHECK: ldy %f0, -1 # encoding: [0xed,0x00,0x0f,0xff,0xff,0x65] #CHECK: ldy %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x65] @@ -7883,6 +8255,20 @@ ledr %f15, %f0 ledr %f15, %f15 +#CHECK: ledtr %f0, 0, %f0, 0 # encoding: [0xb3,0xd5,0x00,0x00] +#CHECK: ledtr %f0, 0, %f0, 15 # encoding: [0xb3,0xd5,0x0f,0x00] +#CHECK: ledtr %f0, 0, %f15, 0 # encoding: [0xb3,0xd5,0x00,0x0f] +#CHECK: ledtr %f0, 15, %f0, 0 # encoding: [0xb3,0xd5,0xf0,0x00] +#CHECK: ledtr %f4, 5, %f6, 7 # encoding: [0xb3,0xd5,0x57,0x46] +#CHECK: ledtr %f15, 0, %f0, 0 # encoding: [0xb3,0xd5,0x00,0xf0] + + ledtr %f0, 0, %f0, 0 + ledtr %f0, 0, %f0, 15 + ledtr %f0, 0, %f15, 0 + ledtr %f0, 15, %f0, 0 + ledtr %f4, 5, %f6, 7 + ledtr %f15, 0, %f0, 0 + #CHECK: ler %f0, %f9 # encoding: [0x38,0x09] #CHECK: ler %f0, %f15 # encoding: [0x38,0x0f] #CHECK: ler %f15, %f0 # encoding: [0x38,0xf0] @@ -9220,6 +9606,16 @@ ltdr %f15,%f0 ltdr %f15,%f9 +#CHECK: ltdtr %f0, %f9 # encoding: [0xb3,0xd6,0x00,0x09] +#CHECK: ltdtr %f0, %f15 # encoding: [0xb3,0xd6,0x00,0x0f] +#CHECK: ltdtr %f15, %f0 # encoding: [0xb3,0xd6,0x00,0xf0] +#CHECK: ltdtr %f15, %f9 # encoding: [0xb3,0xd6,0x00,0xf9] + + ltdtr %f0,%f9 + ltdtr %f0,%f15 + ltdtr %f15,%f0 + ltdtr %f15,%f9 + #CHECK: ltebr %f0, %f9 # encoding: [0xb3,0x02,0x00,0x09] #CHECK: ltebr %f0, %f15 # encoding: [0xb3,0x02,0x00,0x0f] #CHECK: ltebr %f15, %f0 # encoding: [0xb3,0x02,0x00,0xf0] @@ -9334,6 +9730,16 @@ ltxr %f13,%f0 ltxr %f13,%f9 +#CHECK: ltxtr %f0, %f9 # encoding: [0xb3,0xde,0x00,0x09] +#CHECK: ltxtr %f0, %f13 # encoding: [0xb3,0xde,0x00,0x0d] +#CHECK: ltxtr %f13, %f0 # encoding: [0xb3,0xde,0x00,0xd0] +#CHECK: ltxtr %f13, %f9 # encoding: [0xb3,0xde,0x00,0xd9] + + ltxtr %f0,%f9 + ltxtr %f0,%f13 + ltxtr %f13,%f0 + ltxtr %f13,%f9 + #CHECK: lxd %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x25] #CHECK: lxd %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x25] #CHECK: lxd %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x25] @@ -9384,6 +9790,16 @@ lxdr %f13,%f0 lxdr %f13,%f15 +#CHECK: lxdtr %f0, %f0, 15 # encoding: [0xb3,0xdc,0x0f,0x00] +#CHECK: lxdtr %f0, %f15, 0 # encoding: [0xb3,0xdc,0x00,0x0f] +#CHECK: lxdtr %f5, %f8, 9 # encoding: [0xb3,0xdc,0x09,0x58] +#CHECK: lxdtr %f13, %f0, 0 # encoding: [0xb3,0xdc,0x00,0xd0] + + lxdtr %f0, %f0, 15 + lxdtr %f0, %f15, 0 + lxdtr %f5, %f8, 9 + lxdtr %f13, %f0, 0 + #CHECK: lxe %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x26] #CHECK: lxe %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x26] #CHECK: lxe %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x26] @@ -9864,6 +10280,18 @@ mdr %f7, %f8 mdr %f15, %f0 +#CHECK: mdtr %f0, %f0, %f0 # encoding: [0xb3,0xd0,0x00,0x00] +#CHECK: mdtr %f0, %f0, %f15 # encoding: [0xb3,0xd0,0xf0,0x00] +#CHECK: mdtr %f0, %f15, %f0 # encoding: [0xb3,0xd0,0x00,0x0f] +#CHECK: mdtr %f15, %f0, %f0 # encoding: [0xb3,0xd0,0x00,0xf0] +#CHECK: mdtr %f7, %f8, %f9 # encoding: [0xb3,0xd0,0x90,0x78] + + mdtr %f0, %f0, %f0 + mdtr %f0, %f0, %f15 + mdtr %f0, %f15, %f0 + mdtr %f15, %f0, %f0 + mdtr %f7, %f8, %f9 + #CHECK: me %f0, 0 # encoding: [0x7c,0x00,0x00,0x00] #CHECK: me %f0, 4095 # encoding: [0x7c,0x00,0x0f,0xff] #CHECK: me %f0, 0(%r1) # encoding: [0x7c,0x00,0x10,0x00] @@ -10812,6 +11240,18 @@ mxr %f8, %f5 mxr %f13, %f13 +#CHECK: mxtr %f0, %f0, %f0 # encoding: [0xb3,0xd8,0x00,0x00] +#CHECK: mxtr %f0, %f0, %f13 # encoding: [0xb3,0xd8,0xd0,0x00] +#CHECK: mxtr %f0, %f13, %f0 # encoding: [0xb3,0xd8,0x00,0x0d] +#CHECK: mxtr %f13, %f0, %f0 # encoding: [0xb3,0xd8,0x00,0xd0] +#CHECK: mxtr %f8, %f8, %f8 # encoding: [0xb3,0xd8,0x80,0x88] + + mxtr %f0, %f0, %f0 + mxtr %f0, %f0, %f13 + mxtr %f0, %f13, %f0 + mxtr %f13, %f0, %f0 + mxtr %f8, %f8, %f8 + #CHECK: my %f0, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x3b] #CHECK: my %f0, %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x3b] #CHECK: my %f0, %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x3b] @@ -11409,6 +11849,9 @@ pfdrl 7, frob@PLT pfdrl 8, frob@PLT +#CHECK: pfpo # encoding: [0x01,0x0a] + pfpo + #CHECK: pka 0, 0(1) # encoding: [0xe9,0x00,0x00,0x00,0x00,0x00] #CHECK: pka 0, 0(1,%r1) # encoding: [0xe9,0x00,0x00,0x00,0x10,0x00] #CHECK: pka 0, 0(1,%r15) # encoding: [0xe9,0x00,0x00,0x00,0xf0,0x00] @@ -11478,6 +11921,34 @@ #CHECK: pr # encoding: [0x01,0x01] pr +#CHECK: qadtr %f0, %f0, %f0, 0 # encoding: [0xb3,0xf5,0x00,0x00] +#CHECK: qadtr %f0, %f0, %f0, 15 # encoding: [0xb3,0xf5,0x0f,0x00] +#CHECK: qadtr %f0, %f0, %f15, 0 # encoding: [0xb3,0xf5,0x00,0x0f] +#CHECK: qadtr %f0, %f15, %f0, 0 # encoding: [0xb3,0xf5,0xf0,0x00] +#CHECK: qadtr %f4, %f5, %f6, 7 # encoding: [0xb3,0xf5,0x57,0x46] +#CHECK: qadtr %f15, %f0, %f0, 0 # encoding: [0xb3,0xf5,0x00,0xf0] + + qadtr %f0, %f0, %f0, 0 + qadtr %f0, %f0, %f0, 15 + qadtr %f0, %f0, %f15, 0 + qadtr %f0, %f15, %f0, 0 + qadtr %f4, %f5, %f6, 7 + qadtr %f15, %f0, %f0, 0 + +#CHECK: qaxtr %f0, %f0, %f0, 0 # encoding: [0xb3,0xfd,0x00,0x00] +#CHECK: qaxtr %f0, %f0, %f0, 15 # encoding: [0xb3,0xfd,0x0f,0x00] +#CHECK: qaxtr %f0, %f0, %f13, 0 # encoding: [0xb3,0xfd,0x00,0x0d] +#CHECK: qaxtr %f0, %f13, %f0, 0 # encoding: [0xb3,0xfd,0xd0,0x00] +#CHECK: qaxtr %f8, %f8, %f8, 8 # encoding: [0xb3,0xfd,0x88,0x88] +#CHECK: qaxtr %f13, %f0, %f0, 0 # encoding: [0xb3,0xfd,0x00,0xd0] + + qaxtr %f0, %f0, %f0, 0 + qaxtr %f0, %f0, %f0, 15 + qaxtr %f0, %f0, %f13, 0 + qaxtr %f0, %f13, %f0, 0 + qaxtr %f8, %f8, %f8, 8 + qaxtr %f13, %f0, %f0, 0 + #CHECK: risbg %r0, %r0, 0, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x00,0x55] #CHECK: risbg %r0, %r0, 0, 0, 63 # encoding: [0xec,0x00,0x00,0x00,0x3f,0x55] #CHECK: risbg %r0, %r0, 0, 255, 0 # encoding: [0xec,0x00,0x00,0xff,0x00,0x55] @@ -11578,6 +12049,34 @@ rosbg %r15,%r0,0,0,0 rosbg %r4,%r5,6,7,8 +#CHECK: rrdtr %f0, %f0, %f0, 0 # encoding: [0xb3,0xf7,0x00,0x00] +#CHECK: rrdtr %f0, %f0, %f0, 15 # encoding: [0xb3,0xf7,0x0f,0x00] +#CHECK: rrdtr %f0, %f0, %f15, 0 # encoding: [0xb3,0xf7,0x00,0x0f] +#CHECK: rrdtr %f0, %f15, %f0, 0 # encoding: [0xb3,0xf7,0xf0,0x00] +#CHECK: rrdtr %f4, %f5, %f6, 7 # encoding: [0xb3,0xf7,0x57,0x46] +#CHECK: rrdtr %f15, %f0, %f0, 0 # encoding: [0xb3,0xf7,0x00,0xf0] + + rrdtr %f0, %f0, %f0, 0 + rrdtr %f0, %f0, %f0, 15 + rrdtr %f0, %f0, %f15, 0 + rrdtr %f0, %f15, %f0, 0 + rrdtr %f4, %f5, %f6, 7 + rrdtr %f15, %f0, %f0, 0 + +#CHECK: rrxtr %f0, %f0, %f0, 0 # encoding: [0xb3,0xff,0x00,0x00] +#CHECK: rrxtr %f0, %f0, %f0, 15 # encoding: [0xb3,0xff,0x0f,0x00] +#CHECK: rrxtr %f0, %f0, %f13, 0 # encoding: [0xb3,0xff,0x00,0x0d] +#CHECK: rrxtr %f0, %f13, %f0, 0 # encoding: [0xb3,0xff,0xd0,0x00] +#CHECK: rrxtr %f8, %f8, %f8, 8 # encoding: [0xb3,0xff,0x88,0x88] +#CHECK: rrxtr %f13, %f0, %f0, 0 # encoding: [0xb3,0xff,0x00,0xd0] + + rrxtr %f0, %f0, %f0, 0 + rrxtr %f0, %f0, %f0, 15 + rrxtr %f0, %f0, %f13, 0 + rrxtr %f0, %f13, %f0, 0 + rrxtr %f8, %f8, %f8, 8 + rrxtr %f13, %f0, %f0, 0 + #CHECK: rxsbg %r0, %r0, 0, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x00,0x57] #CHECK: rxsbg %r0, %r0, 0, 0, 63 # encoding: [0xec,0x00,0x00,0x00,0x3f,0x57] #CHECK: rxsbg %r0, %r0, 0, 255, 0 # encoding: [0xec,0x00,0x00,0xff,0x00,0x57] @@ -11682,6 +12181,18 @@ sdr %f7, %f8 sdr %f15, %f0 +#CHECK: sdtr %f0, %f0, %f0 # encoding: [0xb3,0xd3,0x00,0x00] +#CHECK: sdtr %f0, %f0, %f15 # encoding: [0xb3,0xd3,0xf0,0x00] +#CHECK: sdtr %f0, %f15, %f0 # encoding: [0xb3,0xd3,0x00,0x0f] +#CHECK: sdtr %f15, %f0, %f0 # encoding: [0xb3,0xd3,0x00,0xf0] +#CHECK: sdtr %f7, %f8, %f9 # encoding: [0xb3,0xd3,0x90,0x78] + + sdtr %f0, %f0, %f0 + sdtr %f0, %f0, %f15 + sdtr %f0, %f15, %f0 + sdtr %f15, %f0, %f0 + sdtr %f7, %f8, %f9 + #CHECK: se %f0, 0 # encoding: [0x7b,0x00,0x00,0x00] #CHECK: se %f0, 4095 # encoding: [0x7b,0x00,0x0f,0xff] #CHECK: se %f0, 0(%r1) # encoding: [0x7b,0x00,0x10,0x00] @@ -12012,6 +12523,26 @@ sldl %r0,4095(%r1) sldl %r0,4095(%r15) +#CHECK: sldt %f0, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x40] +#CHECK: sldt %f0, %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x40] +#CHECK: sldt %f0, %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x40] +#CHECK: sldt %f0, %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x40] +#CHECK: sldt %f0, %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x40] +#CHECK: sldt %f0, %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x40] +#CHECK: sldt %f0, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x40] +#CHECK: sldt %f15, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0xf0,0x40] +#CHECK: sldt %f15, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0xf0,0x40] + + sldt %f0, %f0, 0 + sldt %f0, %f0, 4095 + sldt %f0, %f0, 0(%r1) + sldt %f0, %f0, 0(%r15) + sldt %f0, %f0, 4095(%r1,%r15) + sldt %f0, %f0, 4095(%r15,%r1) + sldt %f0, %f15, 0 + sldt %f15, %f0, 0 + sldt %f15, %f15, 0 + #CHECK: slfi %r0, 0 # encoding: [0xc2,0x05,0x00,0x00,0x00,0x00] #CHECK: slfi %r0, 4294967295 # encoding: [0xc2,0x05,0xff,0xff,0xff,0xff] #CHECK: slfi %r15, 0 # encoding: [0xc2,0xf5,0x00,0x00,0x00,0x00] @@ -12146,6 +12677,26 @@ slr %r15,%r0 slr %r7,%r8 +#CHECK: slxt %f0, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x48] +#CHECK: slxt %f0, %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x48] +#CHECK: slxt %f0, %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x48] +#CHECK: slxt %f0, %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x48] +#CHECK: slxt %f0, %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x48] +#CHECK: slxt %f0, %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x48] +#CHECK: slxt %f0, %f13, 0 # encoding: [0xed,0xd0,0x00,0x00,0x00,0x48] +#CHECK: slxt %f13, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0xd0,0x48] +#CHECK: slxt %f13, %f13, 0 # encoding: [0xed,0xd0,0x00,0x00,0xd0,0x48] + + slxt %f0, %f0, 0 + slxt %f0, %f0, 4095 + slxt %f0, %f0, 0(%r1) + slxt %f0, %f0, 0(%r15) + slxt %f0, %f0, 4095(%r1,%r15) + slxt %f0, %f0, 4095(%r15,%r1) + slxt %f0, %f13, 0 + slxt %f13, %f0, 0 + slxt %f13, %f13, 0 + #CHECK: sly %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x5f] #CHECK: sly %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x5f] #CHECK: sly %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x5f] @@ -12420,6 +12971,26 @@ srdl %r0,4095(%r1) srdl %r0,4095(%r15) +#CHECK: srdt %f0, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x41] +#CHECK: srdt %f0, %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x41] +#CHECK: srdt %f0, %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x41] +#CHECK: srdt %f0, %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x41] +#CHECK: srdt %f0, %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x41] +#CHECK: srdt %f0, %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x41] +#CHECK: srdt %f0, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x41] +#CHECK: srdt %f15, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0xf0,0x41] +#CHECK: srdt %f15, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0xf0,0x41] + + srdt %f0, %f0, 0 + srdt %f0, %f0, 4095 + srdt %f0, %f0, 0(%r1) + srdt %f0, %f0, 0(%r15) + srdt %f0, %f0, 4095(%r1,%r15) + srdt %f0, %f0, 4095(%r15,%r1) + srdt %f0, %f15, 0 + srdt %f15, %f0, 0 + srdt %f15, %f15, 0 + #CHECK: srl %r0, 0 # encoding: [0x88,0x00,0x00,0x00] #CHECK: srl %r7, 0 # encoding: [0x88,0x70,0x00,0x00] #CHECK: srl %r15, 0 # encoding: [0x88,0xf0,0x00,0x00] @@ -12540,6 +13111,26 @@ srstu %r15,%r0 srstu %r7,%r8 +#CHECK: srxt %f0, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x49] +#CHECK: srxt %f0, %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x49] +#CHECK: srxt %f0, %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x49] +#CHECK: srxt %f0, %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x49] +#CHECK: srxt %f0, %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x49] +#CHECK: srxt %f0, %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x49] +#CHECK: srxt %f0, %f13, 0 # encoding: [0xed,0xd0,0x00,0x00,0x00,0x49] +#CHECK: srxt %f13, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0xd0,0x49] +#CHECK: srxt %f13, %f13, 0 # encoding: [0xed,0xd0,0x00,0x00,0xd0,0x49] + + srxt %f0, %f0, 0 + srxt %f0, %f0, 4095 + srxt %f0, %f0, 0(%r1) + srxt %f0, %f0, 0(%r15) + srxt %f0, %f0, 4095(%r1,%r15) + srxt %f0, %f0, 4095(%r15,%r1) + srxt %f0, %f13, 0 + srxt %f13, %f0, 0 + srxt %f13, %f13, 0 + #CHECK: st %r0, 0 # encoding: [0x50,0x00,0x00,0x00] #CHECK: st %r0, 4095 # encoding: [0x50,0x00,0x0f,0xff] #CHECK: st %r0, 0(%r1) # encoding: [0x50,0x00,0x10,0x00] @@ -13341,6 +13932,18 @@ sxr %f8, %f8 sxr %f13, %f0 +#CHECK: sxtr %f0, %f0, %f0 # encoding: [0xb3,0xdb,0x00,0x00] +#CHECK: sxtr %f0, %f0, %f13 # encoding: [0xb3,0xdb,0xd0,0x00] +#CHECK: sxtr %f0, %f13, %f0 # encoding: [0xb3,0xdb,0x00,0x0d] +#CHECK: sxtr %f13, %f0, %f0 # encoding: [0xb3,0xdb,0x00,0xd0] +#CHECK: sxtr %f8, %f8, %f8 # encoding: [0xb3,0xdb,0x80,0x88] + + sxtr %f0, %f0, %f0 + sxtr %f0, %f0, %f13 + sxtr %f0, %f13, %f0 + sxtr %f13, %f0, %f0 + sxtr %f8, %f8, %f8 + #CHECK: sy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x5b] #CHECK: sy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x5b] #CHECK: sy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x5b] @@ -13439,6 +14042,102 @@ tcxb %f0, 4095(%r15,%r1) tcxb %f13, 0 +#CHECK: tdcdt %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x54] +#CHECK: tdcdt %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x54] +#CHECK: tdcdt %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x54] +#CHECK: tdcdt %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x54] +#CHECK: tdcdt %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x54] +#CHECK: tdcdt %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x54] +#CHECK: tdcdt %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x54] + + tdcdt %f0, 0 + tdcdt %f0, 4095 + tdcdt %f0, 0(%r1) + tdcdt %f0, 0(%r15) + tdcdt %f0, 4095(%r1,%r15) + tdcdt %f0, 4095(%r15,%r1) + tdcdt %f15, 0 + +#CHECK: tdcet %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x50] +#CHECK: tdcet %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x50] +#CHECK: tdcet %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x50] +#CHECK: tdcet %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x50] +#CHECK: tdcet %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x50] +#CHECK: tdcet %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x50] +#CHECK: tdcet %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x50] + + tdcet %f0, 0 + tdcet %f0, 4095 + tdcet %f0, 0(%r1) + tdcet %f0, 0(%r15) + tdcet %f0, 4095(%r1,%r15) + tdcet %f0, 4095(%r15,%r1) + tdcet %f15, 0 + +#CHECK: tdcxt %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x58] +#CHECK: tdcxt %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x58] +#CHECK: tdcxt %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x58] +#CHECK: tdcxt %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x58] +#CHECK: tdcxt %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x58] +#CHECK: tdcxt %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x58] +#CHECK: tdcxt %f13, 0 # encoding: [0xed,0xd0,0x00,0x00,0x00,0x58] + + tdcxt %f0, 0 + tdcxt %f0, 4095 + tdcxt %f0, 0(%r1) + tdcxt %f0, 0(%r15) + tdcxt %f0, 4095(%r1,%r15) + tdcxt %f0, 4095(%r15,%r1) + tdcxt %f13, 0 + +#CHECK: tdgdt %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x55] +#CHECK: tdgdt %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x55] +#CHECK: tdgdt %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x55] +#CHECK: tdgdt %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x55] +#CHECK: tdgdt %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x55] +#CHECK: tdgdt %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x55] +#CHECK: tdgdt %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x55] + + tdgdt %f0, 0 + tdgdt %f0, 4095 + tdgdt %f0, 0(%r1) + tdgdt %f0, 0(%r15) + tdgdt %f0, 4095(%r1,%r15) + tdgdt %f0, 4095(%r15,%r1) + tdgdt %f15, 0 + +#CHECK: tdget %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x51] +#CHECK: tdget %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x51] +#CHECK: tdget %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x51] +#CHECK: tdget %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x51] +#CHECK: tdget %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x51] +#CHECK: tdget %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x51] +#CHECK: tdget %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x51] + + tdget %f0, 0 + tdget %f0, 4095 + tdget %f0, 0(%r1) + tdget %f0, 0(%r15) + tdget %f0, 4095(%r1,%r15) + tdget %f0, 4095(%r15,%r1) + tdget %f15, 0 + +#CHECK: tdgxt %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x59] +#CHECK: tdgxt %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x59] +#CHECK: tdgxt %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x59] +#CHECK: tdgxt %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x59] +#CHECK: tdgxt %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x59] +#CHECK: tdgxt %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x59] +#CHECK: tdgxt %f13, 0 # encoding: [0xed,0xd0,0x00,0x00,0x00,0x59] + + tdgxt %f0, 0 + tdgxt %f0, 4095 + tdgxt %f0, 0(%r1) + tdgxt %f0, 0(%r15) + tdgxt %f0, 4095(%r1,%r15) + tdgxt %f0, 4095(%r15,%r1) + tdgxt %f13, 0 + #CHECK: thder %f0, %f9 # encoding: [0xb3,0x58,0x00,0x09] #CHECK: thder %f0, %f15 # encoding: [0xb3,0x58,0x00,0x0f] #CHECK: thder %f15, %f0 # encoding: [0xb3,0x58,0x00,0xf0] -- 2.7.4